Merge commit '0a6664706168dc1049967bec311970d720581625'
* commit '0a6664706168dc1049967bec311970d720581625': mpegvideo_enc: factor out denominator and explicitly cast operands Conflicts: libavcodec/mpegvideo_enc.c See: c753b56b4d56724284dd7ed972efdb843db80f12 Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
c96a44d0dd
@ -96,41 +96,40 @@ void ff_convert_matrix(MpegEncContext *s, int (*qmat)[64],
|
|||||||
fdsp->fdct == ff_jpeg_fdct_islow_10) {
|
fdsp->fdct == ff_jpeg_fdct_islow_10) {
|
||||||
for (i = 0; i < 64; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
const int j = s->idsp.idct_permutation[i];
|
const int j = s->idsp.idct_permutation[i];
|
||||||
|
int64_t den = (int64_t) qscale * quant_matrix[j];
|
||||||
/* 16 <= qscale * quant_matrix[i] <= 7905
|
/* 16 <= qscale * quant_matrix[i] <= 7905
|
||||||
* Assume x = ff_aanscales[i] * qscale * quant_matrix[i]
|
* Assume x = ff_aanscales[i] * qscale * quant_matrix[i]
|
||||||
* 19952 <= x <= 249205026
|
* 19952 <= x <= 249205026
|
||||||
* (1 << 36) / 19952 >= (1 << 36) / (x) >= (1 << 36) / 249205026
|
* (1 << 36) / 19952 >= (1 << 36) / (x) >= (1 << 36) / 249205026
|
||||||
* 3444240 >= (1 << 36) / (x) >= 275 */
|
* 3444240 >= (1 << 36) / (x) >= 275 */
|
||||||
|
|
||||||
qmat[qscale][i] = (int)((UINT64_C(1) << QMAT_SHIFT) /
|
qmat[qscale][i] = (int)((UINT64_C(1) << QMAT_SHIFT) / den);
|
||||||
(qscale * quant_matrix[j]));
|
|
||||||
}
|
}
|
||||||
} else if (fdsp->fdct == ff_fdct_ifast) {
|
} else if (fdsp->fdct == ff_fdct_ifast) {
|
||||||
for (i = 0; i < 64; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
const int j = s->idsp.idct_permutation[i];
|
const int j = s->idsp.idct_permutation[i];
|
||||||
|
int64_t den = ff_aanscales[i] * (int64_t) qscale * quant_matrix[j];
|
||||||
/* 16 <= qscale * quant_matrix[i] <= 7905
|
/* 16 <= qscale * quant_matrix[i] <= 7905
|
||||||
* Assume x = ff_aanscales[i] * qscale * quant_matrix[i]
|
* Assume x = ff_aanscales[i] * qscale * quant_matrix[i]
|
||||||
* 19952 <= x <= 249205026
|
* 19952 <= x <= 249205026
|
||||||
* (1 << 36) / 19952 >= (1 << 36) / (x) >= (1 << 36) / 249205026
|
* (1 << 36) / 19952 >= (1 << 36) / (x) >= (1 << 36) / 249205026
|
||||||
* 3444240 >= (1 << 36) / (x) >= 275 */
|
* 3444240 >= (1 << 36) / (x) >= 275 */
|
||||||
|
|
||||||
qmat[qscale][i] = (int)((UINT64_C(1) << (QMAT_SHIFT + 14)) /
|
qmat[qscale][i] = (int)((UINT64_C(1) << (QMAT_SHIFT + 14)) / den);
|
||||||
(ff_aanscales[i] * (int64_t)qscale * quant_matrix[j]));
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < 64; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
const int j = s->idsp.idct_permutation[i];
|
const int j = s->idsp.idct_permutation[i];
|
||||||
|
int64_t den = (int64_t) qscale * quant_matrix[j];
|
||||||
/* We can safely suppose that 16 <= quant_matrix[i] <= 255
|
/* We can safely suppose that 16 <= quant_matrix[i] <= 255
|
||||||
* Assume x = qscale * quant_matrix[i]
|
* Assume x = qscale * quant_matrix[i]
|
||||||
* So 16 <= x <= 7905
|
* So 16 <= x <= 7905
|
||||||
* so (1 << 19) / 16 >= (1 << 19) / (x) >= (1 << 19) / 7905
|
* so (1 << 19) / 16 >= (1 << 19) / (x) >= (1 << 19) / 7905
|
||||||
* so 32768 >= (1 << 19) / (x) >= 67 */
|
* so 32768 >= (1 << 19) / (x) >= 67 */
|
||||||
qmat[qscale][i] = (int)((UINT64_C(1) << QMAT_SHIFT) /
|
qmat[qscale][i] = (int)((UINT64_C(1) << QMAT_SHIFT) / den);
|
||||||
(qscale * quant_matrix[j]));
|
|
||||||
//qmat [qscale][i] = (1 << QMAT_SHIFT_MMX) /
|
//qmat [qscale][i] = (1 << QMAT_SHIFT_MMX) /
|
||||||
// (qscale * quant_matrix[i]);
|
// (qscale * quant_matrix[i]);
|
||||||
qmat16[qscale][0][i] = (1 << QMAT_SHIFT_MMX) /
|
qmat16[qscale][0][i] = (1 << QMAT_SHIFT_MMX) / den;
|
||||||
(qscale * quant_matrix[j]);
|
|
||||||
|
|
||||||
if (qmat16[qscale][0][i] == 0 ||
|
if (qmat16[qscale][0][i] == 0 ||
|
||||||
qmat16[qscale][0][i] == 128 * 256)
|
qmat16[qscale][0][i] == 128 * 256)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user