[gstreamer-bugs] [Bug 601775] New: GstAudioChannelPosition is not registered when working with the registry

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Nov 13 00:46:39 PST 2009


https://bugzilla.gnome.org/show_bug.cgi?id=601775
  GStreamer | gstreamer (core) | unspecified

           Summary: GstAudioChannelPosition is not registered when working
                    with the registry
    Classification: Desktop
           Product: GStreamer
           Version: unspecified
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: ensonic at sonicpulse.de
         QAContact: gstreamer-bugs at lists.sourceforge.net
      GNOME target: ---
     GNOME version: ---


When searching for an item from the registry, I iterate over factories and
probe what caps the can take:

for(node=audiosink_names;node;node=g_list_next(node)) {
  GstElementFactory * const factory=gst_element_factory_find(node->data);

  // can the sink accept raw audio?
  if(gst_element_factory_can_sink_caps(factory,caps)) {
    ...

This is triggering a CRISTIAL warning:
GStreamer-CRITICAL **: Could not convert static caps "audio/x-raw-float,
endianness=(int)1234, width=(int)32, channels=(int)1,
channel-positions=(GstAudioChannelPosition)< {
GST_AUDIO_CHANNEL_POSITION_FRONT_MONO } >"


Below is a log of details. The problem is that the caps stored in the registry
cannot be deserialized as they contain GstAudioChannelPosition mappings (form
gst-plugins-base/gst-libs/gst/audio) and when working with the registry, its
enum types are not yet registered. See log below.

I wonder how we can fix this. 

1) Forbid GstAudioChannelPosition in template caps?
2) add a gst_audio_init() and require apps to call it?

For now I added a GST_TYPE_AUDIO_CHANNEL_POSITION; infront of the loop above
and that works around the problem.

0:00:07.674125076 19931  0x80e4168 INFO                 bt-core
sink-bin.c:339:bt_sink_bin_determine_plugin_name: get audiosink from gst
registry by rank
0:00:07.674148333 19931  0x80e4168 INFO                 bt-core
sink-bin.c:344:bt_sink_bin_determine_plugin_name:   probing audio sink:
"ladspa-mux-cr"
0:00:07.674169006 19931  0x80e4168 DEBUG                default
gststructure.c:1940:gst_structure_parse_field: trying field name 'endianness'
0:00:07.674185279 19931  0x80e4168 DEBUG                default
gststructure.c:1991:gst_structure_parse_value: trying type name 'int'
0:00:07.674202111 19931  0x80e4168 DEBUG                default
gststructure.c:1940:gst_structure_parse_field: trying field name 'width'
0:00:07.674219362 19931  0x80e4168 DEBUG                default
gststructure.c:1991:gst_structure_parse_value: trying type name 'int'
0:00:07.674235635 19931  0x80e4168 DEBUG                default
gststructure.c:1940:gst_structure_parse_field: trying field name 'channels'
0:00:07.674250721 19931  0x80e4168 DEBUG                default
gststructure.c:1991:gst_structure_parse_value: trying type name 'int'
0:00:07.674273419 19931  0x80e4168 DEBUG                default
gststructure.c:1940:gst_structure_parse_field: trying field name
'channel-positions'
0:00:07.674291578 19931  0x80e4168 DEBUG                default
gststructure.c:1991:gst_structure_parse_value: trying type name
'GstAudioChannelPosition'
0:00:07.674306524 19931  0x80e4168 WARN                 default
gststructure.c:1995:gst_structure_parse_value: invalid type
0:00:07.674320422 19931  0x80e4168 WARN                 default
gststructure.c:1945:gst_structure_parse_field: failed to parse value
channel-positions=(GstAudioChannelPosition)< {
GST_AUDIO_CHANNEL_POSITION_FRONT_MONO } >
0:00:07.674337813 19931  0x80e4168 WARN                 default
gststructure.c:2124:gst_structure_from_string: Failed to parse field,
r=channel-positions=(GstAudioChannelPosition)< {
GST_AUDIO_CHANNEL_POSITION_FRONT_MONO } >

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list