Default 'Auto' mode for slowdown on desync

This commit is contained in:
Et0h 2014-06-18 17:56:35 +01:00
parent 5edaa0440b
commit 9505838531
8 changed files with 59 additions and 32 deletions

View File

@ -228,8 +228,9 @@ class SyncplayClient(object):
madeChangeOnPlayer = self._serverSeeked(position, setBy)
if (diff > constants.REWIND_THRESHOLD and not doSeek and not self._config['rewindOnDesync'] == False):
madeChangeOnPlayer = self._rewindPlayerDueToTimeDifference(position, setBy)
if (self._player.speedSupported and not doSeek and not paused and not self._config['slowOnDesync'] == False):
madeChangeOnPlayer = self._slowDownToCoverTimeDifference(diff, setBy)
if (self._player.speedSupported and not doSeek and not paused):
if (self._config['slowMeOnDesync'] == constants.OPTION_ALWAYS or (self._config['slowMeOnDesync'] == constants.OPTION_AUTO and self._player.speedRecommended)):
madeChangeOnPlayer = self._slowDownToCoverTimeDifference(diff, setBy)
if (paused == False and pauseChanged):
madeChangeOnPlayer = self._serverUnpaused(setBy)
elif (paused == True and pauseChanged):

View File

@ -100,3 +100,6 @@ PRIVACY_SENDRAW_MODE = "SendRaw"
PRIVACY_SENDHASHED_MODE = "SendHashed"
PRIVACY_DONTSEND_MODE = "DoNotSend"
PRIVACY_HIDDENFILENAME = "**Hidden filename**"
OPTION_AUTO = "Automatic"
OPTION_ALWAYS= "Always"
OPTION_NEVER = "Never"

View File

