FFmpeg 7.1.1
|
This structure describes decoded (raw) audio or video data. More...
#include <libavutil/frame.h>
Data Fields | |
uint8_t * | data [AV_NUM_DATA_POINTERS] |
pointer to the picture/channel planes. | |
int | linesize [AV_NUM_DATA_POINTERS] |
For video, a positive or negative value, which is typically indicating the size in bytes of each picture line, but it can also be: | |
uint8_t ** | extended_data |
pointers to the data planes/channels. | |
int | nb_samples |
number of audio samples (per channel) described by this frame | |
int | format |
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames, enum AVSampleFormat for audio) | |
enum AVPictureType | pict_type |
Picture type of the frame. | |
AVRational | sample_aspect_ratio |
Sample aspect ratio for the video frame, 0/1 if unknown/unspecified. | |
int64_t | pts |
Presentation timestamp in time_base units (time when frame should be shown to user). | |
int64_t | pkt_dts |
DTS copied from the AVPacket that triggered returning this frame. | |
AVRational | time_base |
Time base for the timestamps in this frame. | |
int | quality |
quality (between 1 (good) and FF_LAMBDA_MAX (bad)) | |
void * | opaque |
Frame owner's private data. | |
int | repeat_pict |
Number of fields in this frame which should be repeated, i.e. | |
int | sample_rate |
Sample rate of the audio data. | |
AVBufferRef * | buf [AV_NUM_DATA_POINTERS] |
AVBuffer references backing the data for this frame. | |
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. | |
int | nb_extended_buf |
Number of elements in extended_buf. | |
AVFrameSideData ** | side_data |
int | nb_side_data |
int | flags |
Frame flags, a combination of AV_FRAME_FLAGS. | |
enum AVColorRange | color_range |
MPEG vs JPEG YUV range. | |
enum AVColorPrimaries | color_primaries |
enum AVColorTransferCharacteristic | color_trc |
enum AVColorSpace | colorspace |
YUV colorspace type. | |
enum AVChromaLocation | chroma_location |
int64_t | best_effort_timestamp |
frame timestamp estimated using various heuristics, in stream time base | |
AVDictionary * | metadata |
metadata. | |
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. | |
AVBufferRef * | hw_frames_ctx |
For hwaccel-format frames, this should be a reference to the AVHWFramesContext describing the frame. | |
AVBufferRef * | opaque_ref |
Frame owner's private data. | |
AVBufferRef * | private_ref |
AVBufferRef for internal use by a single libav* library. | |
AVChannelLayout | ch_layout |
Channel layout of the audio data. | |
int64_t | duration |
Duration of the frame, in the same units as pts. | |
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.
| |
int | width |
int | height |
Cropping | |
size_t | crop_top |
size_t | crop_bottom |
size_t | crop_left |
size_t | crop_right |
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.
uint8_t* AVFrame::data[AV_NUM_DATA_POINTERS] |
pointer to the picture/channel planes.
This might be different from the first allocated byte. For video, it could even point to the end of the image data.
All pointers in data and extended_data must point into one of the AVBufferRef in buf or extended_buf.
Some decoders access areas outside 0,0 - width,height, please see avcodec_align_dimensions2(). Some filters and swscale can read up to 16 bytes beyond the planes, if these filters are to be used, then 16 extra bytes must be allocated.
NOTE: Pointers not needed by the format MUST be set to NULL.
Definition at line 410 of file frame.h.
Referenced by decode(), decode(), decode_packet(), decode_write(), display_frame(), fill_yuv_image(), get_audio_frame(), load_encode_and_write(), main(), main(), output_video_frame(), print_frame(), and write_audio_frame().
int AVFrame::linesize[AV_NUM_DATA_POINTERS] |
For video, a positive or negative value, which is typically indicating the size in bytes of each picture line, but it can also be:
For audio, only linesize[0] may be set. For planar audio, each channel plane must be the same size.
For video the linesizes should be multiples of the CPUs alignment preference, this is 16 or 32 for modern desktop CPUs. Some code requires such alignment other code can be slower without correct alignment, for yet other it makes no difference.
Definition at line 434 of file frame.h.
Referenced by decode(), decode_packet(), decode_write(), display_frame(), fill_yuv_image(), main(), and output_video_frame().
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.
Definition at line 450 of file frame.h.
Referenced by get_input(), output_audio_frame(), process_output(), and read_decode_convert_and_store().
int AVFrame::width |
Definition at line 461 of file frame.h.
Referenced by alloc_frame(), decode(), decode_packet(), decode_write(), display_frame(), main(), main(), and output_video_frame().
int AVFrame::height |
Definition at line 461 of file frame.h.
Referenced by alloc_frame(), decode(), decode_packet(), decode_write(), display_frame(), main(), main(), and output_video_frame().
int AVFrame::nb_samples |
number of audio samples (per channel) described by this frame
Definition at line 469 of file frame.h.
Referenced by alloc_audio_frame(), decode(), encode_audio_frame(), get_audio_frame(), get_input(), main(), output_audio_frame(), print_frame(), process_output(), read_decode_convert_and_store(), and write_audio_frame().
int AVFrame::format |
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames, enum AVSampleFormat for audio)
Definition at line 476 of file frame.h.
Referenced by alloc_audio_frame(), alloc_frame(), decode_write(), get_input(), main(), main(), output_audio_frame(), output_video_frame(), and process_output().
enum AVPictureType AVFrame::pict_type |
Picture type of the frame.
Definition at line 491 of file frame.h.
Referenced by filter_encode_write_frame().
AVRational AVFrame::sample_aspect_ratio |
int64_t AVFrame::pts |
Presentation timestamp in time_base units (time when frame should be shown to user).
Definition at line 501 of file frame.h.
Referenced by dec_enc(), display_frame(), encode(), encode_audio_frame(), encode_write_frame(), get_audio_frame(), get_input(), main(), output_audio_frame(), and write_audio_frame().
int64_t AVFrame::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.
AVRational AVFrame::time_base |
Time base for the timestamps in this frame.
In the future, this field may be set on frames output by decoders or filters, but its value will be by default ignored on input to encoders or filters.
Definition at line 516 of file frame.h.
Referenced by encode_write_frame(), and filter_encode_write_frame().
int AVFrame::quality |
void* AVFrame::opaque |
Frame owner's private data.
This field may be set by the code that allocates/owns the frame data. It is then not touched by any library functions, except:
int AVFrame::repeat_pict |
Number of fields in this frame which should be repeated, i.e.
the total duration of this frame should be repeat_pict + 2 normal field durations.
For interlaced frames this field may be set to 1, which signals that this frame should be presented as 3 fields: beginning with the first field (as determined by AV_FRAME_FLAG_TOP_FIELD_FIRST being set or not), followed by the second field, and then the first field again.
For progressive frames this field may be set to a multiple of 2, which signals that this frame's duration should be (repeat_pict + 2) / 2 normal frame durations.
int AVFrame::sample_rate |
Sample rate of the audio data.
Definition at line 588 of file frame.h.
Referenced by alloc_audio_frame(), and get_input().
AVBufferRef* AVFrame::buf[AV_NUM_DATA_POINTERS] |
AVBuffer references backing the data for this frame.
All the pointers in data and extended_data must point inside one of the buffers in buf or extended_buf. 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.
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().
int AVFrame::nb_extended_buf |
AVFrameSideData** AVFrame::side_data |
int AVFrame::flags |
Frame flags, a combination of AV_FRAME_FLAGS.
enum AVColorRange AVFrame::color_range |
enum AVColorPrimaries AVFrame::color_primaries |
enum AVColorTransferCharacteristic AVFrame::color_trc |
enum AVColorSpace AVFrame::colorspace |
enum AVChromaLocation AVFrame::chroma_location |
int64_t AVFrame::best_effort_timestamp |
frame timestamp estimated using various heuristics, in stream time base
Definition at line 688 of file frame.h.
Referenced by main().
AVDictionary* AVFrame::metadata |
int AVFrame::decode_error_flags |
AVBufferRef* AVFrame::hw_frames_ctx |
For hwaccel-format frames, this should be a reference to the AVHWFramesContext describing the frame.
AVBufferRef* AVFrame::opaque_ref |
Frame owner's private data.
This field may be set by the code that allocates/owns the frame data. It is then not touched by any library functions, except:
AVBufferRef* AVFrame::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.
Code outside the FFmpeg libs should never check or change 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 private_ref field.
AVChannelLayout AVFrame::ch_layout |
Channel layout of the audio data.
Definition at line 790 of file frame.h.
Referenced by alloc_audio_frame(), get_input(), main(), print_frame(), and process_output().
int64_t AVFrame::duration |