AOMedia AV1 Codec
Decoder Algorithm Interface

Topics

 External Frame Buffer Functions
 

Files

file  aom_decoder.h
 Describes the decoder algorithm interface to applications.
 

Data Structures

struct  aom_codec_stream_info
 Initialization-time Feature Enabling. More...
 
struct  aom_codec_dec_cfg
 Initialization Configurations. More...
 

Macros

#define AOM_DECODER_ABI_VERSION
 Current ABI version number.
 
#define AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER   0x200000
 Decoder capabilities bitfield.
 
#define aom_codec_dec_init(ctx, iface, cfg, flags)    aom_codec_dec_init_ver(ctx, iface, cfg, flags, AOM_DECODER_ABI_VERSION)
 Convenience macro for aom_codec_dec_init_ver()
 

Typedefs

typedef struct aom_codec_stream_info aom_codec_stream_info_t
 Initialization-time Feature Enabling.
 
typedef struct aom_codec_dec_cfg aom_codec_dec_cfg_t
 Initialization Configurations.
 

Functions

aom_codec_err_t aom_codec_dec_init_ver (aom_codec_ctx_t *ctx, aom_codec_iface_t *iface, const aom_codec_dec_cfg_t *cfg, aom_codec_flags_t flags, int ver)
 Initialize a decoder instance.
 
aom_codec_err_t aom_codec_peek_stream_info (aom_codec_iface_t *iface, const uint8_t *data, size_t data_sz, aom_codec_stream_info_t *si)
 Parse stream info from a buffer.
 
aom_codec_err_t aom_codec_get_stream_info (aom_codec_ctx_t *ctx, aom_codec_stream_info_t *si)
 Return information about the current stream.
 
aom_codec_err_t aom_codec_decode (aom_codec_ctx_t *ctx, const uint8_t *data, size_t data_sz, void *user_priv)
 Decode data.
 
aom_image_taom_codec_get_frame (aom_codec_ctx_t *ctx, aom_codec_iter_t *iter)
 Decoded frames iterator.
 

Detailed Description

This abstraction allows applications using this decoder to easily support multiple video formats with minimal code duplication. This section describes the interface common to all decoders.

Macro Definition Documentation

◆ AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER

#define AOM_CODEC_CAP_EXTERNAL_FRAME_BUFFER   0x200000

Decoder capabilities bitfield.

Each decoder advertises the capabilities it supports as part of its aom_codec_iface_t interface structure. Capabilities are extra interfaces or functionality, and are not required to be supported by a decoder.

The available flags are specified by AOM_CODEC_CAP_* defines.

brief Can support external frame buffers

◆ aom_codec_dec_init

#define aom_codec_dec_init ( ctx,
iface,
cfg,
flags )    aom_codec_dec_init_ver(ctx, iface, cfg, flags, AOM_DECODER_ABI_VERSION)

Convenience macro for aom_codec_dec_init_ver()

Ensures the ABI version parameter is properly set.

Typedef Documentation

◆ aom_codec_stream_info_t

Initialization-time Feature Enabling.

Certain codec features must be known at initialization time, to allow for proper memory allocation.

The available flags are specified by AOM_CODEC_USE_* defines.

Stream properties

This structure is used to query or set properties of the decoded stream.

◆ aom_codec_dec_cfg_t

Initialization Configurations.

This structure is used to pass init time configuration options to the decoder. alias for struct aom_codec_dec_cfg

Function Documentation

◆ aom_codec_dec_init_ver()

aom_codec_err_t aom_codec_dec_init_ver ( aom_codec_ctx_t * ctx,
aom_codec_iface_t * iface,
const aom_codec_dec_cfg_t * cfg,
aom_codec_flags_t flags,
int ver )

Initialize a decoder instance.

Initializes a decoder context using the given interface. Applications should call the aom_codec_dec_init convenience macro instead of this function directly, to ensure that the ABI version number parameter is properly initialized.

If the library was configured with cmake -DCONFIG_MULTITHREAD=0, this call is not thread safe and should be guarded with a lock if being used in a multithreaded context.

Parameters
[in]ctxPointer to this instance's context.
[in]ifacePointer to the algorithm interface to use.
[in]cfgConfiguration to use, if known. May be NULL.
[in]flagsBitfield of AOM_CODEC_USE_* flags
[in]verABI version number. Must be set to AOM_DECODER_ABI_VERSION
Return values
AOM_CODEC_OKThe decoder algorithm has been initialized.
AOM_CODEC_MEM_ERRORMemory allocation failed.

◆ aom_codec_peek_stream_info()

aom_codec_err_t aom_codec_peek_stream_info ( aom_codec_iface_t * iface,
const uint8_t * data,
size_t data_sz,
aom_codec_stream_info_t * si )

Parse stream info from a buffer.

Performs high level parsing of the bitstream. Construction of a decoder context is not necessary. Can be used to determine if the bitstream is of the proper format, and to extract information from the stream.

Parameters
[in]ifacePointer to the algorithm interface
[in]dataPointer to a block of data to parse
[in]data_szSize of the data buffer
[in,out]siPointer to stream info to update. The is_annexb member MUST be properly initialized. This function sets the rest of the members.
Return values
AOM_CODEC_OKBitstream is parsable and stream information updated.
AOM_CODEC_INVALID_PARAMOne of the arguments is invalid, for example a NULL pointer.
AOM_CODEC_UNSUP_BITSTREAMThe decoder didn't recognize the coded data, or the buffer was too short.

◆ aom_codec_get_stream_info()

aom_codec_err_t aom_codec_get_stream_info ( aom_codec_ctx_t * ctx,
aom_codec_stream_info_t * si )

Return information about the current stream.

Returns information about the stream that has been parsed during decoding.

Parameters
[in]ctxPointer to this instance's context
[in,out]siPointer to stream info to update.
Return values
AOM_CODEC_OKBitstream is parsable and stream information updated.
AOM_CODEC_INVALID_PARAMOne of the arguments is invalid, for example a NULL pointer.
AOM_CODEC_UNSUP_BITSTREAMThe decoder couldn't parse the submitted data.

◆ aom_codec_decode()

aom_codec_err_t aom_codec_decode ( aom_codec_ctx_t * ctx,
const uint8_t * data,
size_t data_sz,
void * user_priv )

Decode data.

Processes a buffer of coded data. Encoded data MUST be passed in DTS (decode time stamp) order. Frames produced will always be in PTS (presentation time stamp) order.

Parameters
[in]ctxPointer to this instance's context
[in]dataPointer to this block of new coded data.
[in]data_szSize of the coded data, in bytes.
[in]user_privApplication specific data to associate with this frame.
Returns
Returns AOM_CODEC_OK if the coded data was processed completely and future pictures can be decoded without error. Otherwise, see the descriptions of the other error codes in aom_codec_err_t for recoverability capabilities.

◆ aom_codec_get_frame()

aom_image_t * aom_codec_get_frame ( aom_codec_ctx_t * ctx,
aom_codec_iter_t * iter )

Decoded frames iterator.

Iterates over a list of the frames available for display. The iterator storage should be initialized to NULL to start the iteration. Iteration is complete when this function returns NULL.

The list of available frames becomes valid upon completion of the aom_codec_decode call, and remains valid until the next call to aom_codec_decode.

Parameters
[in]ctxPointer to this instance's context
[in,out]iterIterator storage, initialized to NULL
Returns
Returns a pointer to an image, if one is ready for display. Frames produced will always be in PTS (presentation time stamp) order.