World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура AVFrame

#include <frame.h>

+ Граф связей класса AVFrame:

Открытые атрибуты

uint8_tdata [AV_NUM_DATA_POINTERS]
 
int linesize [AV_NUM_DATA_POINTERS]
 
uint8_t ** extended_data
 
int nb_samples
 
int format
 
int key_frame
 
enum AVPictureType pict_type
 
AVRational sample_aspect_ratio
 
int64_t pts
 
attribute_deprecated int64_t pkt_pts
 
int64_t pkt_dts
 
int coded_picture_number
 
int display_picture_number
 
int quality
 
voidopaque
 
attribute_deprecated uint64_t error [AV_NUM_DATA_POINTERS]
 
int repeat_pict
 
int interlaced_frame
 
int top_field_first
 
int palette_has_changed
 
int64_t reordered_opaque
 
int sample_rate
 
uint64_t channel_layout
 
AVBufferRefbuf [AV_NUM_DATA_POINTERS]
 
AVBufferRef ** extended_buf
 
int nb_extended_buf
 
AVFrameSideData ** side_data
 
int nb_side_data
 
int flags
 
enum AVColorRange color_range
 
enum AVColorPrimaries color_primaries
 
enum AVColorTransferCharacteristic color_trc
 
enum AVColorSpace colorspace
 
enum AVChromaLocation chroma_location
 
int64_t best_effort_timestamp
 
int64_t pkt_pos
 
int64_t pkt_duration
 
AVDictionarymetadata
 
int decode_error_flags
 
int channels
 
int pkt_size
 
attribute_deprecated int8_tqscale_table
 
attribute_deprecated int qstride
 
attribute_deprecated int qscale_type
 
attribute_deprecated AVBufferRefqp_table_buf
 
AVBufferRefhw_frames_ctx
 
AVBufferRefopaque_ref
 
AVBufferRefprivate_ref
 
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.

Заметки
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
 

Подробное описание

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()

См. определение в файле frame.h строка 295

Данные класса

◆ data

uint8_t* AVFrame::data[AV_NUM_DATA_POINTERS]

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

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: Except for hwaccel formats, pointers not needed by the format MUST be set to NULL.

См. определение в файле frame.h строка 309

Используется в AVAudioStream::decode_frame(), AVVideoStream::decode_frame() и AudioBaseDataSource::GetNextBuffer().

◆ 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.

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.

Заметки
The linesize may be larger than the size of usable data – there may be extra padding present for performance reasons.

См. определение в файле frame.h строка 326

Используется в AVVideoStream::decode_frame().

◆ 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.

См. определение в файле frame.h строка 342

◆ width

int AVFrame::width

См. определение в файле frame.h строка 353

◆ height

int AVFrame::height

См. определение в файле frame.h строка 353

Используется в AVVideoStream::decode_frame().

◆ nb_samples

int AVFrame::nb_samples

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

См. определение в файле frame.h строка 361

Используется в AVAudioStream::decode_frame() и AudioBaseDataSource::GetNextBuffer().

◆ 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)

См. определение в файле frame.h строка 368

◆ key_frame

int AVFrame::key_frame

1 -> keyframe, 0-> not

См. определение в файле frame.h строка 373

◆ pict_type

enum AVPictureType AVFrame::pict_type

Picture type of the frame.

См. определение в файле frame.h строка 378

◆ sample_aspect_ratio

AVRational AVFrame::sample_aspect_ratio

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

См. определение в файле frame.h строка 383

◆ pts

int64_t AVFrame::pts

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

См. определение в файле frame.h строка 388

◆ pkt_pts

attribute_deprecated int64_t AVFrame::pkt_pts

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

Уст.:
use the pts field instead

См. определение в файле frame.h строка 396

◆ pkt_dts

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.

См. определение в файле frame.h строка 404

◆ coded_picture_number

int AVFrame::coded_picture_number

picture number in bitstream order

См. определение в файле frame.h строка 409

◆ display_picture_number

int AVFrame::display_picture_number

picture number in display order

См. определение в файле frame.h строка 413

◆ quality

int AVFrame::quality

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

См. определение в файле frame.h строка 418

◆ opaque

void* AVFrame::opaque

for some private data of the user

См. определение в файле frame.h строка 423

◆ error

attribute_deprecated uint64_t AVFrame::error[AV_NUM_DATA_POINTERS]
Уст.:
unused

См. определение в файле frame.h строка 430

◆ repeat_pict

int AVFrame::repeat_pict

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

См. определение в файле frame.h строка 437

◆ interlaced_frame

int AVFrame::interlaced_frame

