diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2010-08-17 10:18:13 +0200 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2010-08-17 10:20:41 +0200 |
| commit | a648830a100839cb95548cffe2a6cd291f8da19c (patch) | |
| tree | d7259b808f87985b05af99cba2c75c48332776ad /lib/python/Screens | |
| parent | 65ce4a9bd27e342545b88faf9420426113d32702 (diff) | |
| download | enigma2-a648830a100839cb95548cffe2a6cd291f8da19c.tar.gz enigma2-a648830a100839cb95548cffe2a6cd291f8da19c.zip | |
Playback/Skipping fixes / cleanup by A. Holst
* Jumping between marks in the movie, with "<" and ">", doesn't work
well when there are cut marks in the movie. Especially jumping
backwards will fail if there is a mark in a cut out region that is
to be jumped over. (InfoBarGenerics.py, chunks 3 and 4)
* Now when rewind works at all platforms also at low speeds, the
rewind speeds x2 and x4 should be added again to the
default. (UsageConfig.py, chunk 1)
* Cleanup some obsolete code: SeekBackHack and non-smooth
winding. None of these can be used anymore, but remnants were left
in the code and in the configuration alternatives. It is high time
to clean these out. (setup.xml, UsageConfig.py chunk 2,
InfoBarGenerics.py chunks 1 and 2, DVDPlayer)
* In the position gauge of the movie player, marks in the movie are
shown as red dots. Long time ago the last position was also shown as
a red dot, which was bad because it was confused with the marks, so
it was removed. However, jumping between marks in the movie with "<"
and ">" also stops at the last position, which is useful e.g. if you
don't automatically start playing from the last position. The code
below adds the last position back to the position gauge as a green dot,
to distinguish it from the red ones. (epositiongauge.cpp)
refs bug #570
Diffstat (limited to 'lib/python/Screens')
| -rw-r--r-- | lib/python/Screens/InfoBarGenerics.py | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index f98d4c33..4bcadef9 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -716,7 +716,7 @@ class InfoBarSeek: SEEK_STATE_PAUSE = (1, 0, 0, "||") SEEK_STATE_EOF = (1, 0, 0, "END") - def __init__(self, actionmap = "InfobarSeekActions", useSeekBackHack=True): + def __init__(self, actionmap = "InfobarSeekActions"): self.__event_tracker = ServiceEventTracker(screen=self, eventmap= { iPlayableService.evSeekableStatusChanged: self.__seekableStatusChanged, @@ -773,20 +773,10 @@ class InfoBarSeek: self.__seekableStatusChanged() def makeStateForward(self, n): -# minspeed = config.seek.stepwise_minspeed.value -# repeat = int(config.seek.stepwise_repeat.value) -# if minspeed != "Never" and n >= int(minspeed) and repeat > 1: -# return (0, n * repeat, repeat, ">> %dx" % n) -# else: - return (0, n, 0, ">> %dx" % n) + return (0, n, 0, ">> %dx" % n) def makeStateBackward(self, n): -# minspeed = config.seek.stepwise_minspeed.value -# repeat = int(config.seek.stepwise_repeat.value) -# if minspeed != "Never" and n >= int(minspeed) and repeat > 1: -# return (0, -n * repeat, repeat, "<< %dx" % n) -# else: - return (0, -n, 0, "<< %dx" % n) + return (0, -n, 0, "<< %dx" % n) def makeStateSlowMotion(self, n): return (0, 0, n, "/%d" % n) @@ -2084,20 +2074,21 @@ class InfoBarCueSheetSupport: return True def jumpPreviousMark(self): - # we add 2 seconds, so if the play position is <2s after + # we add 5 seconds, so if the play position is <5s after # the mark, the mark before will be used self.jumpPreviousNextMark(lambda x: -x-5*90000, start=True) def jumpNextMark(self): - if not self.jumpPreviousNextMark(lambda x: x): + if not self.jumpPreviousNextMark(lambda x: x-90000): self.doSeek(-1) def getNearestCutPoint(self, pts, cmp=abs, start=False): # can be optimized - beforecut = False + beforecut = True nearest = None + bestdiff = -1 + instate = True if start: - beforecut = True bestdiff = cmp(0 - pts) if bestdiff >= 0: nearest = [0, False] @@ -2106,14 +2097,19 @@ class InfoBarCueSheetSupport: beforecut = False if cp[1] == self.CUT_TYPE_IN: # Start is here, disregard previous marks diff = cmp(cp[0] - pts) - if diff >= 0: + if start and diff >= 0: nearest = cp bestdiff = diff else: nearest = None - if cp[1] in (self.CUT_TYPE_MARK, self.CUT_TYPE_LAST): + bestdiff = -1 + if cp[1] == self.CUT_TYPE_IN: + instate = True + elif cp[1] == self.CUT_TYPE_OUT: + instate = False + elif cp[1] in (self.CUT_TYPE_MARK, self.CUT_TYPE_LAST): diff = cmp(cp[0] - pts) - if diff >= 0 and (nearest is None or bestdiff > diff): + if instate and diff >= 0 and (nearest is None or bestdiff > diff): nearest = cp bestdiff = diff return nearest |
