Commit fe75dc85 authored by Martin Storsjö's avatar Martin Storsjö

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: 's avatarMartin Storsjö <martin@martin.st>
parent 132846b0
...@@ -773,6 +773,10 @@ typedef struct RcOverride{ ...@@ -773,6 +773,10 @@ typedef struct RcOverride{
* Codec supports slice-based (or partition-based) multithreading. * Codec supports slice-based (or partition-based) multithreading.
*/ */
#define CODEC_CAP_SLICE_THREADS 0x2000 #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. //The following defines may change, don't expect compatibility if you use them.
#define MB_TYPE_INTRA4x4 0x0001 #define MB_TYPE_INTRA4x4 0x0001
...@@ -856,6 +860,7 @@ typedef struct AVPanScan{ ...@@ -856,6 +860,7 @@ typedef struct AVPanScan{
enum AVPacketSideDataType { enum AVPacketSideDataType {
AV_PKT_DATA_PALETTE, AV_PKT_DATA_PALETTE,
AV_PKT_DATA_NEW_EXTRADATA, AV_PKT_DATA_NEW_EXTRADATA,
AV_PKT_DATA_PARAM_CHANGE,
}; };
typedef struct AVPacket { typedef struct AVPacket {
...@@ -924,6 +929,27 @@ typedef struct AVPacket { ...@@ -924,6 +929,27 @@ typedef struct AVPacket {
#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe #define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe
#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted #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. * Audio Video Frame.
* New fields can be added to the end of AVFRAME with minor version * New fields can be added to the end of AVFRAME with minor version
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#define AVCODEC_VERSION_H #define AVCODEC_VERSION_H
#define LIBAVCODEC_VERSION_MAJOR 53 #define LIBAVCODEC_VERSION_MAJOR 53
#define LIBAVCODEC_VERSION_MINOR 29 #define LIBAVCODEC_VERSION_MINOR 30
#define LIBAVCODEC_VERSION_MICRO 0 #define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment