aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/avcodec.h
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2011-12-15 18:30:03 +0200
committerMartin Storsjö <martin@martin.st>2011-12-21 22:52:39 +0200
commitfe75dc8583b65612f3a94144ee090e741dc926d5 (patch)
tree43c8e9effb5e16dcd30c41bd31f332ae65135f6b /libavcodec/avcodec.h
parent132846b0c86303ec99a1c9288ef74384a7ebd669 (diff)
downloadffmpeg-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.h26
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