diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-06-08 13:00:51 +0100 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-06-10 14:06:23 +0100 |
commit | d1dd0d404c085f4fce7b8358b4aea677761c5d88 (patch) | |
tree | cdda31a3b3b10464af147e70c0fdbd515bc01dd1 /libavcodec | |
parent | c6aa0554b0c3e31fec4580b68ea85b66966cd381 (diff) | |
download | ffmpeg-d1dd0d404c085f4fce7b8358b4aea677761c5d88.tar.gz |
mpegvideo: Move block permutation function where is used
Mark it as static.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mpegvideo.c | 29 | ||||
-rw-r--r-- | libavcodec/mpegvideo.h | 6 | ||||
-rw-r--r-- | libavcodec/mpegvideo_enc.c | 40 |
3 files changed, 38 insertions, 37 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 1ea2b6530f..68f95685d1 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1840,35 +1840,6 @@ 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 b2b2f6df79..1a6857dd42 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -638,12 +638,6 @@ void ff_mpv_motion(MpegEncContext *s, op_pixels_func (*pix_op)[4], qpel_mc_func (*qpix_op)[16]); -/** - * 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; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index a2061532ae..6fe34b57f8 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -4196,6 +4196,42 @@ STOP_TIMER("iterative search") return last_non_zero; } +/** + * Permute an 8x8 block according to permuatation. + * @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! + */ +static void block_permute(int16_t *block, uint8_t *permutation, + const uint8_t *scantable, int last) +{ + int i; + int16_t temp[64]; + + if (last <= 0) + return; + //FIXME it is ok but not clean and might fail for some permutations + // if (permutation[1] == 1) + // return; + + 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]; + } +} + int ff_dct_quantize_c(MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow) @@ -4271,8 +4307,8 @@ int ff_dct_quantize_c(MpegEncContext *s, /* we need this permutation so that we correct the IDCT, we only permute the !=0 elements */ if (s->idsp.perm_type != FF_IDCT_PERM_NONE) - ff_block_permute(block, s->idsp.idct_permutation, - scantable, last_non_zero); + block_permute(block, s->idsp.idct_permutation, + scantable, last_non_zero); return last_non_zero; } |