[FFmpeg-devel] [PATCH] avcodec: add bink2 video decoder

Paul B Mahol onemda at gmail.com
Sat Mar 21 19:02:10 EET 2020


On 3/21/20, James Almer <jamrial at gmail.com> wrote:
> On 3/20/2020 10:31 AM, Paul B Mahol wrote:
>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>> ---
>>  configure               |    1 +
>>  libavcodec/Makefile     |    1 +
>>  libavcodec/allcodecs.c  |    1 +
>>  libavcodec/avcodec.h    |    1 +
>>  libavcodec/bink2.c      |  869 ++++++++++++++++++++++++++++
>>  libavcodec/bink2f.c     | 1125 ++++++++++++++++++++++++++++++++++++
>>  libavcodec/bink2g.c     | 1197 +++++++++++++++++++++++++++++++++++++++
>>  libavcodec/codec_desc.c |    7 +
>>  libavformat/bink.c      |    3 +-
>>  9 files changed, 3203 insertions(+), 2 deletions(-)
>>  create mode 100644 libavcodec/bink2.c
>>  create mode 100644 libavcodec/bink2f.c
>>  create mode 100644 libavcodec/bink2g.c
>>
>> diff --git a/configure b/configure
>> index 18f2841765..1d89d49b41 100755
>> --- a/configure
>> +++ b/configure
>> @@ -2678,6 +2678,7 @@ atrac3pal_decoder_select="mdct sinewin"
>>  atrac9_decoder_select="mdct"
>>  avrn_decoder_select="exif jpegtables"
>>  bink_decoder_select="blockdsp hpeldsp"
>> +bink2_decoder_select="blockdsp"
>>  binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
>>  binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
>>  cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
>> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
>> index c1c9a44f2b..a79b4c6524 100644
>> --- a/libavcodec/Makefile
>> +++ b/libavcodec/Makefile
>> @@ -230,6 +230,7 @@ OBJS-$(CONFIG_AYUV_ENCODER)            += v408enc.o
>>  OBJS-$(CONFIG_BETHSOFTVID_DECODER)     += bethsoftvideo.o
>>  OBJS-$(CONFIG_BFI_DECODER)             += bfi.o
>>  OBJS-$(CONFIG_BINK_DECODER)            += bink.o binkdsp.o
>> +OBJS-$(CONFIG_BINK2_DECODER)           += bink2.o
>>  OBJS-$(CONFIG_BINKAUDIO_DCT_DECODER)   += binkaudio.o
>>  OBJS-$(CONFIG_BINKAUDIO_RDFT_DECODER)  += binkaudio.o
>>  OBJS-$(CONFIG_BINTEXT_DECODER)         += bintext.o cga_data.o
>> diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
>> index b3184af954..d032547a9d 100644
>> --- a/libavcodec/allcodecs.c
>> +++ b/libavcodec/allcodecs.c
>> @@ -60,6 +60,7 @@ extern AVCodec ff_ayuv_decoder;
>>  extern AVCodec ff_bethsoftvid_decoder;
>>  extern AVCodec ff_bfi_decoder;
>>  extern AVCodec ff_bink_decoder;
>> +extern AVCodec ff_bink2_decoder;
>>  extern AVCodec ff_bitpacked_decoder;
>>  extern AVCodec ff_bmp_encoder;
>>  extern AVCodec ff_bmp_decoder;
>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>> index 78c483c25c..e8b20fa527 100644
>> --- a/libavcodec/avcodec.h
>> +++ b/libavcodec/avcodec.h
>> @@ -463,6 +463,7 @@ enum AVCodecID {
>>      AV_CODEC_ID_MVDV,
>>      AV_CODEC_ID_MVHA,
>>      AV_CODEC_ID_CDTOONS,
>> +    AV_CODEC_ID_BINKVIDEO2,
>>
>>      /* various PCM "codecs" */
>>      AV_CODEC_ID_FIRST_AUDIO = 0x10000,     ///< A dummy id pointing at
>> the start of audio codecs
>> diff --git a/libavcodec/bink2.c b/libavcodec/bink2.c
>> new file mode 100644
>> index 0000000000..0ebce7feeb
>> --- /dev/null
>> +++ b/libavcodec/bink2.c
>> @@ -0,0 +1,869 @@
>> +/*
>> + * Bink video 2 decoder
>> + * Copyright (c) 2014 Konstantin Shishkov
>> + * Copyright (c) 2019 Paul B Mahol
>> + *
>> + * This file is part of FFmpeg.
>> + *
>> + * FFmpeg is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU Lesser General Public
>> + * License as published by the Free Software Foundation; either
>> + * version 2.1 of the License, or (at your option) any later version.
>> + *
>> + * FFmpeg is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with FFmpeg; if not, write to the Free Software
>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>> 02110-1301 USA
>> + */
>> +
>> +#include "libavutil/avassert.h"
>> +#include "libavutil/attributes.h"
>> +#include "libavutil/imgutils.h"
>> +#include "libavutil/internal.h"
>> +#include "avcodec.h"
>> +#include "blockdsp.h"
>> +#include "copy_block.h"
>> +#include "idctdsp.h"
>
> Seems unused.
>
>> +#include "internal.h"
>> +#include "mathops.h"
>> +
>> +#define BITSTREAM_READER_LE
>> +#include "get_bits.h"
>> +#include "unary.h"
>
> [...]
>
>> +#include "bink2f.c"
>> +#include "bink2g.c"
>
> You should compile these separately, and share the functions that are
> directly called in bink2.c

You are not in position to tell me what I should do or what should I do not.
Also this two lines are gonna to stay.

> Also, move the bink2f and bink2g tables to their corresponding files.

Done.

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list