aboutsummaryrefslogtreecommitdiff
path: root/lib/service/servicemp3.cpp
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2009-06-03 13:28:31 +0200
committerFraxinas <andreas.frisch@multimedia-labs.de>2009-06-03 13:28:31 +0200
commit2aa38f5ceb6991e26df20dc0f463aa64466f09ed (patch)
tree2f834312b4074e31b3f637a1ff86a3023a1ae3a4 /lib/service/servicemp3.cpp
parent65fdd1a9bcf67c1f63501a13f12b4aff5a2d46b7 (diff)
downloadenigma2-2aa38f5ceb6991e26df20dc0f463aa64466f09ed.tar.gz
enigma2-2aa38f5ceb6991e26df20dc0f463aa64466f09ed.zip
introduce new iStreamedService interface (e.g. controlling buffer for streaming media)
Diffstat (limited to 'lib/service/servicemp3.cpp')
-rw-r--r--lib/service/servicemp3.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index fd3587af..2ddfe925 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -196,6 +196,7 @@ eServiceMP3::eServiceMP3(const char *filename, const char *title): m_filename(fi
m_currentSubtitleStream = 0;
m_subtitle_widget = 0;
m_currentTrickRatio = 0;
+ m_buffer_size = 1*1024*1024;
CONNECT(m_seekTimeout->timeout, eServiceMP3::seekTimeoutCB);
CONNECT(m_subtitle_sync_timer->timeout, eServiceMP3::pushSubtitles);
CONNECT(m_pump.recv_msg, eServiceMP3::gstPoll);
@@ -332,6 +333,7 @@ eServiceMP3::eServiceMP3(const char *filename, const char *title): m_filename(fi
}
gst_element_set_state (m_gst_playbin, GST_STATE_PLAYING);
+ setBufferSize(m_buffer_size);
}
eServiceMP3::~eServiceMP3()
@@ -1214,6 +1216,14 @@ eDebug("AUDIO STRUCT=%s", g_type);
g_free(eventname);
}
}
+ break;
+ }
+ case GST_MESSAGE_BUFFERING:
+ {
+ GstBufferingMode mode;
+ gst_message_parse_buffering(msg, &(m_bufferInfo.bufferPercent));
+ gst_message_parse_buffering_stats(msg, &mode, &(m_bufferInfo.avgInRate), &(m_bufferInfo.avgOutRate), &(m_bufferInfo.bufferingLeft));
+ m_event((iPlayableService*)this, evBuffering);
}
default:
break;
@@ -1401,6 +1411,7 @@ RESULT eServiceMP3::disableSubtitles(eWidget *parent)
PyObject *eServiceMP3::getCachedSubtitle()
{
+// eDebug("eServiceMP3::getCachedSubtitle");
Py_RETURN_NONE;
}
@@ -1429,6 +1440,31 @@ PyObject *eServiceMP3::getSubtitleList()
return l;
}
+RESULT eServiceMP3::streamed(ePtr<iStreamedService> &ptr)
+{
+ ptr = this;
+ return 0;
+}
+
+PyObject *eServiceMP3::getBufferCharge()
+{
+ ePyObject tuple = PyTuple_New(5);
+ PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(m_bufferInfo.bufferPercent));
+ PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong(m_bufferInfo.avgInRate));
+ PyTuple_SET_ITEM(tuple, 2, PyInt_FromLong(m_bufferInfo.avgOutRate));
+ PyTuple_SET_ITEM(tuple, 3, PyInt_FromLong(m_bufferInfo.bufferingLeft));
+ PyTuple_SET_ITEM(tuple, 4, PyInt_FromLong(m_buffer_size));
+ return tuple;
+}
+
+int eServiceMP3::setBufferSize(int size)
+{
+ m_buffer_size = size;
+ g_object_set (G_OBJECT (m_gst_playbin), "buffer-size", m_buffer_size, NULL);
+ return 0;
+}
+
+
#else
#warning gstreamer not available, not building media player
#endif