#include "nvbuf_utils.h" #include "NvEglRenderer.h" int main (int argc, char *argv[]){ NvBufferCreateParams input_params = {0}; NvBufferParams params = {0}; NvBufferTransformParams transform_params={0}; NvEglRenderer *renderer; int dma_fd = -1; int trans2rgb_fd = -1; char *data_mem = NULL; uint32_t i=0; char render_name[20]; int x=0, y=0; int num; if(argc!=1) return; num=atoi(argv[1]); input_params.payloadType = NvBufferPayload_SurfArray; input_params.width = 1920; input_params.height = 1080; input_params.layout = NvBufferLayout_Pitch; input_params.colorFormat = NvBufferColorFormat_UYVY; input_params.nvbuf_tag = NvBufferTag_NONE; if (-1 == NvBufferCreateEx(&dma_fd, &input_params)) std::cout << "Failed to create NvBuffer" << std::endl; if (-1 == NvBufferMemMap(dma_fd, 0, NvBufferMem_Read_Write, (void**)&(data_mem))) std::cout << "Failed to map buffer" << std::endl; NvBufferGetParams(dma_fd, ¶ms); input_params.payloadType = NvBufferPayload_SurfArray; input_params.width = 1920; input_params.height = 1080; input_params.layout = NvBufferLayout_BlockLinear; input_params.nvbuf_tag = NvBufferTag_VIDEO_CONVERT; input_params.colorFormat = NvBufferColorFormat_NV12; if (-1 == NvBufferCreateEx(&trans2rgb_fd, &input_params)){ std::cout << "Failed to create TRANS NvBuffer" << std::endl; } transform_params.transform_flag = NVBUFFER_TRANSFORM_FILTER; transform_params.transform_flip = NvBufferTransform_None; transform_params.transform_filter = NvBufferTransform_Filter_Smart; transform_params.dst_rect.top = 0; transform_params.dst_rect.left = 0; transform_params.dst_rect.width = 1920; transform_params.dst_rect.height = 1080; snprintf(render_name, 20, "render%d", num); x=(num%3)*640; y=(num/3)*360; fprintf(stderr, "num=%d, x=%d, y=%d\n", num, x, y); renderer = NvEglRenderer::createEglRenderer(render_name, 640, 360, x, y); renderer->enableProfiling(); renderer->setFPS(30); for(i=0;;i++){ memset(data_mem, (i%0xff), params.pitch[0]*1080); NvBufferMemSyncForDevice(dma_fd, 0, (void**)&data_mem); NvBufferTransform(dma_fd, trans2rgb_fd, &transform_params); renderer->render(trans2rgb_fd); renderer->printProfilingStats(std::cout); } NvBufferMemUnMap(dma_fd, 0, (void **)&data_mem); return 0; }