Signed-off-by: Michael Niedermayer <michaelni@gmx.at>tags/n1.0
| @@ -772,7 +772,7 @@ int ff_MPV_encode_init(AVCodecContext *avctx); | |||||
| int ff_MPV_encode_end(AVCodecContext *avctx); | int ff_MPV_encode_end(AVCodecContext *avctx); | ||||
| int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt, | int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt, | ||||
| AVFrame *frame, int *got_packet); | AVFrame *frame, int *got_packet); | ||||
| void ff_MPV_encode_init_x86(MpegEncContext *s); | |||||
| void ff_dct_encode_init_x86(MpegEncContext *s); | |||||
| void ff_MPV_common_init_x86(MpegEncContext *s); | void ff_MPV_common_init_x86(MpegEncContext *s); | ||||
| void ff_MPV_common_init_axp(MpegEncContext *s); | void ff_MPV_common_init_axp(MpegEncContext *s); | ||||
| void ff_MPV_common_init_mmi(MpegEncContext *s); | void ff_MPV_common_init_mmi(MpegEncContext *s); | ||||
| @@ -799,6 +799,7 @@ void ff_er_frame_end(MpegEncContext *s); | |||||
| void ff_er_add_slice(MpegEncContext *s, int startx, int starty, int endx, int endy, int status); | void ff_er_add_slice(MpegEncContext *s, int startx, int starty, int endx, int endy, int status); | ||||
| int ff_dct_common_init(MpegEncContext *s); | int ff_dct_common_init(MpegEncContext *s); | ||||
| int ff_dct_encode_init(MpegEncContext *s); | |||||
| void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64], uint16_t (*qmat16)[2][64], | void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64], uint16_t (*qmat16)[2][64], | ||||
| const uint16_t *quant_matrix, int bias, int qmin, int qmax, int intra); | const uint16_t *quant_matrix, int bias, int qmin, int qmax, int intra); | ||||
| int ff_dct_quantize_c(MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow); | int ff_dct_quantize_c(MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow); | ||||
| @@ -267,6 +267,21 @@ static void MPV_encode_defaults(MpegEncContext *s) | |||||
| s->fcode_tab = default_fcode_tab; | s->fcode_tab = default_fcode_tab; | ||||
| } | } | ||||
| av_cold int ff_dct_encode_init(MpegEncContext *s) { | |||||
| if (ARCH_X86) | |||||
| ff_dct_encode_init_x86(s); | |||||
| if (!s->dct_quantize) | |||||
| s->dct_quantize = ff_dct_quantize_c; | |||||
| if (!s->denoise_dct) | |||||
| s->denoise_dct = denoise_dct_c; | |||||
| s->fast_dct_quantize = s->dct_quantize; | |||||
| if (s->avctx->trellis) | |||||
| s->dct_quantize = dct_quantize_trellis_c; | |||||
| return 0; | |||||
| } | |||||
| /* init video encoder */ | /* init video encoder */ | ||||
| av_cold int ff_MPV_encode_init(AVCodecContext *avctx) | av_cold int ff_MPV_encode_init(AVCodecContext *avctx) | ||||
| { | { | ||||
| @@ -832,16 +847,7 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx) | |||||
| if (ff_MPV_common_init(s) < 0) | if (ff_MPV_common_init(s) < 0) | ||||
| return -1; | return -1; | ||||
| if (ARCH_X86) | |||||
| ff_MPV_encode_init_x86(s); | |||||
| if (!s->dct_quantize) | |||||
| s->dct_quantize = ff_dct_quantize_c; | |||||
| if (!s->denoise_dct) | |||||
| s->denoise_dct = denoise_dct_c; | |||||
| s->fast_dct_quantize = s->dct_quantize; | |||||
| if (avctx->trellis) | |||||
| s->dct_quantize = dct_quantize_trellis_c; | |||||
| ff_dct_encode_init(s); | |||||
| if ((CONFIG_H263P_ENCODER || CONFIG_RV20_ENCODER) && s->modified_quant) | if ((CONFIG_H263P_ENCODER || CONFIG_RV20_ENCODER) && s->modified_quant) | ||||
| s->chroma_qscale_table = ff_h263_chroma_qscale_table; | s->chroma_qscale_table = ff_h263_chroma_qscale_table; | ||||
| @@ -80,7 +80,7 @@ extern uint16_t ff_inv_zigzag_direct16[64]; | |||||
| #include "mpegvideoenc_template.c" | #include "mpegvideoenc_template.c" | ||||
| #endif /* HAVE_SSSE3_INLINE */ | #endif /* HAVE_SSSE3_INLINE */ | ||||
| void ff_MPV_encode_init_x86(MpegEncContext *s) | |||||
| void ff_dct_encode_init_x86(MpegEncContext *s) | |||||
| { | { | ||||
| int mm_flags = av_get_cpu_flags(); | int mm_flags = av_get_cpu_flags(); | ||||
| const int dct_algo = s->avctx->dct_algo; | const int dct_algo = s->avctx->dct_algo; | ||||