Add a new IDCT permutation, used in xvid_sse2 and possibly future similar IDCTs.
Originally committed as revision 12842 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b4999290fd
commit
0e956ba277
@ -151,6 +151,8 @@ static const uint8_t simple_mmx_permutation[64]={
|
||||
0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F,
|
||||
};
|
||||
|
||||
static const uint8_t idct_sse2_row_perm[8] = {0, 4, 1, 5, 2, 6, 3, 7};
|
||||
|
||||
void ff_init_scantable(uint8_t *permutation, ScanTable *st, const uint8_t *src_scantable){
|
||||
int i;
|
||||
int end;
|
||||
@ -4476,6 +4478,10 @@ void dsputil_init(DSPContext* c, AVCodecContext *avctx)
|
||||
for(i=0; i<64; i++)
|
||||
c->idct_permutation[i]= (i&0x24) | ((i&3)<<3) | ((i>>3)&3);
|
||||
break;
|
||||
case FF_SSE2_IDCT_PERM:
|
||||
for(i=0; i<64; i++)
|
||||
c->idct_permutation[i]= (i&0x38) | idct_sse2_row_perm[i&7];
|
||||
break;
|
||||
default:
|
||||
av_log(avctx, AV_LOG_ERROR, "Internal error, IDCT permutation not set\n");
|
||||
}
|
||||
|
@ -408,6 +408,7 @@ typedef struct DSPContext {
|
||||
#define FF_SIMPLE_IDCT_PERM 3
|
||||
#define FF_TRANSPOSE_IDCT_PERM 4
|
||||
#define FF_PARTTRANS_IDCT_PERM 5
|
||||
#define FF_SSE2_IDCT_PERM 6
|
||||
|
||||
int (*try_8x8basis)(int16_t rem[64], int16_t weight[64], int16_t basis[64], int scale);
|
||||
void (*add_8x8basis)(int16_t rem[64], int16_t basis[64], int scale);
|
||||
|
Loading…
x
Reference in New Issue
Block a user