* commit 'b4987f72197e0c62cf2633bf835a9c32d2a445ae': idct: Convert IDCT permutation #defines to an enum Conflicts: libavcodec/idctdsp.c libavcodec/x86/cavsdsp.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.4
@@ -78,12 +78,12 @@ av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx, | |||||
c->idct_put = j_rev_dct_arm_put; | c->idct_put = j_rev_dct_arm_put; | ||||
c->idct_add = j_rev_dct_arm_add; | c->idct_add = j_rev_dct_arm_add; | ||||
c->idct = ff_j_rev_dct_arm; | c->idct = ff_j_rev_dct_arm; | ||||
c->idct_permutation_type = FF_LIBMPEG2_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_LIBMPEG2; | |||||
} else if (avctx->idct_algo == FF_IDCT_SIMPLEARM) { | } else if (avctx->idct_algo == FF_IDCT_SIMPLEARM) { | ||||
c->idct_put = simple_idct_arm_put; | c->idct_put = simple_idct_arm_put; | ||||
c->idct_add = simple_idct_arm_add; | c->idct_add = simple_idct_arm_add; | ||||
c->idct = ff_simple_idct_arm; | c->idct = ff_simple_idct_arm; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} | } | ||||
} | } | ||||
@@ -39,6 +39,6 @@ av_cold void ff_idctdsp_init_armv5te(IDCTDSPContext *c, AVCodecContext *avctx, | |||||
c->idct_put = ff_simple_idct_put_armv5te; | c->idct_put = ff_simple_idct_put_armv5te; | ||||
c->idct_add = ff_simple_idct_add_armv5te; | c->idct_add = ff_simple_idct_add_armv5te; | ||||
c->idct = ff_simple_idct_armv5te; | c->idct = ff_simple_idct_armv5te; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} | } | ||||
} | } |
@@ -41,7 +41,7 @@ av_cold void ff_idctdsp_init_armv6(IDCTDSPContext *c, AVCodecContext *avctx, | |||||
c->idct_put = ff_simple_idct_put_armv6; | c->idct_put = ff_simple_idct_put_armv6; | ||||
c->idct_add = ff_simple_idct_add_armv6; | c->idct_add = ff_simple_idct_add_armv6; | ||||
c->idct = ff_simple_idct_armv6; | c->idct = ff_simple_idct_armv6; | ||||
c->idct_permutation_type = FF_LIBMPEG2_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_LIBMPEG2; | |||||
} | } | ||||
} | } | ||||
c->add_pixels_clamped = ff_add_pixels_clamped_armv6; | c->add_pixels_clamped = ff_add_pixels_clamped_armv6; | ||||
@@ -44,7 +44,7 @@ av_cold void ff_idctdsp_init_neon(IDCTDSPContext *c, AVCodecContext *avctx, | |||||
c->idct_put = ff_simple_idct_put_neon; | c->idct_put = ff_simple_idct_put_neon; | ||||
c->idct_add = ff_simple_idct_add_neon; | c->idct_add = ff_simple_idct_add_neon; | ||||
c->idct = ff_simple_idct_neon; | c->idct = ff_simple_idct_neon; | ||||
c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_PARTTRANS; | |||||
} | } | ||||
} | } | ||||
@@ -561,7 +561,7 @@ av_cold void ff_cavsdsp_init(CAVSDSPContext* c, AVCodecContext *avctx) { | |||||
c->cavs_filter_cv = cavs_filter_cv_c; | c->cavs_filter_cv = cavs_filter_cv_c; | ||||
c->cavs_filter_ch = cavs_filter_ch_c; | c->cavs_filter_ch = cavs_filter_ch_c; | ||||
c->cavs_idct8_add = cavs_idct8_add_c; | c->cavs_idct8_add = cavs_idct8_add_c; | ||||
c->idct_perm = FF_NO_IDCT_PERM; | |||||
c->idct_perm = FF_IDCT_PERM_NONE; | |||||
if (ARCH_X86) | if (ARCH_X86) | ||||
ff_cavsdsp_init_x86(c, avctx); | ff_cavsdsp_init_x86(c, avctx); | ||||
@@ -68,7 +68,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||||
ff_blockdsp_init(&s->bdsp, avctx); | ff_blockdsp_init(&s->bdsp, avctx); | ||||
ff_bswapdsp_init(&s->bbdsp); | ff_bswapdsp_init(&s->bbdsp); | ||||
ff_idctdsp_init(&s->idsp, avctx); | ff_idctdsp_init(&s->idsp, avctx); | ||||
ff_init_scantable_permutation(s->idsp.idct_permutation, FF_NO_IDCT_PERM); | |||||
ff_init_scantable_permutation(s->idsp.idct_permutation, FF_IDCT_PERM_NONE); | |||||
ff_init_scantable(s->idsp.idct_permutation, &s->scantable, ff_zigzag_direct); | ff_init_scantable(s->idsp.idct_permutation, &s->scantable, ff_zigzag_direct); | ||||
ff_mpeg12_init_vlcs(); | ff_mpeg12_init_vlcs(); | ||||
@@ -51,7 +51,7 @@ static av_cold int tgq_decode_init(AVCodecContext *avctx) | |||||
TgqContext *s = avctx->priv_data; | TgqContext *s = avctx->priv_data; | ||||
uint8_t idct_permutation[64]; | uint8_t idct_permutation[64]; | ||||
s->avctx = avctx; | s->avctx = avctx; | ||||
ff_init_scantable_permutation(idct_permutation, FF_NO_IDCT_PERM); | |||||
ff_init_scantable_permutation(idct_permutation, FF_IDCT_PERM_NONE); | |||||
ff_init_scantable(idct_permutation, &s->scantable, ff_zigzag_direct); | ff_init_scantable(idct_permutation, &s->scantable, ff_zigzag_direct); | ||||
avctx->time_base = (AVRational){1, 15}; | avctx->time_base = (AVRational){1, 15}; | ||||
avctx->pix_fmt = AV_PIX_FMT_YUV420P; | avctx->pix_fmt = AV_PIX_FMT_YUV420P; | ||||
@@ -53,7 +53,7 @@ static av_cold int tqi_decode_init(AVCodecContext *avctx) | |||||
ff_blockdsp_init(&s->bdsp, avctx); | ff_blockdsp_init(&s->bdsp, avctx); | ||||
ff_bswapdsp_init(&t->bsdsp); | ff_bswapdsp_init(&t->bsdsp); | ||||
ff_idctdsp_init(&s->idsp, avctx); | ff_idctdsp_init(&s->idsp, avctx); | ||||
ff_init_scantable_permutation(s->idsp.idct_permutation, FF_NO_IDCT_PERM); | |||||
ff_init_scantable_permutation(s->idsp.idct_permutation, FF_IDCT_PERM_NONE); | |||||
ff_init_scantable(s->idsp.idct_permutation, &s->intra_scantable, ff_zigzag_direct); | ff_init_scantable(s->idsp.idct_permutation, &s->intra_scantable, ff_zigzag_direct); | ||||
s->qscale = 1; | s->qscale = 1; | ||||
avctx->time_base = (AVRational){1, 15}; | avctx->time_base = (AVRational){1, 15}; | ||||
@@ -47,29 +47,29 @@ av_cold void ff_init_scantable(uint8_t *permutation, ScanTable *st, | |||||
} | } | ||||
av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation, | av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation, | ||||
int idct_permutation_type) | |||||
enum idct_permutation_type perm_type) | |||||
{ | { | ||||
int i; | int i; | ||||
if (ARCH_X86) | if (ARCH_X86) | ||||
if (ff_init_scantable_permutation_x86(idct_permutation, | if (ff_init_scantable_permutation_x86(idct_permutation, | ||||
idct_permutation_type)) | |||||
perm_type)) | |||||
return; | return; | ||||
switch (idct_permutation_type) { | |||||
case FF_NO_IDCT_PERM: | |||||
switch (perm_type) { | |||||
case FF_IDCT_PERM_NONE: | |||||
for (i = 0; i < 64; i++) | for (i = 0; i < 64; i++) | ||||
idct_permutation[i] = i; | idct_permutation[i] = i; | ||||
break; | break; | ||||
case FF_LIBMPEG2_IDCT_PERM: | |||||
case FF_IDCT_PERM_LIBMPEG2: | |||||
for (i = 0; i < 64; i++) | for (i = 0; i < 64; i++) | ||||
idct_permutation[i] = (i & 0x38) | ((i & 6) >> 1) | ((i & 1) << 2); | idct_permutation[i] = (i & 0x38) | ((i & 6) >> 1) | ((i & 1) << 2); | ||||
break; | break; | ||||
case FF_TRANSPOSE_IDCT_PERM: | |||||
case FF_IDCT_PERM_TRANSPOSE: | |||||
for (i = 0; i < 64; i++) | for (i = 0; i < 64; i++) | ||||
idct_permutation[i] = ((i & 7) << 3) | (i >> 3); | idct_permutation[i] = ((i & 7) << 3) | (i >> 3); | ||||
break; | break; | ||||
case FF_PARTTRANS_IDCT_PERM: | |||||
case FF_IDCT_PERM_PARTTRANS: | |||||
for (i = 0; i < 64; i++) | for (i = 0; i < 64; i++) | ||||
idct_permutation[i] = (i & 0x24) | ((i & 3) << 3) | ((i >> 3) & 3); | idct_permutation[i] = (i & 0x24) | ((i & 3) << 3) | ((i >> 3) & 3); | ||||
break; | break; | ||||
@@ -253,44 +253,44 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) | |||||
c->idct_put = ff_jref_idct4_put; | c->idct_put = ff_jref_idct4_put; | ||||
c->idct_add = ff_jref_idct4_add; | c->idct_add = ff_jref_idct4_add; | ||||
c->idct = ff_j_rev_dct4; | c->idct = ff_j_rev_dct4; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} else if (avctx->lowres==2) { | } else if (avctx->lowres==2) { | ||||
c->idct_put = ff_jref_idct2_put; | c->idct_put = ff_jref_idct2_put; | ||||
c->idct_add = ff_jref_idct2_add; | c->idct_add = ff_jref_idct2_add; | ||||
c->idct = ff_j_rev_dct2; | c->idct = ff_j_rev_dct2; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} else if (avctx->lowres==3) { | } else if (avctx->lowres==3) { | ||||
c->idct_put = ff_jref_idct1_put; | c->idct_put = ff_jref_idct1_put; | ||||
c->idct_add = ff_jref_idct1_add; | c->idct_add = ff_jref_idct1_add; | ||||
c->idct = ff_j_rev_dct1; | c->idct = ff_j_rev_dct1; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} else { | } else { | ||||
if (avctx->bits_per_raw_sample == 10) { | if (avctx->bits_per_raw_sample == 10) { | ||||
c->idct_put = ff_simple_idct_put_10; | c->idct_put = ff_simple_idct_put_10; | ||||
c->idct_add = ff_simple_idct_add_10; | c->idct_add = ff_simple_idct_add_10; | ||||
c->idct = ff_simple_idct_10; | c->idct = ff_simple_idct_10; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} else if (avctx->bits_per_raw_sample == 12) { | } else if (avctx->bits_per_raw_sample == 12) { | ||||
c->idct_put = ff_simple_idct_put_12; | c->idct_put = ff_simple_idct_put_12; | ||||
c->idct_add = ff_simple_idct_add_12; | c->idct_add = ff_simple_idct_add_12; | ||||
c->idct = ff_simple_idct_12; | c->idct = ff_simple_idct_12; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} else { | } else { | ||||
if (avctx->idct_algo == FF_IDCT_INT) { | if (avctx->idct_algo == FF_IDCT_INT) { | ||||
c->idct_put = jref_idct_put; | c->idct_put = jref_idct_put; | ||||
c->idct_add = jref_idct_add; | c->idct_add = jref_idct_add; | ||||
c->idct = ff_j_rev_dct; | c->idct = ff_j_rev_dct; | ||||
c->idct_permutation_type = FF_LIBMPEG2_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_LIBMPEG2; | |||||
} else if (avctx->idct_algo == FF_IDCT_FAAN) { | } else if (avctx->idct_algo == FF_IDCT_FAAN) { | ||||
c->idct_put = ff_faanidct_put; | c->idct_put = ff_faanidct_put; | ||||
c->idct_add = ff_faanidct_add; | c->idct_add = ff_faanidct_add; | ||||
c->idct = ff_faanidct; | c->idct = ff_faanidct; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} else { // accurate/default | } else { // accurate/default | ||||
c->idct_put = ff_simple_idct_put_8; | c->idct_put = ff_simple_idct_put_8; | ||||
c->idct_add = ff_simple_idct_add_8; | c->idct_add = ff_simple_idct_add_8; | ||||
c->idct = ff_simple_idct_8; | c->idct = ff_simple_idct_8; | ||||
c->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_NONE; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -309,5 +309,5 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) | |||||
ff_idctdsp_init_x86(c, avctx, high_bit_depth); | ff_idctdsp_init_x86(c, avctx, high_bit_depth); | ||||
ff_init_scantable_permutation(c->idct_permutation, | ff_init_scantable_permutation(c->idct_permutation, | ||||
c->idct_permutation_type); | |||||
c->perm_type); | |||||
} | } |
@@ -32,12 +32,21 @@ typedef struct ScanTable { | |||||
uint8_t raster_end[64]; | uint8_t raster_end[64]; | ||||
} ScanTable; | } ScanTable; | ||||
enum idct_permutation_type { | |||||
FF_IDCT_PERM_NONE, | |||||
FF_IDCT_PERM_LIBMPEG2, | |||||
FF_IDCT_PERM_SIMPLE, | |||||
FF_IDCT_PERM_TRANSPOSE, | |||||
FF_IDCT_PERM_PARTTRANS, | |||||
FF_IDCT_PERM_SSE2, | |||||
}; | |||||
void ff_init_scantable(uint8_t *permutation, ScanTable *st, | void ff_init_scantable(uint8_t *permutation, ScanTable *st, | ||||
const uint8_t *src_scantable); | const uint8_t *src_scantable); | ||||
void ff_init_scantable_permutation(uint8_t *idct_permutation, | void ff_init_scantable_permutation(uint8_t *idct_permutation, | ||||
int idct_permutation_type); | |||||
enum idct_permutation_type perm_type); | |||||
int ff_init_scantable_permutation_x86(uint8_t *idct_permutation, | int ff_init_scantable_permutation_x86(uint8_t *idct_permutation, | ||||
int idct_permutation_type); | |||||
enum idct_permutation_type perm_type); | |||||
typedef struct IDCTDSPContext { | typedef struct IDCTDSPContext { | ||||
/* pixel ops : interface with DCT */ | /* pixel ops : interface with DCT */ | ||||
@@ -83,13 +92,7 @@ typedef struct IDCTDSPContext { | |||||
* -> simple_idct_mmx -> ...) | * -> simple_idct_mmx -> ...) | ||||
*/ | */ | ||||
uint8_t idct_permutation[64]; | uint8_t idct_permutation[64]; | ||||
int idct_permutation_type; | |||||
#define FF_NO_IDCT_PERM 1 | |||||
#define FF_LIBMPEG2_IDCT_PERM 2 | |||||
#define FF_SIMPLE_IDCT_PERM 3 | |||||
#define FF_TRANSPOSE_IDCT_PERM 4 | |||||
#define FF_PARTTRANS_IDCT_PERM 5 | |||||
#define FF_SSE2_IDCT_PERM 6 | |||||
enum idct_permutation_type perm_type; | |||||
} IDCTDSPContext; | } IDCTDSPContext; | ||||
void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx); | void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx); | ||||
@@ -4463,7 +4463,7 @@ int ff_dct_quantize_c(MpegEncContext *s, | |||||
*overflow= s->max_qcoeff < max; //overflow might have happened | *overflow= s->max_qcoeff < max; //overflow might have happened | ||||
/* we need this permutation so that we correct the IDCT, we only permute the !=0 elements */ | /* we need this permutation so that we correct the IDCT, we only permute the !=0 elements */ | ||||
if (s->idsp.idct_permutation_type != FF_NO_IDCT_PERM) | |||||
if (s->idsp.perm_type != FF_IDCT_PERM_NONE) | |||||
ff_block_permute(block, s->idsp.idct_permutation, | ff_block_permute(block, s->idsp.idct_permutation, | ||||
scantable, last_non_zero); | scantable, last_non_zero); | ||||
@@ -254,7 +254,7 @@ av_cold void ff_idctdsp_init_ppc(IDCTDSPContext *c, AVCodecContext *avctx, | |||||
c->idct = idct_altivec; | c->idct = idct_altivec; | ||||
c->idct_add = idct_add_altivec; | c->idct_add = idct_add_altivec; | ||||
c->idct_put = idct_put_altivec; | c->idct_put = idct_put_altivec; | ||||
c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_TRANSPOSE; | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -58,7 +58,7 @@ static void prores_idct_put_c(uint16_t *out, int linesize, int16_t *block, const | |||||
av_cold void ff_proresdsp_init(ProresDSPContext *dsp, AVCodecContext *avctx) | av_cold void ff_proresdsp_init(ProresDSPContext *dsp, AVCodecContext *avctx) | ||||
{ | { | ||||
dsp->idct_put = prores_idct_put_c; | dsp->idct_put = prores_idct_put_c; | ||||
dsp->idct_permutation_type = FF_NO_IDCT_PERM; | |||||
dsp->idct_permutation_type = FF_IDCT_PERM_NONE; | |||||
if (ARCH_X86) | if (ARCH_X86) | ||||
ff_proresdsp_init_x86(dsp, avctx); | ff_proresdsp_init_x86(dsp, avctx); | ||||
@@ -31,7 +31,7 @@ av_cold void ff_wmv2_common_init(Wmv2Context * w){ | |||||
ff_blockdsp_init(&s->bdsp, s->avctx); | ff_blockdsp_init(&s->bdsp, s->avctx); | ||||
ff_wmv2dsp_init(&w->wdsp); | ff_wmv2dsp_init(&w->wdsp); | ||||
s->idsp.idct_permutation_type = w->wdsp.idct_perm; | |||||
s->idsp.perm_type = w->wdsp.idct_perm; | |||||
ff_init_scantable_permutation(s->idsp.idct_permutation, | ff_init_scantable_permutation(s->idsp.idct_permutation, | ||||
w->wdsp.idct_perm); | w->wdsp.idct_perm); | ||||
ff_init_scantable(s->idsp.idct_permutation, &w->abt_scantable[0], | ff_init_scantable(s->idsp.idct_permutation, &w->abt_scantable[0], | ||||
@@ -252,7 +252,7 @@ av_cold void ff_wmv2dsp_init(WMV2DSPContext *c) | |||||
{ | { | ||||
c->idct_add = wmv2_idct_add_c; | c->idct_add = wmv2_idct_add_c; | ||||
c->idct_put = wmv2_idct_put_c; | c->idct_put = wmv2_idct_put_c; | ||||
c->idct_perm = FF_NO_IDCT_PERM; | |||||
c->idct_perm = FF_IDCT_PERM_NONE; | |||||
c->put_mspel_pixels_tab[0] = ff_put_pixels8x8_c; | c->put_mspel_pixels_tab[0] = ff_put_pixels8x8_c; | ||||
c->put_mspel_pixels_tab[1] = put_mspel8_mc10_c; | c->put_mspel_pixels_tab[1] = put_mspel8_mc10_c; | ||||
@@ -524,7 +524,7 @@ static av_cold void cavsdsp_init_mmx(CAVSDSPContext *c, | |||||
#if HAVE_MMX_INLINE | #if HAVE_MMX_INLINE | ||||
c->cavs_idct8_add = cavs_idct8_add_mmx; | c->cavs_idct8_add = cavs_idct8_add_mmx; | ||||
c->idct_perm = FF_TRANSPOSE_IDCT_PERM; | |||||
c->idct_perm = FF_IDCT_PERM_TRANSPOSE; | |||||
#endif /* HAVE_MMX_INLINE */ | #endif /* HAVE_MMX_INLINE */ | ||||
} | } | ||||
@@ -41,16 +41,16 @@ static const uint8_t simple_mmx_permutation[64] = { | |||||
static const uint8_t idct_sse2_row_perm[8] = { 0, 4, 1, 5, 2, 6, 3, 7 }; | static const uint8_t idct_sse2_row_perm[8] = { 0, 4, 1, 5, 2, 6, 3, 7 }; | ||||
av_cold int ff_init_scantable_permutation_x86(uint8_t *idct_permutation, | av_cold int ff_init_scantable_permutation_x86(uint8_t *idct_permutation, | ||||
int idct_permutation_type) | |||||
enum idct_permutation_type perm_type) | |||||
{ | { | ||||
int i; | int i; | ||||
switch (idct_permutation_type) { | |||||
case FF_SIMPLE_IDCT_PERM: | |||||
switch (perm_type) { | |||||
case FF_IDCT_PERM_SIMPLE: | |||||
for (i = 0; i < 64; i++) | for (i = 0; i < 64; i++) | ||||
idct_permutation[i] = simple_mmx_permutation[i]; | idct_permutation[i] = simple_mmx_permutation[i]; | ||||
return 1; | return 1; | ||||
case FF_SSE2_IDCT_PERM: | |||||
case FF_IDCT_PERM_SSE2: | |||||
for (i = 0; i < 64; i++) | for (i = 0; i < 64; i++) | ||||
idct_permutation[i] = (i & 0x38) | idct_sse2_row_perm[i & 7]; | idct_permutation[i] = (i & 0x38) | idct_sse2_row_perm[i & 7]; | ||||
return 1; | return 1; | ||||
@@ -76,7 +76,7 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, | |||||
c->idct_put = ff_simple_idct_put_mmx; | c->idct_put = ff_simple_idct_put_mmx; | ||||
c->idct_add = ff_simple_idct_add_mmx; | c->idct_add = ff_simple_idct_add_mmx; | ||||
c->idct = ff_simple_idct_mmx; | c->idct = ff_simple_idct_mmx; | ||||
c->idct_permutation_type = FF_SIMPLE_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_SIMPLE; | |||||
break; | break; | ||||
case FF_IDCT_XVIDMMX: | case FF_IDCT_XVIDMMX: | ||||
c->idct_put = ff_idct_xvid_mmx_put; | c->idct_put = ff_idct_xvid_mmx_put; | ||||
@@ -103,7 +103,7 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, | |||||
c->idct_put = ff_idct_xvid_sse2_put; | c->idct_put = ff_idct_xvid_sse2_put; | ||||
c->idct_add = ff_idct_xvid_sse2_add; | c->idct_add = ff_idct_xvid_sse2_add; | ||||
c->idct = ff_idct_xvid_sse2; | c->idct = ff_idct_xvid_sse2; | ||||
c->idct_permutation_type = FF_SSE2_IDCT_PERM; | |||||
c->perm_type = FF_IDCT_PERM_SSE2; | |||||
} | } | ||||
} | } | ||||
if (EXTERNAL_SSE2(cpu_flags)) { | if (EXTERNAL_SSE2(cpu_flags)) { | ||||
@@ -232,7 +232,7 @@ static int RENAME(dct_quantize)(MpegEncContext *s, | |||||
if(s->mb_intra) block[0]= level; | if(s->mb_intra) block[0]= level; | ||||
else block[0]= temp_block[0]; | else block[0]= temp_block[0]; | ||||
if (s->idsp.idct_permutation_type == FF_SIMPLE_IDCT_PERM) { | |||||
if (s->idsp.perm_type == FF_IDCT_PERM_SIMPLE) { | |||||
if(last_non_zero_p1 <= 1) goto end; | if(last_non_zero_p1 <= 1) goto end; | ||||
block[0x08] = temp_block[0x01]; block[0x10] = temp_block[0x08]; | block[0x08] = temp_block[0x01]; block[0x10] = temp_block[0x08]; | ||||
block[0x20] = temp_block[0x10]; | block[0x20] = temp_block[0x10]; | ||||
@@ -276,7 +276,7 @@ static int RENAME(dct_quantize)(MpegEncContext *s, | |||||
block[0x3E] = temp_block[0x3D]; block[0x27] = temp_block[0x36]; | block[0x3E] = temp_block[0x3D]; block[0x27] = temp_block[0x36]; | ||||
block[0x3D] = temp_block[0x2F]; block[0x2F] = temp_block[0x37]; | block[0x3D] = temp_block[0x2F]; block[0x2F] = temp_block[0x37]; | ||||
block[0x37] = temp_block[0x3E]; block[0x3F] = temp_block[0x3F]; | block[0x37] = temp_block[0x3E]; block[0x3F] = temp_block[0x3F]; | ||||
}else if(s->idsp.idct_permutation_type == FF_LIBMPEG2_IDCT_PERM){ | |||||
}else if(s->idsp.perm_type == FF_IDCT_PERM_LIBMPEG2){ | |||||
if(last_non_zero_p1 <= 1) goto end; | if(last_non_zero_p1 <= 1) goto end; | ||||
block[0x04] = temp_block[0x01]; | block[0x04] = temp_block[0x01]; | ||||
block[0x08] = temp_block[0x08]; block[0x10] = temp_block[0x10]; | block[0x08] = temp_block[0x08]; block[0x10] = temp_block[0x10]; | ||||
@@ -38,17 +38,17 @@ av_cold void ff_proresdsp_init_x86(ProresDSPContext *dsp, AVCodecContext *avctx) | |||||
int cpu_flags = av_get_cpu_flags(); | int cpu_flags = av_get_cpu_flags(); | ||||
if (EXTERNAL_SSE2(cpu_flags)) { | if (EXTERNAL_SSE2(cpu_flags)) { | ||||
dsp->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM; | |||||
dsp->idct_permutation_type = FF_IDCT_PERM_TRANSPOSE; | |||||
dsp->idct_put = ff_prores_idct_put_10_sse2; | dsp->idct_put = ff_prores_idct_put_10_sse2; | ||||
} | } | ||||
if (EXTERNAL_SSE4(cpu_flags)) { | if (EXTERNAL_SSE4(cpu_flags)) { | ||||
dsp->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM; | |||||
dsp->idct_permutation_type = FF_IDCT_PERM_TRANSPOSE; | |||||
dsp->idct_put = ff_prores_idct_put_10_sse4; | dsp->idct_put = ff_prores_idct_put_10_sse4; | ||||
} | } | ||||
if (EXTERNAL_AVX(cpu_flags)) { | if (EXTERNAL_AVX(cpu_flags)) { | ||||
dsp->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM; | |||||
dsp->idct_permutation_type = FF_IDCT_PERM_TRANSPOSE; | |||||
dsp->idct_put = ff_prores_idct_put_10_avx; | dsp->idct_put = ff_prores_idct_put_10_avx; | ||||
} | } | ||||
#endif /* ARCH_X86_64 */ | #endif /* ARCH_X86_64 */ | ||||