From 438ea561ade14299f9ea22202a07020870487e09 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Mon, 28 Jan 2013 20:22:54 +0100 Subject: [PATCH 1/4] bfin: Separate VP3 initialization code --- libavcodec/bfin/Makefile | 4 ++-- libavcodec/bfin/dsputil_bfin.c | 8 +------- libavcodec/bfin/dsputil_bfin.h | 3 --- libavcodec/bfin/vp3_bfin.c | 9 ++++++++- libavcodec/vp3dsp.c | 2 ++ libavcodec/vp3dsp.h | 1 + 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/libavcodec/bfin/Makefile b/libavcodec/bfin/Makefile index be81e6c39a..d1b41bc7f4 100644 --- a/libavcodec/bfin/Makefile +++ b/libavcodec/bfin/Makefile @@ -2,7 +2,7 @@ OBJS += bfin/dsputil_bfin.o \ bfin/fdct_bfin.o \ bfin/idct_bfin.o \ bfin/pixels_bfin.o \ - bfin/vp3_bfin.o \ - bfin/vp3_idct_bfin.o \ OBJS-$(CONFIG_MPEGVIDEOENC) += bfin/mpegvideo_bfin.o +OBJS-$(CONFIG_VP3DSP) += bfin/vp3_bfin.o \ + bfin/vp3_idct_bfin.o diff --git a/libavcodec/bfin/dsputil_bfin.c b/libavcodec/bfin/dsputil_bfin.c index 5d6018400c..896a3c55f6 100644 --- a/libavcodec/bfin/dsputil_bfin.c +++ b/libavcodec/bfin/dsputil_bfin.c @@ -257,13 +257,7 @@ void ff_dsputil_init_bfin( DSPContext* c, AVCodecContext *avctx ) if (avctx->dct_algo == FF_DCT_AUTO) c->fdct = ff_bfin_fdct; - // FIXME convert to VP3DSPContext - if (0) { // avctx->idct_algo == FF_IDCT_VP3) { - c->idct_permutation_type = FF_NO_IDCT_PERM; - c->idct = ff_bfin_vp3_idct; - c->idct_add = ff_bfin_vp3_idct_add; - c->idct_put = ff_bfin_vp3_idct_put; - } else if (avctx->idct_algo == FF_IDCT_AUTO) { + if (avctx->idct_algo == FF_IDCT_AUTO) { c->idct_permutation_type = FF_NO_IDCT_PERM; c->idct = ff_bfin_idct; c->idct_add = bfin_idct_add; diff --git a/libavcodec/bfin/dsputil_bfin.h b/libavcodec/bfin/dsputil_bfin.h index a7c586374f..238c73c4fd 100644 --- a/libavcodec/bfin/dsputil_bfin.h +++ b/libavcodec/bfin/dsputil_bfin.h @@ -38,9 +38,6 @@ void ff_bfin_idct (int16_t *block) attribute_l1_text; void ff_bfin_fdct (int16_t *block) attribute_l1_text; -void ff_bfin_vp3_idct (int16_t *block); -void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, int16_t *block); -void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, int16_t *block); void ff_bfin_add_pixels_clamped (const int16_t *block, uint8_t *dest, int line_size) attribute_l1_text; void ff_bfin_put_pixels_clamped (const int16_t *block, uint8_t *dest, int line_size) attribute_l1_text; void ff_bfin_diff_pixels (int16_t *block, const uint8_t *s1, const uint8_t *s2, int stride) attribute_l1_text; diff --git a/libavcodec/bfin/vp3_bfin.c b/libavcodec/bfin/vp3_bfin.c index 267918cd6a..68c17ee39f 100644 --- a/libavcodec/bfin/vp3_bfin.c +++ b/libavcodec/bfin/vp3_bfin.c @@ -21,8 +21,9 @@ #include #include "libavcodec/avcodec.h" -#include "libavcodec/dsputil.h" +#include "libavcodec/vp3dsp.h" #include "dsputil_bfin.h" +#include "vp3_bfin.h" /* Intra iDCT offset 128 */ void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, int16_t *block) @@ -47,3 +48,9 @@ void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, int16_t *block) memset(block, 0, 128); } + +void ff_vp3dsp_init_bfin(VP3DSPContext *c, int flags) +{ + c->idct_add = ff_bfin_vp3_idct_add; + c->idct_put = ff_bfin_vp3_idct_put; +} diff --git a/libavcodec/vp3dsp.c b/libavcodec/vp3dsp.c index f6d2c2a3b3..01649f0f57 100644 --- a/libavcodec/vp3dsp.c +++ b/libavcodec/vp3dsp.c @@ -310,6 +310,8 @@ av_cold void ff_vp3dsp_init(VP3DSPContext *c, int flags) if (ARCH_ARM) ff_vp3dsp_init_arm(c, flags); + if (ARCH_BFIN) + ff_vp3dsp_init_bfin(c, flags); if (ARCH_PPC) ff_vp3dsp_init_ppc(c, flags); if (ARCH_X86) diff --git a/libavcodec/vp3dsp.h b/libavcodec/vp3dsp.h index a5e25ec7bb..755271d37c 100644 --- a/libavcodec/vp3dsp.h +++ b/libavcodec/vp3dsp.h @@ -49,6 +49,7 @@ typedef struct VP3DSPContext { void ff_vp3dsp_init(VP3DSPContext *c, int flags); void ff_vp3dsp_init_arm(VP3DSPContext *c, int flags); +void ff_vp3dsp_init_bfin(VP3DSPContext *c, int flags); void ff_vp3dsp_init_ppc(VP3DSPContext *c, int flags); void ff_vp3dsp_init_x86(VP3DSPContext *c, int flags); From c59211b437aaaf2592bc20bd26c6cf526fd4fb64 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sat, 26 Jan 2013 12:19:34 +0100 Subject: [PATCH 2/4] x86: Simplify some arch conditionals --- libavcodec/x86/h264_qpel.c | 2 +- libavcodec/x86/idct_sse2_xvid.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/x86/h264_qpel.c b/libavcodec/x86/h264_qpel.c index 64af8fe17c..be4eaa98b4 100644 --- a/libavcodec/x86/h264_qpel.c +++ b/libavcodec/x86/h264_qpel.c @@ -544,7 +544,7 @@ void ff_h264qpel_init_x86(H264QpelContext *c, int bit_depth) SET_QPEL_FUNCS(avg_h264_qpel, 1, 8, mmxext, ); SET_QPEL_FUNCS(avg_h264_qpel, 2, 4, mmxext, ); } else if (bit_depth == 10) { -#if !ARCH_X86_64 +#if ARCH_X86_32 SET_QPEL_FUNCS(avg_h264_qpel, 0, 16, 10_mmxext, ff_); SET_QPEL_FUNCS(put_h264_qpel, 0, 16, 10_mmxext, ff_); SET_QPEL_FUNCS(put_h264_qpel, 1, 8, 10_mmxext, ff_); diff --git a/libavcodec/x86/idct_sse2_xvid.c b/libavcodec/x86/idct_sse2_xvid.c index fe2478e55e..f083a2cbaa 100644 --- a/libavcodec/x86/idct_sse2_xvid.c +++ b/libavcodec/x86/idct_sse2_xvid.c @@ -377,7 +377,7 @@ inline void ff_idct_xvid_sse2(short *block) JZ("%%esi", "1f") "5: \n\t" iMTX_MULT("7*16(%0)", MANGLE(iTab2), ROUND(walkenIdctRounders+5*16), PUT_ODD(ROW7)) -#if !ARCH_X86_64 +#if ARCH_X86_32 iLLM_HEAD #endif iLLM_PASS("%0") From f1c395944ce9c80ab0104570691462589c078eb2 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 21 Nov 2012 14:55:05 +0100 Subject: [PATCH 3/4] eatgv: use fixed-width types where appropriate. --- libavcodec/eatgv.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libavcodec/eatgv.c b/libavcodec/eatgv.c index a40ea839d6..792eaf708e 100644 --- a/libavcodec/eatgv.c +++ b/libavcodec/eatgv.c @@ -42,10 +42,10 @@ typedef struct TgvContext { AVFrame frame; AVFrame last_frame; int width,height; - unsigned int palette[AVPALETTE_COUNT]; + uint32_t palette[AVPALETTE_COUNT]; int (*mv_codebook)[2]; - unsigned char (*block_codebook)[16]; + uint8_t (*block_codebook)[16]; int num_mvs; ///< current length of mv_codebook int num_blocks_packed; ///< current length of block_codebook } TgvContext; @@ -64,11 +64,11 @@ static av_cold int tgv_decode_init(AVCodecContext *avctx) * @return 0 on success, -1 on critical buffer underflow */ static int unpack(const uint8_t *src, const uint8_t *src_end, - unsigned char *dst, int width, int height) + uint8_t *dst, int width, int height) { - unsigned char *dst_end = dst + width*height; + uint8_t *dst_end = dst + width*height; int size, size1, size2, offset, run; - unsigned char *dst_start = dst; + uint8_t *dst_start = dst; if (src[0] & 0x01) src += 5; @@ -148,7 +148,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf, int i,j,x,y; GetBitContext gb; int mvbits; - const unsigned char *blocks_raw; + const uint8_t *blocks_raw; if (buf + 12 > buf_end) return AVERROR_INVALIDDATA; @@ -172,7 +172,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf, } if (num_blocks_packed > s->num_blocks_packed) { - s->block_codebook = av_realloc(s->block_codebook, num_blocks_packed*16*sizeof(unsigned char)); + s->block_codebook = av_realloc(s->block_codebook, num_blocks_packed*16); s->num_blocks_packed = num_blocks_packed; } @@ -211,7 +211,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf, for (y = 0; y < s->avctx->height / 4; y++) for (x = 0; x < s->avctx->width / 4; x++) { unsigned int vector = get_bits(&gb, vector_bits); - const unsigned char *src; + const uint8_t *src; int src_stride; if (vector < num_mvs) { From 098eed95bc1a6b2c8ac97f126f62bb74699670cf Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 9 Dec 2012 18:44:44 +0100 Subject: [PATCH 4/4] mdec: merge mdec_common_init() into decode_init(). There is no point in keeping those two functions separate. --- libavcodec/mdec.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c index 2f74cdcd01..ec09124ffc 100644 --- a/libavcodec/mdec.c +++ b/libavcodec/mdec.c @@ -211,23 +211,17 @@ static int decode_frame(AVCodecContext *avctx, return (get_bits_count(&a->gb)+31)/32*4; } -static av_cold void mdec_common_init(AVCodecContext *avctx){ +static av_cold int decode_init(AVCodecContext *avctx){ MDECContext * const a = avctx->priv_data; - - ff_dsputil_init(&a->dsp, avctx); + AVFrame *p= &a->picture; a->mb_width = (avctx->coded_width + 15) / 16; a->mb_height = (avctx->coded_height + 15) / 16; avctx->coded_frame= &a->picture; a->avctx= avctx; -} -static av_cold int decode_init(AVCodecContext *avctx){ - MDECContext * const a = avctx->priv_data; - AVFrame *p= &a->picture; - - mdec_common_init(avctx); + ff_dsputil_init(&a->dsp, avctx); ff_mpeg12_init_vlcs(); ff_init_scantable(a->dsp.idct_permutation, &a->scantable, ff_zigzag_direct);