[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