[libav-devel] [PATCH 3/7] mpc7: only support stereo input.

Justin Ruggles justin.ruggles at gmail.com
Thu Nov 10 18:41:11 CET 2011


On 11/10/2011 11:36 AM, Kostya Shishkov wrote:

> On Thu, Nov 10, 2011 at 11:19:30AM -0500, Justin Ruggles wrote:
>> On 11/10/2011 10:56 AM, Kostya Shishkov wrote:
>>
>>> On Thu, Nov 10, 2011 at 10:44:55AM -0500, Justin Ruggles wrote:
>>>> The Musepack SV7 reference encoder converts mono to stereo when encoding.
>>>> ---
>>>>  libavcodec/mpc7.c |    9 ++++++++-
>>>>  1 files changed, 8 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c
>>>> index 6f79c7b..fea60a1 100644
>>>> --- a/libavcodec/mpc7.c
>>>> +++ b/libavcodec/mpc7.c
>>>> @@ -61,6 +61,13 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
>>>>      static VLC_TYPE hdr_table[1 << MPC7_HDR_BITS][2];
>>>>      static VLC_TYPE quant_tables[7224][2];
>>>>  
>>>> +    /* Musepack SV7 is always stereo */
>>>> +    if (avctx->channels != 2) {
>>>> +        av_log_ask_for_sample(avctx, "Unsupported number of channels: %d\n",
>>>> +                              avctx->channels);
>>>> +        return AVERROR_PATCHWELCOME;
>>>> +    }
>>>> +
>>>>      if(avctx->extradata_size < 16){
>>>>          av_log(avctx, AV_LOG_ERROR, "Too small extradata size (%i)!\n", avctx->extradata_size);
>>>>          return -1;
>>>> @@ -88,7 +95,7 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx)
>>>>      c->frames_to_skip = 0;
>>>>  
>>>>      avctx->sample_fmt = AV_SAMPLE_FMT_S16;
>>>> -    avctx->channel_layout = (avctx->channels==2) ? AV_CH_LAYOUT_STEREO : AV_CH_LAYOUT_MONO;
>>>> +    avctx->channel_layout = AV_CH_LAYOUT_STEREO;
>>>>  
>>>>      if(vlc_initialized) return 0;
>>>>      av_log(avctx, AV_LOG_DEBUG, "Initing VLC\n");
>>>> -- 
>>>
>>> Yes, but it still lies to be mono. There was an issue with one such file.
>>
>>
>> What do you mean it lies?
>>
>> The decoder assumes 2 channels everywhere.
> 
> Decoder - yes, but container may (and sometimes does) claim it has only one
> channel and in this case the second channel should be ignored.


ok, point me to a sample and i can try to implement that. meanwhile, for
such a file we would be outputting different data than what is indicated
by avctx->channels.

-Justin


More information about the libav-devel mailing list