153 |
data->quant = (int)rc->fq_error; |
data->quant = (int)rc->fq_error; |
154 |
rc->fq_error -= data->quant; |
rc->fq_error -= data->quant; |
155 |
}else { |
}else { |
156 |
data->quant = rc->rtn_quant; |
int q = rc->rtn_quant; |
157 |
|
/* limit to min/max range |
158 |
|
we don't know frame type of the next frame, so we just use |
159 |
|
P-VOP's range... */ |
160 |
|
if (q > data->max_quant[XVID_TYPE_PVOP-1]) |
161 |
|
q = data->max_quant[XVID_TYPE_PVOP-1]; |
162 |
|
else if (q < data->min_quant[XVID_TYPE_PVOP-1]) |
163 |
|
q = data->min_quant[XVID_TYPE_PVOP-1]; |
164 |
|
|
165 |
|
data->quant = q; |
166 |
} |
} |
167 |
} |
} |
168 |
return 0; |
return 0; |
192 |
rc->rtn_quant = data->quant; |
rc->rtn_quant = data->quant; |
193 |
|
|
194 |
/* Compute the deviation from expected total size */ |
/* Compute the deviation from expected total size */ |
195 |
deviation = (int64_t) |
deviation = |
196 |
((double) rc->total_size - (double) rc->bytes_per_sec * rc->time); |
rc->total_size - rc->bytes_per_sec * rc->time; |
197 |
|
|
198 |
|
|
199 |
if (data->quant >= 2) { |
if (data->quant >= 2) { |
254 |
else if (rtn_quant < data->quant - 1) |
else if (rtn_quant < data->quant - 1) |
255 |
rtn_quant = data->quant - 1; |
rtn_quant = data->quant - 1; |
256 |
|
|
|
/* limit to min/max range */ |
|
|
if (rtn_quant > data->max_quant[data->type-1]) |
|
|
rtn_quant = data->max_quant[data->type-1]; |
|
|
else if (rtn_quant < data->min_quant[data->type-1]) |
|
|
rtn_quant = data->min_quant[data->type-1]; |
|
|
|
|
257 |
rc->rtn_quant = rtn_quant; |
rc->rtn_quant = rtn_quant; |
258 |
|
|
259 |
return (0); |
return (0); |