[MPlayer-dev-eng] [patch] libmpcodecs/ad_ffmpeg.c: aac/sbr warning too nosiy (+fix for typo)

Yuriy Kaminskiy yumkam at mail.ru
Sat Oct 9 19:29:35 CEST 2010


Reimar Döffinger wrote:
> On Sat, Oct 09, 2010 at 05:15:41PM +0400, Yuriy Kaminskiy wrote:
>> Index: MPlayer-20100929+lavc-mt/libmpcodecs/ad_ffmpeg.c
>> ===================================================================
>> --- MPlayer-20100929+lavc-mt.orig/libmpcodecs/ad_ffmpeg.c	2010-10-09 16:40:00.000000000 +0400
>> +++ MPlayer-20100929+lavc-mt/libmpcodecs/ad_ffmpeg.c	2010-10-09 16:46:58.000000000 +0400
>> @@ -46,6 +46,7 @@ LIBAD_EXTERN(ffmpeg)
>>  
>>  #include "libavcodec/avcodec.h"
>>  
>> +static int aac_warned;
>>  
>>  static int preinit(sh_audio_t *sh)
>>  {
>> @@ -71,8 +72,11 @@ static int setup_format(sh_audio_t *sh_a
>>  
>>          if (lavc_context->codec_id == CODEC_ID_AAC &&
>>              samplerate == 2*sh_audio->wf->nSamplesPerSec) {
>> +            if (unlikely(!aac_warned)) {
>> +                aac_warned = 1;
>>              mp_msg(MSGT_DECAUDIO, MSGL_WARN,
>>                     "Ignoring broken container sample rate for ACC with SBR\n");
>> +            }
>>          } else if (sh_audio->wf->nSamplesPerSec)
>>              samplerate=sh_audio->wf->nSamplesPerSec;
>>      }
>> @@ -158,6 +162,8 @@ static int init(sh_audio_t *sh_audio)
>>         sh_audio->ds->ss_mul = 2*sh_audio->wf->nChannels; // 1 byte*ch/packet
>>     }
>>  
>> +   aac_warned = 0;
>> +
> 
> I do not like static variables, also it might be nice to warn every time
> if the stream switches back and forth between SBR and non-SBR since
> I don't think that we have really tested that case.
> What about below patch?
Thanks, work fine (and I agree this way it is better).

> Index: libmpcodecs/ad_ffmpeg.c
> ===================================================================
> --- libmpcodecs/ad_ffmpeg.c     (revision 32451)
> +++ libmpcodecs/ad_ffmpeg.c     (working copy)
> @@ -55,6 +55,7 @@
>  
>  static int setup_format(sh_audio_t *sh_audio, const AVCodecContext *lavc_context)
>  {
> +    int broken_srate = 0;
>      int samplerate    = lavc_context->sample_rate;
>      int sample_format = sh_audio->sample_format;
>      switch (lavc_context->sample_fmt) {
> @@ -71,8 +72,7 @@
>  
>          if (lavc_context->codec_id == CODEC_ID_AAC &&
>              samplerate == 2*sh_audio->wf->nSamplesPerSec) {
> -            mp_msg(MSGT_DECAUDIO, MSGL_WARN,
> -                   "Ignoring broken container sample rate for ACC with SBR\n");
> +            broken_srate = 1;
>          } else if (sh_audio->wf->nSamplesPerSec)
>              samplerate=sh_audio->wf->nSamplesPerSec;
>      }
> @@ -83,6 +83,9 @@
>          sh_audio->samplerate=samplerate;
>          sh_audio->sample_format = sample_format;
>          sh_audio->samplesize=af_fmt2bits(sh_audio->sample_format)/ 8;
> +        if (broken_srate)
> +            mp_msg(MSGT_DECAUDIO, MSGL_WARN,
> +                   "Ignoring broken container sample rate for ACC with SBR\n");
still, s/ACC/AAC/ :-)
>          return 1;
>      }
>      return 0;



More information about the MPlayer-dev-eng mailing list