diff mpegvideo.c @ 803:08423289ec57 libavcodec

exporting the internal qscale table, this allso fixes the ordering
author michaelni
date Wed, 30 Oct 2002 20:41:40 +0000
parents d4cc92144266
children 79de6308c34d
line wrap: on
line diff
--- a/mpegvideo.c	Wed Oct 30 20:31:04 2002 +0000
+++ b/mpegvideo.c	Wed Oct 30 20:41:40 2002 +0000
@@ -420,7 +420,11 @@
             s->dc_val[0][i] = 1024;
     }
 
-    CHECKED_ALLOCZ(s->qscale_table  , s->mb_num * sizeof(UINT8))
+    CHECKED_ALLOCZ(s->next_qscale_table  , s->mb_num * sizeof(UINT8))
+    CHECKED_ALLOCZ(s->last_qscale_table  , s->mb_num * sizeof(UINT8))
+    CHECKED_ALLOCZ(s->aux_qscale_table   , s->mb_num * sizeof(UINT8))
+    s->qscale_table= s->next_qscale_table;
+    s->avctx->qstride= s->mb_width;
     
     /* which mb is a intra block */
     CHECKED_ALLOCZ(s->mbintra_table, s->mb_num);
@@ -469,7 +473,9 @@
     av_freep(&s->mbintra_table);
     av_freep(&s->cbp_table);
     av_freep(&s->pred_dir_table);
-    av_freep(&s->qscale_table);
+    av_freep(&s->next_qscale_table);
+    av_freep(&s->last_qscale_table);
+    av_freep(&s->aux_qscale_table);
     av_freep(&s->me_scratchpad);
     av_freep(&s->me_map);
     av_freep(&s->me_score_map);
@@ -824,6 +830,9 @@
 
             s->current_picture[i] = s->aux_picture[i];
         }
+        s->avctx->display_qscale_table=
+        s->avctx->current_qscale_table= 
+        s->qscale_table= s->aux_qscale_table;
     } else {
         for(i=0;i<3;i++) {
             /* swap next and last */
@@ -847,6 +856,9 @@
             else
                 avctx->dr_opaque_frame= s->next_dr_opaque;
         }
+        s->avctx->current_qscale_table= s->qscale_table      = s->last_qscale_table;
+        s->avctx->display_qscale_table= s->last_qscale_table = s->next_qscale_table;
+        s->next_qscale_table= s->qscale_table;
     }
     /* set dequantizer, we cant do it during init as it might change for mpeg4
        and we cant do it in the header decode as init isnt called for mpeg4 there yet */
@@ -1728,14 +1740,6 @@
     mb_x = s->mb_x;
     mb_y = s->mb_y;
 
-#ifdef FF_POSTPROCESS
-    /* Obsolete. Exists for compatibility with mplayer only. */
-    quant_store[mb_y][mb_x]=s->qscale;
-    //printf("[%02d][%02d] %d\n",mb_x,mb_y,s->qscale);
-#else
-    /* even more obsolete, exists for mplayer xp only */
-    if(s->avctx->quant_store) s->avctx->quant_store[mb_y*s->avctx->qstride+mb_x] = s->qscale;
-#endif
     s->qscale_table[mb_xy]= s->qscale;
 
     /* update DC predictors for P macroblocks */