git.cweiske.de
/
enigma2.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
91f1726
)
fix id3 tag reading on MP3s
author
Fraxinas
<andreas.frisch@multimedia-labs.de>
Tue, 9 Dec 2008 18:58:18 +0000
(19:58 +0100)
committer
Fraxinas
<andreas.frisch@multimedia-labs.de>
Tue, 9 Dec 2008 18:58:18 +0000
(19:58 +0100)
lib/service/servicemp3.cpp
patch
|
blob
|
history
diff --git
a/lib/service/servicemp3.cpp
b/lib/service/servicemp3.cpp
index 2d21773167b3bab282cdb6c3be1d91e5c2badba8..4d4b6e15dd411b685aaa33989eef3e49a1110010 100644
(file)
--- a/
lib/service/servicemp3.cpp
+++ b/
lib/service/servicemp3.cpp
@@
-187,7
+187,7
@@
eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eAp
CONNECT(m_pump.recv_msg, eServiceMP3::gstPoll);
GstElement *source = 0;
GstElement *decoder = 0, *conv = 0, *flt = 0, *parser = 0, *sink = 0; /* for audio */
CONNECT(m_pump.recv_msg, eServiceMP3::gstPoll);
GstElement *source = 0;
GstElement *decoder = 0, *conv = 0, *flt = 0, *parser = 0, *sink = 0; /* for audio */
- GstElement *audio = 0, *switch_audio = 0, *queue_audio = 0, *video = 0, *queue_video = 0, *videodemux = 0, *audiodemux = 0;
+ GstElement *audio = 0, *switch_audio = 0, *queue_audio = 0, *video = 0, *queue_video = 0, *videodemux = 0, *audiodemux = 0
, *id3demux
;
m_state = stIdle;
eDebug("SERVICEMP3 construct!");
m_state = stIdle;
eDebug("SERVICEMP3 construct!");
@@
-373,16
+373,19
@@
eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eAp
{
case atMP3:
{
{
case atMP3:
{
- if ( !audiodemux )
+ id3demux = gst_element_factory_make("id3demux", "id3demux");
+ if ( !id3demux )
{
{
- parser = gst_element_factory_make("mp3parse", "audioparse");
- if (!parser)
- {
- m_error_message += "failed to create Gstreamer element mp3parse\n";
- break;
- }
+ m_error_message += "failed to create Gstreamer element id3demux\n";
+ break;
}
}
- sink = gst_element_factory_make("dvbaudiosink", "audiosink");
+ parser = gst_element_factory_make("mp3parse", "audiosink");
+ if ( !parser )
+ {
+ m_error_message += "failed to create Gstreamer element mp3parse\n";
+ break;
+ }
+ sink = gst_element_factory_make("dvbaudiosink", "audiosink2");
if ( !sink )
m_error_message += "failed to create Gstreamer element dvbaudiosink\n";
else
if ( !sink )
m_error_message += "failed to create Gstreamer element dvbaudiosink\n";
else
@@
-532,17
+535,18
@@
eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eAp
else
{
gst_bin_add_many (GST_BIN (m_gst_pipeline), source, sink, NULL);
else
{
gst_bin_add_many (GST_BIN (m_gst_pipeline), source, sink, NULL);
- if ( parser )
+ if ( parser
&& id3demux
)
{
{
- gst_bin_add (GST_BIN (m_gst_pipeline), parser);
- gst_element_link_many(source, parser, sink, NULL);
+ gst_bin_add_many (GST_BIN (m_gst_pipeline), parser, id3demux, NULL);
+ gst_element_link(source, id3demux);
+ g_signal_connect(id3demux, "pad-added", G_CALLBACK (gstCBpadAdded), this);
+ gst_element_link(parser, sink);
}
if ( audiodemux )
{
gst_bin_add (GST_BIN (m_gst_pipeline), audiodemux);
g_signal_connect(audiodemux, "pad-added", G_CALLBACK (gstCBpadAdded), this);
gst_element_link(source, audiodemux);
}
if ( audiodemux )
{
gst_bin_add (GST_BIN (m_gst_pipeline), audiodemux);
g_signal_connect(audiodemux, "pad-added", G_CALLBACK (gstCBpadAdded), this);
gst_element_link(source, audiodemux);
- eDebug("linked source, audiodemux, sink");
}
audioStream audio;
audio.type = sourceinfo.audiotype;
}
audioStream audio;
audio.type = sourceinfo.audiotype;
@@
-1217,7
+1221,7
@@
void eServiceMP3::gstCBpadAdded(GstElement *decodebin, GstPad *pad, gpointer use
else
{
GstElement *queue_audio = gst_bin_get_by_name(pipeline , "queue_audio");
else
{
GstElement *queue_audio = gst_bin_get_by_name(pipeline , "queue_audio");
- if ( queue_audio)
+ if ( queue_audio
)
{
gst_pad_link(pad, gst_element_get_static_pad(queue_audio, "sink"));
_this->m_audioStreams.push_back(audio);
{
gst_pad_link(pad, gst_element_get_static_pad(queue_audio, "sink"));
_this->m_audioStreams.push_back(audio);