On2 AVC decoder

This commit is contained in:
Kostya Shishkov 2013-06-09 20:03:33 +02:00
parent d7eb8f9033
commit e2834567d7
12 changed files with 10496 additions and 1 deletions

View File

@ -22,6 +22,7 @@ version <next>:
- Silicon Graphics RLE 8-bit video decoder
- Silicon Graphics Motion Video Compressor 1 & 2 decoder
- Silicon Graphics Movie demuxer
- On2 AVC (Audio for Video) decoder
version 10:

1
configure vendored
View File

@ -1808,6 +1808,7 @@ mxpeg_decoder_select="mjpeg_decoder"
nellymoser_decoder_select="mdct sinewin"
nellymoser_encoder_select="audio_frame_queue mdct sinewin"
nuv_decoder_select="dsputil lzo"
on2avc_decoder_select="mdct"
png_decoder_deps="zlib"
png_encoder_deps="zlib"
png_encoder_select="dsputil"

View File

@ -854,6 +854,7 @@ following image formats are supported:
@item Musepack SV7 @tab @tab X
@item Musepack SV8 @tab @tab X
@item Nellymoser Asao @tab X @tab X
@item On2 AVC (Audio for Video Codec) @tab @tab X
@item Opus @tab E @tab E
@tab supported through external library libopus
@item PCM A-law @tab X @tab X

View File

@ -278,6 +278,7 @@ OBJS-$(CONFIG_MXPEG_DECODER) += mxpegdec.o
OBJS-$(CONFIG_NELLYMOSER_DECODER) += nellymoserdec.o nellymoser.o
OBJS-$(CONFIG_NELLYMOSER_ENCODER) += nellymoserenc.o nellymoser.o
OBJS-$(CONFIG_NUV_DECODER) += nuv.o rtjpeg.o
OBJS-$(CONFIG_ON2AVC_DECODER) += on2avc.o on2avcdata.o
OBJS-$(CONFIG_PAF_VIDEO_DECODER) += paf.o
OBJS-$(CONFIG_PAF_AUDIO_DECODER) += paf.o
OBJS-$(CONFIG_PAM_DECODER) += pnmdec.o pnm.o

View File

@ -329,6 +329,7 @@ void avcodec_register_all(void)
REGISTER_DECODER(MPC7, mpc7);
REGISTER_DECODER(MPC8, mpc8);
REGISTER_ENCDEC (NELLYMOSER, nellymoser);
REGISTER_DECODER(ON2AVC, on2avc);
REGISTER_DECODER(PAF_AUDIO, paf_audio);
REGISTER_DECODER(QCELP, qcelp);
REGISTER_DECODER(QDM2, qdm2);

View File

@ -443,6 +443,7 @@ enum AVCodecID {
AV_CODEC_ID_TAK,
AV_CODEC_ID_METASOUND,
AV_CODEC_ID_PAF_AUDIO,
AV_CODEC_ID_ON2AVC,
/* subtitle codecs */
AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.

View File

@ -2285,6 +2285,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.long_name = NULL_IF_CONFIG_SMALL("Amazing Studio Packed Animation File Audio"),
.props = AV_CODEC_PROP_LOSSY,
},
{
.id = AV_CODEC_ID_ON2AVC,
.type = AVMEDIA_TYPE_AUDIO,
.name = "avc",
.long_name = NULL_IF_CONFIG_SMALL("On2 Audio for Video Codec"),
.props = AV_CODEC_PROP_LOSSY,
},
/* subtitle codecs */
{

1015
libavcodec/on2avc.c Normal file

File diff suppressed because it is too large Load Diff

9383
libavcodec/on2avcdata.c Normal file

File diff suppressed because it is too large Load Diff

82
libavcodec/on2avcdata.h Normal file
View File

@ -0,0 +1,82 @@
/*
* On2 Audio for Video Codec decoder
*
* Copyright (c) 2013 Konstantin Shishkov
*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_ON2AVC_DATA_H
#define AVCODEC_ON2AVC_DATA_H
#include <stdint.h>
#define ON2AVC_MAX_BANDS 112
#define ON2AVC_ESC_CB 15
typedef struct On2AVCMode {
int num_windows;
int num_bands;
const int *band_start;
} On2AVCMode;
extern const On2AVCMode ff_on2avc_modes_40[8];
extern const On2AVCMode ff_on2avc_modes_44[8];
#define ON2AVC_SCALE_DIFFS 121
extern const uint32_t ff_on2avc_scale_diff_codes[];
extern const uint8_t ff_on2avc_scale_diff_bits[];
extern const uint32_t * const ff_on2avc_quad_cb_codes[];
extern const uint8_t * const ff_on2avc_quad_cb_bits[];
extern const uint16_t * const ff_on2avc_quad_cb_syms[];
extern const int ff_on2avc_quad_cb_elems[];
extern const uint16_t * const ff_on2avc_pair_cb_codes[];
extern const uint8_t * const ff_on2avc_pair_cb_bits[];
extern const uint16_t * const ff_on2avc_pair_cb_syms[];
extern const int ff_on2avc_pair_cb_elems[];
extern const float ff_on2avc_window_long_32000[1024];
extern const float ff_on2avc_window_long_24000[1024];
extern const float ff_on2avc_window_short[128];
extern const double ff_on2avc_tab_10_1[];
extern const double ff_on2avc_tab_10_2[];
extern const double ff_on2avc_tab_20_1[];
extern const double ff_on2avc_tab_20_2[];
extern const double ff_on2avc_tab_40_1[];
extern const double ff_on2avc_tab_40_2[];
extern const double ff_on2avc_tab_84_1[];
extern const double ff_on2avc_tab_84_2[];
extern const double ff_on2avc_tab_84_3[];
extern const double ff_on2avc_tab_84_4[];
extern const double* ff_on2avc_tabs_4_10_1[4];
extern const double* ff_on2avc_tabs_4_10_2[4];
extern const double* ff_on2avc_tabs_9_20_1[9];
extern const double* ff_on2avc_tabs_9_20_2[9];
extern const double* ff_on2avc_tabs_19_40_1[19];
extern const double* ff_on2avc_tabs_19_40_2[19];
extern const double* ff_on2avc_tabs_20_84_1[20];
extern const double* ff_on2avc_tabs_20_84_2[20];
extern const double* ff_on2avc_tabs_20_84_3[20];
extern const double* ff_on2avc_tabs_20_84_4[20];
extern const float ff_on2avc_ctab_1[2048];
extern const float ff_on2avc_ctab_2[2048];
extern const float ff_on2avc_ctab_3[2048];
extern const float ff_on2avc_ctab_4[2048];
#endif /* AVCODEC_ff_on2avc_DATA_H */

View File

@ -29,7 +29,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 55
#define LIBAVCODEC_VERSION_MINOR 48
#define LIBAVCODEC_VERSION_MINOR 49
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

View File

@ -395,6 +395,8 @@ const AVCodecTag ff_codec_wav_tags[] = {
{ AV_CODEC_ID_ADPCM_G722, 0x028F },
{ AV_CODEC_ID_IMC, 0x0401 },
{ AV_CODEC_ID_IAC, 0x0402 },
{ AV_CODEC_ID_ON2AVC, 0x0500 },
{ AV_CODEC_ID_ON2AVC, 0x0501 },
{ AV_CODEC_ID_GSM_MS, 0x1500 },
{ AV_CODEC_ID_TRUESPEECH, 0x1501 },
/* ADTS AAC */