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

Michael Niedermayer michael at niedermayer.cc
Sun Oct 1 00:50:39 EEST 2017


On Sat, Sep 30, 2017 at 08:46:28PM +0200, Carl Eugen Hoyos wrote:
> 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.

i dont think assuming the non existance of one kind of container to
ever be put in another is a safe assumtation.

also theres tar and other generic containers.

still this checks the files first few bytes so its probably ok as
most other containrs wouldnt match here

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Many things microsoft did are stupid, but not doing something just because
microsoft did it is even more stupid. If everything ms did were stupid they
would be bankrupt already.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170930/5d1dc27c/attachment.sig>


More information about the ffmpeg-devel mailing list