Mercurial > libavcodec.hg
diff h263.c @ 344:9f6071a87e17 libavcodec
fixed msmpeg4 infinite loop if buggy stream
rewrote quantizer
fixed bias (+10% compression/quality for h263 like codecs)
qscale=1 support
mpeg1 intra frames looks far less blocky
added codec_id field
author | michaelni |
---|---|
date | Sat, 27 Apr 2002 12:30:26 +0000 |
parents | bf26081c373c |
children | c2f789fe4945 |
line wrap: on
line diff
--- a/h263.c Fri Apr 26 07:18:57 2002 +0000 +++ b/h263.c Sat Apr 27 12:30:26 2002 +0000 @@ -904,8 +904,26 @@ s->mv_penalty= mv_penalty; //FIXME exact table for msmpeg4 & h263p // use fcodes >1 only for mpeg4 & h263 & h263p FIXME - if(s->h263_plus) s->fcode_tab= umv_fcode_tab; - else if(s->h263_pred && !s->h263_msmpeg4) s->fcode_tab= fcode_tab; + switch(s->codec_id){ + case CODEC_ID_MPEG4: + s->fcode_tab= fcode_tab; + s->min_qcoeff= -2048; + s->max_qcoeff= 2047; + break; + case CODEC_ID_H263P: + s->fcode_tab= umv_fcode_tab; + s->min_qcoeff= -128; + s->max_qcoeff= 127; + break; + default: //nothing needed default table allready set in mpegvideo.c + s->min_qcoeff= -128; + s->max_qcoeff= 127; + } + + /* h263 type bias */ + //FIXME mpeg4 mpeg quantizer + s->intra_quant_bias=0; + s->inter_quant_bias=-(1<<(QUANT_BIAS_SHIFT-2)); //(a - x/4)/x } static void h263_encode_block(MpegEncContext * s, DCTELEM * block, int n) @@ -2702,8 +2720,8 @@ s->chroma_intra_matrix[i]= v; v= ff_mpeg4_default_non_intra_matrix[i]; - s->non_intra_matrix[i]= v; - s->chroma_non_intra_matrix[i]= v; + s->inter_matrix[i]= v; + s->chroma_inter_matrix[i]= v; } /* load custom intra matrix */ @@ -2725,15 +2743,15 @@ if(v==0) break; j= zigzag_direct[i]; - s->non_intra_matrix[j]= v; - s->chroma_non_intra_matrix[j]= v; + s->inter_matrix[j]= v; + s->chroma_inter_matrix[j]= v; } /* replicate last value */ for(; i<64; i++){ j= zigzag_direct[i]; - s->non_intra_matrix[j]= v; - s->chroma_non_intra_matrix[j]= v; + s->inter_matrix[j]= v; + s->chroma_inter_matrix[j]= v; } }