AVPacket

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

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

sizeof(AVPacket) being a part of the public ABI is deprecated. once av_init_packet() is removed, new packets will only be able to be allocated with av_packet_alloc(), and new fields may be added to the end of the struct with a minor bump.

@see av_packet_alloc @see av_packet_ref @see av_packet_unref

Members

Variables

buf
AVBufferRef* buf;

A reference to the reference-counted buffer where the packet data is stored. May be NULL, then the packet data is not reference-counted.

convergence_duration
long convergence_duration;

@deprecated Same as the duration field, but as int64_t. This was required for Matroska subtitles, whose duration values could overflow when the duration field was still an int.

data
ubyte* data;
Undocumented in source.
dts
long 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.

duration
long duration;

Duration of this packet in AVStream->time_base units, 0 if unknown. Equals next_pts - this_pts in presentation order.

flags
int flags;

A combination of AV_PKT_FLAG values

pos
long pos;

< byte position in stream, -1 if unknown

pts
long 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.

side_data
AVPacketSideData* side_data;

Additional packet data that can be provided by the container. Packet can contain several types of side information.

side_data_elems
int side_data_elems;
Undocumented in source.
size
int size;
Undocumented in source.
stream_index
int stream_index;
Undocumented in source.

Meta