summaryrefslogtreecommitdiff
path: root/libavcodec/mpegvideo.c
diff options
context:
space:
mode:
authorWolfgang Hesseler <qv@multimediaware.com>2004-02-25 18:29:17 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-02-25 18:29:17 +0000
commit8289c6faa801181882d361789c80a01ca82e2622 (patch)
treebc8bf0a67e6a62a6947b5e2af4b63ecedc1cbe8e /libavcodec/mpegvideo.c
parent5a815088d3341431eacbcb232bc8fa29296cbd0c (diff)
export DCT coefficients patch by (Wolfgang Hesseler <wolfgang.hesseler at imk dot fraunhofer dot de>)
Originally committed as revision 2816 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mpegvideo.c')
-rw-r--r--libavcodec/mpegvideo.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 3ce01c43aa..93c7198294 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -354,6 +354,9 @@ static int alloc_picture(MpegEncContext *s, Picture *pic, int shared){
}
pic->motion_subsample_log2= 3;
}
+ if(s->avctx->debug&FF_DEBUG_DCT_COEFF) {
+ CHECKED_ALLOCZ(pic->dct_coeff, 64 * mb_array_size * sizeof(DCTELEM)*6)
+ }
pic->qstride= s->mb_stride;
CHECKED_ALLOCZ(pic->pan_scan , 1 * sizeof(AVPanScan))
}
@@ -385,6 +388,7 @@ static void free_picture(MpegEncContext *s, Picture *pic){
av_freep(&pic->mbskip_table);
av_freep(&pic->qscale_table);
av_freep(&pic->mb_type_base);
+ av_freep(&pic->dct_coeff);
av_freep(&pic->pan_scan);
pic->mb_type= NULL;
for(i=0; i<2; i++){
@@ -3080,6 +3084,15 @@ void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
mb_x = s->mb_x;
mb_y = s->mb_y;
+ if(s->avctx->debug&FF_DEBUG_DCT_COEFF) {
+ /* save DCT coefficients */
+ int i,j;
+ DCTELEM *dct = &s->current_picture.dct_coeff[mb_xy*64*6];
+ for(i=0; i<6; i++)
+ for(j=0; j<64; j++)
+ *dct++ = block[i][s->dsp.idct_permutation[j]];
+ }
+
s->current_picture.qscale_table[mb_xy]= s->qscale;
/* update DC predictors for P macroblocks */