[GnomeMeeting-devel-list] New GM snapshot + patch



Hi all,

please test the last GM snapshot. It needs openh323 from CVS + the
current patch that I attached to this mail (patch -p0 in /opt/openh323)

What's new?
Many things:
- my non-framed hack, but like matti I prefered the frames
- dynamic video bandwidth control :
        The FPS and the video quality settings are now lower limits. You
        give the desired bandwidth that you can use and GnomeMeeting
        will automatically adapt the video quality and the FPS to limit
        the bandwidth used to the value you requested *if it is
        possible* (don't expect to transmit 30 FPS with quality 100%
        with 2 kb/s).
        
        DSL present a lower limit of 50% quality and 6 FPS for 7kb/s. It
        means that if you move a lot, the picture will become blocky and
        the image will get slower (but it will still maintain at least
        50% and 6 FPS), but as soon as you don't move too much again,
        the quality will increase to 100% and the FPS too. Nice isn't
        it?
        
CVS USERS, YOU NEED TO RUN gconftool-2 --unset
/apps/gnomemeeting/general/version BEFORE RUNNING THAT SNAPSHOT.
-- 
Damien Sandras <dsandras seconix com>
--- src/h261codec.cxx.orig	Sat Dec 21 12:44:01 2002
+++ src/h261codec.cxx	Sat Dec 21 12:40:55 2002
@@ -379,8 +379,8 @@
   videoBitRateControlModes = None;
 
   // video quality control
-  videoQMax = 24;
   videoQMin = 1;
+  videoQMax = 24;
   videoQuality = 9; // default = 9
   //SetTxQualityLevel( videoQuality ); // don't have encoder yet
 
@@ -509,7 +509,11 @@
 
           // keep track of average frame size and
           // adjust encoder quality to get targetFrameBits bits per frame
-          avgFrameBitRate = avgFrameBytes*8*1000 / avgAdjFrameTimeMs; // bits per second
+	  if (avgAdjFrameTimeMs)
+	    avgFrameBitRate = avgFrameBytes*8*1000 / avgAdjFrameTimeMs; // bits per second
+	  else
+	    avgFrameBitRate = avgFrameBytes*8*1000;
+
           targetFrameBits = avgFrameBitRate * targetFrameTimeMs / 1000;
           error = (frameBytes*8) - targetFrameBits; // error signal
           aerror = PABS(error);
@@ -528,7 +532,6 @@
               act = error>0 ? 1 : -1;
             }
           }
-
           newQuality = videoQuality + act;
           newQuality = PMIN(PMAX(newQuality, videoQMin), videoQMax );
           //PTRACE(3,"H261\tframeNum targetFrameBits frameBits videoQuality newQuality: "
@@ -615,7 +618,10 @@
     }
     currentTime = PTimer::Tick(); // re-acquire current time due to possible PTRACE delay
     // ms = (bytes * 8) / (bps / 1000)
-    newTime = currentTime + length*8/(bitRateHighLimit/1000);
+    if (bitRateHighLimit/1000)
+      newTime = currentTime + length*8/(bitRateHighLimit/1000);
+    else
+      newTime = currentTime + length*8;
   }
   else {
     // monitor & report bit rate


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]