fixed a crash caused invalid Q choice
The commit fixed a problem by capping cpi->active_best_quality to be smaller than cpi->worst_quality. Also fixed a few line of code that was misplaced. Change-Id: Ie908264b72140c669122a0afde5d886619c33474
This commit is contained in:
Родитель
b70f23caec
Коммит
ebcc6605c1
|
@ -4180,6 +4180,9 @@ static void encode_frame_to_data_rate
|
|||
if (cpi->active_best_quality < cpi->best_quality)
|
||||
cpi->active_best_quality = cpi->best_quality;
|
||||
|
||||
if (cpi->active_best_quality > cpi->worst_quality)
|
||||
cpi->active_best_quality = cpi->worst_quality;
|
||||
|
||||
if ( cpi->active_worst_quality < cpi->active_best_quality )
|
||||
cpi->active_worst_quality = cpi->active_best_quality;
|
||||
|
||||
|
|
|
@ -965,18 +965,17 @@ void vp8cx_init_quantizer(VP8_COMP *cpi)
|
|||
int i;
|
||||
int quant_val;
|
||||
int Q;
|
||||
|
||||
int zbin_boost[16] = {0, 0, 8, 10, 12, 14, 16, 20, 24, 28, 32, 36, 40, 44, 44, 44};
|
||||
|
||||
int zbin_boost[16] = { 0, 0, 8, 10, 12, 14, 16, 20,
|
||||
24, 28, 32, 36, 40, 44, 44, 44};
|
||||
int qrounding_factor = 48;
|
||||
#if CONFIG_EXTEND_QRANGE
|
||||
int qzbin_factor = (vp8_dc_quant(Q,0) < 148) ? 84 : 80;
|
||||
#else
|
||||
int qzbin_factor = (vp8_dc_quant(Q,0) < 37) ? 84: 80;
|
||||
#endif
|
||||
|
||||
for (Q = 0; Q < QINDEX_RANGE; Q++)
|
||||
{
|
||||
#if CONFIG_EXTEND_QRANGE
|
||||
int qzbin_factor = (vp8_dc_quant(Q,0) < 148) ? 84 : 80;
|
||||
#else
|
||||
int qzbin_factor = (vp8_dc_quant(Q,0) < 37) ? 84: 80;
|
||||
#endif
|
||||
// dc values
|
||||
quant_val = vp8_dc_quant(Q, cpi->common.y1dc_delta_q);
|
||||
cpi->Y1quant_fast[Q][0] = (1 << 16) / quant_val;
|
||||
|
|
Загрузка…
Ссылка в новой задаче