466 |
static int ssim_create(xvid_plg_create_t* create, void** handle){ |
static int ssim_create(xvid_plg_create_t* create, void** handle){ |
467 |
ssim_data_t* ssim; |
ssim_data_t* ssim; |
468 |
plg_ssim_param_t* param; |
plg_ssim_param_t* param; |
|
int cpu_flags; |
|
469 |
param = (plg_ssim_param_t*) malloc(sizeof(plg_ssim_param_t)); |
param = (plg_ssim_param_t*) malloc(sizeof(plg_ssim_param_t)); |
470 |
*param = *((plg_ssim_param_t*) create->param); |
*param = *((plg_ssim_param_t*) create->param); |
471 |
ssim = (ssim_data_t*) malloc(sizeof(ssim_data_t)); |
ssim = (ssim_data_t*) malloc(sizeof(ssim_data_t)); |
472 |
|
|
|
cpu_flags = check_cpu_features(); |
|
|
|
|
473 |
ssim->func8x8 = lum_8x8_c; |
ssim->func8x8 = lum_8x8_c; |
474 |
ssim->func2x8 = lum_2x8_c; |
ssim->func2x8 = lum_2x8_c; |
475 |
ssim->consim = consim_c; |
ssim->consim = consim_c; |
479 |
ssim->grid = param->acc; |
ssim->grid = param->acc; |
480 |
|
|
481 |
#if defined(ARCH_IS_IA32) |
#if defined(ARCH_IS_IA32) |
482 |
|
{ |
483 |
|
int cpu_flags = check_cpu_features(); |
484 |
if((cpu_flags & XVID_CPU_MMX) && (param->acc > 0)){ |
if((cpu_flags & XVID_CPU_MMX) && (param->acc > 0)){ |
485 |
ssim->func8x8 = lum_8x8_mmx; |
ssim->func8x8 = lum_8x8_mmx; |
486 |
ssim->consim = consim_mmx; |
ssim->consim = consim_mmx; |
488 |
if((cpu_flags & XVID_CPU_SSE2) && (param->acc > 0)){ |
if((cpu_flags & XVID_CPU_SSE2) && (param->acc > 0)){ |
489 |
ssim->consim = consim_sse2; |
ssim->consim = consim_sse2; |
490 |
} |
} |
491 |
|
} |
492 |
#endif |
#endif |
493 |
|
|
494 |
/*gaussian weigthing not implemented*/ |
/*gaussian weigthing not implemented*/ |