External Frame Buffer Functions
Common Algorithm Interface » Decoder Algorithm Interface

## Functions

vpx_codec_err_t | vpx_codec_set_frame_buffer_functions (vpx_codec_ctx_t *ctx, vpx_get_frame_buffer_cb_fn_t cb_get, vpx_release_frame_buffer_cb_fn_t cb_release, void *cb_priv)
| Pass in external frame buffers for the decoder to use.

## Detailed Description

The following function is required to be implemented for all decoders that advertise the VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER capability. Calling this function for codecs that don't advertise this capability will result in an error code being returned, usually VPX_CODEC_INCAPABLE.

Note
  Currently this only works with VP9.

## Function Documentation

## vpx_codec_set_frame_buffer_functions()

vpx_codec_err_t vpx_codec_set_frame_buffer_functions | ( | vpx_codec_ctx_t * | ctx,
|  | vpx_get_frame_buffer_cb_fn_t | cb_get,
|  | vpx_release_frame_buffer_cb_fn_t | cb_release,
|  | void * | cb_priv
| ) |  |

Pass in external frame buffers for the decoder to use.

Registers functions to be called when libvpx needs a frame buffer to decode the current frame and a function to be called when libvpx does not internally reference the frame buffer. This set function must be called before the first call to decode or libvpx will assume the default behavior of allocating frame buffers internally.

Parameters

  [in] | ctx | Pointer to this instance's context
  [in] | cb_get | Pointer to the get callback function
  [in] | cb_release | Pointer to the release callback function
  [in] | cb_priv | Callback's private data

Return values

  VPX_CODEC_OK | External frame buffers will be used by libvpx.
  VPX_CODEC_INVALID_PARAM | One or more of the callbacks were NULL.
  VPX_CODEC_ERROR | Decoder context not initialized.
  VPX_CODEC_INCAPABLE | Algorithm not capable of using external frame buffers.

Note
  When decoding VP9, the application may be required to pass in at least VP9_MAXIMUM_REF_BUFFERS + VPX_MAXIMUM_WORK_BUFFERS external frame buffers.