#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 */
}
#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 */
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,
}
-/* 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){
}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,