ac3enc: drop common fixed/float encoder
User applications should by now be able to support float encoders. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
d912e449b6
commit
9f4d37f450
@ -62,9 +62,9 @@ OBJS-$(CONFIG_AAC_ENCODER) += aacenc.o aaccoder.o \
|
||||
mpeg4audio.o kbdwin.o
|
||||
OBJS-$(CONFIG_AASC_DECODER) += aasc.o msrledec.o
|
||||
OBJS-$(CONFIG_AC3_DECODER) += ac3dec.o ac3dec_data.o ac3.o kbdwin.o
|
||||
OBJS-$(CONFIG_AC3_ENCODER) += ac3enc_combined.o ac3enc_fixed.o ac3enc_float.o ac3tab.o ac3.o kbdwin.o ac3enc.o
|
||||
OBJS-$(CONFIG_AC3_FLOAT_ENCODER) += ac3enc_float.o ac3tab.o ac3tab.o ac3.o kbdwin.o
|
||||
OBJS-$(CONFIG_AC3_FIXED_ENCODER) += ac3enc_fixed.o ac3tab.o ac3tab.o ac3.o ac3enc.o
|
||||
OBJS-$(CONFIG_AC3_ENCODER) += ac3enc_float.o ac3enc.o ac3tab.o \
|
||||
ac3.o kbdwin.o
|
||||
OBJS-$(CONFIG_AC3_FIXED_ENCODER) += ac3enc_fixed.o ac3enc.o ac3tab.o ac3.o
|
||||
OBJS-$(CONFIG_ALAC_DECODER) += alac.o
|
||||
OBJS-$(CONFIG_ALAC_ENCODER) += alacenc.o
|
||||
OBJS-$(CONFIG_ALS_DECODER) += alsdec.o bgmc.o mpeg4audio.o
|
||||
|
@ -131,49 +131,8 @@ typedef enum {
|
||||
EAC3_FRAME_TYPE_RESERVED
|
||||
} EAC3FrameType;
|
||||
|
||||
/**
|
||||
* Encoding Options used by AVOption.
|
||||
*/
|
||||
typedef struct AC3EncOptions {
|
||||
/* AC-3 metadata options*/
|
||||
int dialogue_level;
|
||||
int bitstream_mode;
|
||||
float center_mix_level;
|
||||
float surround_mix_level;
|
||||
int dolby_surround_mode;
|
||||
int audio_production_info;
|
||||
int mixing_level;
|
||||
int room_type;
|
||||
int copyright;
|
||||
int original;
|
||||
int extended_bsi_1;
|
||||
int preferred_stereo_downmix;
|
||||
float ltrt_center_mix_level;
|
||||
float ltrt_surround_mix_level;
|
||||
float loro_center_mix_level;
|
||||
float loro_surround_mix_level;
|
||||
int extended_bsi_2;
|
||||
int dolby_surround_ex_mode;
|
||||
int dolby_headphone_mode;
|
||||
int ad_converter_type;
|
||||
int eac3_mixing_metadata;
|
||||
int eac3_info_metadata;
|
||||
|
||||
/* other encoding options */
|
||||
int allow_per_frame_metadata;
|
||||
int stereo_rematrixing;
|
||||
int channel_coupling;
|
||||
int cpl_start;
|
||||
} AC3EncOptions;
|
||||
|
||||
void ff_ac3_common_init(void);
|
||||
|
||||
extern const int64_t ff_ac3_channel_layouts[];
|
||||
extern const AVOption ff_ac3_options[];
|
||||
|
||||
extern AVCodec ff_ac3_float_encoder;
|
||||
extern AVCodec ff_ac3_fixed_encoder;
|
||||
|
||||
/**
|
||||
* Calculate the log power-spectral density of the input signal.
|
||||
* This gives a rough estimate of signal power in the frequency domain by using
|
||||
|
@ -83,7 +83,6 @@ typedef int64_t CoefSumType;
|
||||
#define AC3ENC_OPT_ADCONV_HDCD 1
|
||||
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* Encoding Options used by AVOption.
|
||||
*/
|
||||
@ -118,7 +117,7 @@ typedef struct AC3EncOptions {
|
||||
int channel_coupling;
|
||||
int cpl_start;
|
||||
} AC3EncOptions;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Data for a single audio block.
|
||||
*/
|
||||
@ -257,6 +256,8 @@ typedef struct AC3EncodeContext {
|
||||
} AC3EncodeContext;
|
||||
|
||||
|
||||
extern const int64_t ff_ac3_channel_layouts[19];
|
||||
|
||||
int ff_ac3_encode_init(AVCodecContext *avctx);
|
||||
|
||||
int ff_ac3_encode_close(AVCodecContext *avctx);
|
||||
|
@ -1,118 +0,0 @@
|
||||
|
||||
#include "libavutil/opt.h"
|
||||
#include "libavutil/samplefmt.h"
|
||||
#include "avcodec.h"
|
||||
#include "ac3.h"
|
||||
|
||||
typedef struct CombineContext{
|
||||
AVClass *av_class; ///< AVClass used for AVOption
|
||||
AC3EncOptions options; ///< encoding options
|
||||
void *ctx;
|
||||
AVCodec *codec;
|
||||
}CombineContext;
|
||||
|
||||
#define OFFSET(param) offsetof(CombineContext, options.param)
|
||||
#define AC3ENC_PARAM (AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
|
||||
|
||||
#define AC3ENC_TYPE_AC3_FIXED 0
|
||||
#define AC3ENC_TYPE_AC3 1
|
||||
#define AC3ENC_TYPE_EAC3 2
|
||||
|
||||
#define AC3ENC_TYPE 12354
|
||||
|
||||
/* common option values */
|
||||
#define AC3ENC_OPT_NONE -1
|
||||
#define AC3ENC_OPT_AUTO -1
|
||||
#define AC3ENC_OPT_OFF 0
|
||||
#define AC3ENC_OPT_ON 1
|
||||
#define AC3ENC_OPT_NOT_INDICATED 0
|
||||
#define AC3ENC_OPT_MODE_ON 1
|
||||
#define AC3ENC_OPT_MODE_OFF 2
|
||||
|
||||
/* specific option values */
|
||||
#define AC3ENC_OPT_LARGE_ROOM 1
|
||||
#define AC3ENC_OPT_SMALL_ROOM 2
|
||||
#define AC3ENC_OPT_DOWNMIX_LTRT 1
|
||||
#define AC3ENC_OPT_DOWNMIX_LORO 2
|
||||
#define AC3ENC_OPT_ADCONV_STANDARD 0
|
||||
#define AC3ENC_OPT_ADCONV_HDCD 1
|
||||
|
||||
#include "ac3enc_opts_template.c"
|
||||
|
||||
static AVClass ac3enc_class = { "AC-3 Encoder", av_default_item_name,
|
||||
eac3_options, LIBAVUTIL_VERSION_INT };
|
||||
|
||||
static av_cold AVCodec *get_codec(enum AVSampleFormat s){
|
||||
#if CONFIG_AC3_FIXED_ENCODER
|
||||
if(s==AV_SAMPLE_FMT_S16) return &ff_ac3_fixed_encoder;
|
||||
#endif
|
||||
#if CONFIG_AC3_FLOAT_ENCODER
|
||||
if(s==AV_SAMPLE_FMT_FLT) return &ff_ac3_float_encoder;
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static av_cold int encode_init(AVCodecContext *avctx)
|
||||
{
|
||||
CombineContext *c= avctx->priv_data;
|
||||
int ret;
|
||||
int offset= (uint8_t*)&c->options - (uint8_t*)c;
|
||||
|
||||
c->codec= get_codec(avctx->sample_fmt);
|
||||
if(!c->codec){
|
||||
av_log(avctx, AV_LOG_ERROR, "Unsupported sample format\n");
|
||||
return -1;
|
||||
}
|
||||
c->ctx= av_mallocz(c->codec->priv_data_size);
|
||||
memcpy((uint8_t*)c->ctx + offset, &c->options, (uint8_t*)&c->ctx - (uint8_t*)&c->options);
|
||||
FFSWAP(void *,avctx->priv_data, c->ctx);
|
||||
ret= c->codec->init(avctx);
|
||||
FFSWAP(void *,avctx->priv_data, c->ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int encode_frame(AVCodecContext *avctx, unsigned char *frame,
|
||||
int buf_size, void *data)
|
||||
{
|
||||
CombineContext *c= avctx->priv_data;
|
||||
int ret;
|
||||
|
||||
FFSWAP(void *,avctx->priv_data, c->ctx);
|
||||
ret= c->codec->encode(avctx, frame, buf_size, data);
|
||||
FFSWAP(void *,avctx->priv_data, c->ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static av_cold int encode_close(AVCodecContext *avctx)
|
||||
{
|
||||
CombineContext *c= avctx->priv_data;
|
||||
int ret;
|
||||
|
||||
FFSWAP(void *,avctx->priv_data, c->ctx);
|
||||
ret= c->codec->close(avctx);
|
||||
FFSWAP(void *,avctx->priv_data, c->ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
AVCodec ff_ac3_encoder = {
|
||||
"ac3",
|
||||
AVMEDIA_TYPE_AUDIO,
|
||||
CODEC_ID_AC3,
|
||||
sizeof(CombineContext),
|
||||
encode_init,
|
||||
encode_frame,
|
||||
encode_close,
|
||||
NULL,
|
||||
.sample_fmts = (const enum AVSampleFormat[]){
|
||||
#if CONFIG_AC3_FLOAT_ENCODER
|
||||
AV_SAMPLE_FMT_FLT,
|
||||
#endif
|
||||
#if CONFIG_AC3_FIXED_ENCODER
|
||||
AV_SAMPLE_FMT_S16,
|
||||
#endif
|
||||
AV_SAMPLE_FMT_NONE},
|
||||
.long_name = NULL_IF_CONFIG_SMALL("ATSC A/52A (AC-3)"),
|
||||
.priv_class = &ac3enc_class,
|
||||
.channel_layouts = ff_ac3_channel_layouts,
|
||||
};
|
@ -120,8 +120,8 @@ static void clip_coefficients(DSPContext *dsp, float *coef, unsigned int len)
|
||||
|
||||
|
||||
#if CONFIG_AC3_ENCODER
|
||||
AVCodec ff_ac3_float_encoder = {
|
||||
.name = "ac3 float",
|
||||
AVCodec ff_ac3_encoder = {
|
||||
.name = "ac3",
|
||||
.type = AVMEDIA_TYPE_AUDIO,
|
||||
.id = CODEC_ID_AC3,
|
||||
.priv_data_size = sizeof(AC3EncodeContext),
|
||||
|
@ -239,8 +239,7 @@ void avcodec_register_all(void)
|
||||
REGISTER_ENCDEC (AAC, aac);
|
||||
REGISTER_DECODER (AAC_LATM, aac_latm);
|
||||
REGISTER_ENCDEC (AC3, ac3);
|
||||
REGISTER_ENCODER (AC3_FIXED, ac3_fixed); //deprecated, just for libav compatibility
|
||||
// REGISTER_ENCODER (AC3_FLOAT, ac3_float); dont remove dont outcomment, for configure
|
||||
REGISTER_ENCODER (AC3_FIXED, ac3_fixed);
|
||||
REGISTER_ENCDEC (ALAC, alac);
|
||||
REGISTER_DECODER (ALS, als);
|
||||
REGISTER_DECODER (AMRNB, amrnb);
|
||||
|
Loading…
x
Reference in New Issue
Block a user