[Ffmpeg-cvslog] r7168 - trunk/libavcodec/vc1.c
kostya
subversion
Sun Nov 26 05:52:37 CET 2006
Author: kostya
Date: Sun Nov 26 05:52:36 2006
New Revision: 7168
Modified:
trunk/libavcodec/vc1.c
Log:
Use halfpq in coefficient scaling
Modified: trunk/libavcodec/vc1.c
==============================================================================
--- trunk/libavcodec/vc1.c (original)
+++ trunk/libavcodec/vc1.c Sun Nov 26 05:52:36 2006
@@ -2843,8 +2843,8 @@
if(use_pred) {
/* scale predictors if needed*/
if(q2 && q1!=q2) {
- q1 = q1 * 2 - 1;
- q2 = q2 * 2 - 1;
+ q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
+ q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
if(dc_pred_dir) { //left
for(k = 1; k < 8; k++)
@@ -2886,8 +2886,8 @@
if(use_pred) {
memcpy(ac_val2, ac_val, 8 * 2);
if(q2 && q1!=q2) {
- q1 = q1 * 2 - 1;
- q2 = q2 * 2 - 1;
+ q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
+ q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
for(k = 1; k < 8; k++)
ac_val2[k] = (ac_val2[k] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18;
}
@@ -2896,8 +2896,8 @@
if(use_pred) {
memcpy(ac_val2 + 8, ac_val + 8, 8 * 2);
if(q2 && q1!=q2) {
- q1 = q1 * 2 - 1;
- q2 = q2 * 2 - 1;
+ q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
+ q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
for(k = 1; k < 8; k++)
ac_val2[k + 8] = (ac_val2[k + 8] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18;
}
@@ -3042,8 +3042,8 @@
if(use_pred) {
/* scale predictors if needed*/
if(q2 && q1!=q2) {
- q1 = q1 * 2 - 1;
- q2 = q2 * 2 - 1;
+ q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
+ q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
if(dc_pred_dir) { //left
for(k = 1; k < 8; k++)
@@ -3085,8 +3085,8 @@
if(use_pred) {
memcpy(ac_val2, ac_val, 8 * 2);
if(q2 && q1!=q2) {
- q1 = q1 * 2 - 1;
- q2 = q2 * 2 - 1;
+ q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
+ q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
for(k = 1; k < 8; k++)
ac_val2[k] = (ac_val2[k] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18;
}
@@ -3095,8 +3095,8 @@
if(use_pred) {
memcpy(ac_val2 + 8, ac_val + 8, 8 * 2);
if(q2 && q1!=q2) {
- q1 = q1 * 2 - 1;
- q2 = q2 * 2 - 1;
+ q1 = q1 * 2 + ((q1 == v->pq) ? v->halfpq : 0) - 1;
+ q2 = q2 * 2 + ((q2 == v->pq) ? v->halfpq : 0) - 1;
for(k = 1; k < 8; k++)
ac_val2[k + 8] = (ac_val2[k + 8] * q2 * vc1_dqscale[q1 - 1] + 0x20000) >> 18;
}
More information about the ffmpeg-cvslog
mailing list