diff options
author | Martin Storsjö <martin@martin.st> | 2011-12-15 18:30:03 +0200 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2011-12-21 22:52:39 +0200 |
commit | fe75dc8583b65612f3a94144ee090e741dc926d5 (patch) | |
tree | 43c8e9effb5e16dcd30c41bd31f332ae65135f6b /libavcodec/avcodec.h | |
parent | 132846b0c86303ec99a1c9288ef74384a7ebd669 (diff) | |
download | ffmpeg-fe75dc8583b65612f3a94144ee090e741dc926d5.tar.gz |
libavcodec: Define a side data type for parameter changes
Also define a codec capability for codecs that can handle
parameters changed externally between decoded packets.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavcodec/avcodec.h')
-rw-r--r-- | libavcodec/avcodec.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index f78a7a61ff..6ce3224bfb 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -773,6 +773,10 @@ typedef struct RcOverride{ * Codec supports slice-based (or partition-based) multithreading. */ #define CODEC_CAP_SLICE_THREADS 0x2000 +/** + * Codec supports changed parameters at any point. + */ +#define CODEC_CAP_PARAM_CHANGE 0x4000 //The following defines may change, don't expect compatibility if you use them. #define MB_TYPE_INTRA4x4 0x0001 @@ -856,6 +860,7 @@ typedef struct AVPanScan{ enum AVPacketSideDataType { AV_PKT_DATA_PALETTE, AV_PKT_DATA_NEW_EXTRADATA, + AV_PKT_DATA_PARAM_CHANGE, }; typedef struct AVPacket { @@ -925,6 +930,27 @@ typedef struct AVPacket { #define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted /** + * 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 + */ + +enum AVSideDataParamChangeFlags { + AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, + AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002, + AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, + AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, +}; + +/** * Audio Video Frame. * New fields can be added to the end of AVFRAME with minor version * bumps. Removal, reordering and changes to existing fields require |