FFmpeg
4.2.2
|
This structure stores compressed data. More...
#include <libavcodec/avcodec.h>
Data Fields | |
AVBufferRef * | buf |
A reference to the reference-counted buffer where the packet data is stored. More... | |
int64_t | pts |
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will be presented to the user. More... | |
int64_t | dts |
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed. More... | |
uint8_t * | data |
int | size |
int | stream_index |
int | flags |
A combination of AV_PKT_FLAG values. More... | |
AVPacketSideData * | side_data |
Additional packet data that can be provided by the container. More... | |
int | side_data_elems |
int64_t | duration |
Duration of this packet in AVStream->time_base units, 0 if unknown. More... | |
int64_t | pos |
byte position in stream, -1 if unknown More... | |
attribute_deprecated int64_t | convergence_duration |
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().
AVBufferRef* AVPacket::buf |
int64_t AVPacket::pts |
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will be presented to the user.
Can be AV_NOPTS_VALUE if it is not stored in the file. pts MUST be larger or equal to dts as presentation cannot happen before decompression, unless one wants to view hex dumps. Some formats misuse the terms dts and pts/cts to mean something different. Such timestamps must be converted to true pts/dts before they are stored in AVPacket.
Definition at line 1470 of file avcodec.h.
Referenced by encode(), log_packet(), and main().
int64_t AVPacket::dts |
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed.
Can be AV_NOPTS_VALUE if it is not stored in the file.
Definition at line 1476 of file avcodec.h.
Referenced by log_packet(), and main().
uint8_t* AVPacket::data |
Definition at line 1477 of file avcodec.h.
Referenced by encode(), encode_write_frame(), init_packet(), and main().
int AVPacket::size |
Definition at line 1478 of file avcodec.h.
Referenced by decode_packet(), encode(), encode_write_frame(), init_packet(), and main().
int AVPacket::stream_index |
Definition at line 1479 of file avcodec.h.
Referenced by decode_packet(), encode_write_frame(), log_packet(), main(), and write_frame().
AVPacketSideData* AVPacket::side_data |
int64_t AVPacket::duration |
Duration of this packet in AVStream->time_base units, 0 if unknown.
Equals next_pts - this_pts in presentation order.
Definition at line 1495 of file avcodec.h.
Referenced by log_packet(), and main().
int64_t AVPacket::pos |
byte position in stream, -1 if unknown
Definition at line 1497 of file avcodec.h.
Referenced by main().
attribute_deprecated int64_t AVPacket::convergence_duration |
This was required for Matroska subtitles, whose duration values could overflow when the duration field was still an int.