[FFmpeg-cvslog] r11386 - trunk/libavcodec/aac_ac3_parser.c

Justin Ruggles justinruggles
Fri Jan 4 01:41:26 CET 2008


Michael Niedermayer wrote:
> On Thu, Jan 03, 2008 at 06:22:42PM -0500, Justin Ruggles wrote:
>> jbr wrote:
>>> Author: jbr
>>> Date: Thu Jan  3 23:41:59 2008
>>> New Revision: 11386
>>>
>>> Log:
>>> remove workaround which is no longer needed due to
>>> AVCodecContext.request_channels
>>>
>>> Modified:
>>>    trunk/libavcodec/aac_ac3_parser.c
>>>
>>> Modified: trunk/libavcodec/aac_ac3_parser.c
>>> ==============================================================================
>>> --- trunk/libavcodec/aac_ac3_parser.c	(original)
>>> +++ trunk/libavcodec/aac_ac3_parser.c	Thu Jan  3 23:41:59 2008
>>> @@ -60,14 +60,7 @@ int ff_aac_ac3_parse(AVCodecParserContex
>>>                      s->frame_size = len;
>>>                      /* update codec info */
>>>                      avctx->sample_rate = sample_rate;
>>> -                    /* set channels,except if the user explicitly requests 1 or 2 channels, XXX/FIXME this is a bit ugly */
>>> -                    if(avctx->codec_id == CODEC_ID_AC3){
>>> -                        if(avctx->channels!=1 && avctx->channels!=2){
>>> -                            avctx->channels = channels;
>>> -                        }
>>> -                    } else {
>>>                          avctx->channels = channels;
>>> -                    }
>>>                      avctx->bit_rate = bit_rate;
>>>                      avctx->frame_size = samples;
>>>                  }
>> Should the parser check for request_channels?  Right now the value of
>> AVCodecContext.channels changes back and forth between the stream value,
>> as set by the parser, and the requested value, as set by the decoder.
> 
> hmm, yes it should check, its ugly but randomizing the variable is worse

I'm trying to think of a cleaner way to handle downmixed output.  One
way would be to have different variables for source channels, requested
channels, and output channels.  It used to be just 1 variable
representing all 3 ideas, now it's 2 variables, but as long as decoders
can do downmixing internally and setting requested_channels doesn't
guarantee anything, it's still not adequate to represent the whole picture.

The decoder can handle it cleanly because it can keep track of the
source channels internally, but once you get outside the decoder, things
get messy.

What do you think about adding AVCodecContext.source_channels?

-Justin




More information about the ffmpeg-cvslog mailing list