From: yomguy Date: Sat, 6 Oct 2012 21:03:04 +0000 (+0200) Subject: cleanup X-Git-Tag: 0.4.2~20 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=15377c1807001fdb46e40ffc3f9fcc0941c9f7bc;p=timeside.git cleanup --- diff --git a/timeside/encoder/__init__.py b/timeside/encoder/__init__.py index 5a09e94..aa02c8f 100644 --- a/timeside/encoder/__init__.py +++ b/timeside/encoder/__init__.py @@ -7,4 +7,3 @@ from mp3 import * from flac import * from m4a import * from webm import * - diff --git a/timeside/encoder/flac.py b/timeside/encoder/flac.py index 26eb828..07f0b33 100644 --- a/timeside/encoder/flac.py +++ b/timeside/encoder/flac.py @@ -20,6 +20,7 @@ # Author: Guillaume Pellerin from timeside.core import Processor, implements, interfacedoc +from timeside.encoder.core import GstEncoder from timeside.api import IEncoder from timeside.gstutils import * @@ -43,8 +44,7 @@ class FlacEncoder(GstEncoder): @interfacedoc def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): super(FlacEncoder, self).setup(channels, samplerate, blocksize, totalframes) - # TODO open file for writing - # the output data format we want + self.pipe = ''' appsrc name=src ! audioconvert ! flacenc ''' diff --git a/timeside/encoder/m4a.py b/timeside/encoder/m4a.py index 9c04a72..fdcc0aa 100644 --- a/timeside/encoder/m4a.py +++ b/timeside/encoder/m4a.py @@ -20,6 +20,7 @@ from timeside.core import Processor, implements, interfacedoc +from timeside.encoder.core import GstEncoder from timeside.api import IEncoder from timeside.gstutils import * diff --git a/timeside/encoder/mp3.py b/timeside/encoder/mp3.py index 8271e91..7581a64 100644 --- a/timeside/encoder/mp3.py +++ b/timeside/encoder/mp3.py @@ -25,6 +25,7 @@ # Paul Brossier from timeside.core import Processor, implements, interfacedoc +from timeside.encoder.core import GstEncoder from timeside.api import IEncoder from timeside.gstutils import * diff --git a/timeside/encoder/ogg.py b/timeside/encoder/ogg.py index 344e9c4..4130d1b 100644 --- a/timeside/encoder/ogg.py +++ b/timeside/encoder/ogg.py @@ -20,6 +20,7 @@ from timeside.core import Processor, implements, interfacedoc +from timeside.encoder.core import GstEncoder from timeside.api import IEncoder from timeside.gstutils import * @@ -42,8 +43,7 @@ class VorbisEncoder(GstEncoder): @interfacedoc def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): super(VorbisEncoder, self).setup(channels, samplerate, blocksize, totalframes) - # TODO open file for writing - # the output data format we want + self.pipe = ''' appsrc name=src ! audioconvert ! vorbisenc diff --git a/timeside/encoder/wav.py b/timeside/encoder/wav.py index 04c7473..4d87b3b 100644 --- a/timeside/encoder/wav.py +++ b/timeside/encoder/wav.py @@ -21,6 +21,7 @@ # Author: Paul Brossier from timeside.core import Processor, implements, interfacedoc +from timeside.encoder.core import GstEncoder from timeside.api import IEncoder from timeside.gstutils import * @@ -44,8 +45,7 @@ class WavEncoder(GstEncoder): @interfacedoc def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): super(WavEncoder, self).setup(channels, samplerate, blocksize, totalframes) - # TODO open file for writing - # the output data format we want + self.pipe = ''' appsrc name=src ! audioconvert ! wavenc diff --git a/timeside/encoder/webm.py b/timeside/encoder/webm.py index 2888b5f..91cfd2e 100644 --- a/timeside/encoder/webm.py +++ b/timeside/encoder/webm.py @@ -20,6 +20,7 @@ from timeside.core import Processor, implements, interfacedoc +from timeside.encoder.core import GstEncoder from timeside.api import IEncoder from timeside.gstutils import * @@ -44,8 +45,7 @@ class WebMEncoder(GstEncoder): @interfacedoc def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): super(WebMEncoder, self).setup(channels, samplerate, blocksize, totalframes) - # TODO open file for writing - # the output data format we want + if self.video: self.pipe = '''videotestsrc pattern=black ! ffmpegcolorspace ! queue ! vp8enc speed=2 threads=4 quality=9.0 ! queue ! mux. diff --git a/timeside/gstutils.py b/timeside/gstutils.py index 5532f02..9be48d7 100644 --- a/timeside/gstutils.py +++ b/timeside/gstutils.py @@ -20,53 +20,3 @@ def gst_buffer_to_numpy_array(buf, chan): samples = frombuffer(buf.data, dtype='float32') samples.resize([len(samples)/chan, chan]) return samples - -class GstEncoder(Processor): - - def release(self): - while self.bus.have_pending(): - self.bus.pop() - - def __del__(self): - self.release() - - def start_pipeline(self, channels, samplerate): - self.pipeline = gst.parse_launch(self.pipe) - # store a pointer to appsrc in our encoder object - self.src = self.pipeline.get_by_name('src') - # store a pointer to appsink in our encoder object - self.app = self.pipeline.get_by_name('app') - - srccaps = gst.Caps("""audio/x-raw-float, - endianness=(int)1234, - channels=(int)%s, - width=(int)32, - rate=(int)%d""" % (int(channels), int(samplerate))) - self.src.set_property("caps", srccaps) - self.src.set_property('emit-signals', True) - - self.bus = self.pipeline.get_bus() - self.bus.add_signal_watch() - self.bus.connect("message", self.on_message) - - # start pipeline - self.pipeline.set_state(gst.STATE_PLAYING) - - def on_message(self, bus, message): - t = message.type - if t == gst.MESSAGE_EOS: - self.pipeline.set_state(gst.STATE_NULL) - elif t == gst.MESSAGE_ERROR: - self.pipeline.set_state(gst.STATE_NULL) - err, debug = message.parse_error() - print "Error: %s" % err, debug - - def process(self, frames, eod=False): - self.eod = eod - buf = numpy_array_to_gst_buffer(frames) - self.src.emit('push-buffer', buf) - if self.eod: - self.src.emit('end-of-stream') - if self.streaming: - self.chunk = self.app.emit('pull-buffer') - return frames, eod