X-Git-Url: https://git.toastfreeware.priv.at/gregoa/zavai.git/blobdiff_plain/db4d40a5e3825a664d95f1bca17056a71adcf12f..367d8f4ea207ec3ef0d29bbfd60809017ae00c3c:/zavai/audio.py?ds=inline diff --git a/zavai/audio.py b/zavai/audio.py index 37b483f..b7345d6 100755 --- a/zavai/audio.py +++ b/zavai/audio.py @@ -29,6 +29,31 @@ import gobject #import dbus.mainloop.glib #import subprocess +class Recorder(zavai.Resource): + def __init__(self, registry): + super(Recorder, self).__init__() + self.registry = registry + + def shutdown(self): + self.stop() + + def start(self, filename): + if self.recorder is not None: return + + self.registry.resource("audio").connect("audio", self) + + self.recorder = subprocess.Popen( + ["arecord", "-D", "hw", "-f", "cd", "-r", "8000", "-t", "wav", filename]) + + def stop(self): + if self.recorder is None: return + + os.kill(self.recorder.pid, signal.SIGINT) + self.recorder.wait() + self.recorder = None + + self.registry.resource("audio").disconnect("audio", self) + # TODO: # - hook into the headset plugged/unplugged event @@ -84,10 +109,6 @@ class Audio(zavai.Service): self.input_fd.close() self.input_fd = None -# if self.recorder is not None: -# os.kill(self.recorder.pid, signal.SIGINT) -# self.recorder.wait() - # Restore mixer settings self.load_scenario(self.saved_scenario) @@ -145,12 +166,6 @@ class Audio(zavai.Service): # def set_basename(self, basename): # self.basename = basename # -# def start_recording(self): -# if self.basename is None: -# raise RuntimeError("Recording requested but basename not set") -# self.recorder = subprocess.Popen( -# ["arecord", "-D", "hw", "-f", "cd", "-r", "8000", "-t", "wav", self.basename + ".wav"]) -# # def start_levels(self): # self.recorder = subprocess.Popen( # ["arecord", "-D", "hw", "-f", "cd", "-r", "8000", "-t", "wav", "-V", "stereo", "/dev/null"])