80 |
pParam->fincr = (int)(pParam->fincr / div); |
pParam->fincr = (int)(pParam->fincr / div); |
81 |
} |
} |
82 |
|
|
83 |
if (pParam->bitrate <= 0) |
if (pParam->rc_bitrate <= 0) |
84 |
pParam->bitrate = 900000; |
pParam->rc_bitrate = 900000; |
85 |
|
|
86 |
if (pParam->rc_buffersize <= 0) |
if (pParam->rc_reaction_delay_factor <= 0) |
87 |
pParam->rc_buffersize = 16; |
pParam->rc_reaction_delay_factor = 16; |
88 |
|
|
89 |
|
if (pParam->rc_averaging_period <= 0) |
90 |
|
pParam->rc_averaging_period = 100; |
91 |
|
|
92 |
|
if (pParam->rc_buffer <= 0) |
93 |
|
pParam->rc_buffer = 100; |
94 |
|
|
95 |
if ((pParam->min_quantizer <= 0) || (pParam->min_quantizer > 31)) |
if ((pParam->min_quantizer <= 0) || (pParam->min_quantizer > 31)) |
96 |
pParam->min_quantizer = 1; |
pParam->min_quantizer = 1; |
124 |
|
|
125 |
pEnc->mbParam.quant = 4; |
pEnc->mbParam.quant = 4; |
126 |
|
|
127 |
pEnc->bitrate = pParam->bitrate; |
pEnc->bitrate = pParam->rc_bitrate; |
128 |
|
|
129 |
pEnc->iFrameNum = 0; |
pEnc->iFrameNum = 0; |
130 |
pEnc->iMaxKeyInterval = pParam->max_key_interval; |
pEnc->iMaxKeyInterval = pParam->max_key_interval; |
178 |
|
|
179 |
pParam->handle = (void *)pEnc; |
pParam->handle = (void *)pEnc; |
180 |
|
|
181 |
if (pParam->bitrate) |
if (pParam->rc_bitrate) |
182 |
{ |
{ |
183 |
RateControlInit(pParam->bitrate, pParam->rc_buffersize, pParam->fbase * 1000 / pParam->fincr, |
RateControlInit(pParam->rc_bitrate, pParam->rc_reaction_delay_factor, |
184 |
|
pParam->rc_averaging_period, pParam->rc_buffer, pParam->fbase * 1000 / pParam->fincr, |
185 |
pParam->max_quantizer, pParam->min_quantizer); |
pParam->max_quantizer, pParam->min_quantizer); |
186 |
} |
} |
187 |
|
|
431 |
|
|
432 |
pMB->mode = (hint->rawhints) ? bhint->mode : BitstreamGetBits(&bs, MODEBITS); |
pMB->mode = (hint->rawhints) ? bhint->mode : BitstreamGetBits(&bs, MODEBITS); |
433 |
|
|
434 |
if (pMB->mode == MODE_INTER || pMB->mode == MODE_INTER_Q) |
pMB->mode = (pMB->mode == MODE_INTER_Q) ? MODE_INTER : pMB->mode; |
435 |
|
pMB->mode = (pMB->mode == MODE_INTRA_Q) ? MODE_INTRA : pMB->mode; |
436 |
|
|
437 |
|
if (pMB->mode == MODE_INTER) |
438 |
{ |
{ |
439 |
tmp.x = (hint->rawhints) ? bhint->mvs[0].x : BitstreamGetBits(&bs, length); |
tmp.x = (hint->rawhints) ? bhint->mvs[0].x : BitstreamGetBits(&bs, length); |
440 |
tmp.y = (hint->rawhints) ? bhint->mvs[0].y : BitstreamGetBits(&bs, length); |
tmp.y = (hint->rawhints) ? bhint->mvs[0].y : BitstreamGetBits(&bs, length); |
468 |
pMB->pmvs[vec].y = pMB->mvs[vec].y - pred[0].y; |
pMB->pmvs[vec].y = pMB->mvs[vec].y - pred[0].y; |
469 |
} |
} |
470 |
} |
} |
471 |
else // intra / intra_q / stuffing / not_coded |
else // intra / stuffing / not_coded |
472 |
{ |
{ |
473 |
for (vec=0 ; vec<4 ; ++vec) |
for (vec=0 ; vec<4 ; ++vec) |
474 |
{ |
{ |
475 |
pMB->mvs[vec].x = pMB->mvs[vec].y = 0; |
pMB->mvs[vec].x = pMB->mvs[vec].y = 0; |
476 |
} |
} |
477 |
} |
} |
478 |
|
|
479 |
|
if (pMB->dquant != NO_CHANGE && pMB->mode == MODE_INTER4V) |
480 |
|
{ |
481 |
|
pMB->mode = MODE_INTRA; |
482 |
|
|
483 |
|
for (vec=0 ; vec<4 ; ++vec) |
484 |
|
{ |
485 |
|
pMB->mvs[vec].x = pMB->mvs[vec].y = 0; |
486 |
|
} |
487 |
|
} |
488 |
} |
} |
489 |
} |
} |
490 |
} |
} |