We use TX2 in embedded product, which there’s no display and X11.
We modified samples/eglImage, and setEGLDisplay() to NULL.
But when running, following error reported:
Error BadParameter: No EGLDisplay
- source code snippet:
// create NvBuffer for camera.
int bufferFds[CAMERA_BUFFER_NUM] = {0};
EGLImageKHR bufferImages[CAMERA_BUFFER_NUM];
std:map<EGLImageKHR, int> bufferMaps;
UniqueObj<Buffer> bufferCamera[CAMERA_BUFFER_NUM];
int bufferNum = 0;
NvBufferCreateParams bufParams = {0};
bufParams.width = width;
bufParams.height = height;
bufParams.layout = NvBufferLayout_BlockLinear;
bufParams.colorFormat = NvBufferColorFormat_YUYV;
bufParams.payloadType = NvBufferPayload_SurfArray;
bufParams.nvbuf_tag = NvBufferTag_CAMERA;
for (i = 0; i < CAMERA_BUFFER_NUM; i++) {
if (NvBufferCreateEx(&bufferFds[i], &bufParams)) {
LOG("[E] create buffer for camera failed! err=%d", errno);
break;
}
bufferImages[i] = NvEGLImageFromFd(NULL, bufferFds[i]);
}
// create outputStream
UniqueObj<OutputStreamSettings> streamSettings(
iCaptureSession->createOutputStreamSettings(STREAM_TYPE_BUFFER));
IBufferOutputStreamSettings *iStreamSettings =
interface_cast<IBufferOutputStreamSettings>(streamSettings);
iStreamSettings->setBufferType(BUFFER_TYPE_EGL_IMAGE);
UniqueObj<OutputStream> outputStream(
iCaptureSession->createOutputStream(streamSettings.get()));
IBufferOutputStream *iBufferOutputStream =
interface_cast<IBufferOutputStream>(outputStream);
UniqueObj<BufferSettings> bufferSettings(
iBufferOutputStream->createBufferSettings());
IEGLImageBufferSettings *iBufferSettings =
interface_cast<IEGLImageBufferSettings>(bufferSettings);
for (int i = 0; i < CAMERA_BUFFER_NUM; i++) {
iBufferSettings->setEGLDisplay(NULL);
iBufferSettings->setEGLImage(bufferImages[i]);
bufferCamera[i].reset(
iBufferOutputStream->createBuffer(bufferSettings.get()));
}
...