mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 22:42:25 -04:00
add primitive player back, and fall back to it on osx 10.3
This commit is contained in:
parent
1906741e11
commit
faea67e14b
1 changed files with 54 additions and 9 deletions
|
@ -101,18 +101,19 @@ def generateNoiseProfile():
|
||||||
processingChain[0] = ["sox", processingSrc, "tmp2.wav",
|
processingChain[0] = ["sox", processingSrc, "tmp2.wav",
|
||||||
"noisered", noiseProfile, NOISE_AMOUNT]
|
"noisered", noiseProfile, NOISE_AMOUNT]
|
||||||
|
|
||||||
# Mplayer
|
# Mplayer settings
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
if sys.platform.startswith("win32"):
|
if sys.platform.startswith("win32"):
|
||||||
mplayerCmd = ["mplayer.exe", "-ao", "win32", "-really-quiet",
|
mplayerCmd = ["mplayer.exe", "-ao", "win32", "-really-quiet"]
|
||||||
"-slave", "-idle"]
|
|
||||||
dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
||||||
os.environ['PATH'] += ";" + dir
|
os.environ['PATH'] += ";" + dir
|
||||||
os.environ['PATH'] += ";" + dir + "\\..\\dist" # for testing
|
os.environ['PATH'] += ";" + dir + "\\..\\dist" # for testing
|
||||||
else:
|
else:
|
||||||
mplayerCmd = ["mplayer", "-really-quiet", "-slave", "-idle",
|
mplayerCmd = ["mplayer", "-really-quiet"]
|
||||||
"-ontop"]
|
|
||||||
|
# Mplayer in slave mode
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
mplayerQueue = []
|
mplayerQueue = []
|
||||||
mplayerManager = None
|
mplayerManager = None
|
||||||
|
@ -164,8 +165,9 @@ class MplayerMonitor(threading.Thread):
|
||||||
|
|
||||||
def startProcess(self):
|
def startProcess(self):
|
||||||
try:
|
try:
|
||||||
|
cmd = mplayerCmd + ["-slave", "-idle"]
|
||||||
self.mplayer = subprocess.Popen(
|
self.mplayer = subprocess.Popen(
|
||||||
mplayerCmd, startupinfo=si, stdin=subprocess.PIPE,
|
cmd, startupinfo=si, stdin=subprocess.PIPE,
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
except OSError:
|
except OSError:
|
||||||
mplayerCond.release()
|
mplayerCond.release()
|
||||||
|
@ -226,6 +228,38 @@ def stopMplayerOnce():
|
||||||
|
|
||||||
addHook("deckClosed", stopMplayerOnce)
|
addHook("deckClosed", stopMplayerOnce)
|
||||||
|
|
||||||
|
# Simple player
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
externalManager = None
|
||||||
|
|
||||||
|
class QueueMonitor(threading.Thread):
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while 1:
|
||||||
|
if queue:
|
||||||
|
path = queue.pop(0)
|
||||||
|
try:
|
||||||
|
retryWait(subprocess.Popen(
|
||||||
|
mplayerCmd + [path], startupinfo=si))
|
||||||
|
except OSError:
|
||||||
|
raise Exception("Audio player not found")
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
def queueExternal(path):
|
||||||
|
global externalManager
|
||||||
|
path = path.encode(sys.getfilesystemencoding())
|
||||||
|
queue.append(path)
|
||||||
|
if not externalManager or not externalManager.isAlive():
|
||||||
|
externalManager = QueueMonitor()
|
||||||
|
externalManager.start()
|
||||||
|
|
||||||
|
def clearExternalQueue():
|
||||||
|
global queue
|
||||||
|
queue = []
|
||||||
|
|
||||||
# PyAudio recording
|
# PyAudio recording
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
@ -322,10 +356,21 @@ class PyAudioRecorder(_Recorder):
|
||||||
else:
|
else:
|
||||||
return tmpFiles[1]
|
return tmpFiles[1]
|
||||||
|
|
||||||
# Default audio player
|
# Audio interface
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
play = queueMplayer
|
if sys.platform.startswith("darwin") and platform.mac_ver()[0] < "10.4":
|
||||||
clearAudioQueue = clearMplayerQueue
|
# fall back to primitive player
|
||||||
|
_player = queueExternal
|
||||||
|
_queueEraser = clearExternalQueue
|
||||||
|
else:
|
||||||
|
_player = queueMplayer
|
||||||
|
_queueEraser = clearMplayerQueue
|
||||||
|
|
||||||
|
def play(path):
|
||||||
|
_player(path)
|
||||||
|
|
||||||
|
def clearAudioQueue():
|
||||||
|
_queueEraser()
|
||||||
|
|
||||||
Recorder = PyAudioRecorder
|
Recorder = PyAudioRecorder
|
||||||
|
|
Loading…
Reference in a new issue