[GnomeMeeting-devel-list] New GM snapshot + patch
- From: Damien Sandras <dsandras seconix com>
- To: gnomemeeting-devel-list gnome org
- Subject: [GnomeMeeting-devel-list] New GM snapshot + patch
- Date: 21 Dec 2002 15:30:28 +0100
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]