--- encoder.c 2002/04/07 11:57:47 1.22 +++ encoder.c 2002/04/10 07:40:51 1.23 @@ -140,6 +140,9 @@ image_create(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || image_create(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || image_create(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || +#ifdef _DEBUG + image_create(&pEnc->sOriginal, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || +#endif (pEnc->pMBs = xvid_malloc(sizeof(MACROBLOCK) * pEnc->mbParam.mb_width * pEnc->mbParam.mb_height, CACHE_LINE)) == NULL) { image_destroy(&pEnc->sCurrent, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); @@ -149,6 +152,9 @@ image_destroy(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); image_destroy(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); image_destroy(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); +#ifdef _DEBUG + image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); +#endif if (pEnc) { xvid_free(pEnc); @@ -190,6 +196,9 @@ image_destroy(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); image_destroy(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); image_destroy(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); +#ifdef _DEBUG + image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); +#endif xvid_free(pEnc); return XVID_ERR_OK; @@ -201,6 +210,10 @@ Bitstream bs; uint32_t bits; uint16_t write_vol_header = 0; +#ifdef _DEBUG + float psnr; + uint8_t temp[100]; +#endif start_global_timer(); @@ -223,6 +236,10 @@ EMMS(); +#ifdef _DEBUG + image_copy(&pEnc->sOriginal, &pEnc->sCurrent, pEnc->mbParam.edged_width, pEnc->mbParam.height); +#endif + BitstreamInit(&bs, pFrame->bitstream, 0); if (pFrame->quant == 0) @@ -323,6 +340,14 @@ RateControlUpdate(pEnc->mbParam.quant, pFrame->length, pFrame->intra); } +#ifdef _DEBUG + psnr = image_psnr(&pEnc->sOriginal, &pEnc->sCurrent, pEnc->mbParam.edged_width, + pEnc->mbParam.width, pEnc->mbParam.height); + + sprintf(temp, "PSNR: %f\n", psnr); + DEBUG(temp); +#endif + pEnc->iFrameNum++; image_swap(&pEnc->sCurrent, &pEnc->sReference);