Originally committed as revision 427 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -199,9 +199,7 @@ static int h263_decode_frame(AVCodecContext *avctx, | |||||
| #endif | #endif | ||||
| //fprintf(stderr,"\nFrame: %d\tMB: %d",avctx->frame_number, (s->mb_y * s->mb_width) + s->mb_x); | //fprintf(stderr,"\nFrame: %d\tMB: %d",avctx->frame_number, (s->mb_y * s->mb_width) + s->mb_x); | ||||
| /* DCT & quantize */ | /* DCT & quantize */ | ||||
| if (s->h263_msmpeg4) { | |||||
| msmpeg4_dc_scale(s); | |||||
| } else if (s->h263_pred) { | |||||
| if (s->h263_pred && s->msmpeg4_version!=2) { | |||||
| h263_dc_scale(s); | h263_dc_scale(s); | ||||
| } else { | } else { | ||||
| /* default quantization values */ | /* default quantization values */ | ||||
| @@ -1439,9 +1439,7 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y) | |||||
| } | } | ||||
| #endif | #endif | ||||
| /* DCT & quantize */ | /* DCT & quantize */ | ||||
| if (s->h263_msmpeg4) { | |||||
| msmpeg4_dc_scale(s); | |||||
| } else if (s->h263_pred) { | |||||
| if (s->h263_pred && s->msmpeg4_version!=2) { | |||||
| h263_dc_scale(s); | h263_dc_scale(s); | ||||
| } else { | } else { | ||||
| /* default quantization values */ | /* default quantization values */ | ||||
| @@ -490,7 +490,6 @@ void msmpeg4_encode_ext_header(MpegEncContext * s); | |||||
| void msmpeg4_encode_mb(MpegEncContext * s, | void msmpeg4_encode_mb(MpegEncContext * s, | ||||
| DCTELEM block[6][64], | DCTELEM block[6][64], | ||||
| int motion_x, int motion_y); | int motion_x, int motion_y); | ||||
| void msmpeg4_dc_scale(MpegEncContext * s); | |||||
| int msmpeg4_decode_picture_header(MpegEncContext * s); | int msmpeg4_decode_picture_header(MpegEncContext * s); | ||||
| int msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size); | int msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size); | ||||
| int msmpeg4_decode_mb(MpegEncContext *s, | int msmpeg4_decode_mb(MpegEncContext *s, | ||||
| @@ -411,7 +411,8 @@ void msmpeg4_encode_mb(MpegEncContext * s, | |||||
| } | } | ||||
| /* strongly inspirated from MPEG4, but not exactly the same ! */ | |||||
| #if 0 | |||||
| /* identical to mpeg4 for msmpeg4v3 but not msmpeg4v2 */ | |||||
| void msmpeg4_dc_scale(MpegEncContext * s) | void msmpeg4_dc_scale(MpegEncContext * s) | ||||
| { | { | ||||
| if (s->qscale < 5 || s->msmpeg4_version==2){ | if (s->qscale < 5 || s->msmpeg4_version==2){ | ||||
| @@ -420,11 +421,15 @@ void msmpeg4_dc_scale(MpegEncContext * s) | |||||
| }else if (s->qscale < 9){ | }else if (s->qscale < 9){ | ||||
| s->y_dc_scale = 2 * s->qscale; | s->y_dc_scale = 2 * s->qscale; | ||||
| s->c_dc_scale = (s->qscale + 13)>>1; | s->c_dc_scale = (s->qscale + 13)>>1; | ||||
| }else{ | |||||
| }else if(s->qscale < 25){ | |||||
| s->y_dc_scale = s->qscale + 8; | s->y_dc_scale = s->qscale + 8; | ||||
| s->c_dc_scale = (s->qscale + 13)>>1; | s->c_dc_scale = (s->qscale + 13)>>1; | ||||
| }else{ | |||||
| s->y_dc_scale = 2 * s->qscale - 16; | |||||
| s->c_dc_scale = s->qscale - 6; | |||||
| } | } | ||||
| } | } | ||||
| #endif | |||||
| /* dir = 0: left, dir = 1: top prediction */ | /* dir = 0: left, dir = 1: top prediction */ | ||||
| static int msmpeg4_pred_dc(MpegEncContext * s, int n, | static int msmpeg4_pred_dc(MpegEncContext * s, int n, | ||||