Commit d32d2f0b authored by Daniel Drake's avatar Daniel Drake Committed by Sebastian Dröge
Browse files

playsink: pass translated color balance value to channel

We found a case where untranslated values were being passed from the
proxy to the underlying channel, causing bad color balance values
in some setups.

Thanks to Sebastian Dröge for clarifying how the code works, and
suggesting the fix.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701202
parent 96aab6d8
......@@ -1543,6 +1543,7 @@ update_colorbalance (GstPlaySink * playsink)
GstColorBalanceChannel *proxy = l->data;
GstColorBalanceChannel *channel = NULL;
const GList *channels, *k;
gdouble new_val;
channels = gst_color_balance_list_channels (balance);
for (k = channels; k; k = k->next) {
......@@ -1556,8 +1557,18 @@ update_colorbalance (GstPlaySink * playsink)
g_assert (channel);
/* Convert to [0, 1] range */
new_val =
((gdouble) playsink->colorbalance_values[i] -
(gdouble) proxy->min_value) / ((gdouble) proxy->max_value -
(gdouble) proxy->min_value);
/* Convert to channel range */
new_val =
channel->min_value + new_val * ((gdouble) channel->max_value -
(gdouble) channel->min_value);
gst_color_balance_set_value (balance, channel,
playsink->colorbalance_values[i]);
(gint) (new_val + 0.5));
}
g_signal_handler_unblock (balance, playsink->colorbalance_value_changed_id);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment