ekiga r6955 - in trunk: . src/devices src/gui
- From: mschneid svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6955 - in trunk: . src/devices src/gui
- Date: Sat, 13 Sep 2008 10:23:44 +0000 (UTC)
Author: mschneid
Date: Sat Sep 13 10:23:44 2008
New Revision: 6955
URL: http://svn.gnome.org/viewvc/ekiga?rev=6955&view=rev
Log:
Fix reference counting in video output device
(when coming out of a re-invited call whith
preview enabled it did not show the preview
video anymore). Also fix the quality meter
which was updated twice with different values.
Modified:
trunk/ChangeLog
trunk/src/devices/videooutput.cpp
trunk/src/gui/main.cpp
Modified: trunk/src/devices/videooutput.cpp
==============================================================================
--- trunk/src/devices/videooutput.cpp (original)
+++ trunk/src/devices/videooutput.cpp Sat Sep 13 10:23:44 2008
@@ -93,10 +93,11 @@
{
PWaitAndSignal m(videoDisplay_mutex);
- if (is_active)
+ if (is_active) {
devices_nbr--;
- if (devices_nbr == 0) {
- videooutput_core.stop();
+ if (devices_nbr==0)
+ videooutput_core.stop();
+ is_active = false;
}
}
@@ -148,13 +149,14 @@
if (!endFrame)
return FALSE;
- if (devices_nbr == 0)
- videooutput_core.start();
- /* Device is now open */
if (!is_active) {
+ if (devices_nbr == 0) {
+ videooutput_core.start();
+ }
is_active = TRUE;
devices_nbr++;
}
+
videooutput_core.set_frame_data((const char*) data, width, height, (device_id == LOCAL), devices_nbr);
return TRUE;
Modified: trunk/src/gui/main.cpp
==============================================================================
--- trunk/src/gui/main.cpp (original)
+++ trunk/src/gui/main.cpp Sat Sep 13 10:23:44 2008
@@ -669,48 +669,11 @@
gm_main_window_set_call_duration (GTK_WIDGET (self), mw->current_call->get_duration ().c_str ());
g_free (msg);
- int jitter_quality = 0;
- gfloat quality_level = 0.0;
unsigned int jitter = mw->current_call->get_jitter_size ();
double lost = mw->current_call->get_lost_packets ();
double late = mw->current_call->get_late_packets ();
double out_of_order = mw->current_call->get_out_of_order_packets ();
- /* "arithmetics" for the quality level */
- /* Thanks Snark for the math hints */
- if (jitter < 30)
- jitter_quality = 100;
- if (jitter >= 30 && jitter < 50)
- jitter_quality = 100 - (jitter - 30);
- if (jitter >= 50 && jitter < 100)
- jitter_quality = 80 - (jitter - 50) * 20 / 50;
- if (jitter >= 100 && jitter < 150)
- jitter_quality = 60 - (jitter - 100) * 20 / 50;
- if (jitter >= 150 && jitter < 200)
- jitter_quality = 40 - (jitter - 150) * 20 / 50;
- if (jitter >= 200 && jitter < 300)
- jitter_quality = 20 - (jitter - 200) * 20 / 100;
- if (jitter >= 300 || jitter_quality < 0)
- jitter_quality = 0;
-
- quality_level = (float) jitter_quality / 100;
-
- if ( (lost > 0.0) ||
- (late > 0.0) ||
- ((out_of_order > 0.0) && quality_level > 0.2) ) {
- quality_level = 0.2;
- }
-
- if ( (lost > 0.02) ||
- (late > 0.02) ||
- (out_of_order > 0.02) ) {
- quality_level = 0;
- }
-
- if (mw->qualitymeter)
- gm_powermeter_set_level (GM_POWERMETER (mw->qualitymeter),
- quality_level);
-
gm_main_window_update_stats (GTK_WIDGET (self), lost, late, out_of_order, jitter,
0, 0, 0, 0,
videooutput_stats.rx_width,
@@ -4515,34 +4478,40 @@
}
g_free (stats_msg);
- /* "arithmetics" for the quality level */
- /* Thanks Snark for the math hints */
- if (jitter < 30)
- jitter_quality = 100;
- if (jitter >= 30 && jitter < 50)
- jitter_quality = 100 - (jitter - 30);
- if (jitter >= 50 && jitter < 100)
- jitter_quality = 80 - (jitter - 50) * 20 / 50;
- if (jitter >= 100 && jitter < 150)
- jitter_quality = 60 - (jitter - 100) * 20 / 50;
- if (jitter >= 150 && jitter < 200)
- jitter_quality = 40 - (jitter - 150) * 20 / 50;
- if (jitter >= 200 && jitter < 300)
- jitter_quality = 20 - (jitter - 200) * 20 / 100;
- if (jitter >= 300 || jitter_quality < 0)
- jitter_quality = 0;
-
- quality_level = (float) jitter_quality / 100;
-
- if ((lost < 0.02 && lost >= 0.0) ||
- (late < 0.02 && late >= 0.0) ||
- ((out_of_order < 0.02 && out_of_order >= 0.0) &&
- quality_level > 0.2))
- quality_level = 0.2;
+ /* "arithmetics" for the quality level */
+ /* Thanks Snark for the math hints */
+ if (jitter < 30)
+ jitter_quality = 100;
+ if (jitter >= 30 && jitter < 50)
+ jitter_quality = 100 - (jitter - 30);
+ if (jitter >= 50 && jitter < 100)
+ jitter_quality = 80 - (jitter - 50) * 20 / 50;
+ if (jitter >= 100 && jitter < 150)
+ jitter_quality = 60 - (jitter - 100) * 20 / 50;
+ if (jitter >= 150 && jitter < 200)
+ jitter_quality = 40 - (jitter - 150) * 20 / 50;
+ if (jitter >= 200 && jitter < 300)
+ jitter_quality = 20 - (jitter - 200) * 20 / 100;
+ if (jitter >= 300 || jitter_quality < 0)
+ jitter_quality = 0;
- if (mw->qualitymeter)
- gm_powermeter_set_level (GM_POWERMETER (mw->qualitymeter),
- quality_level);
+ quality_level = (float) jitter_quality / 100;
+
+ if ( (lost > 0.0) ||
+ (late > 0.0) ||
+ ((out_of_order > 0.0) && quality_level > 0.2) ) {
+ quality_level = 0.2;
+ }
+
+ if ( (lost > 0.02) ||
+ (late > 0.02) ||
+ (out_of_order > 0.02) ) {
+ quality_level = 0;
+ }
+
+ if (mw->qualitymeter)
+ gm_powermeter_set_level (GM_POWERMETER (mw->qualitymeter),
+ quality_level);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]