@ -123,7 +123,10 @@ en = {
"privacy-dontsend-option" : "Don't send",
"filename-privacy-label" : "Filename information:",
"filesize-privacy-label" : "File size information:",
"slowdown-label" : "Slow down on desync",
"slowdown-label" : "Slow down on desync:",
"slowdown-auto-option" : "Automatic",
"slowdown-always-option" : "Always",
"slowdown-never-option" : "Never",
"dontslowwithme-label" : "Never slow down or rewind others",
"pauseonleave-label" : "Pause when user leaves",
"rewind-label" : "Rewind on major desync (highly recommended)",
@ -181,6 +184,9 @@ en = {
"privacy-sendhashed-tooltip" : "Send a hashed version of the information, making it less visible to other clients.",
"privacy-dontsend-tooltip" : "Do not send this information to the server. This provides for maximum privacy.",
"slowdown-tooltip" : "Reduce playback rate temporarily when needed to bring you back in sync with other viewers.",
"slowdown-auto-tooltip" : "Slow down on desync unless it causes problems (i.e. MPC-HC).",
"slowdown-always-tooltip" : "Always slow down on desync (even on players where this causes playback issues).",
"slowdown-never-tooltip" : "Never slow down on desync (even on players where this is probably better than rewinding).",
"dontslowwithme-tooltip" : "Means others do not get slowed down or rewinded if your playback is lagging.",
"pauseonleave-tooltip" : "Pause playback if you get disconnected or someone leaves from your room.",
"rewind-tooltip" : "Jump back when needed to get back in sync. Recommended.",

View File

@ -306,6 +306,7 @@ class MpcHcApi:
class MPCHCAPIPlayer(BasePlayer):
speedSupported = False
speedRecommended = False
def __init__(self, client):
from twisted.internet import reactor

View File

@ -8,6 +8,7 @@ import os
class MplayerPlayer(BasePlayer):
speedSupported = True
speedRecommended = True
RE_ANSWER = re.compile(constants.MPLAYER_ANSWER_REGEX)
SLAVE_ARGS = constants.MPLAYER_SLAVE_ARGS
POSITION_QUERY = 'time_pos'

View File

@ -14,6 +14,7 @@ import time
class VlcPlayer(BasePlayer):
speedSupported = True
speedRecommended = True
RE_ANSWER = re.compile(constants.VLC_ANSWER_REGEX)
SLAVE_ARGS = constants.VLC_SLAVE_ARGS
if not sys.platform.startswith('darwin'):

View File

@ -33,7 +33,7 @@ class ConfigurationGetter(object):
"file": None,
"playerArgs": [],
"playerClass": None,
"slowOnDesync": True,
"slowMeOnDesync": constants.OPTION_AUTO,
"dontSlowDownWithMe": False,
"rewindOnDesync": True,
"filenamePrivacyMode": constants.PRIVACY_SENDRAW_MODE,
@ -58,7 +58,6 @@ class ConfigurationGetter(object):
"forceGuiPrompt",
"noGui",
"noStore",
"slowOnDesync",
"dontSlowDownWithMe",
"pauseOnLeave",
"rewindOnDesync",
@ -67,7 +66,7 @@ class ConfigurationGetter(object):
self._iniStructure = {
"server_data": ["host", "port", "password"],
"client_settings": ["name", "room", "playerPath", "slowOnDesync", "dontSlowDownWithMe", "rewindOnDesync", "forceGuiPrompt", "filenamePrivacyMode", "filesizePrivacyMode", "pauseOnLeave"],
"client_settings": ["name", "room", "playerPath", "slowMeOnDesync", "dontSlowDownWithMe", "rewindOnDesync", "forceGuiPrompt", "filenamePrivacyMode", "filesizePrivacyMode", "pauseOnLeave"],
}
#

View File

@ -197,10 +197,6 @@ class ConfigDialog(QtGui.QDialog):
self.config['noStore'] = True
else:
self.config['noStore'] = False
if self.slowdownCheckbox.isChecked() == True:
self.config['slowOnDesync'] = True
else:
self.config['slowOnDesync'] = False
if self.dontslowwithmeCheckbox.isChecked() == True:
self.config['dontSlowDownWithMe'] = True
else:
@ -224,12 +220,12 @@ class ConfigDialog(QtGui.QDialog):
elif self.filenameprivacyDontSendOption.isChecked() == True:
self.config['filenamePrivacyMode'] = constants.PRIVACY_DONTSEND_MODE
if self.filesizeprivacySendRawOption.isChecked() == True:
self.config['filesizePrivacyMode'] = constants.PRIVACY_SENDRAW_MODE
elif self.filesizeprivacySendHashedOption.isChecked() == True:
self.config['filesizePrivacyMode'] = constants.PRIVACY_SENDHASHED_MODE
elif self.filesizeprivacyDontSendOption.isChecked() == True:
self.config['filesizePrivacyMode'] = constants.PRIVACY_DONTSEND_MODE
if self.slowdownAutoOption.isChecked() == True:
self.config['slowMeOnDesync'] = constants.OPTION_AUTO
elif self.slowdownAlwaysOption.isChecked() == True:
self.config['slowMeOnDesync'] = constants.OPTION_ALWAYS
elif self.slowdownNeverOption.isChecked() == True:
self.config['slowMeOnDesync'] = constants.OPTION_NEVER
self.pressedclosebutton = True
self.close()
@ -386,7 +382,15 @@ class ConfigDialog(QtGui.QDialog):
self.filesizeprivacyButtonGroup.addButton(self.filesizeprivacySendHashedOption)
self.filesizeprivacyButtonGroup.addButton(self.filesizeprivacyDontSendOption)
self.slowdownCheckbox = QCheckBox(getMessage("en", "slowdown-label"))
self.slowdownLabel = QLabel(getMessage("en", "slowdown-label"), self)
self.slowdownButtonGroup = QButtonGroup()
self.slowdownAutoOption = QRadioButton(getMessage("en", "slowdown-auto-option"))
self.slowdownAlwaysOption = QRadioButton(getMessage("en", "slowdown-always-option"))
self.slowdownNeverOption = QRadioButton(getMessage("en", "slowdown-never-option"))
self.slowdownButtonGroup.addButton(self.slowdownAutoOption)
self.slowdownButtonGroup.addButton(self.slowdownAlwaysOption)
self.slowdownButtonGroup.addButton(self.slowdownNeverOption)
self.dontslowwithmeCheckbox = QCheckBox(getMessage("en", "dontslowwithme-label"))
self.pauseonleaveCheckbox = QCheckBox(getMessage("en", "pauseonleave-label"))
self.alwaysshowCheckbox = QCheckBox(getMessage("en", "alwayshow-label"))
@ -408,12 +412,7 @@ class ConfigDialog(QtGui.QDialog):
else:
self.filesizeprivacySendRawOption.setChecked(True)
if config['slowOnDesync'] == True:
self.slowdownCheckbox.setChecked(True)
if config['dontSlowDownWithMe'] == True:
self.dontslowwithmeCheckbox.setChecked(True)
if constants.SHOW_REWIND_ON_DESYNC_CHECKBOX == True and config['rewindOnDesync'] == True:
if constants.SHOW_REWIND_ON_DESYNC_CHECKBOX == True and config['slowMeOnDesync'] == True:
self.rewindCheckbox.setChecked(True)
if config['pauseOnLeave'] == True:
self.pauseonleaveCheckbox.setChecked(True)
@ -427,12 +426,25 @@ class ConfigDialog(QtGui.QDialog):
self.filesizeprivacySendHashedOption.setToolTip(getMessage("en", "privacy-sendhashed-tooltip"))
self.filesizeprivacyDontSendOption.setToolTip(getMessage("en", "privacy-dontsend-tooltip"))
self.slowdownCheckbox.setToolTip(getMessage("en", "slowdown-tooltip"))
slowdownMode = config['slowMeOnDesync']
if slowdownMode == constants.OPTION_ALWAYS:
self.slowdownAlwaysOption.setChecked(True)
elif slowdownMode == constants.OPTION_NEVER:
self.slowdownNeverOption.setChecked(True)
else:
self.slowdownAutoOption.setChecked(True)
if config['dontSlowDownWithMe'] == True:
self.dontslowwithmeCheckbox.setChecked(True)
self.slowdownLabel.setToolTip(getMessage("en", "slowdown-tooltip"))
self.slowdownAutoOption.setToolTip(getMessage("en", "slowdown-auto-tooltip"))
self.slowdownAlwaysOption.setToolTip(getMessage("en", "slowdown-always-tooltip"))
self.slowdownNeverOption.setToolTip(getMessage("en", "slowdown-never-tooltip"))
self.dontslowwithmeCheckbox.setToolTip(getMessage("en", "dontslowwithme-tooltip"))
self.pauseonleaveCheckbox.setToolTip(getMessage("en", "pauseonleave-tooltip"))
self.alwaysshowCheckbox.setToolTip(getMessage("en", "alwayshow-tooltip"))
self.donotstoreCheckbox.setToolTip(getMessage("en", "donotstore-tooltip"))
self.slowdownCheckbox.setToolTip(getMessage("en", "slowdown-tooltip"))
self.moreSettingsLayout = QtGui.QGridLayout()
@ -442,18 +454,21 @@ class ConfigDialog(QtGui.QDialog):
self.privacyFrame.setMidLineWidth(0)
self.privacySettingsLayout.setContentsMargins(0, 0, 0, 0)
self.privacySettingsLayout.addWidget(self.filenameprivacyLabel, 0, 0)
self.privacySettingsLayout.addWidget(self.filenameprivacySendRawOption, 0, 1, Qt.AlignRight)
self.privacySettingsLayout.addWidget(self.filenameprivacySendHashedOption, 0, 2, Qt.AlignRight)
self.privacySettingsLayout.addWidget(self.filenameprivacyDontSendOption, 0, 3, Qt.AlignRight)
self.privacySettingsLayout.addWidget(self.filenameprivacySendRawOption, 0, 1, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.filenameprivacySendHashedOption, 0, 2, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.filenameprivacyDontSendOption, 0, 3, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.filesizeprivacyLabel, 1, 0)
self.privacySettingsLayout.addWidget(self.filesizeprivacySendRawOption, 1, 1, Qt.AlignRight)
self.privacySettingsLayout.addWidget(self.filesizeprivacySendHashedOption, 1, 2, Qt.AlignRight)
self.privacySettingsLayout.addWidget(self.filesizeprivacyDontSendOption, 1, 3, Qt.AlignRight)
self.privacySettingsLayout.addWidget(self.filesizeprivacySendRawOption, 1, 1, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.filesizeprivacySendHashedOption, 1, 2, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.filesizeprivacyDontSendOption, 1, 3, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.slowdownLabel, 2, 0)
self.privacySettingsLayout.addWidget(self.slowdownAutoOption, 2, 1, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.slowdownAlwaysOption, 2, 2, Qt.AlignLeft)
self.privacySettingsLayout.addWidget(self.slowdownNeverOption, 2, 3, Qt.AlignLeft)
self.privacyFrame.setLayout(self.privacySettingsLayout)
self.moreSettingsLayout.addWidget(self.privacyFrame, 0, 0, 1, 4)
self.moreSettingsLayout.addWidget(self.slowdownCheckbox, 2, 0, 1, 4)
if constants.SHOW_REWIND_ON_DESYNC_CHECKBOX == True:
self.moreSettingsLayout.addWidget(self.rewindCheckbox, 3, 0, 1, 4)
self.moreSettingsLayout.addWidget(self.dontslowwithmeCheckbox, 4, 0, 1, 2)