World of Might and Magic
0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
|
Types and functions for working with AVPacket. Подробнее...
Классы | |
struct | AVPacketSideData |
struct | AVPacket |
Определения типов | |
typedef struct AVPacketSideData | AVPacketSideData |
typedef struct AVPacket | AVPacket |
Types and functions for working with AVPacket.
typedef struct AVPacketSideData AVPacketSideData |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
This structure stores compressed data. It is typically exported by demuxers and then passed as input to decoders, or received as output from encoders and then passed to muxers.
For video, it should typically contain one compressed frame. For audio it may contain several compressed frames. Encoders are allowed to output empty packets, with no compressed data, containing only side data (e.g. to update some stream parameters at the end of encoding).
AVPacket is one of the few structs in FFmpeg, whose size is a part of public ABI. Thus it may be allocated on stack and no new fields can be added to it without libavcodec and libavformat major bump.
The semantics of data ownership depends on the buf field. If it is set, the packet data is dynamically allocated and is valid indefinitely until a call to av_packet_unref() reduces the reference count to 0.
If the buf field is not set av_packet_ref() would make a copy instead of increasing the reference count.
The side data is always allocated with av_malloc(), copied by av_packet_ref() and freed by av_packet_unref().
enum AVPacketSideDataType |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Элементы перечислений | |
---|---|
AV_PKT_DATA_PALETTE | An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE bytes worth of palette. This side data signals that a new palette is present. |
AV_PKT_DATA_NEW_EXTRADATA | The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format that the extradata buffer was changed and the receiving side should act upon it appropriately. The new extradata is embedded in the side data buffer and should be immediately used for processing the current frame or packet. |
AV_PKT_DATA_PARAM_CHANGE | An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: u32le param_flags
if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT)
s32le channel_count
if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT)
u64le channel_layout
if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)
s32le sample_rate
if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)
s32le width
s32le height
|
AV_PKT_DATA_H263_MB_INFO | An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of structures with info about macroblocks relevant to splitting the packet into smaller packets on macroblock edges (e.g. as for RFC 2190). That is, it does not necessarily contain info about all macroblocks, as long as the distance between macroblocks in the info is smaller than the target payload size. Each MB info structure is 12 bytes, and is laid out as follows: u32le bit offset from the start of the packet
u8 current quantizer at the start of the macroblock
u8 GOB number
u16le macroblock address within the GOB
u8 horizontal MV predictor
u8 vertical MV predictor
u8 horizontal MV predictor for block number 3
u8 vertical MV predictor for block number 3
|
AV_PKT_DATA_REPLAYGAIN | This side data should be associated with an audio stream and contains ReplayGain information in form of the AVReplayGain struct. |
AV_PKT_DATA_DISPLAYMATRIX | This side data contains a 3x3 transformation matrix describing an affine transformation that needs to be applied to the decoded video frames for correct presentation. See libavutil/display.h for a detailed description of the data. |
AV_PKT_DATA_STEREO3D | This side data should be associated with a video stream and contains Stereoscopic 3D information in form of the AVStereo3D struct. |
AV_PKT_DATA_AUDIO_SERVICE_TYPE | This side data should be associated with an audio stream and corresponds to enum AVAudioServiceType. |
AV_PKT_DATA_QUALITY_STATS | This side data contains quality related information from the encoder. u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad).
u8 picture type
u8 error count
u16 reserved
u64le[error count] sum of squared differences between encoder in and output
|
AV_PKT_DATA_FALLBACK_TRACK | This side data contains an integer value representing the stream index of a "fallback" track. A fallback track indicates an alternate track to use when the current track can not be decoded for some reason. e.g. no decoder available for codec. |
AV_PKT_DATA_CPB_PROPERTIES | This side data corresponds to the AVCPBProperties struct. |
AV_PKT_DATA_SKIP_SAMPLES | Recommmends skipping the specified number of samples u32le number of samples to skip from start of this packet
u32le number of samples to skip from end of this packet
u8 reason for start skip
u8 reason for end skip (0=padding silence, 1=convergence)
|
AV_PKT_DATA_JP_DUALMONO | An AV_PKT_DATA_JP_DUALMONO side data packet indicates that the packet may contain "dual mono" audio specific to Japanese DTV and if it is true, recommends only the selected channel to be used. u8 selected channels (0=mail/left, 1=sub/right, 2=both)
|
AV_PKT_DATA_STRINGS_METADATA | A list of zero terminated key/value strings. There is no end marker for the list, so it is required to rely on the side data size to stop. |
AV_PKT_DATA_SUBTITLE_POSITION | Subtitle event position u32le x1
u32le y1
u32le x2
u32le y2
|
AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL | Data found in BlockAdditional element of matroska container. There is no end marker for the data, so it is required to rely on the side data size to recognize the end. 8 byte id (as found in BlockAddId) followed by data. |
AV_PKT_DATA_WEBVTT_IDENTIFIER | The optional first identifier line of a WebVTT cue. |
AV_PKT_DATA_WEBVTT_SETTINGS | The optional settings (rendering instructions) that immediately follow the timestamp specifier of a WebVTT cue. |
AV_PKT_DATA_METADATA_UPDATE | A list of zero terminated key/value strings. There is no end marker for the list, so it is required to rely on the side data size to stop. This side data includes updated metadata which appeared in the stream. |
AV_PKT_DATA_MPEGTS_STREAM_ID | MPEGTS stream ID as uint8_t, this is required to pass the stream ID information from the demuxer to the corresponding muxer. |
AV_PKT_DATA_MASTERING_DISPLAY_METADATA | Mastering display metadata (based on SMPTE-2086:2014). This metadata should be associated with a video stream and contains data in the form of the AVMasteringDisplayMetadata struct. |
AV_PKT_DATA_SPHERICAL | This side data should be associated with a video stream and corresponds to the AVSphericalMapping structure. |
AV_PKT_DATA_CONTENT_LIGHT_LEVEL | Content light level (based on CTA-861.3). This metadata should be associated with a video stream and contains data in the form of the AVContentLightMetadata struct. |
AV_PKT_DATA_A53_CC | ATSC A53 Part 4 Closed Captions. This metadata should be associated with a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data. The number of bytes of CC data is AVPacketSideData.size. |
AV_PKT_DATA_ENCRYPTION_INIT_INFO | This side data is encryption initialization data. The format is not part of ABI, use av_encryption_init_info_* methods to access. |
AV_PKT_DATA_ENCRYPTION_INFO | This side data contains encryption info for how to decrypt the packet. The format is not part of ABI, use av_encryption_info_* methods to access. |
AV_PKT_DATA_AFD | Active Format Description data consisting of a single byte as specified in ETSI TS 101 154 using AVActiveFormatDescription enum. |
AV_PKT_DATA_NB | The number of side data types. This is not part of the public API/ABI in the sense that it may change when new side data types are added. This must stay the last enum value. If its value becomes huge, some code using it needs to be updated as it assumes it to be smaller than other limits. |
См. определение в файле avcodec.h строка 1184
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Элементы перечислений | |
---|---|
AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT | |
AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT | |
AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE | |
AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS |
См. определение в файле avcodec.h строка 1531
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Allocate an AVPacket and set its fields to default values. The resulting struct must be freed using av_packet_free().
Используется в Movie::GetFrame() и AudioBaseDataSource::GetNextBuffer().
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Create a new packet that references the same data as src.
This is a shortcut for av_packet_alloc()+av_packet_ref().
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Free the packet, if the packet is reference counted, it will be unreferenced first.
pkt | packet to be freed. The pointer will be set to NULL. |
Используется в Movie::GetFrame() и AudioBaseDataSource::GetNextBuffer().
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Initialize optional fields of a packet with default values.
Note, this does not touch the data and size members, which have to be initialized separately.
pkt | packet |
int av_new_packet | ( | AVPacket * | pkt, |
int | size | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Allocate the payload of a packet and initialize its fields with default values.
pkt | packet |
size | wanted payload size |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Reduce packet size, correctly zeroing padding
pkt | packet |
size | new size |
int av_grow_packet | ( | AVPacket * | pkt, |
int | grow_by | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Increase packet size, correctly zeroing padding
pkt | packet |
grow_by | number of bytes by which to increase the size of the packet |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Initialize a reference-counted packet from av_malloc()ed data.
pkt | packet to be initialized. This function will set the data, size, and buf fields, all others are left untouched. |
data | Data allocated by av_malloc() to be used as packet data. If this function returns successfully, the data is owned by the underlying AVBuffer. The caller may not access the data through other means. |
size | size of data in bytes, without the padding. I.e. the full buffer size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE. |
attribute_deprecated int av_dup_packet | ( | AVPacket * | pkt | ) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Copy packet, including contents
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Copy packet side data
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Free a packet.
pkt | packet to free |
uint8_t* av_packet_new_side_data | ( | AVPacket * | pkt, |
enum AVPacketSideDataType | type, | ||
int | size | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Allocate new information of a packet.
pkt | packet |
type | side information type |
size | side information size |
int av_packet_add_side_data | ( | AVPacket * | pkt, |
enum AVPacketSideDataType | type, | ||
uint8_t * | data, | ||
size_t | size | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Wrap an existing array as a packet side data.
pkt | packet |
type | side information type |
data | the side data array. It must be allocated with the av_malloc() family of functions. The ownership of the data is transferred to pkt. |
size | side information size |
int av_packet_shrink_side_data | ( | AVPacket * | pkt, |
enum AVPacketSideDataType | type, | ||
int | size | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Shrink the already allocated side data buffer
pkt | packet |
type | side information type |
size | new side information size |
uint8_t* av_packet_get_side_data | ( | const AVPacket * | pkt, |
enum AVPacketSideDataType | type, | ||
int * | size | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Get side information from packet.
pkt | packet |
type | desired side information type |
size | pointer for side information size to store (optional) |
attribute_deprecated int av_packet_merge_side_data | ( | AVPacket * | pkt | ) |
attribute_deprecated int av_packet_split_side_data | ( | AVPacket * | pkt | ) |
const char* av_packet_side_data_name | ( | enum AVPacketSideDataType | type | ) |
uint8_t* av_packet_pack_dictionary | ( | AVDictionary * | dict, |
int * | size | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Pack a dictionary for use in side_data.
dict | The dictionary to pack. |
size | pointer to store the size of the returned data |
int av_packet_unpack_dictionary | ( | const uint8_t * | data, |
int | size, | ||
AVDictionary ** | dict | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Unpack a dictionary from side_data.
data | data from side_data |
size | size of the data |
dict | the metadata storage dictionary |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Convenience function to free all the side data stored. All the other fields stay untouched.
pkt | packet |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Setup a new reference to the data described by a given packet
If src is reference-counted, setup dst as a new reference to the buffer in src. Otherwise allocate a new buffer in dst and copy the data from src into it.
All the other fields are copied from src.
dst | Destination packet |
src | Source packet |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Wipe the packet.
Unreference the buffer referenced by the packet and reset the remaining packet fields to their default values.
pkt | The packet to be unreferenced. |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Move every field in src to dst and reset src.
src | Source packet, will be reset |
dst | Destination packet |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Copy only "properties" fields from src to dst.
Properties for the purpose of this function are all the fields beside those related to the packet data (buf, data, size)
dst | Destination packet |
src | Source packet |
int av_packet_make_refcounted | ( | AVPacket * | pkt | ) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Ensure the data described by a given packet is reference counted.
pkt | packet whose data should be made reference counted. |
int av_packet_make_writable | ( | AVPacket * | pkt | ) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Create a writable reference for the data described by a given packet, avoiding data copy if possible.
pkt | Packet whose data should be made writable. |
void av_packet_rescale_ts | ( | AVPacket * | pkt, |
AVRational | tb_src, | ||
AVRational | tb_dst | ||
) |
#include <C:/git/world-of-might-and-magic/lib/win32/x86/ffmpeg-4.2.2/include/libavcodec/avcodec.h>
Convert valid timing fields (timestamps / durations) in a packet from one timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be ignored.
pkt | packet on which the conversion will be performed |
tb_src | source timebase, in which the timing fields in pkt are expressed |
tb_dst | destination timebase, to which the timing fields will be converted |