48
48
static int count = 0;
49
49
m_name = "AudioOutput" + QString::number(count++);
50
if (m_backend->isValid()) {
51
m_audioBin = gst_bin_new (NULL);
52
gst_object_ref (GST_OBJECT (m_audioBin));
53
gst_object_sink (GST_OBJECT (m_audioBin));
55
m_conv = gst_element_factory_make ("audioconvert", NULL);
57
// Get category from parent
58
Phonon::Category category = Phonon::NoCategory;
59
if (Phonon::AudioOutput *audioOutput = qobject_cast<Phonon::AudioOutput *>(parent))
60
category = audioOutput->category();
62
m_audioSink = m_backend->deviceManager()->createAudioSink(category);
63
m_volumeElement = gst_element_factory_make ("volume", NULL);
64
GstElement *queue = gst_element_factory_make ("queue", NULL);
65
GstElement *audioresample = gst_element_factory_make ("audioresample", NULL);
67
if (queue && m_audioBin && m_conv && audioresample && m_audioSink && m_volumeElement) {
68
gst_bin_add_many(GST_BIN(m_audioBin), queue, m_conv,
69
audioresample, m_volumeElement, m_audioSink, NULL);
71
if (gst_element_link_many(queue, m_conv, audioresample, m_volumeElement,
73
// Add ghost sink for audiobin
74
GstPad *audiopad = gst_element_get_static_pad (queue, "sink");
75
gst_element_add_pad (m_audioBin, gst_ghost_pad_new ("sink", audiopad));
76
gst_object_unref (audiopad);
77
m_isValid = true; // Initialization ok, accept input
51
m_audioBin = gst_bin_new (NULL);
52
gst_object_ref (GST_OBJECT (m_audioBin));
53
gst_object_sink (GST_OBJECT (m_audioBin));
55
m_conv = gst_element_factory_make ("audioconvert", NULL);
57
// Get category from parent
58
Phonon::Category category = Phonon::NoCategory;
59
if (Phonon::AudioOutput *audioOutput = qobject_cast<Phonon::AudioOutput *>(parent))
60
category = audioOutput->category();
62
m_audioSink = m_backend->deviceManager()->createAudioSink(category);
63
m_volumeElement = gst_element_factory_make ("volume", NULL);
64
GstElement *queue = gst_element_factory_make ("queue", NULL);
65
GstElement *audioresample = gst_element_factory_make ("audioresample", NULL);
67
if (queue && m_audioBin && m_conv && audioresample && m_audioSink && m_volumeElement) {
68
gst_bin_add_many(GST_BIN(m_audioBin), queue, m_conv,
69
audioresample, m_volumeElement, m_audioSink, NULL);
71
if (gst_element_link_many(queue, m_conv, audioresample, m_volumeElement,
73
// Add ghost sink for audiobin
74
GstPad *audiopad = gst_element_get_static_pad (queue, "sink");
75
gst_element_add_pad (m_audioBin, gst_ghost_pad_new ("sink", audiopad));
76
gst_object_unref (audiopad);
77
m_isValid = true; // Initialization ok, accept input