mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-03 14:32:16 +02:00
Merge commit '0b016eb99d38738e2c53e36549a4732a0f863b2e'
* commit '0b016eb99d38738e2c53e36549a4732a0f863b2e': dsputil: Move ff_block_permute to mpegvideo_enc Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
55151aa101
@ -1819,35 +1819,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;
|
||||
}
|
||||
|
@ -454,12 +454,6 @@ attribute_deprecated void dsputil_init(DSPContext* c, 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)
|
||||
|
@ -2881,6 +2881,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;
|
||||
|
@ -830,6 +830,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 >> s->avctx->lowres;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user