Skip to content

Commit 69d302e

Browse files
committed
cherry pick -> OpenViX/enigma2@c945a12
1 parent 4b11a88 commit 69d302e

File tree

3 files changed

+26
-11
lines changed

3 files changed

+26
-11
lines changed

lib/python/Screens/InfoBarGenerics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4266,7 +4266,7 @@ def __init__(self, actionmap="InfobarCueSheetActions"):
42664266

42674267
def __serviceStarted(self):
42684268
self.resumeTimer.stop()
4269-
self.resumeTimer.start(config.av.passthrough_fix_long.value + 1000, True)
4269+
self.resumeTimer.start(1000, True)
42704270

42714271
def triggerResumeLogic(self):
42724272
if self.is_closing:

lib/service/servicemp3.cpp

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,8 @@ eServiceMP3::eServiceMP3(eServiceReference ref):
522522
m_is_live = false;
523523
m_use_prefillbuffer = false;
524524
m_paused = false;
525+
m_clear_buffers = true;
526+
m_initial_start = false;
525527
m_first_paused = false;
526528
m_cuesheet_loaded = false; /* cuesheet CVR */
527529
m_audiosink_not_running = false;
@@ -1290,11 +1292,12 @@ RESULT eServiceMP3::trickSeek(gdouble ratio)
12901292
ret = gst_element_get_state(m_gst_playbin, &state, &pending, 3LL * GST_SECOND);
12911293
if (state == GST_STATE_PLAYING && pending == GST_STATE_PAUSED)
12921294
{
1293-
1295+
m_clear_buffers = true;
12941296
if (m_currentAudioStream >= 0)
12951297
selectAudioStream(m_currentAudioStream, true);
12961298
else
12971299
selectAudioStream(0, true);
1300+
m_clear_buffers = false;
12981301

12991302
if (pos_ret >= 0)
13001303
{
@@ -1981,11 +1984,16 @@ RESULT eServiceMP3::selectTrack(unsigned int i)
19811984
return m_currentAudioStream;
19821985
eDebug("[eServiceMP3 selectTrack %d", i);
19831986

1984-
return selectAudioStream(i);
1987+
m_clear_buffers = true;
1988+
int result = selectAudioStream(i);
1989+
m_clear_buffers = false;
1990+
return result;
19851991
}
19861992

1987-
void eServiceMP3::clearBuffers()
1993+
void eServiceMP3::clearBuffers(bool force)
19881994
{
1995+
if (!m_clear_buffers && !force) return;
1996+
19891997
bool validposition = false;
19901998
pts_t ppos = 0;
19911999
if (getPlayPosition(ppos) >= 0)
@@ -1997,16 +2005,14 @@ void eServiceMP3::clearBuffers()
19972005
}
19982006
if (validposition)
19992007
{
2000-
//flush
2008+
/* flush */
20012009
seekTo(ppos);
20022010
}
20032011
}
20042012

2005-
20062013
int eServiceMP3::selectAudioStream(int i, bool skipAudioFix)
20072014
{
20082015
int current_audio, current_audio_orig;
2009-
20102016
g_object_get (m_gst_playbin, "current-audio", &current_audio_orig, NULL);
20112017
g_object_set (m_gst_playbin, "current-audio", i, NULL);
20122018
g_object_get (m_gst_playbin, "current-audio", &current_audio, NULL);
@@ -2358,10 +2364,17 @@ void eServiceMP3::gstBusCall(GstMessage *msg)
23582364
}
23592365

23602366
if (autoaudio)
2361-
selectTrack(autoaudio);
2367+
selectAudioStream(autoaudio);
23622368
}
2363-
else {
2364-
selectTrack(m_currentAudioStream);
2369+
else
2370+
{
2371+
selectAudioStream(m_currentAudioStream);
2372+
}
2373+
m_clear_buffers = false;
2374+
if (!m_initial_start)
2375+
{
2376+
seekTo(0);
2377+
m_initial_start = true;
23652378
}
23662379
if (!m_first_paused)
23672380
m_event((iPlayableService*)this, evGstreamerPlayStarted);

lib/service/servicemp3.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,8 @@ class eServiceMP3: public iPlayableService, public iPauseableService,
313313
bool m_subtitles_paused;
314314
bool m_use_prefillbuffer;
315315
bool m_paused;
316+
bool m_clear_buffers;
317+
bool m_initial_start;
316318
bool m_first_paused;
317319
/* cuesheet load check */
318320
bool m_cuesheet_loaded;
@@ -391,7 +393,7 @@ class eServiceMP3: public iPlayableService, public iPauseableService,
391393
void pushSubtitles();
392394
void pullSubtitle(GstBuffer *buffer);
393395
void sourceTimeout();
394-
void clearBuffers();
396+
void clearBuffers(bool force=false);
395397
#ifdef PASSTHROUGH_FIX
396398
void forcePassthrough();
397399
#endif

0 commit comments

Comments
 (0)