add primitive player back, and fall back to it on osx 10.3

This commit is contained in:
Damien Elmes 2009-09-26 08:57:36 +09:00
parent 1906741e11
commit faea67e14b

View file

@ -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