AVFrame Struct Reference

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

#include <frame.h>

Data Fields

uint8_t * data [AV_NUM_DATA_POINTERS]
 pointer to the picture/channel planes. More...
 
int linesize [AV_NUM_DATA_POINTERS]
 For video, size in bytes of each picture line. More...
 
uint8_t ** extended_data
 pointers to the data planes/channels. More...
 
int nb_samples
 number of audio samples (per channel) described by this frame More...
 
int format
 format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames, enum AVSampleFormat for audio) More...
 
int key_frame
 1 -> keyframe, 0-> not More...
 
enum AVPictureType pict_type
 Picture type of the frame. More...
 
AVRational sample_aspect_ratio
 Sample aspect ratio for the video frame, 0/1 if unknown/unspecified. More...
 
int64_t pts
 Presentation timestamp in time_base units (time when frame should be shown to user). More...
 
attribute_deprecated int64_t pkt_pts
 PTS copied from the AVPacket that was decoded to produce this frame. More...
 
int64_t pkt_dts
 DTS copied from the AVPacket that triggered returning this frame. More...
 
int coded_picture_number
 picture number in bitstream order More...
 
int display_picture_number
 picture number in display order More...
 
int quality
 quality (between 1 (good) and FF_LAMBDA_MAX (bad)) More...
 
void * opaque
 for some private data of the user More...
 
attribute_deprecated uint64_t error [AV_NUM_DATA_POINTERS]
 
int repeat_pict
 When decoding, this signals how much the picture must be delayed. More...
 
int interlaced_frame
 The content of the picture is interlaced. More...
 
int top_field_first
 If the content is interlaced, is top field displayed first. More...
 
int palette_has_changed
 Tell user application that palette has changed from previous frame. More...
 
int64_t reordered_opaque
 reordered opaque 64 bits (generally an integer or a double precision float PTS but can be anything). More...
 
int sample_rate
 Sample rate of the audio data. More...
 
uint64_t channel_layout
 Channel layout of the audio data. More...
 
AVBufferRefbuf [AV_NUM_DATA_POINTERS]
 AVBuffer references backing the data for this frame. More...
 
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. More...
 
int nb_extended_buf
 Number of elements in extended_buf. More...
 
AVFrameSideData ** side_data
 
int nb_side_data
 
int flags
 Frame flags, a combination of AV_FRAME_FLAGS. More...
 
enum AVColorRange color_range
 
enum AVColorPrimaries color_primaries
 
enum AVColorTransferCharacteristic color_trc
 
enum AVColorSpace colorspace
 
enum AVChromaLocation chroma_location
 
AVBufferRefhw_frames_ctx
 For hwaccel-format frames, this should be a reference to the AVHWFramesContext describing the frame. More...
 
AVBufferRefopaque_ref
 AVBufferRef for free use by the API user. More...
 
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.

Note
The part of the frame intended for display/presentation is further restricted by the Cropping rectangle.
int width
 
int height
 
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.

size_t crop_top
 
size_t crop_bottom
 
size_t crop_left
 
size_t crop_right
 

Detailed Description

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.

Examples:
decode_audio.c, decode_video.c, encode_audio.c, encode_video.c, filter_audio.c, output.c, and transcode_aac.c.

Definition at line 147 of file frame.h.

Field Documentation

◆ data

uint8_t* AVFrame::data[AV_NUM_DATA_POINTERS]

pointer to the picture/channel planes.

This might be different from the first allocated byte

Examples:
decode_audio.c, decode_video.c, encode_audio.c, encode_video.c, output.c, and transcode_aac.c.

Definition at line 153 of file frame.h.

Referenced by decode(), fill_yuv_image(), get_audio_frame(), get_video_frame(), load_encode_and_write(), and main().

◆ linesize

int AVFrame::linesize[AV_NUM_DATA_POINTERS]

For video, size in bytes of each picture line.

For audio, size in bytes of each plane.

For audio, only linesize[0] may be set. For planar audio, each channel plane must be the same size.

Note
The linesize may be larger than the size of usable data – there may be extra padding present for performance reasons.
Examples:
decode_video.c, encode_video.c, and output.c.

Definition at line 165 of file frame.h.

Referenced by decode(), fill_yuv_image(), get_video_frame(), main(), and process_audio_stream().

◆ extended_data

uint8_t** AVFrame::extended_data

pointers to the data planes/channels.

For video, this should simply point to data[].

For planar audio, each channel has a separate data pointer, and linesize[0] contains the size of each channel buffer. For packed audio, there is just one data pointer, and linesize[0] contains the total size of the buffer for all channels.

Note: Both data and extended_data should always be set in a valid frame, but for planar audio with more channels that can fit in data, extended_data must be used in order to access all channels.

Examples:
filter_audio.c, output.c, and transcode_aac.c.

Definition at line 181 of file frame.h.

Referenced by get_input(), process_audio_stream(), process_output(), and read_decode_convert_and_store().

◆ width

int AVFrame::width
Examples:
decode_video.c, encode_video.c, and output.c.

Definition at line 192 of file frame.h.

Referenced by alloc_picture(), decode(), and main().

◆ height

int AVFrame::height
Examples:
decode_video.c, encode_video.c, and output.c.

Definition at line 192 of file frame.h.

Referenced by alloc_picture(), decode(), and main().

◆ nb_samples

int AVFrame::nb_samples

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

Examples:
decode_audio.c, encode_audio.c, filter_audio.c, output.c, and transcode_aac.c.

Definition at line 200 of file frame.h.

Referenced by alloc_audio_frame(), decode(), encode_audio_frame(), get_audio_frame(), get_input(), main(), process_audio_stream(), process_output(), and read_decode_convert_and_store().

◆ format

int AVFrame::format

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

