fixing msmpeg4v3 dc-scale for quantizers 24-31
Originally committed as revision 427 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
bb3debab2c
commit
bb71e31757
@ -199,9 +199,7 @@ static int h263_decode_frame(AVCodecContext *avctx,
|
||||
#endif
|
||||
//fprintf(stderr,"\nFrame: %d\tMB: %d",avctx->frame_number, (s->mb_y * s->mb_width) + s->mb_x);
|
||||
/* 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);
|
||||
} else {
|
||||
/* default quantization values */
|
||||
|
@ -1439,9 +1439,7 @@ static void encode_mb(MpegEncContext *s, int motion_x, int motion_y)
|
||||
}
|
||||
#endif
|
||||
/* 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);
|
||||
} else {
|
||||
/* default quantization values */
|
||||
|
@ -490,7 +490,6 @@ void msmpeg4_encode_ext_header(MpegEncContext * s);
|
||||
void msmpeg4_encode_mb(MpegEncContext * s,
|
||||
DCTELEM block[6][64],
|
||||
int motion_x, int motion_y);
|
||||
void msmpeg4_dc_scale(MpegEncContext * s);
|
||||
int msmpeg4_decode_picture_header(MpegEncContext * s);
|
||||
int msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size);
|
||||
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)
|
||||
{
|
||||
if (s->qscale < 5 || s->msmpeg4_version==2){
|
||||
@ -420,11 +421,15 @@ void msmpeg4_dc_scale(MpegEncContext * s)
|
||||
}else if (s->qscale < 9){
|
||||
s->y_dc_scale = 2 * s->qscale;
|
||||
s->c_dc_scale = (s->qscale + 13)>>1;
|
||||
}else{
|
||||
}else if(s->qscale < 25){
|
||||
s->y_dc_scale = s->qscale + 8;
|
||||
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 */
|
||||
static int msmpeg4_pred_dc(MpegEncContext * s, int n,
|
||||
|
Loading…
Reference in New Issue
Block a user