[FFmpeg-devel] [PATCH] avcodec/alsdec: implement floating point decoding
Thilo Borgmann
thilo.borgmann at mail.de
Tue Jul 19 14:50:38 EEST 2016
Am 19.07.16 um 09:22 schrieb Umair Khan:
> On Tue, Jul 19, 2016 at 12:29 PM, Paul B Mahol <onemda at gmail.com> wrote:
>>
>> On 7/19/16, Umair Khan <omerjerk at gmail.com> wrote:
>>> On Tue, Jul 19, 2016 at 3:08 AM, Michael Niedermayer
>>> <michael at niedermayer.cc> wrote:
>>>> On Mon, Jul 18, 2016 at 11:42:48PM +0530, Umair Khan wrote:
>>>>> On Sun, Jul 17, 2016 at 3:38 PM, Michael Niedermayer
>>>>> <michael at niedermayer.cc> wrote:
>>>>>> On Sun, Jul 17, 2016 at 11:54:49AM +0200, Michael Niedermayer wrote:
>>>>>>> On Sun, Jul 17, 2016 at 09:00:48AM +0530, Umair Khan wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> On Sun, Jul 17, 2016 at 12:25 AM, Thilo Borgmann
>>>>>>>> <thilo.borgmann at mail.de> wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>>> From 70e65b26cc3f84c9c664c30808b43a5e1cf16eaa Mon Sep 17 00:00:00
>>>>>>>>>> 2001
>>>>>>>>>> From: Umair Khan <omerjerk at gmail.com>
>>>>>>>>>> Date: Sat, 16 Jul 2016 23:52:39 +0530
>>>>>>>>>> Subject: [PATCH 1/1] avcodec/alsdec: implement floating point
>>>>>>>>>> decoding
>>>>>>>>>>
>>>>>>>>>> It conforms to RM22 version of the reference codec.
>>>>>>>>>>
>>>>>>>>>> Signed-off-by: Umair Khan <omerjerk at gmail.com>
>>>>>>>>>> ---
>>>>>>>>>> libavcodec/Makefile | 2 +-
>>>>>>>>>> libavcodec/alsdec.c | 284
>>>>>>>>>> +++++++++++++++++++++++++++++++++++++++++-
>>>>>>>>>> libavcodec/mlz.c | 171 +++++++++++++++++++++++++
>>>>>>>>>> libavcodec/mlz.h | 69 ++++++++++
>>>>>>>>>> libavutil/softfloat_ieee754.h | 115 +++++++++++++++++
>>>>>>>>>> 5 files changed, 638 insertions(+), 3 deletions(-)
>>>>>>>>>> create mode 100644 libavcodec/mlz.c
>>>>>>>>>> create mode 100644 libavcodec/mlz.h
>>>>>>>>>> create mode 100644 libavutil/softfloat_ieee754.h
>>>>>>>>>>
>>>>>>>>>> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
>>>>>>>>>> index abef19e..a03adf5 100644
>>>>>>>>>> --- a/libavcodec/Makefile
>>>>>>>>>> +++ b/libavcodec/Makefile
>>>>>>>>>> @@ -163,7 +163,7 @@ OBJS-$(CONFIG_ALAC_DECODER) +=
>>>>>>>>>> alac.o alac_data.o alacdsp.o
>>>>>>>>>> OBJS-$(CONFIG_ALAC_ENCODER) += alacenc.o alac_data.o
>>>>>>>>>> OBJS-$(CONFIG_ALIAS_PIX_DECODER) += aliaspixdec.o
>>>>>>>>>> OBJS-$(CONFIG_ALIAS_PIX_ENCODER) += aliaspixenc.o
>>>>>>>>>> -OBJS-$(CONFIG_ALS_DECODER) += alsdec.o bgmc.o
>>>>>>>>>> mpeg4audio.o
>>>>>>>>>> +OBJS-$(CONFIG_ALS_DECODER) += alsdec.o bgmc.o mlz.o
>>>>>>>>>> mpeg4audio.o
>>>>>>>>>> OBJS-$(CONFIG_AMRNB_DECODER) += amrnbdec.o
>>>>>>>>>> celp_filters.o \
>>>>>>>>>> celp_math.o
>>>>>>>>>> acelp_filters.o \
>>>>>>>>>> acelp_vectors.o
>>>>>>>>>> \
>>>>>>>>>> diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c
>>>>>>>>>> index a7e58a2..c710fc3 100644
>>>>>>>>>> --- a/libavcodec/alsdec.c
>>>>>>>>>> +++ b/libavcodec/alsdec.c
>>>>>>>>>> @@ -35,8 +35,11 @@
>>>>>>>>>> [...]
>>>>>>>>>>
>>>>>>>>>> +/** multiply two softfloats and handle the rounding off
>>>>>>>>>> + */
>>>>>>>>>> +static SoftFloat_IEEE754 multiply(SoftFloat_IEEE754 a,
>>>>>>>>>> SoftFloat_IEEE754 b) {
>>>>>>>>>> [...]
>>>>>>>>>
>>>>>>>>> Why is this in alsdec.c?
>>>>>>>>
>>>>>>>> This is not the actual IEEE 754 multiplication. It is as is
>>>>>>>> mentioned
>>>>>>>> in the reference spec.
>>>>>>>> The typical one for 754 floats, I've implemented here separately -
>>>>>>>> https://github.com/omerjerk/FFmpeg/commit/d6cd4bf66b9da46dd87580d7d974ce44abdcfba2#diff-4dd4b2d8d523f336fbefa96e9252187cR93
>>>>>>>>
>>>>>>>>> [...]
>>>>>>>>>
>>>>>>>>>> diff --git a/libavcodec/mlz.c b/libavcodec/mlz.c
>>>>>>>>>> new file mode 100644
>>>>>>>>>> index 0000000..cb2ed6a
>>>>>>>>>> --- /dev/null
>>>>>>>>>> +++ b/libavcodec/mlz.c
>>>>>>>>>> [...]
>>>>>>>>>
>>>>>>>>>> +static int input_code(GetBitContext* gb, int len) {
>>>>>>>>>> + int tmp_code = 0;
>>>>>>>>>> + int i;
>>>>>>>>>> + for (i = 0; i < len; ++i) {
>>>>>>>>>> + tmp_code += get_bits1(gb) << i;
|=
should be better.
>>>>>>>>>> + }
>>>>>>>>>> + return tmp_code;
>>>>>>>>>> +}
Also, you could revert it byte-wise using ff_revert[]... if len is often bigger
than 8 that might be worth it.
-Thilo
More information about the ffmpeg-devel
mailing list