frame timestamp estimated using various heuristics, in stream time base Code outside libavcodec should access this field using: av_frame_get_best_effort_timestamp(frame) - encoding: unused - decoding: set by libavcodec, read by user.
AVBuffer references backing the data for this frame. If all elements of this array are NULL, then this frame is not reference counted.
Channel layout of the audio data.
number of audio channels, only used for audio. Code outside libavcodec should access this field using: av_frame_get_channels(frame) - encoding: unused - decoding: Read by user.
picture number in bitstream order
MPEG vs JPEG YUV range. It must be accessed using av_frame_get_color_range() and av_frame_set_color_range(). - encoding: Set by user - decoding: Set by libavcodec
YUV colorspace type. It must be accessed using av_frame_get_colorspace() and av_frame_set_colorspace(). - encoding: Set by user - decoding: Set by libavcodec
pointer to the picture/channel planes. This might be different from the first allocated byte
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. Code outside libavcodec should access this field using: av_frame_get_decode_error_flags(frame) - encoding: unused - decoding: set by libavcodec, read by user.
picture number in display order
@deprecated unused
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.
pointers to the data planes/channels.
Frame flags, a combination of @ref lavu_frame_flags
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames, enum AVSampleFormat for audio)
width and height of the video frame
The content of the picture is interlaced.
1 -> keyframe, 0-> not
For video, size in bytes of each picture line. For audio, size in bytes of each plane.
metadata. Code outside libavcodec should access this field using: av_frame_get_metadata(frame) - encoding: Set by user. - decoding: Set by libavcodec.
Number of elements in extended_buf.
number of audio samples (per channel) described by this frame
for some private data of the user
Tell user application that palette has changed from previous frame.
Picture type of the frame.
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.
duration of the corresponding packet, expressed in AVStream->time_base units, 0 if unknown. Code outside libavcodec should access this field using: av_frame_get_pkt_duration(frame) - encoding: unused - decoding: Read by user.
reordered pos from the last AVPacket that has been input into the decoder Code outside libavcodec should access this field using: av_frame_get_pkt_pos(frame) - encoding: unused - decoding: Read by user.
PTS copied from the AVPacket that was decoded to produce this frame.
size of the corresponding packet containing the compressed frame. It must be accessed using av_frame_get_pkt_size() and av_frame_set_pkt_size(). It is set to a negative value if unknown. - encoding: unused - decoding: set by libavcodec, read by user.
Presentation timestamp in time_base units (time when frame should be shown to user).
Not to be accessed directly from outside libavutil
QP table Not to be accessed directly from outside libavutil
QP store stride Not to be accessed directly from outside libavutil
quality (between 1 (good) and FF_LAMBDA_MAX (bad))
reordered opaque 64bit (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
When decoding, this signals how much the picture must be delayed. extra_delay = repeat_pict / (2*fps)
Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
Sample rate of the audio data.
If the content is interlaced, is top field displayed first.
width and height of the video frame
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. Similarly fields that are marked as to be only accessed by av_opt_ptr() can be reordered. This allows 2 forks to add fields without breaking compatibility with each other.