Examples:
decode_audio.c, encode_audio.c, encode_video.c, filter_audio.c, and output.c.

Definition at line 207 of file frame.h.

Referenced by alloc_audio_frame(), alloc_picture(), decode(), get_input(), main(), and process_output().

◆ key_frame

int AVFrame::key_frame

1 -> keyframe, 0-> not

Definition at line 212 of file frame.h.

◆ pict_type

enum AVPictureType AVFrame::pict_type

Picture type of the frame.

Definition at line 217 of file frame.h.

◆ sample_aspect_ratio

AVRational AVFrame::sample_aspect_ratio

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

Definition at line 222 of file frame.h.

◆ pts

int64_t AVFrame::pts

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

Examples:
encode_video.c, filter_audio.c, output.c, and transcode_aac.c.

Definition at line 227 of file frame.h.

Referenced by encode_audio_frame(), get_input(), get_video_frame(), main(), and process_audio_stream().

◆ pkt_pts

attribute_deprecated int64_t AVFrame::pkt_pts

PTS copied from the AVPacket that was decoded to produce this frame.

Deprecated:
use the pts field instead

Definition at line 235 of file frame.h.

◆ pkt_dts

int64_t AVFrame::pkt_dts

DTS copied from the AVPacket that triggered returning this frame.

Definition at line 241 of file frame.h.

◆ coded_picture_number

int AVFrame::coded_picture_number

picture number in bitstream order

Definition at line 246 of file frame.h.

◆ display_picture_number

int AVFrame::display_picture_number

picture number in display order

Definition at line 250 of file frame.h.

◆ quality

int AVFrame::quality

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

Definition at line 255 of file frame.h.

◆ opaque

void* AVFrame::opaque

for some private data of the user

Definition at line 260 of file frame.h.

◆ error

attribute_deprecated uint64_t AVFrame::error[AV_NUM_DATA_POINTERS]
Deprecated:
unused

Definition at line 267 of file frame.h.

◆ repeat_pict

int AVFrame::repeat_pict

When decoding, this signals how much the picture must be delayed.

extra_delay = repeat_pict / (2*fps)

Definition at line 274 of file frame.h.

◆ interlaced_frame

int AVFrame::interlaced_frame

The content of the picture is interlaced.

Definition at line 279 of file frame.h.

◆ top_field_first

int AVFrame::top_field_first

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

Definition at line 284 of file frame.h.

◆ palette_has_changed

int AVFrame::palette_has_changed

Tell user application that palette has changed from previous frame.

Definition at line 289 of file frame.h.

◆ reordered_opaque

int64_t AVFrame::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

Definition at line 299 of file frame.h.

◆ sample_rate

int AVFrame::sample_rate

Sample rate of the audio data.

Examples:
filter_audio.c, and output.c.

Definition at line 304 of file frame.h.

Referenced by alloc_audio_frame(), and get_input().

◆ channel_layout

uint64_t AVFrame::channel_layout

Channel layout of the audio data.

Examples:
decode_audio.c, encode_audio.c, filter_audio.c, and output.c.

Definition at line 309 of file frame.h.

Referenced by alloc_audio_frame(), decode(), get_input(), main(), and process_output().

◆ 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 buf[i] is non-NULL then buf[j] must also be non-NULL for all j < i.

There may be at most one AVBuffer per data plane, so for video this array always contains all the references. For planar audio with more than AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in this array. Then the extra AVBufferRef pointers are stored in the extended_buf array.

Definition at line 323 of file frame.h.

◆ extended_buf

AVBufferRef** AVFrame::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.

Note that this is different from AVFrame.extended_data, which always contains all the pointers. This array only contains the extra pointers, which cannot fit into AVFrame.buf.

This array is always allocated using av_malloc() by whoever constructs the frame. It is freed in av_frame_unref().

Definition at line 337 of file frame.h.

◆ nb_extended_buf

int AVFrame::nb_extended_buf

Number of elements in extended_buf.

Definition at line 341 of file frame.h.

◆ side_data

AVFrameSideData** AVFrame::side_data

Definition at line 343 of file frame.h.

◆ nb_side_data

int AVFrame::nb_side_data

Definition at line 344 of file frame.h.

◆ flags

int AVFrame::flags

Frame flags, a combination of AV_FRAME_FLAGS.

Definition at line 364 of file frame.h.

◆ color_range

enum AVColorRange AVFrame::color_range

Definition at line 366 of file frame.h.

◆ color_primaries

enum AVColorPrimaries AVFrame::color_primaries

Definition at line 368 of file frame.h.

◆ color_trc

enum AVColorTransferCharacteristic AVFrame::color_trc

Definition at line 370 of file frame.h.

◆ colorspace

enum AVColorSpace AVFrame::colorspace

Definition at line 372 of file frame.h.

◆ chroma_location

enum AVChromaLocation AVFrame::chroma_location

Definition at line 374 of file frame.h.

◆ hw_frames_ctx

AVBufferRef* AVFrame::hw_frames_ctx

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

Definition at line 380 of file frame.h.

◆ crop_top

size_t AVFrame::crop_top

Definition at line 390 of file frame.h.

◆ crop_bottom

size_t AVFrame::crop_bottom

Definition at line 391 of file frame.h.

◆ crop_left

size_t AVFrame::crop_left

Definition at line 392 of file frame.h.

◆ crop_right

size_t AVFrame::crop_right

Definition at line 393 of file frame.h.

◆ opaque_ref

AVBufferRef* AVFrame::opaque_ref

AVBufferRef for free use by the API user.

Libav will never check the contents of the buffer ref. Libav 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.

This is unrelated to the opaque field, although it serves a similar purpose.

Definition at line 407 of file frame.h.


The documentation for this struct was generated from the following file: