Hi everybody,
I use the I.MX 8M Plus with Hardknott Yocto.
I have a problem understanding and using the G2D API. I try to implement the following:
Input Image ( ARGB32 format, Size(x1,y1) ) should be converted to Output Image ( RGB format, Size(x2, y2) )
I create the input and output buffers and surfaces in the constructor like that:
g2dInputBuffer = g2d_alloc(m_inputCameraFormat.height * m_inputCameraFormat.width * 4, 1);
g2dOutputBuffer = g2d_alloc(m_modelInputInformations.height * m_modelInputInformations.width * 3, 1);
inputSurface = new g2d_surface();
inputSurface->format = G2D_XRGB8888;
inputSurface->left = 0;
inputSurface->top = 0;
inputSurface->right = m_inputCameraFormat.width;
inputSurface->bottom = m_inputCameraFormat.height;
inputSurface->stride = m_inputCameraFormat.width;
inputSurface->width = m_inputCameraFormat.width;
inputSurface->height = m_inputCameraFormat.height;
inputSurface->rot = G2D_ROTATION_0;
outputSurface = new g2d_surface();
outputSurface->format = G2D_RGB888;
outputSurface->left = 0;
outputSurface->top = 0;
outputSurface->right = m_modelInputInformations.width;
outputSurface->bottom = m_modelInputInformations.height;
outputSurface->stride = m_modelInputInformations.width;
outputSurface->width = m_modelInputInformations.width;
outputSurface->height = m_modelInputInformations.height;
outputSurface->rot = G2D_ROTATION_0;
After that I want the converting for every incoming input frame like that:
void *handle = nullptr;
g2d_open(&handle);
g2dInputBuffer->buf_vaddr = const_cast<void*>(inputBuffer);
inputSurface->planes[0] = g2dInputBuffer->buf_paddr;
outputSurface->planes[0] = g2dOutputBuffer->buf_paddr;
g2d_blit(handle, inputSurface, outputSurface);
g2d_close(handle);
I get the following error message: g2d_blit_2d, line1397: Invalid dst format 10!
Has anybody some help or advice?
Thank you !