[FFmpeg-soc] [soc]: r2021 -?in?eac3:?ac3dec.h?ac3dec_data.c?ac3dec_data.h eac3dec.c

Bartlomiej Wolowiec bartek.wolowiec at gmail.com
Sat Mar 29 22:04:30 CET 2008


On sobota, 29 marca 2008, Michael Niedermayer wrote:
> On Sat, Mar 29, 2008 at 12:19:43AM +0100, Bartlomiej Wolowiec wrote:
> > > > 3.change of ff_aac_ac3_parse to make it react correctly to result
> > > > returned in flag.
> >
> > According to suggestions, I wrote new patch to  AAC/AC3 parser.
> >
> > Current data about the stream are taken from frames FRAME_START and
> > FRAME_COMPLETE. It will be improved in the next patch.
> > --
> > Bartlomiej Wolowiec
> >
> > Index: libavcodec/aac_ac3_parser.c
> > ===================================================================
> > --- libavcodec/aac_ac3_parser.c	(wersja 12623)
> > +++ libavcodec/aac_ac3_parser.c	(kopia robocza)
> > @@ -29,35 +29,50 @@
> >                       const uint8_t *buf, int buf_size)
> >  {
> >      AACAC3ParseContext *s = s1->priv_data;
> > -    AACAC3FrameFlag frame_flag;
> >      const uint8_t *buf_ptr;
> >      int len;
> >
> >      *poutbuf = NULL;
> >      *poutbuf_size = 0;
> >
> > +    if(s->frame_ptr == NULL) {
> > +        //after sending package of data in the end there was one new
> > header +        memcpy(s->inbuf, s->frame_start, s->header_size);
> > +        s->frame_start = s->inbuf;
> > +        s->frame_ptr = s->frame_start + s->header_size;
> > +    }
>
> Instead of this i think you could just return a smaller number.
> We do have code in the parser that does what is needed to move this
> to the begin (search for overread) in parser*.

I've searched, but I haven't found anything appropriate. Majority of solutions 
is based on ff_combine_frame and it seeks 4 byte signature, but here, beside 
the signature other parameters shoulf be read (minimum 7 bytes forward should 
be in the buffer). Could you tell me what solution do you mean?

>
> > @@ -43,6 +44,7 @@
> >      int sample_rate;
> >      int bit_rate;
> >      int samples;
> > +    AACAC3FrameFlag frame_flag;
> >  } AACAC3ParseContext;
>
> why?

Because of  the code below, I need to know if the frame should be send 
instantly or stay in the buffer and wait for next frames:

+                if(s->frame_flag == FRAME_COMPLETE) {
                 *poutbuf = s->inbuf;
                 *poutbuf_size = s->frame_size;
-                s->inbuf_ptr = s->inbuf;
-                s->frame_size = 0;
+                s->frame_start = s->inbuf;
+                s->frame_ptr = s->frame_start;
                 break;
-- 
Bartlomiej Wolowiec



More information about the FFmpeg-soc mailing list