mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/flacdsp: Split encoder-only parts into a ctx of its own
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
3a869cd5cd
commit
6c4595190e
4
configure
vendored
4
configure
vendored
@ -2449,7 +2449,6 @@ CONFIG_EXTRA="
|
||||
faandct
|
||||
faanidct
|
||||
fdctdsp
|
||||
flacdsp
|
||||
fmtconvert
|
||||
frame_thread_encoder
|
||||
g722dsp
|
||||
@ -2821,8 +2820,7 @@ ffv1_encoder_select="rangecoder"
|
||||
ffvhuff_decoder_select="huffyuv_decoder"
|
||||
ffvhuff_encoder_select="huffyuv_encoder"
|
||||
fic_decoder_select="golomb"
|
||||
flac_decoder_select="flacdsp"
|
||||
flac_encoder_select="bswapdsp flacdsp lpc"
|
||||
flac_encoder_select="bswapdsp lpc"
|
||||
flashsv2_decoder_select="inflate_wrapper"
|
||||
flashsv2_encoder_select="deflate_wrapper"
|
||||
flashsv_decoder_select="inflate_wrapper"
|
||||
|
@ -91,7 +91,6 @@ OBJS-$(CONFIG_FDCTDSP) += fdctdsp.o jfdctfst.o jfdctint.o
|
||||
FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o
|
||||
OBJS-$(CONFIG_FFT) += avfft.o fft_float.o fft_fixed_32.o \
|
||||
fft_init_table.o $(FFT-OBJS-yes)
|
||||
OBJS-$(CONFIG_FLACDSP) += flacdsp.o
|
||||
OBJS-$(CONFIG_FMTCONVERT) += fmtconvert.o
|
||||
OBJS-$(CONFIG_GOLOMB) += golomb.o
|
||||
OBJS-$(CONFIG_H263DSP) += h263dsp.o
|
||||
@ -347,8 +346,8 @@ OBJS-$(CONFIG_FFWAVESYNTH_DECODER) += ffwavesynth.o
|
||||
OBJS-$(CONFIG_FIC_DECODER) += fic.o
|
||||
OBJS-$(CONFIG_FITS_DECODER) += fitsdec.o fits.o
|
||||
OBJS-$(CONFIG_FITS_ENCODER) += fitsenc.o
|
||||
OBJS-$(CONFIG_FLAC_DECODER) += flacdec.o flacdata.o flac.o
|
||||
OBJS-$(CONFIG_FLAC_ENCODER) += flacenc.o flacdata.o flac.o
|
||||
OBJS-$(CONFIG_FLAC_DECODER) += flacdec.o flacdata.o flacdsp.o flac.o
|
||||
OBJS-$(CONFIG_FLAC_ENCODER) += flacenc.o flacdata.o flacencdsp.o flac.o
|
||||
OBJS-$(CONFIG_FLASHSV_DECODER) += flashsv.o
|
||||
OBJS-$(CONFIG_FLASHSV_ENCODER) += flashsvenc.o
|
||||
OBJS-$(CONFIG_FLASHSV2_ENCODER) += flashsv2enc.o
|
||||
|
@ -6,8 +6,6 @@ OBJS-$(CONFIG_AC3DSP) += arm/ac3dsp_init_arm.o \
|
||||
OBJS-$(CONFIG_AUDIODSP) += arm/audiodsp_init_arm.o
|
||||
OBJS-$(CONFIG_BLOCKDSP) += arm/blockdsp_init_arm.o
|
||||
OBJS-$(CONFIG_FFT) += arm/fft_init_arm.o
|
||||
OBJS-$(CONFIG_FLACDSP) += arm/flacdsp_init_arm.o \
|
||||
arm/flacdsp_arm.o
|
||||
OBJS-$(CONFIG_FMTCONVERT) += arm/fmtconvert_init_arm.o
|
||||
OBJS-$(CONFIG_G722DSP) += arm/g722dsp_init_arm.o
|
||||
OBJS-$(CONFIG_H264CHROMA) += arm/h264chroma_init_arm.o
|
||||
@ -38,6 +36,8 @@ OBJS-$(CONFIG_VP8DSP) += arm/vp8dsp_init_arm.o
|
||||
OBJS-$(CONFIG_AAC_DECODER) += arm/aacpsdsp_init_arm.o \
|
||||
arm/sbrdsp_init_arm.o
|
||||
OBJS-$(CONFIG_DCA_DECODER) += arm/synth_filter_init_arm.o
|
||||
OBJS-$(CONFIG_FLAC_DECODER) += arm/flacdsp_init_arm.o \
|
||||
arm/flacdsp_arm.o
|
||||
OBJS-$(CONFIG_HEVC_DECODER) += arm/hevcdsp_init_arm.o
|
||||
OBJS-$(CONFIG_MLP_DECODER) += arm/mlpdsp_init_arm.o
|
||||
OBJS-$(CONFIG_RV40_DECODER) += arm/rv40dsp_init_arm.o
|
||||
|
@ -20,14 +20,11 @@
|
||||
|
||||
#include "libavutil/attributes.h"
|
||||
#include "libavcodec/flacdsp.h"
|
||||
#include "config.h"
|
||||
#include "config_components.h"
|
||||
|
||||
void ff_flac_lpc_16_arm(int32_t *samples, const int coeffs[32], int order,
|
||||
int qlevel, int len);
|
||||
|
||||
av_cold void ff_flacdsp_init_arm(FLACDSPContext *c, enum AVSampleFormat fmt, int channels)
|
||||
{
|
||||
if (CONFIG_FLAC_DECODER)
|
||||
c->lpc16 = ff_flac_lpc_16_arm;
|
||||
c->lpc16 = ff_flac_lpc_16_arm;
|
||||
}
|
||||
|
@ -27,7 +27,6 @@
|
||||
#define SAMPLE_SIZE 16
|
||||
#define PLANAR 0
|
||||
#include "flacdsp_template.c"
|
||||
#include "flacdsp_lpc_template.c"
|
||||
|
||||
#undef PLANAR
|
||||
#define PLANAR 1
|
||||
@ -38,7 +37,6 @@
|
||||
#define SAMPLE_SIZE 32
|
||||
#define PLANAR 0
|
||||
#include "flacdsp_template.c"
|
||||
#include "flacdsp_lpc_template.c"
|
||||
|
||||
#undef PLANAR
|
||||
#define PLANAR 1
|
||||
@ -90,8 +88,6 @@ av_cold void ff_flacdsp_init(FLACDSPContext *c, enum AVSampleFormat fmt, int cha
|
||||
{
|
||||
c->lpc16 = flac_lpc_16_c;
|
||||
c->lpc32 = flac_lpc_32_c;
|
||||
c->lpc16_encode = flac_lpc_encode_c_16;
|
||||
c->lpc32_encode = flac_lpc_encode_c_32;
|
||||
|
||||
switch (fmt) {
|
||||
case AV_SAMPLE_FMT_S32:
|
||||
|
@ -36,7 +36,7 @@
|
||||
#include "lpc.h"
|
||||
#include "flac.h"
|
||||
#include "flacdata.h"
|
||||
#include "flacdsp.h"
|
||||
#include "flacencdsp.h"
|
||||
|
||||
#define FLAC_SUBFRAME_CONSTANT 0
|
||||
#define FLAC_SUBFRAME_VERBATIM 1
|
||||
@ -125,7 +125,7 @@ typedef struct FlacEncodeContext {
|
||||
uint8_t *md5_buffer;
|
||||
unsigned int md5_buffer_size;
|
||||
BswapDSPContext bdsp;
|
||||
FLACDSPContext flac_dsp;
|
||||
FLACEncDSPContext flac_dsp;
|
||||
|
||||
int flushed;
|
||||
int64_t next_pts;
|
||||
@ -425,7 +425,7 @@ static av_cold int flac_encode_init(AVCodecContext *avctx)
|
||||
s->options.max_prediction_order, FF_LPC_TYPE_LEVINSON);
|
||||
|
||||
ff_bswapdsp_init(&s->bdsp);
|
||||
ff_flacdsp_init(&s->flac_dsp, avctx->sample_fmt, channels);
|
||||
ff_flacencdsp_init(&s->flac_dsp);
|
||||
|
||||
dprint_compression_options(s);
|
||||
|
||||
|
40
libavcodec/flacencdsp.c
Normal file
40
libavcodec/flacencdsp.c
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2012 Mans Rullgard <mans@mansr.com>
|
||||
*
|
||||
* 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 "config.h"
|
||||
#include "flacencdsp.h"
|
||||
|
||||
#define SAMPLE_SIZE 16
|
||||
#include "flacdsp_lpc_template.c"
|
||||
|
||||
#undef SAMPLE_SIZE
|
||||
#define SAMPLE_SIZE 32
|
||||
#include "flacdsp_lpc_template.c"
|
||||
|
||||
|
||||
av_cold void ff_flacencdsp_init(FLACEncDSPContext *c)
|
||||
{
|
||||
c->lpc16_encode = flac_lpc_encode_c_16;
|
||||
c->lpc32_encode = flac_lpc_encode_c_32;
|
||||
|
||||
#if ARCH_X86
|
||||
ff_flacencdsp_init_x86(c);
|
||||
#endif
|
||||
}
|
34
libavcodec/flacencdsp.h
Normal file
34
libavcodec/flacencdsp.h
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_FLACENCDSP_H
|
||||
#define AVCODEC_FLACENCDSP_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct FLACEncDSPContext {
|
||||
void (*lpc16_encode)(int32_t *res, const int32_t *smp, int len, int order,
|
||||
const int32_t coefs[32], int shift);
|
||||
void (*lpc32_encode)(int32_t *res, const int32_t *smp, int len, int order,
|
||||
const int32_t coefs[32], int shift);
|
||||
} FLACEncDSPContext;
|
||||
|
||||
void ff_flacencdsp_init(FLACEncDSPContext *c);
|
||||
void ff_flacencdsp_init_x86(FLACEncDSPContext *c);
|
||||
|
||||
#endif /* AVCODEC_FLACDSP_H */
|
@ -10,7 +10,6 @@ OBJS-$(CONFIG_DIRAC_DECODER) += x86/diracdsp_init.o \
|
||||
x86/dirac_dwt_init.o
|
||||
OBJS-$(CONFIG_FDCTDSP) += x86/fdctdsp_init.o
|
||||
OBJS-$(CONFIG_FFT) += x86/fft_init.o
|
||||
OBJS-$(CONFIG_FLACDSP) += x86/flacdsp_init.o
|
||||
OBJS-$(CONFIG_FMTCONVERT) += x86/fmtconvert_init.o
|
||||
OBJS-$(CONFIG_H263DSP) += x86/h263dsp_init.o
|
||||
OBJS-$(CONFIG_H264CHROMA) += x86/h264chroma_init.o
|
||||
@ -55,6 +54,8 @@ OBJS-$(CONFIG_CFHD_ENCODER) += x86/cfhdencdsp_init.o
|
||||
OBJS-$(CONFIG_DCA_DECODER) += x86/dcadsp_init.o x86/synth_filter_init.o
|
||||
OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc_init.o
|
||||
OBJS-$(CONFIG_EXR_DECODER) += x86/exrdsp_init.o
|
||||
OBJS-$(CONFIG_FLAC_DECODER) += x86/flacdsp_init.o
|
||||
OBJS-$(CONFIG_FLAC_ENCODER) += x86/flacencdsp_init.o
|
||||
OBJS-$(CONFIG_OPUS_DECODER) += x86/opusdsp_init.o
|
||||
OBJS-$(CONFIG_OPUS_ENCODER) += x86/celt_pvq_init.o
|
||||
OBJS-$(CONFIG_HEVC_DECODER) += x86/hevcdsp_init.o
|
||||
|
@ -22,15 +22,12 @@
|
||||
#include "libavcodec/flacdsp.h"
|
||||
#include "libavutil/x86/cpu.h"
|
||||
#include "config.h"
|
||||
#include "config_components.h"
|
||||
|
||||
void ff_flac_lpc_32_sse4(int32_t *samples, const int coeffs[32], int order,
|
||||
int qlevel, int len);
|
||||
void ff_flac_lpc_32_xop(int32_t *samples, const int coeffs[32], int order,
|
||||
int qlevel, int len);
|
||||
|
||||
void ff_flac_enc_lpc_16_sse4(int32_t *, const int32_t *, int, int, const int32_t *,int);
|
||||
|
||||
#define DECORRELATE_FUNCS(fmt, opt) \
|
||||
void ff_flac_decorrelate_ls_##fmt##_##opt(uint8_t **out, int32_t **in, int channels, \
|
||||
int len, int shift); \
|
||||
@ -57,7 +54,6 @@ av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int
|
||||
#if HAVE_X86ASM
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
#if CONFIG_FLAC_DECODER
|
||||
if (EXTERNAL_SSE2(cpu_flags)) {
|
||||
if (fmt == AV_SAMPLE_FMT_S16) {
|
||||
if (channels == 2)
|
||||
@ -104,13 +100,5 @@ av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int
|
||||
if (EXTERNAL_XOP(cpu_flags)) {
|
||||
c->lpc32 = ff_flac_lpc_32_xop;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_FLAC_ENCODER
|
||||
if (EXTERNAL_SSE4(cpu_flags)) {
|
||||
if (CONFIG_GPL)
|
||||
c->lpc16_encode = ff_flac_enc_lpc_16_sse4;
|
||||
}
|
||||
#endif
|
||||
#endif /* HAVE_X86ASM */
|
||||
}
|
||||
|
38
libavcodec/x86/flacencdsp_init.c
Normal file
38
libavcodec/x86/flacencdsp_init.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (c) 2014 James Almer
|
||||
*
|
||||
* 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 "config.h"
|
||||
#include "libavutil/attributes.h"
|
||||
#include "libavutil/x86/cpu.h"
|
||||
#include "libavcodec/flacencdsp.h"
|
||||
|
||||
void ff_flac_enc_lpc_16_sse4(int32_t *, const int32_t *, int, int, const int32_t *,int);
|
||||
|
||||
av_cold void ff_flacencdsp_init_x86(FLACEncDSPContext *c)
|
||||
{
|
||||
#if HAVE_X86ASM && CONFIG_GPL
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
if (EXTERNAL_SSE4(cpu_flags)) {
|
||||
if (CONFIG_GPL)
|
||||
c->lpc16_encode = ff_flac_enc_lpc_16_sse4;
|
||||
}
|
||||
#endif /* HAVE_X86ASM */
|
||||
}
|
@ -3,7 +3,6 @@
|
||||
AVCODECOBJS-$(CONFIG_AUDIODSP) += audiodsp.o
|
||||
AVCODECOBJS-$(CONFIG_BLOCKDSP) += blockdsp.o
|
||||
AVCODECOBJS-$(CONFIG_BSWAPDSP) += bswapdsp.o
|
||||
AVCODECOBJS-$(CONFIG_FLACDSP) += flacdsp.o
|
||||
AVCODECOBJS-$(CONFIG_FMTCONVERT) += fmtconvert.o
|
||||
AVCODECOBJS-$(CONFIG_G722DSP) += g722dsp.o
|
||||
AVCODECOBJS-$(CONFIG_H264DSP) += h264dsp.o
|
||||
@ -23,6 +22,7 @@ AVCODECOBJS-$(CONFIG_AAC_DECODER) += aacpsdsp.o \
|
||||
AVCODECOBJS-$(CONFIG_ALAC_DECODER) += alacdsp.o
|
||||
AVCODECOBJS-$(CONFIG_DCA_DECODER) += synth_filter.o
|
||||
AVCODECOBJS-$(CONFIG_EXR_DECODER) += exrdsp.o
|
||||
AVCODECOBJS-$(CONFIG_FLAC_DECODER) += flacdsp.o
|
||||
AVCODECOBJS-$(CONFIG_HUFFYUV_DECODER) += huffyuvdsp.o
|
||||
AVCODECOBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dsp.o
|
||||
AVCODECOBJS-$(CONFIG_OPUS_DECODER) += opusdsp.o
|
||||
|
@ -96,7 +96,7 @@ static const struct {
|
||||
#if CONFIG_EXR_DECODER
|
||||
{ "exrdsp", checkasm_check_exrdsp },
|
||||
#endif
|
||||
#if CONFIG_FLACDSP
|
||||
#if CONFIG_FLAC_DECODER
|
||||
{ "flacdsp", checkasm_check_flacdsp },
|
||||
#endif
|
||||
#if CONFIG_FMTCONVERT
|
||||
|
Loading…
Reference in New Issue
Block a user