nvbufsurftransform.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542
  1. /*
  2. * Copyright (c) 2019-2022, NVIDIA CORPORATION. All rights reserved.
  3. *
  4. * NVIDIA Corporation and its licensors retain all intellectual property
  5. * and proprietary rights in and to this software, related documentation
  6. * and any modifications thereto. Any use, reproduction, disclosure or
  7. * distribution of this software and related documentation without an express
  8. * license agreement from NVIDIA Corporation is strictly prohibited.
  9. *
  10. */
  11. /**
  12. * @file nvbufsurftransform.h
  13. * <b>NvBufSurfTransform Interface </b>
  14. *
  15. * This file specifies the NvBufSurfTransform image transformation APIs.
  16. *
  17. * The NvBufSurfTransform API provides methods to set and get session parameters
  18. * and to transform and composite APIs.
  19. */
  20. #ifndef NVBUFSURFTRANSFORM_H_
  21. #define NVBUFSURFTRANSFORM_H_
  22. #include "nvbufsurface.h"
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. typedef struct CUstream_st* cudaStream_t; //!< Forward declaration of cudaStream_t.
  27. /** @defgroup ds_bbb NvBufSurfTransform Types and Functions
  28. * Defines types and functions of the \ref NvBufSurfTransform
  29. * application programming interface.
  30. * @ingroup ds_nvbuf_api
  31. * @{ */
  32. /**
  33. * Specifies compute devices used by \ref NvBufSurfTransform.
  34. */
  35. typedef enum
  36. {
  37. /** Specifies VIC as a compute device for Jetson or dGPU for an x86_64
  38. system. */
  39. NvBufSurfTransformCompute_Default,
  40. /** Specifies that the GPU is the compute device. */
  41. NvBufSurfTransformCompute_GPU,
  42. /** Specifies that the VIC as a compute device. Supported only for Jetson. */
  43. NvBufSurfTransformCompute_VIC
  44. } NvBufSurfTransform_Compute;
  45. /**
  46. * Specifies video flip methods.
  47. */
  48. typedef enum
  49. {
  50. /** Specifies no video flip. */
  51. NvBufSurfTransform_None,
  52. /** Specifies rotating 90 degrees clockwise. */
  53. NvBufSurfTransform_Rotate90,
  54. /** Specifies rotating 180 degree clockwise. */
  55. NvBufSurfTransform_Rotate180,
  56. /** Specifies rotating 270 degree clockwise. */
  57. NvBufSurfTransform_Rotate270,
  58. /** Specifies video flip with respect to the X-axis. */
  59. NvBufSurfTransform_FlipX,
  60. /** Specifies video flip with respect to the Y-axis. */
  61. NvBufSurfTransform_FlipY,
  62. /** Specifies video flip transpose. */
  63. NvBufSurfTransform_Transpose,
  64. /** Specifies video flip inverse transpose. */
  65. NvBufSurfTransform_InvTranspose,
  66. } NvBufSurfTransform_Flip;
  67. /**
  68. * Specifies video interpolation methods.
  69. */
  70. typedef enum
  71. {
  72. /** Specifies Nearest Interpolation Method interpolation. */
  73. NvBufSurfTransformInter_Nearest = 0,
  74. /** Specifies Bilinear Interpolation Method interpolation. */
  75. NvBufSurfTransformInter_Bilinear,
  76. /** Specifies GPU-Cubic, VIC-5 Tap interpolation. */
  77. NvBufSurfTransformInter_Algo1,
  78. /** Specifies GPU-Super, VIC-10 Tap interpolation. */
  79. NvBufSurfTransformInter_Algo2,
  80. /** Specifies GPU-Lanzos, VIC-Smart interpolation. */
  81. NvBufSurfTransformInter_Algo3,
  82. /** Specifies GPU-Ignored, VIC-Nicest interpolation. */
  83. NvBufSurfTransformInter_Algo4,
  84. /** Specifies GPU-Nearest, VIC-Nearest interpolation. */
  85. NvBufSurfTransformInter_Default
  86. } NvBufSurfTransform_Inter;
  87. /**
  88. * Specifies error codes returned by \ref NvBufSurfTransform functions.
  89. */
  90. typedef enum
  91. {
  92. /** Specifies an error in source or destination ROI. */
  93. NvBufSurfTransformError_ROI_Error = -4,
  94. /** Specifies invalid input parameters. */
  95. NvBufSurfTransformError_Invalid_Params = -3,
  96. /** Specifies a runtime execution error. */
  97. NvBufSurfTransformError_Execution_Error = -2,
  98. /** Specifies an unsupported feature or format. */
  99. NvBufSurfTransformError_Unsupported = -1,
  100. /** Specifies a successful operation. */
  101. NvBufSurfTransformError_Success = 0
  102. } NvBufSurfTransform_Error;
  103. /**
  104. * Specifies transform types.
  105. */
  106. typedef enum {
  107. /** Specifies a transform to crop the source rectangle. */
  108. NVBUFSURF_TRANSFORM_CROP_SRC = 1,
  109. /** Specifies a transform to crop the destination rectangle. */
  110. NVBUFSURF_TRANSFORM_CROP_DST = 1 << 1,
  111. /** Specifies a transform to set the filter type. */
  112. NVBUFSURF_TRANSFORM_FILTER = 1 << 2,
  113. /** Specifies a transform to set the flip method. */
  114. NVBUFSURF_TRANSFORM_FLIP = 1 << 3,
  115. /** Specifies a transform to normalize output. */
  116. NVBUFSURF_TRANSFORM_NORMALIZE = 1 << 4
  117. } NvBufSurfTransform_Transform_Flag;
  118. /**
  119. * Specifies types of composition operations.
  120. */
  121. typedef enum {
  122. /** Specifies a flag to describe the requested compositing operation. */
  123. NVBUFSURF_TRANSFORM_COMPOSITE = 1,
  124. /** Specifies a flag to describe the requested blending operation.
  125. * This flag is applicable for NvBufSurfTransformMultiInputBufCompositeBlend
  126. * and NvBufSurfTransformMultiInputBufCompositeBlendAsync API to support
  127. * blending operation in upcoming releases.
  128. */
  129. NVBUFSURF_TRANSFORM_BLEND = 1 << 1,
  130. /** Specifies a composite to set the filter type. */
  131. NVBUFSURF_TRANSFORM_COMPOSITE_FILTER = 1 << 2,
  132. } NvBufSurfTransform_Composite_Flag;
  133. /**
  134. * Holds the coordinates of a rectangle.
  135. */
  136. typedef struct
  137. {
  138. /** Holds the rectangle top. */
  139. uint32_t top;
  140. /** Holds the rectangle left side. */
  141. uint32_t left;
  142. /** Holds the rectangle width. */
  143. uint32_t width;
  144. /** Holds the rectangle height. */
  145. uint32_t height;
  146. }NvBufSurfTransformRect;
  147. /**
  148. * Holds configuration parameters for a transform/composite session.
  149. */
  150. typedef struct _NvBufSurfTransformConfigParams
  151. {
  152. /** Holds the mode of operation: VIC (Jetson) or GPU (iGPU + dGPU)
  153. If VIC is configured, \a gpu_id is ignored. */
  154. NvBufSurfTransform_Compute compute_mode;
  155. /** Holds the GPU ID to be used for processing. */
  156. int32_t gpu_id;
  157. /** User configure stream to be used. If NULL, the default stream is used.
  158. Ignored if VIC is used. */
  159. cudaStream_t cuda_stream;
  160. } NvBufSurfTransformConfigParams;
  161. /**
  162. * Holds transform parameters for a transform call.
  163. */
  164. typedef struct _NvBufSurfaceTransformParams
  165. {
  166. /** Holds a flag that indicates which transform parameters are valid. */
  167. uint32_t transform_flag;
  168. /** Holds the flip method. */
  169. NvBufSurfTransform_Flip transform_flip;
  170. /** Holds a transform filter. */
  171. NvBufSurfTransform_Inter transform_filter;
  172. /** Holds a pointer to a list of source rectangle coordinates for
  173. a crop operation. */
  174. NvBufSurfTransformRect *src_rect;
  175. /** Holds a pointer to list of destination rectangle coordinates for
  176. a crop operation. */
  177. NvBufSurfTransformRect *dst_rect;
  178. }NvBufSurfTransformParams;
  179. /**
  180. * Holds composite parameters for a composite call.
  181. */
  182. typedef struct _NvBufSurfTransformCompositeParams
  183. {
  184. /** Holds a flag that indicates which composition parameters are valid. */
  185. uint32_t composite_flag;
  186. /** Holds the number of input buffers to be composited. */
  187. uint32_t input_buf_count;
  188. /** Holds source rectangle coordinates of input buffers for compositing. */
  189. NvBufSurfTransformRect *src_comp_rect;
  190. /** Holds destination rectangle coordinates of input buffers for
  191. compositing. */
  192. NvBufSurfTransformRect *dst_comp_rect;
  193. /** Holds a composite filter. */
  194. NvBufSurfTransform_Inter composite_filter;
  195. }NvBufSurfTransformCompositeParams;
  196. typedef struct _NvBufSurfTransform_ColorParams {
  197. double red; /**< Holds the red component of color.
  198. Value must be in the range 0.0-1.0. */
  199. double green; /**< Holds the green component of color.
  200. Value must be in the range 0.0-1.0.*/
  201. double blue; /**< Holds the blue component of color.
  202. Value must be in the range 0.0-1.0.*/
  203. double alpha; /**< Holds the alpha component of color.
  204. Value must be in the range 0.0-1.0.*/
  205. } NvBufSurfTransform_ColorParams;
  206. /**
  207. * Holds composite blend parameters for a composite blender call.
  208. */
  209. typedef struct _NvBufSurfTransformCompositeBlendParams
  210. {
  211. /** Holds a flag that indicates which composition parameters are valid. */
  212. uint32_t composite_blend_flag;
  213. /** Holds the number of input buffers to be composited. */
  214. uint32_t input_buf_count;
  215. /** Holds a blend/composite filter applicable only */
  216. NvBufSurfTransform_Inter composite_blend_filter;
  217. /** Holds background color list for blending if background buffer is absent, if NULL
  218. * it wont be used, background buffer is expected to be NULL, if blending with
  219. * static color is required
  220. */
  221. NvBufSurfTransform_ColorParams *color_bg;
  222. /** Holds a boolean flag list indicating whether blending to be done for particular buffer,
  223. * if NULL, blending will be on all buffers, if valid value API expects at least numFilled
  224. * size list and each element can take value 0 or 1
  225. */
  226. uint32_t *perform_blending;
  227. }NvBufSurfTransformCompositeBlendParams;
  228. /**
  229. * Holds extended composite blend parameters for NvBufSurfTransformMultiInputBufCompositeBlend
  230. * and NvBufSurfTransformMultiInputBufCompositeBlendAsync API
  231. */
  232. typedef struct _NvBufSurfTransformCompositeBlendParamsEx
  233. {
  234. /** Holds legacy composite blend parameters */
  235. NvBufSurfTransformCompositeBlendParams params;
  236. /** Holds source rectangle coordinates of input buffers for compositing. */
  237. NvBufSurfTransformRect *src_comp_rect;
  238. /** Holds destination rectangle coordinates of input buffers for compositing. */
  239. NvBufSurfTransformRect *dst_comp_rect;
  240. /** Holds composite filters to use for composition/blending. */
  241. NvBufSurfTransform_Inter *composite_blend_filter;
  242. /** Holds alpha values of input buffers for the blending. */
  243. float *alpha;
  244. /** reserved fields. */
  245. void *reserved[STRUCTURE_PADDING];
  246. }NvBufSurfTransformCompositeBlendParamsEx;
  247. /**
  248. ** Holds the information about synchronization objects for asynchronous
  249. * transform/composite APIs
  250. *
  251. */
  252. typedef struct NvBufSurfTransformSyncObj* NvBufSurfTransformSyncObj_t;
  253. /**
  254. * \brief Sets user-defined session parameters.
  255. *
  256. * If user-defined session parameters are set, they override the
  257. * NvBufSurfTransform() function's default session.
  258. *
  259. * @param[in] config_params A pointer to a structure that is populated
  260. * with the session parameters to be used.
  261. *
  262. * @return An \ref NvBufSurfTransform_Error value indicating
  263. * success or failure.
  264. */
  265. NvBufSurfTransform_Error NvBufSurfTransformSetSessionParams
  266. (NvBufSurfTransformConfigParams *config_params);
  267. /**
  268. * \brief Gets the session parameters used by NvBufSurfTransform().
  269. *
  270. * @param[out] config_params A pointer to a caller-allocated structure to be
  271. * populated with the session parameters used.
  272. *
  273. * @return An \ref NvBufSurfTransform_Error value indicating
  274. * success or failure.
  275. */
  276. NvBufSurfTransform_Error NvBufSurfTransformGetSessionParams
  277. (NvBufSurfTransformConfigParams *config_params);
  278. /**
  279. * \brief Performs a transformation on batched input images.
  280. *
  281. * If user-defined session parameters are to be used, call
  282. * NvBufSurfTransformSetSessionParams() before calling this function.
  283. *
  284. * @param[in] src A pointer to input batched buffers to be transformed.
  285. * @param[out] dst A pointer to a caller-allocated location where
  286. * transformed output is to be stored.
  287. * @par When destination cropping is performed, memory outside
  288. * the crop location is not touched, and may contain stale
  289. * information. The caller must perform a memset before
  290. * calling this function if stale information must be
  291. * eliminated.
  292. * @param[in] transform_params
  293. * A pointer to an \ref NvBufSurfTransformParams structure
  294. * which specifies the type of transform to be performed. They
  295. * may include any combination of scaling, format conversion,
  296. * and cropping for both source and destination.
  297. * Flipping and rotation are supported on VIC.
  298. * @return An \ref NvBufSurfTransform_Error value indicating
  299. * success or failure.
  300. */
  301. NvBufSurfTransform_Error NvBufSurfTransform (NvBufSurface *src, NvBufSurface *dst,
  302. NvBufSurfTransformParams *transform_params);
  303. /**
  304. * \brief Composites batched input images.
  305. *
  306. * The compositer scales and stitches
  307. * batched buffers indicated by \a src into a single destination buffer, \a dst.
  308. *
  309. * If user-defined session parameters are to be used, call
  310. * NvBufSurfTransformSetSessionParams() before calling this function.
  311. *
  312. * @param[in] src A pointer to input batched buffers to be transformed.
  313. * @param[out] dst A pointer a caller-allocated location (a single buffer)
  314. * where composited output is to be stored.
  315. * @param[in] composite_params
  316. * A pointer to an \ref NvBufSurfTransformCompositeParams
  317. * structure which specifies the compositing operation to be
  318. * performed, e.g., the source and destination rectangles
  319. * in \a src and \a dst.
  320. * @return An \ref NvBufSurfTransform_Error value indicating success or failure.
  321. */
  322. NvBufSurfTransform_Error NvBufSurfTransformComposite (NvBufSurface *src,
  323. NvBufSurface *dst, NvBufSurfTransformCompositeParams *composite_params);
  324. /**
  325. * \brief An asynchronous (non-blocking) transformation on batched input images.
  326. *
  327. * If user-defined session parameters are to be used, call
  328. * NvBufSurfTransformSetSessionParams() before calling this function.
  329. *
  330. * @param[in] src A pointer to input batched buffers to be transformed.
  331. * @param[out] dst A pointer to a caller-allocated location where
  332. * transformed output is to be stored.
  333. * @par When destination cropping is performed, memory outside
  334. * the crop location is not touched, and may contain stale
  335. * information. The caller must perform a memset before
  336. * calling this function if stale information must be
  337. * eliminated.
  338. * @param[in] transform_params
  339. * A pointer to an \ref NvBufSurfTransformParams structure
  340. * which specifies the type of transform to be performed. They
  341. * may include any combination of scaling, format conversion,
  342. * and cropping for both source and destination.
  343. * Flipping and rotation are supported on VIC/GPU.
  344. * @param[out] sync_obj
  345. * A pointer to an \ref NvBufSurfTransformSyncObj structure
  346. * which holds synchronization information of the current
  347. * transform call. \ref NvBufSurfTransfromSyncObjWait() API to be
  348. * called on this object to wait for transformation to complete.
  349. * \ref NvBufSurfTransformSyncObjDestroy API should be called after
  350. * \ref NvBufSurfTransformSyncObjWait API to release the objects
  351. * If the parameter is NULL, the call would return only after
  352. * the transform is complete.
  353. * @return An \ref NvBufSurfTransform_Error value indicating
  354. * success or failure.
  355. */
  356. NvBufSurfTransform_Error NvBufSurfTransformAsync (NvBufSurface *src,
  357. NvBufSurface *dst, NvBufSurfTransformParams *transform_params,
  358. NvBufSurfTransformSyncObj_t *sync_obj);
  359. /**
  360. * \brief Composites batched input images Asynchronously (non-blocking).
  361. *
  362. * The compositer scales and stitches
  363. * batched buffers indicated by \a src into a single destination buffer, \a dst.
  364. *
  365. * If user-defined session parameters are to be used, call
  366. * NvBufSurfTransformSetSessionParams() before calling this function.
  367. *
  368. * @param[in] src A pointer to input batched buffers to be composited.
  369. * @param[out] dst A pointer a caller-allocated location (a single buffer)
  370. * where composited output is to be stored.
  371. * @param[in] composite_params
  372. * A pointer to an \ref NvBufSurfTransformCompositeParams
  373. * structure which specifies the compositing operation to be
  374. * performed, e.g., the source and destination rectangles
  375. * in \a src and \a dst.
  376. * @param[out] sync_obj
  377. * A pointer to an \ref NvBufSurfTransformSyncObj structure
  378. * which holds synchronization information of the current
  379. * composite call. ref\ NvBufSurfTransfromSyncObjWait() API to be
  380. * called on this object to wait for composition to complete.
  381. * \ref NvBufSurfTransformSyncObjDestroy API should be called after
  382. * \ref NvBufSurfTransformSyncObjWait API to release the objects
  383. * If the parameter is NULL, the call would return only after
  384. * the composite is complete.
  385. * @return An \ref NvBufSurfTransform_Error value indicating success or failure.
  386. */
  387. NvBufSurfTransform_Error NvBufSurfTransformCompositeAsync (NvBufSurface *src,
  388. NvBufSurface *dst, NvBufSurfTransformCompositeParams *composite_params,
  389. NvBufSurfTransformSyncObj_t *sync_obj);
  390. /**
  391. * \brief Composites/Blends batched input images
  392. *
  393. * The compositer scales and blends
  394. * batched buffers indicated by \a src0 with \a src1 into a batched
  395. * destination buffer \a dst using \a alpha as the blending weights.
  396. * A Linear interpolation operation is performed to get the final pix value
  397. * each of \a src0, \a src1, \a alpha and \a dst have one to one mapping
  398. * For each pixel the following linear interpolation is performed.
  399. * \a dst = ( \a src0* \a alpha + \a src1* (255.0 - \a alpha))/255.0
  400. * If user-defined session parameters are to be used, call
  401. * NvBufSurfTransformSetSessionParams() before calling this function.
  402. *
  403. * @param[in] src0 A pointer to input batched buffers to be blend.
  404. * @param[in] src1 A pointer to input batched buffers to be blend with.
  405. * @param[in] alpha A pointer to input batched buffers which has blending weights.
  406. * @param[out] dst A pointer to output batched buffers where blended composite
  407. * output is stored
  408. * @param[in] blend_params
  409. * A pointer to an \ref NvBufSurfTransformCompositeBlendParams
  410. * structure which specifies the compositing operation to be
  411. * performed
  412. * @return An \ref NvBufSurfTransform_Error value indicating success or failure.
  413. */
  414. NvBufSurfTransform_Error NvBufSurfTransformCompositeBlend(NvBufSurface *src0,
  415. NvBufSurface *src1, NvBufSurface *alpha, NvBufSurface *dst,
  416. NvBufSurfTransformCompositeBlendParams *blend_params);
  417. /**
  418. * Performs Composition and Blending on multiple input images(batch size=1) and provide
  419. * single output image(batch size=1)
  420. *
  421. * Composites and blends batched(batch size=1) input buffers pointed by src pointer.
  422. * Compositer scales, stitches and blends batched buffers pointed by src into single
  423. * dst buffer (batch size=1), the parameters for composition and blending is provided
  424. * by composite_blend_params.
  425. * Use NvBufSurfTransformSetSessionParams before each call, if user defined
  426. * session parameters are to be used.
  427. * It is different than the NvBufSurfTransformCompositeBlend API and It is currently
  428. * supported on Jetson only.
  429. *
  430. * @param[in] src pointer (multiple buffer) to input batched(batch size=1) buffers to be transformed.
  431. * @param[out] dst pointer (single buffer) where composited output would be stored.
  432. * @param[in] composite_blend_params pointer to NvBufSurfTransformCompositeBlendParamsEx structure.
  433. *
  434. * @return NvBufSurfTransform_Error indicating success or failure.
  435. */
  436. NvBufSurfTransform_Error NvBufSurfTransformMultiInputBufCompositeBlend (NvBufSurface **src,
  437. NvBufSurface *dst, NvBufSurfTransformCompositeBlendParamsEx *composite_blend_params);
  438. /**
  439. * Performs Composition and Blending on multiple input images(batch size=1) and provide
  440. * single output image(batch size=1) Asynchronously (non-blocking).
  441. *
  442. * Composites and blends batched(batch size=1) input buffers pointed by src pointer.
  443. * Compositer scales, stitches and blends batched buffers pointed by src into single
  444. * dst buffer (batch size=1), the parameters for composition and blending is provided
  445. * by composite_blend_params.
  446. * Use NvBufSurfTransformSetSessionParams before each call, if user defined
  447. * session parameters are to be used.
  448. * It is different than the NvBufSurfTransformCompositeBlend API and It is currently
  449. * supported on Jetson only.
  450. *
  451. * @param[in] src pointer (multiple buffer) to input batched(batch size=1) buffers to be transformed.
  452. * @param[out] dst pointer (single buffer) where composited output would be stored.
  453. * @param[in] composite_blend_params pointer to NvBufSurfTransformCompositeParams structure.
  454. * @param[out] sync_obj
  455. * A pointer to an \ref NvBufSurfTransformSyncObj structure
  456. * which holds synchronization information of the current
  457. * composite call. ref\ NvBufSurfTransfromSyncObjWait() API to be
  458. * called on this object to wait for composition to complete.
  459. * \ref NvBufSurfTransformSyncObjDestroy API should be called after
  460. * \ref NvBufSurfTransformSyncObjWait API to release the objects
  461. * If the parameter is NULL, the call would return only after
  462. * the composite is complete.
  463. *
  464. * @return NvBufSurfTransform_Error indicating success or failure.
  465. */
  466. NvBufSurfTransform_Error NvBufSurfTransformMultiInputBufCompositeBlendAsync (NvBufSurface **src,
  467. NvBufSurface *dst, NvBufSurfTransformCompositeBlendParamsEx *composite_blend_params,
  468. NvBufSurfTransformSyncObj_t *sync_obj);
  469. /**
  470. * \brief Wait on the synchronization object.
  471. *
  472. * The API waits on the synchronization object to finish the corresponding
  473. * processing of transform/composite calls or returns on time_out
  474. *
  475. *
  476. * @param[in] sync_obj A pointer to sync object on which the API should wait
  477. * @param[in] time_out Maximum time in ms API should wait before returning, only
  478. * Only applicable for VIC as of now.
  479. * @return An \ref NvBufSurfTransform_Error value indicating success or failure.
  480. */
  481. NvBufSurfTransform_Error NvBufSurfTransformSyncObjWait(
  482. NvBufSurfTransformSyncObj_t sync_obj, uint32_t time_out);
  483. /**
  484. * \brief Destroy the synchronization object.
  485. *
  486. * The API deletes the sync_obj which was used for previous transform/composite
  487. * Asynchronous calls
  488. *
  489. * @param[in] sync_obj A pointer sync_obj, which the API will delete
  490. * @return An \ref NvBufSurfTransform_Error value indicating success or failure.
  491. *
  492. */
  493. NvBufSurfTransform_Error NvBufSurfTransformSyncObjDestroy(
  494. NvBufSurfTransformSyncObj_t* sync_obj);
  495. /** @} */
  496. #ifdef __cplusplus
  497. }
  498. #endif
  499. #endif