AVFrame

This structure describes decoded (raw) audio or video data.

AVFrame must be allocated using av_frame_alloc(). Note that this only allocates the AVFrame itself, the buffers for the data must be managed through other means (see below). AVFrame must be freed with av_frame_free().

AVFrame is typically allocated once and then reused multiple times to hold different data (e.g. a single AVFrame to hold frames received from a decoder). In such a case, av_frame_unref() will free any references held by the frame and reset it to its original clean state before it is reused again.

The data described by an AVFrame is usually reference counted through the AVBuffer API. The underlying buffer references are stored in AVFrame.buf / AVFrame.extended_buf. An AVFrame is considered to be reference counted if at least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case, every single data plane must be contained in one of the buffers in AVFrame.buf or AVFrame.extended_buf. There may be a single buffer for all the data, or one separate buffer for each plane, or anything in between.

sizeof(AVFrame) is not a part of the public ABI, so new fields may be added to the end with a minor bump.

Fields can be accessed through AVOptions, the name string used, matches the C structure field name for fields accessible through AVOptions. The AVClass for AVFrame can be obtained from avcodec_get_frame_class()

Members

Variables

best_effort_timestamp
long best_effort_timestamp;

frame timestamp estimated using various heuristics, in stream time base - encoding: unused - decoding: set by libavcodec, read by user.

buf
AVBufferRef*[AV_NUM_DATA_POINTERS] buf;

AVBuffer references backing the data for this frame. If all elements of this array are NULL, then this frame is not reference counted. This array must be filled contiguously -- if bufi is non-NULL then bufj must also be non-NULL for all j < i.

channel_layout
ulong channel_layout;

Channel layout of the audio data.

channels
int channels;

number of audio channels, only used for audio. - encoding: unused - decoding: Read by user.

chroma_location
AVChromaLocation chroma_location;
Undocumented in source.
coded_picture_number
int coded_picture_number;

picture number in bitstream order

color_primaries
AVColorPrimaries color_primaries;
Undocumented in source.
color_range
AVColorRange color_range;

MPEG vs JPEG YUV range. - encoding: Set by user - decoding: Set by libavcodec

color_trc
AVColorTransferCharacteristic color_trc;
Undocumented in source.
colorspace
AVColorSpace colorspace;

YUV colorspace type. - encoding: Set by user - decoding: Set by libavcodec

crop_bottom
size_t crop_bottom;
Undocumented in source.
crop_left
size_t crop_left;
Undocumented in source.
crop_right
size_t crop_right;
Undocumented in source.
crop_top
size_t crop_top;

@anchor cropping @name Cropping Video frames only. The number of pixels to discard from the the top/bottom/left/right border of the frame to obtain the sub-rectangle of the frame intended for presentation. @{

data
ubyte*[AV_NUM_DATA_POINTERS] data;

pointer to the picture/channel planes. This might be different from the first allocated byte

decode_error_flags
int decode_error_flags;

decode error flags of the frame, set to a combination of FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there were errors during the decoding. - encoding: unused - decoding: set by libavcodec, read by user.

display_picture_number
int display_picture_number;

picture number in display order

error
ulong[AV_NUM_DATA_POINTERS] error;

@deprecated unused

extended_buf
AVBufferRef** extended_buf;

For planar audio which requires more than AV_NUM_DATA_POINTERS AVBufferRef pointers, this array will hold all the references which cannot fit into AVFrame.buf.

extended_data
ubyte** extended_data;

pointers to the data planes/channels.

flags
int flags;

Frame flags, a combination of @ref lavu_frame_flags

format
int format;

format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames, enum AVSampleFormat for audio)

height
int height;
Undocumented in source.
hw_frames_ctx
AVBufferRef* hw_frames_ctx;

For hwaccel-format frames, this should be a reference to the AVHWFramesContext describing the frame.

interlaced_frame
int interlaced_frame;

The content of the picture is interlaced.

key_frame
int key_frame;

1 -> keyframe, 0-> not

linesize
int[AV_NUM_DATA_POINTERS] linesize;

For video, size in bytes of each picture line. For audio, size in bytes of each plane.

metadata
AVDictionary* metadata;

metadata. - encoding: Set by user. - decoding: Set by libavcodec.

nb_extended_buf
int nb_extended_buf;

Number of elements in extended_buf.

nb_samples
int nb_samples;

number of audio samples (per channel) described by this frame

nb_side_data
int nb_side_data;
Undocumented in source.
opaque
void* opaque;

for some private data of the user

opaque_ref
AVBufferRef* opaque_ref;

AVBufferRef for free use by the API user. FFmpeg will never check the contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when the frame is unreferenced. av_frame_copy_props() calls create a new reference with av_buffer_ref() for the target frame's opaque_ref field.

palette_has_changed
int palette_has_changed;

Tell user application that palette has changed from previous frame.

pict_type
AVPictureType pict_type;

Picture type of the frame.

pkt_dts
long pkt_dts;

DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used) This is also the Presentation time of this AVFrame calculated from only AVPacket.dts values without pts values.

pkt_duration
long pkt_duration;

duration of the corresponding packet, expressed in AVStream->time_base units, 0 if unknown. - encoding: unused - decoding: Read by user.

pkt_pos
long pkt_pos;

reordered pos from the last AVPacket that has been input into the decoder - encoding: unused - decoding: Read by user.

pkt_pts
long pkt_pts;

PTS copied from the AVPacket that was decoded to produce this frame. @deprecated use the pts field instead

pkt_size
int pkt_size;

size of the corresponding packet containing the compressed frame. It is set to a negative value if unknown. - encoding: unused - decoding: set by libavcodec, read by user.

private_ref
AVBufferRef* private_ref;

AVBufferRef for internal use by a single libav* library. Must not be used to transfer data between libraries. Has to be NULL when ownership of the frame leaves the respective library.

pts
long pts;

Presentation timestamp in time_base units (time when frame should be shown to user).

qp_table_buf
AVBufferRef* qp_table_buf;
Undocumented in source.
qscale_table
byte* qscale_table;

QP table

qscale_type
int qscale_type;
Undocumented in source.
qstride
int qstride;

QP store stride

quality
int quality;

quality (between 1 (good) and FF_LAMBDA_MAX (bad))

reordered_opaque
long reordered_opaque;

reordered opaque 64 bits (generally an integer or a double precision float PTS but can be anything). The user sets AVCodecContext.reordered_opaque to represent the input at that time, the decoder reorders values as needed and sets AVFrame.reordered_opaque to exactly one of the values provided by the user through AVCodecContext.reordered_opaque @deprecated in favor of pkt_pts

repeat_pict
int repeat_pict;

When decoding, this signals how much the picture must be delayed. extra_delay = repeat_pict / (2*fps)

sample_aspect_ratio
AVRational sample_aspect_ratio;

Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.

sample_rate
int sample_rate;

Sample rate of the audio data.

side_data
AVFrameSideData** side_data;
Undocumented in source.
top_field_first
int top_field_first;

If the content is interlaced, is top field displayed first.

width
int width;

@name Video dimensions Video frames only. The coded dimensions (in pixels) of the video frame, i.e. the size of the rectangle that contains some well-defined values.

Meta