[FFmpeg-devel] [PATCH] Avoid a few shifts on each frame while decoding mpeg audio.
Mon Jan 17 00:31:03 CET 2011
On Sun, Jan 16, 2011 at 11:28:40PM +0100, Cl?ment B?sch wrote:
> On Sun, Jan 16, 2011 at 11:12:51PM +0100, Michael Niedermayer wrote:
> > On Sun, Jan 16, 2011 at 09:53:38PM +0100, Cl?ment B?sch wrote:
> > > Hi,
> > >
> > > The MPEG audio parser seems to do a few useless shifts each time a new
> > > frame is sent for feeding; this patch avoids this (one read instead of 4
> > > shifts). I ran the fate tests locally and it seems it didn't break
> > > anything.
> > >
> > > Also, I don't understand the header_count field (in use a few lines below)
> > > so it may be wise to check if it is not related to what I tried to
> > > achieve.
> > >
> > > Regards,
> > >
> > > --
> > > Cl?ment B.
> > > mpegaudio_parser.c | 6 +++++-
> > > 1 file changed, 5 insertions(+), 1 deletion(-)
> > > 813002a20dc97930cd819d7d7fca2a5a73d702ba 0001-Avoid-a-few-shifts-on-each-frame-while-decoding-mpeg.patch
> > > From beb7d21224596d98dd3eebca5fef43c74da5c1ad Mon Sep 17 00:00:00 2001
> > > From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= <ubitux at gmail.com>
> > > Date: Sun, 16 Jan 2011 21:43:16 +0100
> > > Subject: [PATCH] Avoid a few shifts on each frame while decoding mpeg audio.
> > this looks buggy
> > it skips the first 3 checks and i dont see why they cant be true
> The state variable contains the previous one. What's happening is 4 shifts
> at each frame until the header is completely read. You can see it very
> clearly by printing the state evolution in the while(i<buf_size) loop.
> Another solution may be to directly feed mpegaudio_parse with the buffer
> shifted to the next header and not the previous state, but not sure it's
> the correct thing to do.
state can contain 3 bytes of the header when this loop starts
you shift the next in and it now detects a frame and decodes it.
With your change it misses this frame
That may be rare enough that you wont notice it during testing
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
No great genius has ever existed without some touch of madness. -- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 198 bytes
Desc: Digital signature
More information about the ffmpeg-devel