[FFmpeg-devel] [PATCH] IFF demuxer and 8SVX decoder
Jai Menon
realityman
Fri Mar 28 22:21:36 CET 2008
On Thursday 27 March 2008 20:00:48 Michael Niedermayer wrote:
> On Thu, Mar 27, 2008 at 11:48:10PM +0000, Jai Menon wrote:
> > On Thursday 27 March 2008 15:23:54 Michael Niedermayer wrote:
> > > On Thu, Mar 27, 2008 at 08:44:54PM +0000, Jai Menon wrote:
> > > > On Wednesday 26 March 2008 21:12:26 Michael Niedermayer wrote:
> > > > > uint8_t d = *buf++;
> > > > >
> > > > > > + esc->fib_acc += esc->table[d & 0x0f];
> > > > > > + *out_data++ = esc->fib_acc << 8;
> > > > > > + esc->fib_acc += esc->table[d >> 4];
> > > > > > + *out_data++ = esc->fib_acc << 8;
> > > > > > + }
> > > > >
> > > > > you can do this with one subtraction and 2 shifts less
> > > >
> > > > I still don't know how i can eliminate the two shifts?
> > >
> > > change the table ...
> >
> > I could change it to int16_t, and remove the 2 shifts.....but then i
> > would need to clip twice before adding the table value to the
> > accumulator......in which case imho we should stick to 2 shifts.
>
> Why would you need to clip?
Thats because the encoding scheme requires adding an 8 bit signed value (from
the table) to fib_acc. So if we change the table size to int16_t , we could
do away with the shifts but the value can't be directly added to fib_acc
without clipping. the av_clip macro iirc uses comparisons. you could actually
try making the change and running it on the compressed sample Dennis posted
earlier on the list. Instead of the sound sample, you will get a highly
distorted waveform which sounds nothing like the original sample.
> + ? ?for(;buf_size>0;buf_size--) {
> + ? ? ? ?uint8_t d = *buf++;
> + ? ? ? ?esc->fib_acc += esc->table[d & 0x0f];
> + ? ? ? ?*out_data++ = esc->fib_acc << 8;
> + ? ? ? ?esc->fib_acc += esc->table[d >> 4];
> + ? ? ? ?*out_data++ = esc->fib_acc << 8;
> + ? ?}
> this still does a unneeded subtraction besides the shifts
where? is it buf_size-- ?
other stuff should be fixed by the patch
Regards
Jai Menon
<realityman at gmx.net>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: iff_demuxer.patch
Type: text/x-diff
Size: 6541 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080328/085396b7/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 8svx_decoder.patch
Type: text/x-diff
Size: 5099 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080328/085396b7/attachment-0001.patch>
More information about the ffmpeg-devel
mailing list