Commit 6a79930d authored by reimar's avatar reimar

Add request_channels member to AVCodecContext so we now have a proper

way to tell the decoder how many output channels we would like.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@10199 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent c0a4b1ff
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
#define AV_STRINGIFY(s) AV_TOSTRING(s) #define AV_STRINGIFY(s) AV_TOSTRING(s)
#define AV_TOSTRING(s) #s #define AV_TOSTRING(s) #s
#define LIBAVCODEC_VERSION_INT ((51<<16)+(41<<8)+0) #define LIBAVCODEC_VERSION_INT ((51<<16)+(42<<8)+0)
#define LIBAVCODEC_VERSION 51.41.0 #define LIBAVCODEC_VERSION 51.42.0
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT #define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) #define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
...@@ -2123,6 +2123,13 @@ typedef struct AVCodecContext { ...@@ -2123,6 +2123,13 @@ typedef struct AVCodecContext {
* - decoding: unused * - decoding: unused
*/ */
int64_t timecode_frame_start; int64_t timecode_frame_start;
/**
* Decoder should decode to this many channels if it can (0 for default)
* - encoding: unused
* - decoding: Set by user.
*/
int request_channels;
} AVCodecContext; } AVCodecContext;
/** /**
......
...@@ -1158,6 +1158,7 @@ static int dca_decode_frame(AVCodecContext * avctx, ...@@ -1158,6 +1158,7 @@ static int dca_decode_frame(AVCodecContext * avctx,
avctx->bit_rate = s->bit_rate; avctx->bit_rate = s->bit_rate;
channels = s->prim_channels + !!s->lfe; channels = s->prim_channels + !!s->lfe;
avctx->channels = avctx->request_channels;
if(avctx->channels == 0) { if(avctx->channels == 0) {
avctx->channels = channels; avctx->channels = channels;
} else if(channels < avctx->channels) { } else if(channels < avctx->channels) {
......
...@@ -753,6 +753,7 @@ static const AVOption options[]={ ...@@ -753,6 +753,7 @@ static const AVOption options[]={
{"timecode_frame_start", "GOP timecode frame start number, in non drop frame format", OFFSET(timecode_frame_start), FF_OPT_TYPE_INT, 0, 0, INT_MAX, V|E}, {"timecode_frame_start", "GOP timecode frame start number, in non drop frame format", OFFSET(timecode_frame_start), FF_OPT_TYPE_INT, 0, 0, INT_MAX, V|E},
{"drop_frame_timecode", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_DROP_FRAME_TIMECODE, INT_MIN, INT_MAX, V|E, "flags2"}, {"drop_frame_timecode", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_DROP_FRAME_TIMECODE, INT_MIN, INT_MAX, V|E, "flags2"},
{"non_linear_q", "use non linear quantizer", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NON_LINEAR_QUANT, INT_MIN, INT_MAX, V|E, "flags2"}, {"non_linear_q", "use non linear quantizer", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NON_LINEAR_QUANT, INT_MIN, INT_MAX, V|E, "flags2"},
{"request_channels", "set desired number of audio channels", OFFSET(request_channels), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|D},
{NULL}, {NULL},
}; };
......
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