Mercurial > libavcodec.hg
changeset 3152:28a087ad41d1 libavcodec
Assign class 2 to most macroblocks by default, instead of a more conservative
method defined by SMPTE
Patch by Dan Maas
author | romansh |
---|---|
date | Tue, 28 Feb 2006 02:54:48 +0000 |
parents | 27e1b9632715 |
children | 7aa01243b4d3 |
files | dv.c |
diffstat | 1 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/dv.c Mon Feb 27 12:17:20 2006 +0000 +++ b/dv.c Tue Feb 28 02:54:48 2006 +0000 @@ -658,8 +658,22 @@ const uint8_t* zigzag_scan, const int *weight, int bias) { int i, area; + /* We offer two different methods for class number assignment: the + method suggested in SMPTE 314M Table 22, and an improved + method. The SMPTE method is very conservative; it assigns class + 3 (i.e. severe quantization) to any block where the largest AC + component is greater than 36. ffmpeg's DV encoder tracks AC bit + consumption precisely, so there is no need to bias most blocks + towards strongly lossy compression. Instead, we assign class 2 + to most blocks, and use class 3 only when strictly necessary + (for blocks whose largest AC component exceeds 255). */ + +#if 0 /* SMPTE spec method */ static const int classes[] = {12, 24, 36, 0xffff}; - int max=12; +#else /* improved ffmpeg method */ + static const int classes[] = {-1, -1, 255, 0xffff}; +#endif + int max=classes[0]; int prev=0; bi->mb[0] = blk[0];