summaryrefslogtreecommitdiff
path: root/libavcodec/mpegvideo.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2002-10-30 20:41:40 +0000
committerMichael Niedermayer <michaelni@gmx.at>2002-10-30 20:41:40 +0000
commit6b72ac6323ec656fd0df6460ef844c83b5e76433 (patch)
tree5304a66d43316618b6147f50b700b10a6df3f887 /libavcodec/mpegvideo.c
parent6234d753a9ba67291d41bd1f537d57032c9813b6 (diff)
exporting the internal qscale table, this allso fixes the ordering
Originally committed as revision 1116 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegvideo.c')
-rw-r--r--libavcodec/mpegvideo.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 4761b61370..4503e3e1e7 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -420,7 +420,11 @@ int MPV_common_init(MpegEncContext *s)
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 @@ void MPV_common_end(MpegEncContext *s)
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 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
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 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
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 @@ void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
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 */