comparison msmpeg4.c @ 195:92f726205082 libavcodec

s->c_dc_scale was 7 if s->qscale==2 but should be 8 (the bug is visible in deep red areas in high bitrate clips) - patch by Michael Niedermayer <michaelni@gmx.at>
author arpi_esp
date Fri, 11 Jan 2002 21:27:04 +0000
parents cf37da86d990
children 6ab301aaa652
comparison
equal deleted inserted replaced
194:27d1773552c9 195:92f726205082
345 345
346 346
347 /* strongly inspirated from MPEG4, but not exactly the same ! */ 347 /* strongly inspirated from MPEG4, but not exactly the same ! */
348 void msmpeg4_dc_scale(MpegEncContext * s) 348 void msmpeg4_dc_scale(MpegEncContext * s)
349 { 349 {
350 int scale; 350 if (s->qscale < 5){
351 351 s->y_dc_scale = 8;
352 if (s->qscale < 5) 352 s->c_dc_scale = 8;
353 scale = 8; 353 // s->c_dc_scale = (s->qscale + 13)>>1;
354 else if (s->qscale < 9) 354 }else if (s->qscale < 9){
355 scale = 2 * s->qscale; 355 s->y_dc_scale = 2 * s->qscale;
356 else 356 s->c_dc_scale = (s->qscale + 13)>>1;
357 scale = s->qscale + 8; 357 }else{
358 s->y_dc_scale = scale; 358 s->y_dc_scale = s->qscale + 8;
359 s->c_dc_scale = (s->qscale + 13) / 2; 359 s->c_dc_scale = (s->qscale + 13)>>1;
360 }
361 // this differs for quant >24 from mpeg4
362
363 // if(s->qscale==13) s->c_dc_scale=14;
364
365 // if(s->qscale>=6)
366 // printf("%d", s->qscale);
367
368 /* s->c_dc_scale values (found by Michael Nidermayer)
369 qscale=2 -> 8 (yes iam sure about that)
370 qscale=3 -> 8
371 qscale=4 -> 8
372 qscale=5 -> 9
373 qscale=6 -> 9
374 qscale=7 -> 10
375 qscale=8 -> 10
376 qscale=9 -> 11
377 qscale=10-> 11
378 */
360 } 379 }
361 380
362 /* dir = 0: left, dir = 1: top prediction */ 381 /* dir = 0: left, dir = 1: top prediction */
363 static int msmpeg4_pred_dc(MpegEncContext * s, int n, 382 static int msmpeg4_pred_dc(MpegEncContext * s, int n,
364 INT16 **dc_val_ptr, int *dir_ptr) 383 INT16 **dc_val_ptr, int *dir_ptr)