diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2010-01-02 10:54:57 +0100 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2010-01-02 10:54:57 +0100 |
| commit | 54e5f0d7d4e983b448b9cf387ed62291595cc5a5 (patch) | |
| tree | 5cff3d299ca8fdcdb8f7f6e6d12768a25b23edb7 /lib/service | |
| parent | 45aefe230c922417067e3409039e4372340e894f (diff) | |
| parent | d8480166af2ce1378b7272d3342ce47227ccceff (diff) | |
| download | enigma2-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.cpp | 9 | ||||
| -rw-r--r-- | lib/service/servicemp3.cpp | 26 | ||||
| -rw-r--r-- | lib/service/servicexine.cpp | 2 |
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) |
