X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fdsputil.c;h=6c734e570e23d2c2a65474986517632691a202d5;hb=d29ee34ce31668703913f9e9c5dc3b8df969addd;hp=cfe3666b5c25fa1d5687a95974af35abd06a2d43;hpb=288a44fb7a4fb21f9c1e92fc009ad06797ef78d3;p=ffmpeg diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c index cfe3666b5c2..6c734e570e2 100644 --- a/libavcodec/dsputil.c +++ b/libavcodec/dsputil.c @@ -29,7 +29,6 @@ #include "avcodec.h" #include "dsputil.h" -#include "mpegvideo.h" #include "simple_idct.h" #include "faandct.h" #include "faanidct.h" @@ -152,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; @@ -4477,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"); }