From 0b016eb99d38738e2c53e36549a4732a0f863b2e Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Thu, 7 Feb 2013 21:04:32 +0100 Subject: [PATCH] dsputil: Move ff_block_permute to mpegvideo_enc --- libavcodec/dsputil.c | 29 ----------------------------- libavcodec/dsputil.h | 6 ------ libavcodec/mpegvideo.c | 29 +++++++++++++++++++++++++++++ libavcodec/mpegvideo.h | 6 ++++++ 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c index 1c8aae78bf5..fac51bcbae3 100644 --- a/libavcodec/dsputil.c +++ b/libavcodec/dsputil.c @@ -1704,35 +1704,6 @@ static void add_8x8basis_c(int16_t rem[64], int16_t basis[64], int scale){ } } -/** - * Permute an 8x8 block. - * @param block the block which will be permuted according to the given permutation vector - * @param permutation the permutation vector - * @param last the last non zero coefficient in scantable order, used to speed the permutation up - * @param scantable the used scantable, this is only used to speed the permutation up, the block is not - * (inverse) permutated to scantable order! - */ -void ff_block_permute(int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last) -{ - int i; - int16_t temp[64]; - - if(last<=0) return; - //if(permutation[1]==1) return; //FIXME it is ok but not clean and might fail for some permutations - - for(i=0; i<=last; i++){ - const int j= scantable[i]; - temp[j]= block[j]; - block[j]=0; - } - - for(i=0; i<=last; i++){ - const int j= scantable[i]; - const int perm_j= permutation[j]; - block[perm_j]= temp[j]; - } -} - static int zero_cmp(void *s, uint8_t *a, uint8_t *b, int stride, int h){ return 0; } diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h index ef3b39b8fb7..8898ece3059 100644 --- a/libavcodec/dsputil.h +++ b/libavcodec/dsputil.h @@ -435,12 +435,6 @@ void ff_dsputil_init(DSPContext* p, AVCodecContext *avctx); int ff_check_alignment(void); -/** - * permute block according to permuatation. - * @param last last non zero element in scantable order - */ -void ff_block_permute(int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last); - void ff_set_cmp(DSPContext* c, me_cmp_func *cmp, int type); #define BYTE_VEC32(c) ((c)*0x01010101UL) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index a64906fd0c1..4b68fd56a05 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -2499,6 +2499,35 @@ void ff_init_block_index(MpegEncContext *s){ //FIXME maybe rename } } +/** + * Permute an 8x8 block. + * @param block the block which will be permuted according to the given permutation vector + * @param permutation the permutation vector + * @param last the last non zero coefficient in scantable order, used to speed the permutation up + * @param scantable the used scantable, this is only used to speed the permutation up, the block is not + * (inverse) permutated to scantable order! + */ +void ff_block_permute(int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last) +{ + int i; + int16_t temp[64]; + + if(last<=0) return; + //if(permutation[1]==1) return; //FIXME it is ok but not clean and might fail for some permutations + + for(i=0; i<=last; i++){ + const int j= scantable[i]; + temp[j]= block[j]; + block[j]=0; + } + + for(i=0; i<=last; i++){ + const int j= scantable[i]; + const int perm_j= permutation[j]; + block[perm_j]= temp[j]; + } +} + void ff_mpeg_flush(AVCodecContext *avctx){ int i; MpegEncContext *s = avctx->priv_data; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 1294d0c924f..f3f982742b3 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -815,6 +815,12 @@ int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared); extern const enum AVPixelFormat ff_pixfmt_list_420[]; extern const enum AVPixelFormat ff_hwaccel_pixfmt_list_420[]; +/** + * permute block according to permuatation. + * @param last last non zero element in scantable order + */ +void ff_block_permute(int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last); + static inline void ff_update_block_index(MpegEncContext *s){ const int block_size = 8; -- 2.39.2