aboutsummaryrefslogtreecommitdiff
path: root/lib/service
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2010-01-02 10:54:57 +0100
committerghost <andreas.monzner@multimedia-labs.de>2010-01-02 10:54:57 +0100
commit54e5f0d7d4e983b448b9cf387ed62291595cc5a5 (patch)
tree5cff3d299ca8fdcdb8f7f6e6d12768a25b23edb7 /lib/service
parent45aefe230c922417067e3409039e4372340e894f (diff)
parentd8480166af2ce1378b7272d3342ce47227ccceff (diff)
downloadenigma2-54e5f0d7d4e983b448b9cf387ed62291595cc5a5.tar.gz
enigma2-54e5f0d7d4e983b448b9cf387ed62291595cc5a5.zip
Merge branch 'bug_274_disable_fast_winding_for_non_ts'
Diffstat (limited to 'lib/service')
-rw-r--r--lib/service/servicedvb.cpp9
-rw-r--r--lib/service/servicemp3.cpp26
-rw-r--r--lib/service/servicexine.cpp2
3 files changed, 34 insertions, 3 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index b5e2651f..69329ce0 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -1387,7 +1387,14 @@ RESULT eDVBServicePlay::setTrickmode(int trick)
RESULT eDVBServicePlay::isCurrentlySeekable()
{
- return m_is_pvr || m_timeshift_active;
+ int ret = 0;
+ if (m_decoder)
+ {
+ ret = (m_is_pvr || m_timeshift_active) ? 3 : 0; // fast forward/backward possible and seeking possible
+ if (m_decoder->getVideoWidth() == -1)
+ ret &= ~2;
+ }
+ return ret;
}
RESULT eDVBServicePlay::frontendInfo(ePtr<iFrontendInformation> &ptr)
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index d3eaa262..cf71f781 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -640,7 +640,31 @@ RESULT eServiceMP3::setTrickmode(int trick)
RESULT eServiceMP3::isCurrentlySeekable()
{
- return 1;
+ int ret = 3; // seeking and fast/slow winding possible
+ GstElement *sink;
+
+ if (!m_gst_playbin)
+ return 0;
+ if (m_state != stRunning)
+ return 0;
+
+ g_object_get (G_OBJECT (m_gst_playbin), "video-sink", &sink, NULL);
+
+ // disable fast winding yet when a dvbvideosink or dvbaudiosink is used
+ // for this we must do some changes on different places.. (gstreamer.. our sinks.. enigma2)
+ if (sink) {
+ ret &= ~2; // only seeking possible
+ gst_object_unref(sink);
+ }
+ else {
+ g_object_get (G_OBJECT (m_gst_playbin), "audio-sink", &sink, NULL);
+ if (sink) {
+ ret &= ~2; // only seeking possible
+ gst_object_unref(sink);
+ }
+ }
+
+ return ret;
}
RESULT eServiceMP3::info(ePtr<iServiceInformation>&i)
diff --git a/lib/service/servicexine.cpp b/lib/service/servicexine.cpp
index 44e6a6e0..6b9adfb9 100644
--- a/lib/service/servicexine.cpp
+++ b/lib/service/servicexine.cpp
@@ -315,7 +315,7 @@ RESULT eServiceXine::setTrickmode(int trick)
RESULT eServiceXine::isCurrentlySeekable()
{
- return 1;
+ return 3;
}
RESULT eServiceXine::info(ePtr<iServiceInformation>&i)