[FFmpeg-devel] [PATCH] wmapro decoder
Vitor Sessak
vitor1001
Mon Jun 22 23:37:18 CEST 2009
Sascha Sommer wrote:
> Hi,
>
> On Sonntag, 21. Juni 2009, Vitor Sessak wrote:
>> Sascha Sommer wrote:
>>> Hi Vitor,
>>>
>>> thanks for your comments.
>>>
>>>>> The code still outputs shorts. Float produced clicks all around the
>>>>> place. I'm not sure yet if the problem is in my code or in ffmpeg.
>>>> It looks like it works for me, see attached.
>>> So your code does not produce clicks at second 16-18 for you with the
>>> sample file you mentioned below? It does for me when I'm using ffmpeg to
>>> produce a 16-bit wav file and play that back with MPlayer.
>> That's due to the lack of clipping. The attached patch is bit-exact for
>> wav output for me for the sample
>> http://samples.mplayerhq.hu/A-codecs/WMA9/wmapro/Beethovens%20nionde%20symf
>> oni%20(Scherzo)-2.wma .
>>
>> Note that outputting floats can make the "Output buffer too small" error
>> twice as bad, since the decoder will need an output buffer twice the size.
>
> The patch is similar to the one you submitted the first time, isn't it?
Yes, the only change is an additional call to av_clipf().
> Shouldn't it add clipping for audioconvert.c ?
That is a hard question. For formats that already output data in the
right range (see below), this clipping is slow and useless.
> The problem here is that float audio ranges from -1.0 to 1.0 and the converter
> multiplies with 1<<15 so the audio will be from -32768 to 32768. The later
> value written as int16 becomes -32768. This causes the annoying clicks.
> That means we need to clip the float values in the wmapro decoder and we need
> to clip the integer values in audioconvert.c
There is no need to clip twice. Clipping the floats from -1. to
32767./32768 does the trick as I did in my patch (rescaling everything
by 32767./32768 should also work).
-Vitor
More information about the ffmpeg-devel
mailing list