Mercurial > libavcodec.hg
comparison dsputil.c @ 2382:23e7af611c34 libavcodec
more flexible frame skip decission
author | michael |
---|---|
date | Wed, 08 Dec 2004 18:02:56 +0000 |
parents | cd43603c46f9 |
children | db2cf6005d19 |
comparison
equal
deleted
inserted
replaced
2381:cfc9e0489859 | 2382:23e7af611c34 |
---|---|
2889 cmp[i]= c->sse[i]; | 2889 cmp[i]= c->sse[i]; |
2890 break; | 2890 break; |
2891 case FF_CMP_DCT: | 2891 case FF_CMP_DCT: |
2892 cmp[i]= c->dct_sad[i]; | 2892 cmp[i]= c->dct_sad[i]; |
2893 break; | 2893 break; |
2894 case FF_CMP_DCTMAX: | |
2895 cmp[i]= c->dct_max[i]; | |
2896 break; | |
2894 case FF_CMP_PSNR: | 2897 case FF_CMP_PSNR: |
2895 cmp[i]= c->quant_psnr[i]; | 2898 cmp[i]= c->quant_psnr[i]; |
2896 break; | 2899 break; |
2897 case FF_CMP_BIT: | 2900 case FF_CMP_BIT: |
2898 cmp[i]= c->bit[i]; | 2901 cmp[i]= c->bit[i]; |
3112 sum+= ABS(temp[i]); | 3115 sum+= ABS(temp[i]); |
3113 | 3116 |
3114 return sum; | 3117 return sum; |
3115 } | 3118 } |
3116 | 3119 |
3120 static int dct_max8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int stride, int h){ | |
3121 MpegEncContext * const s= (MpegEncContext *)c; | |
3122 uint64_t __align8 aligned_temp[sizeof(DCTELEM)*64/8]; | |
3123 DCTELEM * const temp= (DCTELEM*)aligned_temp; | |
3124 int sum=0, i; | |
3125 | |
3126 assert(h==8); | |
3127 | |
3128 s->dsp.diff_pixels(temp, src1, src2, stride); | |
3129 s->dsp.fdct(temp); | |
3130 | |
3131 for(i=0; i<64; i++) | |
3132 sum= FFMAX(sum, ABS(temp[i])); | |
3133 | |
3134 return sum; | |
3135 } | |
3136 | |
3117 void simple_idct(DCTELEM *block); //FIXME | 3137 void simple_idct(DCTELEM *block); //FIXME |
3118 | 3138 |
3119 static int quant_psnr8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int stride, int h){ | 3139 static int quant_psnr8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int stride, int h){ |
3120 MpegEncContext * const s= (MpegEncContext *)c; | 3140 MpegEncContext * const s= (MpegEncContext *)c; |
3121 uint64_t __align8 aligned_temp[sizeof(DCTELEM)*64*2/8]; | 3141 uint64_t __align8 aligned_temp[sizeof(DCTELEM)*64*2/8]; |
3341 } | 3361 } |
3342 | 3362 |
3343 WARPER8_16_SQ(hadamard8_diff8x8_c, hadamard8_diff16_c) | 3363 WARPER8_16_SQ(hadamard8_diff8x8_c, hadamard8_diff16_c) |
3344 WARPER8_16_SQ(hadamard8_intra8x8_c, hadamard8_intra16_c) | 3364 WARPER8_16_SQ(hadamard8_intra8x8_c, hadamard8_intra16_c) |
3345 WARPER8_16_SQ(dct_sad8x8_c, dct_sad16_c) | 3365 WARPER8_16_SQ(dct_sad8x8_c, dct_sad16_c) |
3366 WARPER8_16_SQ(dct_max8x8_c, dct_max16_c) | |
3346 WARPER8_16_SQ(quant_psnr8x8_c, quant_psnr16_c) | 3367 WARPER8_16_SQ(quant_psnr8x8_c, quant_psnr16_c) |
3347 WARPER8_16_SQ(rd8x8_c, rd16_c) | 3368 WARPER8_16_SQ(rd8x8_c, rd16_c) |
3348 WARPER8_16_SQ(bit8x8_c, bit16_c) | 3369 WARPER8_16_SQ(bit8x8_c, bit16_c) |
3349 | 3370 |
3350 /* XXX: those functions should be suppressed ASAP when all IDCTs are | 3371 /* XXX: those functions should be suppressed ASAP when all IDCTs are |
3597 c->name[1]= name ## 8x8_c; | 3618 c->name[1]= name ## 8x8_c; |
3598 | 3619 |
3599 SET_CMP_FUNC(hadamard8_diff) | 3620 SET_CMP_FUNC(hadamard8_diff) |
3600 c->hadamard8_diff[4]= hadamard8_intra16_c; | 3621 c->hadamard8_diff[4]= hadamard8_intra16_c; |
3601 SET_CMP_FUNC(dct_sad) | 3622 SET_CMP_FUNC(dct_sad) |
3623 SET_CMP_FUNC(dct_max) | |
3602 c->sad[0]= pix_abs16_c; | 3624 c->sad[0]= pix_abs16_c; |
3603 c->sad[1]= pix_abs8_c; | 3625 c->sad[1]= pix_abs8_c; |
3604 c->sse[0]= sse16_c; | 3626 c->sse[0]= sse16_c; |
3605 c->sse[1]= sse8_c; | 3627 c->sse[1]= sse8_c; |
3606 c->sse[2]= sse4_c; | 3628 c->sse[2]= sse4_c; |