[FFmpeg-devel] [PATCH]lavf/bit: Fix the G.729 bit auto-detection

Carl Eugen Hoyos ceffmpeg at gmail.com
Sat Sep 30 21:46:28 EEST 2017


2017-09-30 3:19 GMT+02:00 Michael Niedermayer <michael at niedermayer.cc>:
> On Fri, Sep 29, 2017 at 07:23:17PM +0200, Carl Eugen Hoyos wrote:
>> Hi!
>>
>> The G.729 bit auto-detection has never worked, patch attached.
>>
>> Please comment, Carl Eugen
>
>>  bit.c |   23 +++++++++++++----------
>>  1 file changed, 13 insertions(+), 10 deletions(-)
>> 1eaabbb2e56d350949d0c8c439a2ba49513069f2  0001-lavf-bit-Fix-the-G.729-bit-probe-function.patch
>> From 2521a9bd86d807a3e18fe930b35039beb7674b3e Mon Sep 17 00:00:00 2001
>> From: Carl Eugen Hoyos <ceffmpeg at gmail.com>
>> Date: Fri, 29 Sep 2017 19:10:46 +0200
>> Subject: [PATCH] lavf/bit: Fix the G.729 bit auto-detection.
>>
>> ---
>>  libavformat/bit.c |   23 +++++++++++++----------
>>  1 file changed, 13 insertions(+), 10 deletions(-)
>>
>> diff --git a/libavformat/bit.c b/libavformat/bit.c
>> index d742a5b..f90e4a7 100644
>> --- a/libavformat/bit.c
>> +++ b/libavformat/bit.c
>> @@ -32,20 +32,23 @@
>>  #if CONFIG_BIT_DEMUXER
>>  static int probe(AVProbeData *p)
>>  {
>> -    int i, j;
>> +    int i = 0, j, valid = 0;
>>
>> -    if(p->buf_size < 0x40)
>> -        return 0;
>> -
>> -    for(i=0; i+3<p->buf_size && i< 10*0x50; ){
>> -        if(AV_RL16(&p->buf[0]) != SYNC_WORD)
>> +    while (2 * i + 3 < p->buf_size){
>> +        if (AV_RL16(&p->buf[2 * i++]) != SYNC_WORD)
>>              return 0;
>> -        j=AV_RL16(&p->buf[2]);
>> -        if(j!=0x40 && j!=0x50)
>> +        j = AV_RL16(&p->buf[2 * i++]);
>> +        if (j != 0 && j != 0x10 && j != 0x40 && j != 0x50)
>>              return 0;
>> -        i+=j;
>> +        if (j)
>> +            valid++;
>> +        i += j;
>>      }
>> -    return AVPROBE_SCORE_EXTENSION;
>> +    if (valid > 10)
>> +        return AVPROBE_SCORE_MAX;
>
> this looks like a g729 stream encapsulated i another container could
> return AVPROBE_SCORE_MAX. This may be sub optimal

SYNC_WORD only exists in BIT streams, not in raw g.729 streams
as muxed in other formats.

Patch pushed.

Thank you, Carl Eugen


More information about the ffmpeg-devel mailing list