void AudioDestinationGStreamer::finishBuildingPipelineAfterWavParserPadReady(GstPad* pad)
{
+ GstStructure *props;
+
ASSERT(m_wavParserAvailable);
- GRefPtr<GstElement> audioSink = gst_element_factory_make("autoaudiosink", 0);
+ GRefPtr<GstElement> audioSink = gst_element_factory_make("pulsesink", 0);
m_audioSinkAvailable = audioSink;
if (!audioSink) {
return;
}
+ props = gst_structure_from_string("props,media.role=music", NULL);
+ g_object_set(audioSink.get(), "stream-properties", props, NULL);
+ gst_structure_free(props);
+
// Autoaudiosink does the real sink detection in the GST_STATE_NULL->READY transition
// so it's best to roll it to READY as soon as possible to ensure the underlying platform
// audiosink was loaded correctly.
}
}
+const char * MediaPlayerPrivateGStreamer::mediaClass() const
+{
+ static const gchar *default_media_class = "music";
+
+ return default_media_class;
+}
+
void MediaPlayerPrivateGStreamer::createGSTPlayBin()
{
ASSERT(!m_playBin);
+ const gchar *media_class = mediaClass();
+
m_playBin = gst_element_factory_make(gPlaybinName, "play");
+ GstElement *sink = gst_element_factory_make("pulsesink", "audio-sink");
+ if (sink != NULL) {
+ GstStructure *props;
+ gchar prop_str[256] = "props,media.role=";
+
+ strncat(prop_str, media_class, sizeof(prop_str));
+ prop_str[sizeof(prop_str)-1] = 0;
+
+ props = gst_structure_from_string(prop_str, NULL);
+ g_object_set(sink, "stream-properties", props, NULL);
+ gst_structure_free(props);
+
+ g_object_set(m_playBin, "audio-sink", sink, NULL);
+ }
+
#ifndef GST_API_VERSION_1
m_gstGWorld = GStreamerGWorld::createGWorld(m_playBin);
#endif
void processBufferingStats(GstMessage*);
+ const char * mediaClass() const;
+
private:
MediaPlayer* m_player;
GstElement* m_playBin;
m_afilter = gst_element_factory_make("capsfilter", 0);
m_asink = gst_element_factory_make("pulsesink", 0);
+ if (m_asink != NULL) {
+ props = gst_structure_from_string("props,media.role=camera", NULL);
+ g_object_set(G_OBJECT(m_asink), "stream-properties", props, NULL);
+ gst_structure_free(props);
+ }
+
caps = gst_caps_from_string(ACAPS);
g_object_set(G_OBJECT(m_afilter), "caps", caps, NULL);
gst_caps_unref(caps);