This structure stores compressed data. More...

#include <avcodec.h>

Data Fields

AVBufferRefbuf
 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...
 
AVPacketSideDataside_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
 

Detailed Description

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

See also
av_packet_ref
av_packet_unref
Examples:
decode_audio.c, decode_video.c, encode_audio.c, encode_video.c, output.c, and transcode_aac.c.

Definition at line 1130 of file avcodec.h.

Field Documentation

◆ buf

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

Definition at line 1136 of file avcodec.h.

◆ pts

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.

Examples:
encode_video.c.

Definition at line 1146 of file avcodec.h.

Referenced by encode().

◆ dts

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 1152 of file avcodec.h.

◆ data

uint8_t* AVPacket::data
Examples:
decode_audio.c, decode_video.c, encode_audio.c, encode_video.c, and transcode_aac.c.

Definition at line 1153 of file avcodec.h.

Referenced by encode(), init_packet(), and main().

◆ size

int AVPacket::size
Examples:
decode_audio.c, decode_video.c, encode_audio.c, encode_video.c, and transcode_aac.c.

Definition at line 1154 of file avcodec.h.

Referenced by encode(), init_packet(), and main().

◆ stream_index

int AVPacket::stream_index
Examples:
output.c.

Definition at line 1155 of file avcodec.h.

Referenced by encode_audio_frame(), and write_video_frame().

◆ flags

int AVPacket::flags

A combination of AV_PKT_FLAG values.

Definition at line 1159 of file avcodec.h.

◆ side_data

AVPacketSideData* AVPacket::side_data

Additional packet data that can be provided by the container.

Packet can contain several types of side information.

Definition at line 1164 of file avcodec.h.

◆ side_data_elems

int AVPacket::side_data_elems

Definition at line 1165 of file avcodec.h.

◆ duration

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 1171 of file avcodec.h.

◆ pos

int64_t AVPacket::pos

byte position in stream, -1 if unknown

Definition at line 1173 of file avcodec.h.

◆ convergence_duration

attribute_deprecated int64_t AVPacket::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.

Definition at line 1182 of file avcodec.h.


The documentation for this struct was generated from the following file: