140 |
image_create(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || |
image_create(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || |
141 |
image_create(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || |
image_create(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || |
142 |
image_create(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || |
image_create(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || |
143 |
|
#ifdef _DEBUG |
144 |
|
image_create(&pEnc->sOriginal, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height) < 0 || |
145 |
|
#endif |
146 |
(pEnc->pMBs = xvid_malloc(sizeof(MACROBLOCK) * pEnc->mbParam.mb_width * pEnc->mbParam.mb_height, CACHE_LINE)) == NULL) |
(pEnc->pMBs = xvid_malloc(sizeof(MACROBLOCK) * pEnc->mbParam.mb_width * pEnc->mbParam.mb_height, CACHE_LINE)) == NULL) |
147 |
{ |
{ |
148 |
image_destroy(&pEnc->sCurrent, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
image_destroy(&pEnc->sCurrent, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
152 |
image_destroy(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
image_destroy(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
153 |
image_destroy(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
image_destroy(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
154 |
image_destroy(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
image_destroy(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
155 |
|
#ifdef _DEBUG |
156 |
|
image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
157 |
|
#endif |
158 |
if (pEnc) |
if (pEnc) |
159 |
{ |
{ |
160 |
xvid_free(pEnc); |
xvid_free(pEnc); |
172 |
|
|
173 |
if (pParam->bitrate) |
if (pParam->bitrate) |
174 |
{ |
{ |
175 |
RateControlInit(pParam->bitrate, pParam->rc_buffersize, pParam->fbase * 100 / pParam->fincr, |
RateControlInit(pParam->bitrate, pParam->rc_buffersize, pParam->fbase * 1000 / pParam->fincr, |
176 |
pParam->max_quantizer, pParam->min_quantizer); |
pParam->max_quantizer, pParam->min_quantizer); |
177 |
} |
} |
178 |
|
|
196 |
image_destroy(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
image_destroy(&pEnc->vInterVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
197 |
image_destroy(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
image_destroy(&pEnc->vInterHV, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
198 |
image_destroy(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
image_destroy(&pEnc->vInterHVf, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
199 |
|
#ifdef _DEBUG |
200 |
|
image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height); |
201 |
|
#endif |
202 |
xvid_free(pEnc); |
xvid_free(pEnc); |
203 |
|
|
204 |
return XVID_ERR_OK; |
return XVID_ERR_OK; |
210 |
Bitstream bs; |
Bitstream bs; |
211 |
uint32_t bits; |
uint32_t bits; |
212 |
uint16_t write_vol_header = 0; |
uint16_t write_vol_header = 0; |
213 |
|
#ifdef _DEBUG |
214 |
|
float psnr; |
215 |
|
uint8_t temp[100]; |
216 |
|
#endif |
217 |
|
|
218 |
start_global_timer(); |
start_global_timer(); |
219 |
|
|
236 |
|
|
237 |
EMMS(); |
EMMS(); |
238 |
|
|
239 |
|
#ifdef _DEBUG |
240 |
|
image_copy(&pEnc->sOriginal, &pEnc->sCurrent, pEnc->mbParam.edged_width, pEnc->mbParam.height); |
241 |
|
#endif |
242 |
|
|
243 |
BitstreamInit(&bs, pFrame->bitstream, 0); |
BitstreamInit(&bs, pFrame->bitstream, 0); |
244 |
|
|
245 |
if (pFrame->quant == 0) |
if (pFrame->quant == 0) |
340 |
RateControlUpdate(pEnc->mbParam.quant, pFrame->length, pFrame->intra); |
RateControlUpdate(pEnc->mbParam.quant, pFrame->length, pFrame->intra); |
341 |
} |
} |
342 |
|
|
343 |
|
#ifdef _DEBUG |
344 |
|
psnr = image_psnr(&pEnc->sOriginal, &pEnc->sCurrent, pEnc->mbParam.edged_width, |
345 |
|
pEnc->mbParam.width, pEnc->mbParam.height); |
346 |
|
|
347 |
|
sprintf(temp, "PSNR: %f\n", psnr); |
348 |
|
DEBUG(temp); |
349 |
|
#endif |
350 |
|
|
351 |
pEnc->iFrameNum++; |
pEnc->iFrameNum++; |
352 |
image_swap(&pEnc->sCurrent, &pEnc->sReference); |
image_swap(&pEnc->sCurrent, &pEnc->sReference); |
353 |
|
|