Mercurial > libavcodec.hg
comparison mpegvideo.c @ 1651:ccf7c96a630f libavcodec
h263 modified quantization fix
author | michael |
---|---|
date | Wed, 03 Dec 2003 16:07:41 +0000 |
parents | 835cf346975e |
children | 834922115010 |
comparison
equal
deleted
inserted
replaced
1650:bdade3baabfc | 1651:ccf7c96a630f |
---|---|
2649 } | 2649 } |
2650 | 2650 |
2651 | 2651 |
2652 /* put block[] to dest[] */ | 2652 /* put block[] to dest[] */ |
2653 static inline void put_dct(MpegEncContext *s, | 2653 static inline void put_dct(MpegEncContext *s, |
2654 DCTELEM *block, int i, uint8_t *dest, int line_size) | 2654 DCTELEM *block, int i, uint8_t *dest, int line_size, int qscale) |
2655 { | 2655 { |
2656 s->dct_unquantize(s, block, i, s->qscale); | 2656 s->dct_unquantize(s, block, i, qscale); |
2657 s->dsp.idct_put (dest, line_size, block); | 2657 s->dsp.idct_put (dest, line_size, block); |
2658 } | 2658 } |
2659 | 2659 |
2660 /* add block[] to dest[] */ | 2660 /* add block[] to dest[] */ |
2661 static inline void add_dct(MpegEncContext *s, | 2661 static inline void add_dct(MpegEncContext *s, |
2855 } | 2855 } |
2856 #endif | 2856 #endif |
2857 } else { | 2857 } else { |
2858 /* dct only in intra block */ | 2858 /* dct only in intra block */ |
2859 if(s->encoding || !(s->codec_id==CODEC_ID_MPEG1VIDEO || s->codec_id==CODEC_ID_MPEG2VIDEO)){ | 2859 if(s->encoding || !(s->codec_id==CODEC_ID_MPEG1VIDEO || s->codec_id==CODEC_ID_MPEG2VIDEO)){ |
2860 put_dct(s, block[0], 0, dest_y, dct_linesize); | 2860 put_dct(s, block[0], 0, dest_y, dct_linesize, s->qscale); |
2861 put_dct(s, block[1], 1, dest_y + 8, dct_linesize); | 2861 put_dct(s, block[1], 1, dest_y + 8, dct_linesize, s->qscale); |
2862 put_dct(s, block[2], 2, dest_y + dct_offset, dct_linesize); | 2862 put_dct(s, block[2], 2, dest_y + dct_offset, dct_linesize, s->qscale); |
2863 put_dct(s, block[3], 3, dest_y + dct_offset + 8, dct_linesize); | 2863 put_dct(s, block[3], 3, dest_y + dct_offset + 8, dct_linesize, s->qscale); |
2864 | 2864 |
2865 if(!(s->flags&CODEC_FLAG_GRAY)){ | 2865 if(!(s->flags&CODEC_FLAG_GRAY)){ |
2866 put_dct(s, block[4], 4, dest_cb, uvlinesize); | 2866 put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); |
2867 put_dct(s, block[5], 5, dest_cr, uvlinesize); | 2867 put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); |
2868 } | 2868 } |
2869 }else{ | 2869 }else{ |
2870 s->dsp.idct_put(dest_y , dct_linesize, block[0]); | 2870 s->dsp.idct_put(dest_y , dct_linesize, block[0]); |
2871 s->dsp.idct_put(dest_y + 8, dct_linesize, block[1]); | 2871 s->dsp.idct_put(dest_y + 8, dct_linesize, block[1]); |
2872 s->dsp.idct_put(dest_y + dct_offset , dct_linesize, block[2]); | 2872 s->dsp.idct_put(dest_y + dct_offset , dct_linesize, block[2]); |