new PSNR code (now works with chroma, b frames, ...)

rename *_TYPE to FF_*_TYPE for the external API
allow user specified pict_type

Originally committed as revision 1308 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer
2002-12-04 21:13:02 +00:00
parent 5b20b7328a
commit 140cb66321
6 changed files with 132 additions and 101 deletions

View File

@@ -1528,37 +1528,3 @@ void avcodec_set_bit_exact(void)
// dsputil_set_bit_exact_mmx();
#endif
}
void get_psnr(UINT8 *orig_image[3], UINT8 *coded_image[3],
int orig_linesize[3], int coded_linesize,
AVCodecContext *avctx)
{
int quad, diff, x, y;
UINT8 *orig, *coded;
UINT32 *sq = squareTbl + 256;
quad = 0;
diff = 0;
/* Luminance */
orig = orig_image[0];
coded = coded_image[0];
for (y=0;y<avctx->height;y++) {
for (x=0;x<avctx->width;x++) {
diff = *(orig + x) - *(coded + x);
quad += sq[diff];
}
orig += orig_linesize[0];
coded += coded_linesize;
}
avctx->psnr_y = (float) quad / (float) (avctx->width * avctx->height);
if (avctx->psnr_y) {
avctx->psnr_y = (float) (255 * 255) / avctx->psnr_y;
avctx->psnr_y = 10 * (float) log10 (avctx->psnr_y);
} else
avctx->psnr_y = 99.99;
}