On Thu, Nov 10, 2011 at 12:41:11PM -0500, Justin Ruggles wrote:
> 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.

Ah, the bug was in SV8 file (https://roundup.libav.org/issue2368) so this
patch should be correct.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to