vpx_decoder_compat.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. /*
  2. * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
  3. *
  4. * Use of this source code is governed by a BSD-style license
  5. * that can be found in the LICENSE file in the root of the source
  6. * tree. An additional intellectual property rights grant can be found
  7. * in the file PATENTS. All contributing project authors may
  8. * be found in the AUTHORS file in the root of the source tree.
  9. */
  10. /*!\defgroup decoder Common Decoder Algorithm Interface
  11. * This abstraction allows applications using this decoder to easily support
  12. * multiple video formats with minimal code duplication. This section describes
  13. * the interface common to all codecs.
  14. * @{
  15. */
  16. /*!\file
  17. * \brief Provides a compatibility layer between version 1 and 2 of this API.
  18. *
  19. * This interface has been deprecated. Only existing code should make use
  20. * of this interface, and therefore, it is only thinly documented. Existing
  21. * code should be ported to the vpx_codec_* API.
  22. */
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. #ifndef VPX_DECODER_COMPAT_H
  27. #define VPX_DECODER_COMPAT_H
  28. /*!\brief Decoder algorithm return codes */
  29. typedef enum {
  30. /*!\brief Operation completed without error */
  31. VPX_DEC_OK = VPX_CODEC_OK,
  32. /*!\brief Unspecified error */
  33. VPX_DEC_ERROR = VPX_CODEC_ERROR,
  34. /*!\brief Memory operation failed */
  35. VPX_DEC_MEM_ERROR = VPX_CODEC_MEM_ERROR,
  36. /*!\brief ABI version mismatch */
  37. VPX_DEC_ABI_MISMATCH = VPX_CODEC_ABI_MISMATCH,
  38. /*!\brief The given bitstream is not supported.
  39. *
  40. * The bitstream was unable to be parsed at the highest level. The decoder
  41. * is unable to proceed. This error \ref SHOULD be treated as fatal to the
  42. * stream. */
  43. VPX_DEC_UNSUP_BITSTREAM = VPX_CODEC_UNSUP_BITSTREAM,
  44. /*!\brief Encoded bitstream uses an unsupported feature
  45. *
  46. * The decoder does not implement a feature required by the encoder. This
  47. * return code should only be used for features that prevent future
  48. * pictures from being properly decoded. This error \ref MAY be treated as
  49. * fatal to the stream or \ref MAY be treated as fatal to the current GOP.
  50. */
  51. VPX_DEC_UNSUP_FEATURE = VPX_CODEC_UNSUP_FEATURE,
  52. /*!\brief The coded data for this stream is corrupt or incomplete
  53. *
  54. * There was a problem decoding the current frame. This return code
  55. * should only be used for failures that prevent future pictures from
  56. * being properly decoded. This error \ref MAY be treated as fatal to the
  57. * stream or \ref MAY be treated as fatal to the current GOP. If decoding
  58. * is continued for the current GOP, artifacts may be present.
  59. */
  60. VPX_DEC_CORRUPT_FRAME = VPX_CODEC_CORRUPT_FRAME,
  61. /*!\brief An application-supplied parameter is not valid.
  62. *
  63. */
  64. VPX_DEC_INVALID_PARAM = VPX_CODEC_INVALID_PARAM,
  65. /*!\brief An iterator reached the end of list.
  66. *
  67. */
  68. VPX_DEC_LIST_END = VPX_CODEC_LIST_END
  69. }
  70. vpx_dec_err_t;
  71. /*! \brief Decoder capabilities bitfield
  72. *
  73. * Each decoder advertises the capabilities it supports as part of its
  74. * ::vpx_dec_iface_t interface structure. Capabilities are extra interfaces
  75. * or functionality, and are not required to be supported by a decoder.
  76. *
  77. * The available flags are specified by VPX_DEC_CAP_* defines.
  78. */
  79. typedef int vpx_dec_caps_t;
  80. #define VPX_DEC_CAP_PUT_SLICE 0x0001 /**< Will issue put_slice callbacks */
  81. #define VPX_DEC_CAP_PUT_FRAME 0x0002 /**< Will issue put_frame callbacks */
  82. #define VPX_DEC_CAP_XMA 0x0004 /**< Supports eXternal Memory Allocation */
  83. /*!\brief Stream properties
  84. *
  85. * This structure is used to query or set properties of the decoded
  86. * stream. Algorithms may extend this structure with data specific
  87. * to their bitstream by setting the sz member appropriately.
  88. */
  89. #if 1
  90. typedef vpx_codec_stream_info_t vpx_dec_stream_info_t;
  91. #else
  92. typedef struct {
  93. unsigned int sz; /**< Size of this structure */
  94. unsigned int w; /**< Width (or 0 for unknown/default) */
  95. unsigned int h; /**< Height (or 0 for unknown/default) */
  96. unsigned int is_kf; /**< Current frame is a keyframe */
  97. } vpx_dec_stream_info_t;
  98. #endif
  99. /*!\brief Decoder interface structure.
  100. *
  101. * Contains function pointers and other data private to the decoder
  102. * implementation. This structure is opaque to the application.
  103. */
  104. typedef const struct vpx_codec_iface vpx_dec_iface_t;
  105. typedef struct vpx_codec_priv vpx_dec_priv_t;
  106. /*!\brief Iterator
  107. *
  108. * Opaque storage used for iterating over lists.
  109. */
  110. typedef vpx_codec_iter_t vpx_dec_iter_t;
  111. /*!\brief Decoder context structure
  112. *
  113. * All decoders \ref MUST support this context structure fully. In general,
  114. * this data should be considered private to the decoder algorithm, and
  115. * not be manipulated or examined by the calling application. Applications
  116. * may reference the 'name' member to get a printable description of the
  117. * algorithm.
  118. */
  119. #if 1
  120. typedef vpx_codec_ctx_t vpx_dec_ctx_t;
  121. #else
  122. typedef struct {
  123. const char *name; /**< Printable interface name */
  124. vpx_dec_iface_t *iface; /**< Interface pointers */
  125. vpx_dec_err_t err; /**< Last returned error */
  126. vpx_dec_priv_t *priv; /**< Algorithm private storage */
  127. } vpx_dec_ctx_t;
  128. #endif
  129. /*!\brief Return the build configuration
  130. *
  131. * Returns a printable string containing an encoded version of the build
  132. * configuration. This may be useful to vpx support.
  133. *
  134. */
  135. const char *vpx_dec_build_config(void) DEPRECATED;
  136. /*!\brief Return the name for a given interface
  137. *
  138. * Returns a human readable string for name of the given decoder interface.
  139. *
  140. * \param[in] iface Interface pointer
  141. *
  142. */
  143. const char *vpx_dec_iface_name(vpx_dec_iface_t *iface) DEPRECATED;
  144. /*!\brief Convert error number to printable string
  145. *
  146. * Returns a human readable string for the last error returned by the
  147. * algorithm. The returned error will be one line and will not contain
  148. * any newline characters.
  149. *
  150. *
  151. * \param[in] err Error number.
  152. *
  153. */
  154. const char *vpx_dec_err_to_string(vpx_dec_err_t err) DEPRECATED;
  155. /*!\brief Retrieve error synopsis for decoder context
  156. *
  157. * Returns a human readable string for the last error returned by the
  158. * algorithm. The returned error will be one line and will not contain
  159. * any newline characters.
  160. *
  161. *
  162. * \param[in] ctx Pointer to this instance's context.
  163. *
  164. */
  165. const char *vpx_dec_error(vpx_dec_ctx_t *ctx) DEPRECATED;
  166. /*!\brief Retrieve detailed error information for decoder context
  167. *
  168. * Returns a human readable string providing detailed information about
  169. * the last error.
  170. *
  171. * \param[in] ctx Pointer to this instance's context.
  172. *
  173. * \retval NULL
  174. * No detailed information is available.
  175. */
  176. const char *vpx_dec_error_detail(vpx_dec_ctx_t *ctx) DEPRECATED;
  177. /* REQUIRED FUNCTIONS
  178. *
  179. * The following functions are required to be implemented for all decoders.
  180. * They represent the base case functionality expected of all decoders.
  181. */
  182. /*!\brief Initialize a decoder instance
  183. *
  184. * Initializes a decoder context using the given interface. Applications
  185. * should call the vpx_dec_init convenience macro instead of this
  186. * function directly, to ensure that the ABI version number parameter
  187. * is properly initialized.
  188. *
  189. * \param[in] ctx Pointer to this instance's context.
  190. * \param[in] iface Pointer to the algorithm interface to use.
  191. * \param[in] ver ABI version number. Must be set to
  192. * VPX_DECODER_ABI_VERSION
  193. * \retval #VPX_DEC_OK
  194. * The decoder algorithm initialized.
  195. * \retval #VPX_DEC_MEM_ERROR
  196. * Memory allocation failed.
  197. */
  198. vpx_dec_err_t vpx_dec_init_ver(vpx_dec_ctx_t *ctx,
  199. vpx_dec_iface_t *iface,
  200. int ver) DEPRECATED;
  201. #define vpx_dec_init(ctx, iface) \
  202. vpx_dec_init_ver(ctx, iface, VPX_DECODER_ABI_VERSION)
  203. /*!\brief Destroy a decoder instance
  204. *
  205. * Destroys a decoder context, freeing any associated memory buffers.
  206. *
  207. * \param[in] ctx Pointer to this instance's context
  208. *
  209. * \retval #VPX_DEC_OK
  210. * The decoder algorithm initialized.
  211. * \retval #VPX_DEC_MEM_ERROR
  212. * Memory allocation failed.
  213. */
  214. vpx_dec_err_t vpx_dec_destroy(vpx_dec_ctx_t *ctx) DEPRECATED;
  215. /*!\brief Get the capabilities of an algorithm.
  216. *
  217. * Retrieves the capabilities bitfield from the algorithm's interface.
  218. *
  219. * \param[in] iface Pointer to the algorithm interface
  220. *
  221. */
  222. vpx_dec_caps_t vpx_dec_get_caps(vpx_dec_iface_t *iface) DEPRECATED;
  223. /*!\brief Parse stream info from a buffer
  224. *
  225. * Performs high level parsing of the bitstream. Construction of a decoder
  226. * context is not necessary. Can be used to determine if the bitstream is
  227. * of the proper format, and to extract information from the stream.
  228. *
  229. * \param[in] iface Pointer to the algorithm interface
  230. * \param[in] data Pointer to a block of data to parse
  231. * \param[in] data_sz Size of the data buffer
  232. * \param[in,out] si Pointer to stream info to update. The size member
  233. * \ref MUST be properly initialized, but \ref MAY be
  234. * clobbered by the algorithm. This parameter \ref MAY
  235. * be NULL.
  236. *
  237. * \retval #VPX_DEC_OK
  238. * Bitstream is parsable and stream information updated
  239. */
  240. vpx_dec_err_t vpx_dec_peek_stream_info(vpx_dec_iface_t *iface,
  241. const uint8_t *data,
  242. unsigned int data_sz,
  243. vpx_dec_stream_info_t *si) DEPRECATED;
  244. /*!\brief Return information about the current stream.
  245. *
  246. * Returns information about the stream that has been parsed during decoding.
  247. *
  248. * \param[in] ctx Pointer to this instance's context
  249. * \param[in,out] si Pointer to stream info to update. The size member
  250. * \ref MUST be properly initialized, but \ref MAY be
  251. * clobbered by the algorithm. This parameter \ref MAY
  252. * be NULL.
  253. *
  254. * \retval #VPX_DEC_OK
  255. * Bitstream is parsable and stream information updated
  256. */
  257. vpx_dec_err_t vpx_dec_get_stream_info(vpx_dec_ctx_t *ctx,
  258. vpx_dec_stream_info_t *si) DEPRECATED;
  259. /*!\brief Control algorithm
  260. *
  261. * This function is used to exchange algorithm specific data with the decoder
  262. * instance. This can be used to implement features specific to a particular
  263. * algorithm.
  264. *
  265. * This wrapper function dispatches the request to the helper function
  266. * associated with the given ctrl_id. It tries to call this function
  267. * transparently, but will return #VPX_DEC_ERROR if the request could not
  268. * be dispatched.
  269. *
  270. * \param[in] ctx Pointer to this instance's context
  271. * \param[in] ctrl_id Algorithm specific control identifier
  272. * \param[in,out] data Data to exchange with algorithm instance.
  273. *
  274. * \retval #VPX_DEC_OK
  275. * The control request was processed.
  276. * \retval #VPX_DEC_ERROR
  277. * The control request was not processed.
  278. * \retval #VPX_DEC_INVALID_PARAM
  279. * The data was not valid.
  280. */
  281. vpx_dec_err_t vpx_dec_control(vpx_dec_ctx_t *ctx,
  282. int ctrl_id,
  283. void *data) DEPRECATED;
  284. /*!\brief Decode data
  285. *
  286. * Processes a buffer of coded data. If the processing results in a new
  287. * decoded frame becoming available, #VPX_DEC_CB_PUT_SLICE and
  288. * #VPX_DEC_CB_PUT_FRAME events may be generated, as appropriate. Encoded data
  289. * \ref MUST be passed in DTS (decode time stamp) order. Frames produced will
  290. * always be in PTS (presentation time stamp) order.
  291. *
  292. * \param[in] ctx Pointer to this instance's context
  293. * \param[in] data Pointer to this block of new coded data. If
  294. * NULL, a VPX_DEC_CB_PUT_FRAME event is posted
  295. * for the previously decoded frame.
  296. * \param[in] data_sz Size of the coded data, in bytes.
  297. * \param[in] user_priv Application specific data to associate with
  298. * this frame.
  299. * \param[in] rel_pts PTS relative to the previous frame, in us. If
  300. * unknown or unavailable, set to zero.
  301. *
  302. * \return Returns #VPX_DEC_OK if the coded data was processed completely
  303. * and future pictures can be decoded without error. Otherwise,
  304. * see the descriptions of the other error codes in ::vpx_dec_err_t
  305. * for recoverability capabilities.
  306. */
  307. vpx_dec_err_t vpx_dec_decode(vpx_dec_ctx_t *ctx,
  308. uint8_t *data,
  309. unsigned int data_sz,
  310. void *user_priv,
  311. int rel_pts) DEPRECATED;
  312. /*!\brief Decoded frames iterator
  313. *
  314. * Iterates over a list of the frames available for display. The iterator
  315. * storage should be initialized to NULL to start the iteration. Iteration is
  316. * complete when this function returns NULL.
  317. *
  318. * The list of available frames becomes valid upon completion of the
  319. * vpx_dec_decode call, and remains valid until the next call to vpx_dec_decode.
  320. *
  321. * \param[in] ctx Pointer to this instance's context
  322. * \param[in out] iter Iterator storage, initialized to NULL
  323. *
  324. * \return Returns a pointer to an image, if one is ready for display. Frames
  325. * produced will always be in PTS (presentation time stamp) order.
  326. */
  327. vpx_image_t *vpx_dec_get_frame(vpx_dec_ctx_t *ctx,
  328. vpx_dec_iter_t *iter) DEPRECATED;
  329. /*!\defgroup cap_put_frame Frame-Based Decoding Functions
  330. *
  331. * The following functions are required to be implemented for all decoders
  332. * that advertise the VPX_DEC_CAP_PUT_FRAME capability. Calling these functions
  333. * for codecs that don't advertise this capability will result in an error
  334. * code being returned, usually VPX_DEC_ERROR
  335. * @{
  336. */
  337. /*!\brief put frame callback prototype
  338. *
  339. * This callback is invoked by the decoder to notify the application of
  340. * the availability of decoded image data.
  341. */
  342. typedef void (*vpx_dec_put_frame_cb_fn_t)(void *user_priv,
  343. const vpx_image_t *img);
  344. /*!\brief Register for notification of frame completion.
  345. *
  346. * Registers a given function to be called when a decoded frame is
  347. * available.
  348. *
  349. * \param[in] ctx Pointer to this instance's context
  350. * \param[in] cb Pointer to the callback function
  351. * \param[in] user_priv User's private data
  352. *
  353. * \retval #VPX_DEC_OK
  354. * Callback successfully registered.
  355. * \retval #VPX_DEC_ERROR
  356. * Decoder context not initialized, or algorithm not capable of
  357. * posting slice completion.
  358. */
  359. vpx_dec_err_t vpx_dec_register_put_frame_cb(vpx_dec_ctx_t *ctx,
  360. vpx_dec_put_frame_cb_fn_t cb,
  361. void *user_priv) DEPRECATED;
  362. /*!@} - end defgroup cap_put_frame */
  363. /*!\defgroup cap_put_slice Slice-Based Decoding Functions
  364. *
  365. * The following functions are required to be implemented for all decoders
  366. * that advertise the VPX_DEC_CAP_PUT_SLICE capability. Calling these functions
  367. * for codecs that don't advertise this capability will result in an error
  368. * code being returned, usually VPX_DEC_ERROR
  369. * @{
  370. */
  371. /*!\brief put slice callback prototype
  372. *
  373. * This callback is invoked by the decoder to notify the application of
  374. * the availability of partially decoded image data. The
  375. */
  376. typedef void (*vpx_dec_put_slice_cb_fn_t)(void *user_priv,
  377. const vpx_image_t *img,
  378. const vpx_image_rect_t *valid,
  379. const vpx_image_rect_t *update);
  380. /*!\brief Register for notification of slice completion.
  381. *
  382. * Registers a given function to be called when a decoded slice is
  383. * available.
  384. *
  385. * \param[in] ctx Pointer to this instance's context
  386. * \param[in] cb Pointer to the callback function
  387. * \param[in] user_priv User's private data
  388. *
  389. * \retval #VPX_DEC_OK
  390. * Callback successfully registered.
  391. * \retval #VPX_DEC_ERROR
  392. * Decoder context not initialized, or algorithm not capable of
  393. * posting slice completion.
  394. */
  395. vpx_dec_err_t vpx_dec_register_put_slice_cb(vpx_dec_ctx_t *ctx,
  396. vpx_dec_put_slice_cb_fn_t cb,
  397. void *user_priv) DEPRECATED;
  398. /*!@} - end defgroup cap_put_slice*/
  399. /*!\defgroup cap_xma External Memory Allocation Functions
  400. *
  401. * The following functions are required to be implemented for all decoders
  402. * that advertise the VPX_DEC_CAP_XMA capability. Calling these functions
  403. * for codecs that don't advertise this capability will result in an error
  404. * code being returned, usually VPX_DEC_ERROR
  405. * @{
  406. */
  407. /*!\brief Memory Map Entry
  408. *
  409. * This structure is used to contain the properties of a memory segment. It
  410. * is populated by the decoder in the request phase, and by the calling
  411. * application once the requested allocation has been performed.
  412. */
  413. #if 1
  414. #define VPX_DEC_MEM_ZERO 0x1 /**< Segment must be zeroed by allocation */
  415. #define VPX_DEC_MEM_WRONLY 0x2 /**< Segment need not be readable */
  416. #define VPX_DEC_MEM_FAST 0x4 /**< Place in fast memory, if available */
  417. typedef struct vpx_codec_mmap vpx_dec_mmap_t;
  418. #else
  419. typedef struct vpx_dec_mmap {
  420. /*
  421. * The following members are set by the codec when requesting a segment
  422. */
  423. unsigned int id; /**< identifier for the segment's contents */
  424. unsigned long sz; /**< size of the segment, in bytes */
  425. unsigned int align; /**< required alignment of the segment, in bytes */
  426. unsigned int flags; /**< bitfield containing segment properties */
  427. #define VPX_DEC_MEM_ZERO 0x1 /**< Segment must be zeroed by allocation */
  428. #define VPX_DEC_MEM_WRONLY 0x2 /**< Segment need not be readable */
  429. #define VPX_DEC_MEM_FAST 0x4 /**< Place in fast memory, if available */
  430. /* The following members are to be filled in by the allocation function */
  431. void *base; /**< pointer to the allocated segment */
  432. void (*dtor)(struct vpx_dec_mmap *map); /**< destructor to call */
  433. void *priv; /**< allocator private storage */
  434. } vpx_dec_mmap_t;
  435. #endif
  436. /*!\brief Initialize a decoder instance in external allocation mode
  437. *
  438. * Initializes a decoder context using the given interface. Applications
  439. * should call the vpx_dec_xma_init convenience macro instead of this
  440. * function directly, to ensure that the ABI version number parameter
  441. * is properly initialized.
  442. *
  443. * \param[in] ctx Pointer to this instance's context.
  444. * \param[in] iface Pointer to the algorithm interface to use.
  445. * \param[in] ver ABI version number. Must be set to
  446. * VPX_DECODER_ABI_VERSION
  447. * \retval #VPX_DEC_OK
  448. * The decoder algorithm initialized.
  449. * \retval #VPX_DEC_ERROR
  450. * Decoder does not support XMA mode.
  451. */
  452. vpx_dec_err_t vpx_dec_xma_init_ver(vpx_dec_ctx_t *ctx,
  453. vpx_dec_iface_t *iface,
  454. int ver) DEPRECATED;
  455. #define vpx_dec_xma_init(ctx, iface) \
  456. vpx_dec_xma_init_ver(ctx, iface, VPX_DECODER_ABI_VERSION)
  457. /*!\brief Iterate over the list of segments to allocate.
  458. *
  459. * Iterates over a list of the segments to allocate. The iterator storage
  460. * should be initialized to NULL to start the iteration. Iteration is complete
  461. * when this function returns VPX_DEC_LIST_END. The amount of memory needed to
  462. * allocate is dependent upon the size of the encoded stream. This means that
  463. * the stream info structure must be known at allocation time. It can be
  464. * populated with the vpx_dec_peek_stream_info() function. In cases where the
  465. * stream to be decoded is not available at allocation time, a fixed size must
  466. * be requested. The decoder will not be able to decode streams larger than
  467. * the size used at allocation time.
  468. *
  469. * \param[in] ctx Pointer to this instance's context.
  470. * \param[out] mmap Pointer to the memory map entry to populate.
  471. * \param[in] si Pointer to the stream info.
  472. * \param[in out] iter Iterator storage, initialized to NULL
  473. *
  474. * \retval #VPX_DEC_OK
  475. * The memory map entry was populated.
  476. * \retval #VPX_DEC_ERROR
  477. * Decoder does not support XMA mode.
  478. * \retval #VPX_DEC_MEM_ERROR
  479. * Unable to determine segment size from stream info.
  480. */
  481. vpx_dec_err_t vpx_dec_get_mem_map(vpx_dec_ctx_t *ctx,
  482. vpx_dec_mmap_t *mmap,
  483. const vpx_dec_stream_info_t *si,
  484. vpx_dec_iter_t *iter) DEPRECATED;
  485. /*!\brief Identify allocated segments to decoder instance
  486. *
  487. * Stores a list of allocated segments in the decoder. Segments \ref MUST be
  488. * passed in the order they are read from vpx_dec_get_mem_map(), but may be
  489. * passed in groups of any size. Segments \ref MUST be set only once. The
  490. * allocation function \ref MUST ensure that the vpx_dec_mmap_t::base member
  491. * is non-NULL. If the segment requires cleanup handling (e.g., calling free()
  492. * or close()) then the vpx_dec_mmap_t::dtor member \ref MUST be populated.
  493. *
  494. * \param[in] ctx Pointer to this instance's context.
  495. * \param[in] mmaps Pointer to the first memory map entry in the list.
  496. * \param[in] num_maps Number of entries being set at this time
  497. *
  498. * \retval #VPX_DEC_OK
  499. * The segment was stored in the decoder context.
  500. * \retval #VPX_DEC_ERROR
  501. * Decoder does not support XMA mode.
  502. * \retval #VPX_DEC_MEM_ERROR
  503. * Segment base address was not set, or segment was already stored.
  504. */
  505. vpx_dec_err_t vpx_dec_set_mem_map(vpx_dec_ctx_t *ctx,
  506. vpx_dec_mmap_t *mmaps,
  507. unsigned int num_maps) DEPRECATED;
  508. /*!@} - end defgroup cap_xma*/
  509. /*!@} - end defgroup decoder*/
  510. #endif
  511. #ifdef __cplusplus
  512. }
  513. #endif