Tim-Philipp Müller [Wed, 16 Apr 2014 20:40:45 +0000 (21:40 +0100)]
videomixer: name collectpads object based on videomixer name
Makes it easier to track things in debug logs when there
are multiple mixers and muxers.
Tim-Philipp Müller [Wed, 16 Apr 2014 20:37:12 +0000 (21:37 +0100)]
videomixer: better logging of incoming events
The pad and parent names are already logged as part of logging
the object. Instead log the full event details.
Sebastian Dröge [Wed, 16 Apr 2014 17:03:47 +0000 (19:03 +0200)]
videomixer: Fix memory leak in unit test
Sebastian Dröge [Wed, 16 Apr 2014 16:49:43 +0000 (18:49 +0200)]
level: Use the correct number of samples to iterate over the input array
Fixes invalid memory accesses and accesses to uninitialised data.
Sebastian Dröge [Wed, 16 Apr 2014 16:00:49 +0000 (18:00 +0200)]
icydemux: Unref dropped events
Vincent Penquerc'h [Wed, 16 Apr 2014 16:29:30 +0000 (17:29 +0100)]
matroska: fix check for amount of data to read
History shows length==0 should set data to NULL and return,
so we do that too instead of trying to read nothing.
Coverity 206205
Vincent Penquerc'h [Wed, 16 Apr 2014 16:25:44 +0000 (17:25 +0100)]
deinterlace: fix sign comparison
history_count is unsigned, so the whole comparison will be made
as unsigned, and fail to reject what it was meant to.
Coverity 206204
Vincent Penquerc'h [Wed, 16 Apr 2014 16:04:50 +0000 (17:04 +0100)]
avidemux: remove dead code
sub may not be NULL in this switch, there is a bail out just
before it if so.
Coverity 206098
Vincent Penquerc'h [Wed, 16 Apr 2014 15:59:43 +0000 (16:59 +0100)]
flacparse: remove dead code
The block_size == 0 was shortcut earlier, and the variable is not
modified in the meantime.
Coverity 206097
Vincent Penquerc'h [Wed, 16 Apr 2014 15:56:54 +0000 (16:56 +0100)]
videomixer: remove dead code
While it seems to keep a compile time selection, I traced it
to some code copied from videoconvert, where it was removed,
with the following comment:
Also remove the high-quality I420 to BGRA fast-path as it needs
the same fix, which causes an additional instruction, which causes
orc to emit more than 96 variables, which then just crashes.
This can only be fixed in orc by breaking ABI and allowing more
variables.
Thus, I remove it here as well.
Coverity 206064
Vincent Penquerc'h [Wed, 16 Apr 2014 15:50:30 +0000 (16:50 +0100)]
isomp4: fix incorrect masking for multiple tags
Coverity 206058
Vincent Penquerc'h [Wed, 16 Apr 2014 15:45:08 +0000 (16:45 +0100)]
isomp4: fix wrong atom flags set when adding samples
Coverity 206057
Vincent Penquerc'h [Wed, 16 Apr 2014 15:40:02 +0000 (16:40 +0100)]
audiofx: fix comparison of delta time to a threshold
Coverity 206055
Vincent Penquerc'h [Wed, 16 Apr 2014 15:32:26 +0000 (16:32 +0100)]
wavparse: do not rely on call failure keeping return data unmodified
This is clearer this way too.
Coverity 206029
Vincent Penquerc'h [Wed, 16 Apr 2014 15:28:49 +0000 (16:28 +0100)]
isomp4: catch fseek error
Coverity 206028
Vincent Penquerc'h [Wed, 16 Apr 2014 15:25:44 +0000 (16:25 +0100)]
isomp4: report failures to caller
Coverity 206027
Wim Taymans [Wed, 16 Apr 2014 16:05:46 +0000 (18:05 +0200)]
rtpjitterbuffer: refuse serialied query when buffering
When we are buffering, we can't block and wait for the serialized query
to complete because the jitterbuffer will not try to forward the query
while buffering. Instead, just refuse the query.
Wim Taymans [Wed, 16 Apr 2014 14:51:15 +0000 (16:51 +0200)]
rtpjitterbuffer: don't free the serialized query
We should never free a serialized query in the queue, it is the upstream
caller that will free it.
Sebastian Dröge [Wed, 16 Apr 2014 15:35:42 +0000 (17:35 +0200)]
aacparse: Fix memory leak in the test
Sebastian Dröge [Wed, 16 Apr 2014 15:33:46 +0000 (17:33 +0200)]
videomixer: Create hashtable only when we actually use it
In error cases we previously returned without freeing it.
Sebastian Dröge [Wed, 16 Apr 2014 15:30:59 +0000 (17:30 +0200)]
videomixer: Chain up to the parent class' dispose function
Sebastian Dröge [Wed, 16 Apr 2014 15:23:27 +0000 (17:23 +0200)]
v4l2videodec: Initialise ioctl struct with zeroes before passing it to ioctl()
Marc Leeman [Wed, 16 Apr 2014 11:47:43 +0000 (13:47 +0200)]
udpsrc: correct LOG msg for -1
Signed-off-by: Marc Leeman <marc.leeman@gmail.com>
Sebastian Dröge [Tue, 15 Apr 2014 19:36:30 +0000 (21:36 +0200)]
interleave: Fix negotiation to work at all again
The caps query handling function for the sinkpads was called for
the srcpad, and the sinkpads had none. This commit moves it to the
right pad, but nonetheless the negotiation still looks wrong.
This makes the test pass again after the recent coverity fix
and also allows interleave to work again, but someone should
really review the negotiation code and fix it.
Edward Hervey [Sun, 13 Apr 2014 07:03:41 +0000 (09:03 +0200)]
oss4: Maximum number of channels support is 8
Avoids doing potential overwrites in ch_layout (which only has 8
fields).
CID #1139826
Sebastian Dröge [Sat, 12 Apr 2014 20:16:37 +0000 (22:16 +0200)]
osxvideosink: Set rank to MARGINAL
If available we prefer using glimagesink over osxvideosink. It supports
more formats and in general has more features than osxvideosink.
Josep Torra [Fri, 11 Apr 2014 16:19:49 +0000 (18:19 +0200)]
rtph264depay: only guess AU boundaries when aren't indicated by marker
The marker bit isn't mandatory and we had in place code to guess AU
boundaries by detecting a new picture start. This guessing code
didn't work with interlaced content that has proper marker bits
to indicate the AU boundaries. It was leaking the first field buffer
and producing a corrupted output.
fixes: https://bugzilla.gnome.org/show_bug.cgi?id=728041
Rafał Mużyło [Thu, 10 Apr 2014 13:38:19 +0000 (10:38 -0300)]
pngdec: enable libpng interlaced picture handling
Makes libpng deinterlace Adam7 interlaced pictures
by default. It is the only interlaced format available
and if the picture isn't interlaced the code should behave
as before.
https://bugzilla.gnome.org/show_bug.cgi?id=726161
Sebastian Dröge [Fri, 11 Apr 2014 11:27:42 +0000 (13:27 +0200)]
souphttpsrc: Only keep-alive the connection in stop() if we have finished all previous messages
After cancelling a request we need to create a new connection.
Edward Hervey [Fri, 11 Apr 2014 09:54:12 +0000 (11:54 +0200)]
dvdec: Don't set bogus timestamp/duration
This will happen if we have an incoming stream with a non-TIME segment
Could be improved later to figure out proper pts/duration.
CID #1199702
CID #1199703
Edward Hervey [Fri, 11 Apr 2014 09:53:42 +0000 (11:53 +0200)]
dvdec: Properly refuse incoming stream without framerate
The return value wasn't properly propagated back if the caps
didn't contain a framerate
Sebastian Dröge [Thu, 10 Apr 2014 14:35:28 +0000 (16:35 +0200)]
souphttpsrc: Also retry on unexpected network failures
Sebastian Dröge [Thu, 10 Apr 2014 13:45:41 +0000 (15:45 +0200)]
souphttpsrc: New property to specify the maximum number of retries before we give up
Alexander Zallesov [Thu, 13 Mar 2014 09:56:11 +0000 (10:56 +0100)]
souphttpsrc: Change default timeout to 15 seconds
If nothing happens after 15 seconds, chances are good that
our connection will never will work. Stop after 15 seconds
instead of waiting until the system's default timeout, which
can be > 1 minute.
Jimmy Ohn [Wed, 9 Apr 2014 08:30:54 +0000 (17:30 +0900)]
qtdemux: replace duplicated variable when parsing trex atom
https://bugzilla.gnome.org/show_bug.cgi?id=727878
Sebastian Dröge [Wed, 9 Apr 2014 08:56:29 +0000 (10:56 +0200)]
souphttpsrc: Use GST_FLOW_FLUSHING when flushing, not GST_FLOW_EOS
... and reset it properly after flushing is done. Fixes playback
in many cases when buffering is used.
https://bugzilla.gnome.org/show_bug.cgi?id=727821
Sebastian Dröge [Wed, 9 Apr 2014 06:58:04 +0000 (08:58 +0200)]
qtdemux: Properly return stream flags when parsing trex atom
https://bugzilla.gnome.org/show_bug.cgi?id=727867
Matthieu Bouron [Wed, 19 Mar 2014 19:18:11 +0000 (19:18 +0000)]
osxvideosink: use the video frame API instead of the video meta API
https://bugzilla.gnome.org/show_bug.cgi?id=726738
Matthieu Bouron [Wed, 19 Mar 2014 18:47:39 +0000 (18:47 +0000)]
osxvideosink: advertize video meta API support
https://bugzilla.gnome.org/show_bug.cgi?id=726737
Edward Hervey [Tue, 8 Apr 2014 09:31:06 +0000 (11:31 +0200)]
interleave: Add missing break in switch statement
The caps query is handled entirely already before.
CID #1139757
Reynaldo H. Verdejo Pinochet [Sun, 6 Apr 2014 21:03:11 +0000 (18:03 -0300)]
tests: souphttpsrc: use SoupKnownStatusCode if needed
From libsoup docs:
Prior to 2.44 SoupStatus was called SoupKnownStatusCode,
but the individual values have always had the names they
have now.
Fixes:
https://bugzilla.gnome.org/show_bug.cgi?id=727329
Vincent Penquerc'h [Mon, 7 Apr 2014 11:58:23 +0000 (12:58 +0100)]
avidemux: use frames, not bytes, for position query in VBR streams
Coverity 1139648
Vincent Penquerc'h [Mon, 7 Apr 2014 11:42:14 +0000 (12:42 +0100)]
smpte: fix copy/paste error causing unmap on wrong buffer
Coverity 1139647
Vincent Penquerc'h [Mon, 7 Apr 2014 11:16:17 +0000 (12:16 +0100)]
deinterlace: guard against finding no suitable pattern
The code handles a -1 pattern index, and it seems plausible
that a pattern might be found later, so it seems best to not
send an element error here.
Coverity 1139766
Wim Taymans [Fri, 4 Apr 2014 15:38:14 +0000 (17:38 +0200)]
rtspsrc: update for new MIKEY API
Wim Taymans [Thu, 3 Apr 2014 15:40:01 +0000 (17:40 +0200)]
rtspsrc: send sender SSRC in the MIKEY message
Allocate a new SSRC for our RTCP messages back to the server and set
this in the MIKEY message.
Wim Taymans [Thu, 3 Apr 2014 15:39:30 +0000 (17:39 +0200)]
rtspsrc: make random number for the CSB
As recommended in the RFC
Wim Taymans [Wed, 26 Mar 2014 11:10:44 +0000 (12:10 +0100)]
rtspsrc: don't put spaces in keymgmt header
Wim Taymans [Tue, 25 Mar 2014 16:47:49 +0000 (17:47 +0100)]
rtspsrc: create and send the RTCP encryption key
Create and make a key for encrypting the RTCP packets back to the server
and wrap this in a MIKEY message that we send as a header in the SETUP
request.
Wim Taymans [Thu, 3 Apr 2014 10:18:39 +0000 (12:18 +0200)]
rtspsrc: free the srtpdec element
Wim Taymans [Thu, 3 Apr 2014 10:16:25 +0000 (12:16 +0200)]
rtspsrc: cleanup stream_free function
There is no reason to NULL all fields, we will free the stream anyway.
Wim Taymans [Thu, 3 Apr 2014 10:07:31 +0000 (12:07 +0200)]
jitterbuffer: demote warning to debug
For TCP, it is normal that we don't have timestamps so don't WARN on
it.
Nicolas Dufresne [Sat, 29 Mar 2014 23:13:06 +0000 (19:13 -0400)]
v4l2: Fix support for caps without width, height, framerate or format
For format like mpegts, width and height is rarely in the negotiated caps. This
patch fixes failure when setting format, and prevent introducing width, height,
framerate and format to the caps when fixating.
https://bugzilla.gnome.org/show_bug.cgi?id=725860
Thibault Saunier [Mon, 31 Mar 2014 16:34:13 +0000 (18:34 +0200)]
avidemux: Always set PTS=DTS on raw video streams
Thibault Saunier [Mon, 31 Mar 2014 16:31:22 +0000 (18:31 +0200)]
avidemux: Always set pixel-aspect-ratio on raw video streams
That field is mandatory in caps and if it is not present in the
AVI container, it means square pixels thus 1/1.
Tim-Philipp Müller [Sun, 30 Mar 2014 00:35:07 +0000 (00:35 +0000)]
matroska-mux: add mapping for Opus audio
Might want to consider adding channels/rate
requirement to template caps, but requires
fixing up of encoder and parser first.
Tim-Philipp Müller [Sun, 30 Mar 2014 00:31:11 +0000 (00:31 +0000)]
matroska-demux: add mapping for Opus audio codec
https://bugzilla.gnome.org/show_bug.cgi?id=727305
William Manley [Sat, 29 Mar 2014 21:21:17 +0000 (17:21 -0400)]
v4l2src: Fix support for mpegts streams
It seems that GStreamer's mpegts elements (tsdemux, tsparse) require caps
`video/mpegts,systemstream=true`. As far as I can see the significance
of systemstream is to indicate that this is a container format rather than
an elementary stream. As this is the case (and I can't understand how it
could not be the case with mpegts) I add systemstream=true to v4l2src's
caps.
This allows v4l2src to be linked with tsdemux for playback from my
Hauppauge HD-PVR with the pipeline:
v4l2src ! queue ! tsdemux ! video/x-h264 ! decodebin ! xvimagesink
In combination with the next commit this fixes using Hauppauge HD-PVR with
GStreamer 1.0+.
Vincent Penquerc'h [Tue, 14 Jan 2014 14:48:42 +0000 (14:48 +0000)]
v4l2: attempt to fix infinite (for small version of infinite) loop
Tim-Philipp Müller [Sat, 29 Mar 2014 13:20:30 +0000 (13:20 +0000)]
rtpmanager: copy sticky events when exposing pads in more places
https://bugzilla.gnome.org/show_bug.cgi?id=724712
Rico Tzschichholz [Fri, 28 Mar 2014 19:11:36 +0000 (20:11 +0100)]
v4l2: fix distcheck
Make sure ext/*.h are dist'ed
Tim-Philipp Müller [Thu, 27 Mar 2014 19:51:50 +0000 (19:51 +0000)]
ximagesrc: only extrapolate alpha mask for 32-bit depth
Instead of passing bogus alpha mask values when there's no alpha.
https://bugzilla.gnome.org/show_bug.cgi?id=726833
Nicolas Dufresne [Fri, 21 Mar 2014 17:03:17 +0000 (13:03 -0400)]
ximagesrc: Add ARGB/BGRA support
Ognyan Tonchev [Thu, 20 Mar 2014 14:28:26 +0000 (15:28 +0100)]
jpegpay: consider header len when calculating payload len
Fixed https://bugzilla.gnome.org/show_bug.cgi?id=726777
Sebastian Dröge [Wed, 26 Mar 2014 07:03:22 +0000 (08:03 +0100)]
jpegdec: All frames are sync points
Sebastian Dröge [Wed, 26 Mar 2014 07:02:43 +0000 (08:02 +0100)]
pngdec: All frames are sync points
Mark Nauwelaerts [Sat, 22 Mar 2014 16:07:46 +0000 (17:07 +0100)]
matroskademux: segment closing not needed in 1.x
... as sender should keep track of segment base accumulation.
Rather, it may have some adverse effects as a spurious segment event,
e.g. in collectpads.
Mark Nauwelaerts [Sat, 22 Mar 2014 16:05:17 +0000 (17:05 +0100)]
matroskademux: early sending pending codec-data for all streams
... at least before syncing across all streams might cause some gap
activity on any of those streams, notably sparse streams.
See also #712134
Mark Nauwelaerts [Sat, 22 Mar 2014 16:01:27 +0000 (17:01 +0100)]
matroskamux: handle both sticky and non-sticky custom event
Wim Taymans [Tue, 25 Mar 2014 10:44:27 +0000 (11:44 +0100)]
rtspsrc: only expose streams on dataflow
Only probe on buffers, we don't want to expose the streams on events.
Wim Taymans [Tue, 25 Mar 2014 10:36:40 +0000 (11:36 +0100)]
rtspsrc: copy sticky events to ghostpad
When we expose internal pads as ghostpads, first copy the sticky events
so that we have the caps and segment etc.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724712
Wim Taymans [Mon, 24 Mar 2014 13:25:43 +0000 (14:25 +0100)]
rtspsrc: srtp handling
Wim Taymans [Tue, 25 Mar 2014 09:23:00 +0000 (10:23 +0100)]
rtspsrc: set SSRC on caps if known
Wim Taymans [Mon, 24 Mar 2014 15:58:25 +0000 (16:58 +0100)]
rtspsrc: put caps on udpsrc instead of using the signals
Try to avoid using the request-pt-map to get caps but set them directly
on the udpsrc element. That way, the caps get nicely transformed as they
pass through the different elements in the rtpbin, including the AUX and
decoder/encoder elements.
Wim Taymans [Mon, 24 Mar 2014 14:35:09 +0000 (15:35 +0100)]
rtspsrc: use profile to set rtcp caps
Use the negotiated profile to set x-rtcp or x-srtcp caps
Wim Taymans [Mon, 24 Mar 2014 14:34:26 +0000 (15:34 +0100)]
rtspsrc: set udpsrc to READY
READY is enough to allocate ports now
Wim Taymans [Mon, 24 Mar 2014 13:25:28 +0000 (14:25 +0100)]
udpsrc: improve caps handling
Protect caps with the lock.
Don't push the caps event from the set_property function but mark the
pad for reconfiguration so that it will renegotiate and push the new
caps event in the streaming thread.
Wim Taymans [Mon, 24 Mar 2014 14:15:34 +0000 (15:15 +0100)]
udpsrc: open/close socket in NULL<->READY state
We should open the socket when going to NULL<->READY and not in the
start/stop vemthod, which is called in READY<->PAUSED. This makes it
possible to allocate a socket without going to PAUSED (and starting the
negotiation).
Wim Taymans [Mon, 24 Mar 2014 13:35:01 +0000 (14:35 +0100)]
rtspsrc: free caps in ptmap array
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726696
Wim Taymans [Thu, 20 Mar 2014 10:12:51 +0000 (11:12 +0100)]
rtspsrc: handle NULL rtpmap and parse error better
Olivier Crête [Mon, 17 Mar 2014 03:46:22 +0000 (23:46 -0400)]
configure: Don't check for gudev if video4linux2 is not present
Olivier Crête [Mon, 17 Mar 2014 03:19:55 +0000 (23:19 -0400)]
configure: Don't fail if gudev is not present
PKG_CHECK_MODULES has the bad habit of failing the build if it doesn't
get what it wants, prevent that.
Olivier Crête [Fri, 2 Nov 2012 12:33:13 +0000 (13:33 +0100)]
v4l2: Implement GstDeviceMonitor subclass
https://bugzilla.gnome.org/show_bug.cgi?id=678402
Olivier Crête [Mon, 12 Aug 2013 15:49:21 +0000 (11:49 -0400)]
pulse: Add device monitors
https://bugzilla.gnome.org/show_bug.cgi?id=678402
Olivier Crête [Sun, 16 Mar 2014 23:24:26 +0000 (19:24 -0400)]
v4l2: Remove GstPropertyProbe leftovers
Mathieu Duponchelle [Wed, 19 Feb 2014 02:04:03 +0000 (03:04 +0100)]
videomixer: Port to new collectpads API
See: https://bugzilla.gnome.org/show_bug.cgi?id=724705
Nicolas Dufresne [Sun, 16 Mar 2014 14:26:04 +0000 (15:26 +0100)]
v4l2: Add types compatiblity for other OS
Adds type compatiblity with other OS like BSD. This uses types mapping macro to
avoid conflict with existing defined types. We resuse glib types as these are
already available on supported platforms. This is GCC only because of the
le32 type that uses bitwise attribute.
https://bugzilla.gnome.org/show_bug.cgi?id=726453
Tim-Philipp Müller [Sun, 16 Mar 2014 15:55:00 +0000 (15:55 +0000)]
pulse: fix format info to caps conversion for mulaw
Olivier Crête [Tue, 13 Aug 2013 16:10:42 +0000 (12:10 -0400)]
pulse: Make gst_pulse_format_info_to_caps() shared
https://bugzilla.gnome.org/show_bug.cgi?id=678402
Nicolas Dufresne [Sat, 15 Mar 2014 17:41:16 +0000 (18:41 +0100)]
v4l2: Fix typo V4L_DIR intead of V4L2_DIR
Nicolas Dufresne [Sat, 15 Mar 2014 17:05:32 +0000 (18:05 +0100)]
v4l2-build: Set HAVE_GST_V4L2 if headers are present
The name of HAVE_ need to match the USE_. Now set HAVE_GST_V4L2 if
videodev2.h is found.
Nicolas Dufresne [Sat, 15 Mar 2014 15:47:51 +0000 (16:47 +0100)]
v4l2: Actually build the plugin
The checks were removed inadvertedly in previous patch and not replaced.
Re-introduce the configure checks and some of the checks in order to enable
this plugin again. We only check if videodev2.h exist on the platform to
avoid building on Windows or OSX, though we build against our own copy. This
was breaking the build on built-bot.
Nicolas Dufresne [Sat, 15 Mar 2014 12:47:42 +0000 (13:47 +0100)]
translation: PO file changes caused by POTFILE.in update
Nicolas Dufresne [Sat, 15 Mar 2014 12:17:21 +0000 (13:17 +0100)]
v4l2: Remove XV support
XV support for v4l2 never became upstream and ended up being
commented out with an undef for a long time now.
Nicolas Dufresne [Sat, 15 Mar 2014 10:13:05 +0000 (11:13 +0100)]
v4l2: Use a copy of videodev2.h header
With years the amount of ifdef have grown up and we are not even sure if the
old code path compiles. Each time we need to update the v4l2 framework to add
the new feature, we break compilation on older kernel. With exception of two
controls in the video orientation control, this patch get rid of all ifdef by
including the latest version of videodev2.h inside GStreamer.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723446
Sebastian Dröge [Wed, 12 Mar 2014 14:32:55 +0000 (15:32 +0100)]
souphttpsrc: Add properties for selecting SSL/TLS certificate checking
And by default properly check certificates against the system's CA
certificates. Everything else is not a good default at all.
Per x Johansson [Tue, 11 Mar 2014 13:56:30 +0000 (14:56 +0100)]
matroskademux: fix assert on fps lower than 1
Fixes assert caused by gst_duration_to_fraction calling
gst_util_uint64_scale_int with a denominator of 0 when fps is less
than 1.
https://bugzilla.gnome.org/show_bug.cgi?id=726106
Thiago Santos [Tue, 11 Mar 2014 03:46:06 +0000 (00:46 -0300)]
videomixer2: store video info with buffers to keep it in sync
Instead the queued buffer might have an old caps while the pad
is already storing the information for a new caps. Mixing those
while handling buffers will often lead to issues
https://bugzilla.gnome.org/show_bug.cgi?id=725948
William Manley [Sun, 9 Mar 2014 00:29:58 +0000 (19:29 -0500)]
v4l2: Fix typo contol -> control
https://bugzilla.gnome.org/show_bug.cgi?id=725632
William Manley [Tue, 4 Mar 2014 01:15:49 +0000 (01:15 +0000)]
v4l2: Normalise control names in the same way as v4l2-ctl
V4L2 kernel drivers allow configuration of the hardware settings via a
mechanism called controls. These can be referred to by name such as
"Brightness" and "White Balance Temperature". The user-space command line
client for setting these controls (v4l2-ctl) normalises these names such
that they only contain lower case alphanumeric characters and the
underscore '_'. e.g:
Kernel v4l2-ctl
----------------------------------------------------
Brightness brightness
White Balance Temperature white_balance_temperature
Focus (absolute) focus_absolute
GStreamer seems to want to follow this pattern but failed for controls with
more than one consecutive non-alphanum character. e.g. GStreamer would
produce "focus__absolute_" rather than "focus_absolute".
This commit fixes that issue. Backwards compatibility is preserved by
normalising all control names before comparison.
https://bugzilla.gnome.org/show_bug.cgi?id=725632