Mercurial > libavcodec.hg
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) |