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]);