--- encoder.c 2003/01/25 22:44:50 1.76.2.41 +++ encoder.c 2003/02/15 05:57:14 1.76.2.44 @@ -39,7 +39,7 @@ * MinChen * 14.04.2002 added FrameCodeB() * - * $Id: encoder.c,v 1.76.2.41 2003/01/25 22:44:50 chl Exp $ + * $Id: encoder.c,v 1.76.2.44 2003/02/15 05:57:14 suxen_drol Exp $ * ****************************************************************************/ @@ -631,6 +631,11 @@ return; stop_conv_timer(); + if ((pFrame->general & XVID_CHROMAOPT)) { + image_chroma_optimize(&pEnc->queue[pEnc->queue_tail], + pEnc->mbParam.width, pEnc->mbParam.height, pEnc->mbParam.edged_width); + } + pEnc->queue_size++; pEnc->queue_tail = (pEnc->queue_tail + 1) % pEnc->mbParam.max_bframes; } @@ -690,9 +695,6 @@ int input_valid = 1; int bframes_count = 0; - float psnr; - char temp[128]; - ENC_CHECK(pEnc); ENC_CHECK(pFrame); ENC_CHECK(pFrame->image); @@ -853,6 +855,11 @@ } stop_conv_timer(); + if ((pFrame->general & XVID_CHROMAOPT)) { + image_chroma_optimize(&pEnc->current->image, + pEnc->mbParam.width, pEnc->mbParam.height, pEnc->mbParam.edged_width); + } + // queue input frame, and dequue next image if (pEnc->queue_size > 0) { @@ -1241,6 +1248,11 @@ return XVID_ERR_FORMAT; stop_conv_timer(); + if ((pFrame->general & XVID_CHROMAOPT)) { + image_chroma_optimize(&pEnc->current->image, + pEnc->mbParam.width, pEnc->mbParam.height, pEnc->mbParam.edged_width); + } + if (pFrame->general & XVID_EXTRASTATS) { image_copy(&pEnc->sOriginal, &pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.height); @@ -1321,7 +1333,7 @@ } if (pFrame->intra < 0) { - if ((pEnc->iFrameNum == 0) + if ((pEnc->iFrameNum == -1) || ((pEnc->mbParam.iMaxKeyInterval > 0) && (pEnc->iFrameNum >= pEnc->mbParam.iMaxKeyInterval))) { pFrame->intra = FrameCodeI(pEnc, &bs, &bits);