NvMediaDevice *device ;
NvMediaStatus status;
NvSciError err;
NvSciBufModule module;
NvSciBufAttrList attrlist, conflictlist;
NvSciBufObj bufObj;
NvMediaImage *image;
NvMediaSurfaceType nvmsurfacetype;
NvMediaSurfAllocAttr surfAllocAttrs[8];
NVM_SURF_FMT_DEFINE_ATTR(surfFormatAttrs);
/*NvMedia related initialization */
device = NvMediaDeviceCreate();
status = NvMediaImageNvSciBufInit();
/*NvSciBuf related initialization*/
err = NvSciBufModuleOpen(&module);
/*Create NvSciBuf attribute list*/
err = NvSciBufAttrListCreate(module, &attrlist);
/*Initialize surfFormatAttrs and surfAllocAttrs as required */
....
....
/* Get NvMediaSurfaceType */
nvmsurfacetype = NvMediaSurfaceFormatGetType
(surfFormatAttrs, NVM_SURF_FMT_ATTR_MAX);
/*Ask NvMedia to fill NvSciBufAttrs corresponding
to nvmsurfacetype and surfAllocAttrs*/
status = NvMediaImageFillNvSciBufAttrs(device,
nvmsurfacetype, surfAllocAttrs, numsurfallocattrs, 0, attrlist);
/*Reconcile the NvSciBufAttrs and then allocate
a NvSciBufObj */
err = NvSciBufAttrListReconcileAndObjAlloc
(&attrlist, 1, bufobj, &conflictlist);
/*Create NvMediaImage from NvSciBufObj */
status = NvMediaImageCreateFromNvSciBuf
(device, bufobj, &image);
/*Free the NvSciBufAttrList which is no
longer required */
err = NvSciBufAttrListFree(attrlist);
/*Use the image as input or output for
any of the Nvmedia */
....
....
/*Free the resources after use*/
/*Destroy NvMediaImage */
NvMediaImageDestroy(image);
/*NvMedia related Deinit*/
NvMediaImageNvSciBufDeinit();
NvMediaDeviceDestroy(device);
/*NvSciBuf related deinit*/
NvSciBufObjFree(bufobj);
NvSciBufModuleClose(module);