[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec dv.c,1.80,1.81
Roman Shaposhnick
romansh
Tue Feb 28 03:54:51 CET 2006
Update of /cvsroot/ffmpeg/ffmpeg/libavcodec
In directory mail:/var2/tmp/cvs-serv19480/ffmpeg/libavcodec
Modified Files:
dv.c
Log Message:
Assign class 2 to most macroblocks by default, instead of a more conservative
method defined by SMPTE
Patch by Dan Maas
Index: dv.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/dv.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- dv.c 27 Feb 2006 05:04:05 -0000 1.80
+++ dv.c 28 Feb 2006 02:54:48 -0000 1.81
@@ -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];
More information about the ffmpeg-cvslog
mailing list