The content of the picture is interlaced.

См. определение в файле frame.h строка 442

◆ top_field_first

int AVFrame::top_field_first

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

См. определение в файле frame.h строка 447

◆ palette_has_changed

int AVFrame::palette_has_changed

Tell user application that palette has changed from previous frame.

См. определение в файле frame.h строка 452

◆ 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

См. определение в файле frame.h строка 462

◆ sample_rate

int AVFrame::sample_rate

Sample rate of the audio data.

См. определение в файле frame.h строка 467

◆ channel_layout

uint64_t AVFrame::channel_layout

Channel layout of the audio data.

См. определение в файле frame.h строка 472

◆ buf

AVBufferRef* AVFrame::buf[AV_NUM_DATA_POINTERS]

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.

См. определение в файле frame.h строка 486

◆ 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().

См. определение в файле frame.h строка 500

◆ nb_extended_buf

int AVFrame::nb_extended_buf

Number of elements in extended_buf.

См. определение в файле frame.h строка 504

◆ side_data

AVFrameSideData** AVFrame::side_data

См. определение в файле frame.h строка 506

◆ nb_side_data

int AVFrame::nb_side_data

См. определение в файле frame.h строка 507

◆ flags

int AVFrame::flags

Frame flags, a combination of AV_FRAME_FLAGS

См. определение в файле frame.h строка 532

◆ color_range

enum AVColorRange AVFrame::color_range

MPEG vs JPEG YUV range.

  • encoding: Set by user
  • decoding: Set by libavcodec

См. определение в файле frame.h строка 539

◆ color_primaries

enum AVColorPrimaries AVFrame::color_primaries

См. определение в файле frame.h строка 541

◆ color_trc

enum AVColorTransferCharacteristic AVFrame::color_trc

См. определение в файле frame.h строка 543

◆ colorspace

enum AVColorSpace AVFrame::colorspace

YUV colorspace type.

  • encoding: Set by user
  • decoding: Set by libavcodec

См. определение в файле frame.h строка 550

◆ chroma_location

enum AVChromaLocation AVFrame::chroma_location

См. определение в файле frame.h строка 552

◆ best_effort_timestamp

int64_t AVFrame::best_effort_timestamp

frame timestamp estimated using various heuristics, in stream time base

  • encoding: unused
  • decoding: set by libavcodec, read by user.

См. определение в файле frame.h строка 559

◆ pkt_pos

int64_t AVFrame::pkt_pos

reordered pos from the last AVPacket that has been input into the decoder

  • encoding: unused
  • decoding: Read by user.

См. определение в файле frame.h строка 566

◆ pkt_duration

int64_t AVFrame::pkt_duration

duration of the corresponding packet, expressed in AVStream->time_base units, 0 if unknown.

  • encoding: unused
  • decoding: Read by user.

См. определение в файле frame.h строка 574

◆ metadata

AVDictionary* AVFrame::metadata

metadata.

  • encoding: Set by user.
  • decoding: Set by libavcodec.

См. определение в файле frame.h строка 581

◆ decode_error_flags

int AVFrame::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.

См. определение в файле frame.h строка 590

◆ channels

int AVFrame::channels

number of audio channels, only used for audio.

  • encoding: unused
  • decoding: Read by user.

См. определение в файле frame.h строка 601

◆ pkt_size

int AVFrame::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.

См. определение в файле frame.h строка 610

◆ qscale_table

attribute_deprecated int8_t* AVFrame::qscale_table

QP table

См. определение в файле frame.h строка 617

◆ qstride

attribute_deprecated int AVFrame::qstride

QP store stride

См. определение в файле frame.h строка 622

◆ qscale_type

attribute_deprecated int AVFrame::qscale_type

См. определение в файле frame.h строка 625

◆ qp_table_buf

attribute_deprecated AVBufferRef* AVFrame::qp_table_buf

См. определение в файле frame.h строка 628

◆ hw_frames_ctx

AVBufferRef* AVFrame::hw_frames_ctx

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

См. определение в файле frame.h строка 634

◆ opaque_ref

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

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

См. определение в файле frame.h строка 645

◆ crop_top

size_t AVFrame::crop_top

См. определение в файле frame.h строка 655

◆ crop_bottom

size_t AVFrame::crop_bottom

См. определение в файле frame.h строка 656

◆ crop_left

size_t AVFrame::crop_left

См. определение в файле frame.h строка 657

◆ crop_right

size_t AVFrame::crop_right

См. определение в файле frame.h строка 658

◆ private_ref

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.

См. определение в файле frame.h строка 674


Объявления и описания членов структуры находятся в файле: