@mx3L
Big Thanks for the solution
Thanks for the zip
Solution seems to work fine
Tested a few files
Thanks for the merge
Now I can play almost all files, except some obscure one's.
Posted 20 June 2014 - 14:15
@mx3L
Big Thanks for the solution
Thanks for the zip
Solution seems to work fine
Tested a few files
Thanks for the merge
Now I can play almost all files, except some obscure one's.
Hardware: Master VU Uno 4K SE 1x Mut@nt HD51.4K & 2x ZgemmaH9T
Software : Pli (v7) (7.1rc) 2019
Posted 20 June 2014 - 14:24
I think all credits should go to mx3L, merging isn't much effort
* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.
Posted 15 March 2015 - 12:34
Suggestion to improve unpause performance:
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp index 59237bc..48fb8e4 100644 --- a/lib/service/servicemp3.cpp +++ b/lib/service/servicemp3.cpp @@ -467,8 +467,10 @@ eServiceMP3::eServiceMP3(eServiceReference ref): m_sourceinfo.is_video = TRUE; } if ( strstr(filename, "://") ) + { m_sourceinfo.is_streaming = TRUE; - + m_sourceinfo.protocol = m_ref.path.substr(0, m_ref.path.find("://")); + } gchar *uri; if ( m_sourceinfo.is_streaming ) @@ -861,7 +863,6 @@ RESULT eServiceMP3::trickSeek(gdouble ratio) return 0; } - m_currentTrickRatio = ratio; bool validposition = false; gint64 pos = 0; @@ -876,7 +877,28 @@ RESULT eServiceMP3::trickSeek(gdouble ratio) if (validposition) { - if (ratio >= 0.0) + if (m_currentTrickRatio == 1.0 && ratio == 1.0) + { +#if GST_VERSION_MAJOR >= 1 + if ( !m_sourceinfo.is_streaming || (strcasecmp(m_sourceinfo.protocol.c_str(), "http") && strcasecmp(m_sourceinfo.protocol.c_str(), "https") ) == 0) +#else + if ( !m_sourceinfo.is_streaming ) +#endif + { + eDebug("eServiceMP3::trickSeek - standard unpause"); + if ( !(gst_element_get_state(m_gst_playbin, NULL, NULL, 100LL * GST_MSECOND) == GST_STATE_CHANGE_SUCCESS) ) + { + eDebug("eServiceMP3:trickSeek - standard unpause was not successfull, doing seeking unpause"); + gst_element_seek(m_gst_playbin, ratio, GST_FORMAT_TIME, (GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT), GST_SEEK_TYPE_SET, pos, GST_SEEK_TYPE_SET, -1); + } + } + else + { + eDebug("eServiceMP3::trickSeek - seeking unpause"); + gst_element_seek(m_gst_playbin, ratio, GST_FORMAT_TIME, (GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT), GST_SEEK_TYPE_SET, pos, GST_SEEK_TYPE_SET, -1); + } + } + else if (ratio >= 0.0) { gst_element_seek(m_gst_playbin, ratio, GST_FORMAT_TIME, (GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SKIP), GST_SEEK_TYPE_SET, pos, GST_SEEK_TYPE_SET, -1); } @@ -886,7 +908,7 @@ RESULT eServiceMP3::trickSeek(gdouble ratio) gst_element_seek(m_gst_playbin, ratio, GST_FORMAT_TIME, (GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SKIP), GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_SET, pos); } } - + m_currentTrickRatio = ratio; m_prev_decoder_time = -1; m_decoder_time_valid_state = 0; return 0; diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h index b3a685e..ab793e4 100644 --- a/lib/service/servicemp3.h +++ b/lib/service/servicemp3.h @@ -202,6 +202,7 @@ public: containertype_t containertype; bool is_video; bool is_streaming; + std::string protocol; sourceStream() :audiotype(atUnknown), containertype(ctNone), is_video(FALSE), is_streaming(FALSE) {
1. We are doing unpause by seeking to current position.
- this is unnecessary thing to do for local (on GST1.0 also for http[s] streams), since we don't timeout on local streams(on GST1.0 souphttpsrc will not timeout - https://bugzilla.gno...g.cgi?id=683536)
- sometimes state change didn't happen in standard unpause, so then it will fallback to seeking unpause.
2. We are doing unpausing by default seeking(not keyframe seeking)
- this is also unneccesary, we can do keyframe seeking instead, since we are doing it already but with overhead caused by looking for segment offset, which we are ignoring in our sinks:
1. DEFAULT BEHAVIOUR: When a seek to a certain position is requested, the demuxer/parser will do two things (ignoring flushing and segment seeks, and simplified for illustration purposes): - send a segment event with a new start position - start pushing data/buffers again To ensure that the data corresponding to the requested seek position can actually be decoded, a demuxer or parser needs to start pushing data from a keyframe/keyunit at or before the requested seek position. Unless requested differently (via the KEY_UNIT flag), the start of the segment event should be the requested seek position. So by default a demuxer/parser will then start pushing data from position DATA and send a segment event with start position SEG_START, and DATA <= SEG_START. If DATA < SEG_START, a well-behaved video decoder will start decoding frames from DATA, but take into account the segment configured by the demuxer via the segment event, and only actually output decoded video frames from SEG_START onwards, dropping all decoded frames that are before the segment start and adjusting the timestamp/duration of the buffer that overlaps the segment start ("clipping"). A not-so-well-behaved video decoder will start decoding frames from DATA and push decoded video frames out starting from position DATA, in which case the frames that are before the configured segment start will usually be dropped/clipped downstream (e.g. by the video sink).
- http://cgit.freedesk...art-seeking.txt
So what's added value:
1. faster unpause, starting with same frame as in pause mode
1. unpausing will now work on some mp4, which didn't work before(big gops?)
2. added possibility to prefill buffer in default buffering mode for http(s) streams, by pause - > wait to 100% buffer - > unpause, since buffer will be not dropped by seeking event
Tested on gstreamer1.0.
Posted 15 March 2015 - 17:33
Did some of you test this? I know this is a hairy subject, pausing/trickle mode/unpausing, it can break very easily (which it did various times in the past). Also it can work on one brand and totally break another.
* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.
Posted 18 March 2015 - 18:28
* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.
Posted 20 March 2015 - 14:55
Nobody developing has a VU+ receiver?
* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.
ET9200 von 4.0 auf 8.1 ->tuner ProblemStarted by der_Chrizzel, 12 Oct 2021 8.1, et9200, xtrend and 2 more... |
|
|||
Niet functionerende pauzetoets op Xtrend ET9200Started by Edgar, 31 Jan 2018 ET9200 |
|
|||
Unable to install mgcamd 1.30d-r5.0Started by stoltenborg, 10 Apr 2016 mgcamd, et9200, openpli 4.0 |
|
|||
ET9200 stuck on spinnerStarted by ppero196, 18 Aug 2015 ET9200, stuck on boot, spinner and 1 more... |
|
|||
ET9200 oscam standaard config mhz en cardmhzStarted by bbxx, 19 Jun 2015 oscam mhz, oscam cardmhz, et9200 and 1 more... |
|
0 members, 3 guests, 0 anonymous users