From: Paul Brossier Date: Tue, 31 Jul 2012 04:13:24 +0000 (-0600) Subject: timeside/encoder/: factorise gst stuff X-Git-Tag: 0.3.4-noleekmp3~21 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=84740b417e635a85c29b847a475b456274ef9010;p=timeside.git timeside/encoder/: factorise gst stuff --- diff --git a/timeside/encoder/flac.py b/timeside/encoder/flac.py index 0a12066..cb22a55 100644 --- a/timeside/encoder/flac.py +++ b/timeside/encoder/flac.py @@ -21,13 +21,7 @@ from timeside.core import Processor, implements, interfacedoc from timeside.api import IEncoder -from numpy import array, frombuffer, getbuffer, float32 - -import pygst -pygst.require('0.10') -import gst -import gobject -gobject.threads_init() +from timeside.encoder.gstutils import * class FlacEncoder(Processor): """ gstreamer-based FLAC encoder """ @@ -113,14 +107,8 @@ class FlacEncoder(Processor): @interfacedoc def process(self, frames, eod=False): self.eod = eod - buf = self.numpy_array_to_gst_buffer(frames) + buf = numpy_array_to_gst_buffer(frames) self.src.emit('push-buffer', buf) if self.streaming: self.chunk = self.app.emit('pull-buffer') return frames, eod - - def numpy_array_to_gst_buffer(self, frames): - """ gstreamer buffer to numpy array conversion """ - buf = gst.Buffer(getbuffer(frames)) - return buf - diff --git a/timeside/encoder/gstutils.py b/timeside/encoder/gstutils.py new file mode 100644 index 0000000..3183cfb --- /dev/null +++ b/timeside/encoder/gstutils.py @@ -0,0 +1,13 @@ +from numpy import getbuffer + +import pygst +pygst.require('0.10') +import gst +import gobject +gobject.threads_init() + +def numpy_array_to_gst_buffer(frames): + """ gstreamer buffer to numpy array conversion """ + buf = gst.Buffer(getbuffer(frames.astype("float32"))) + return buf + diff --git a/timeside/encoder/m4a.py b/timeside/encoder/m4a.py index f3aa280..eb30bac 100644 --- a/timeside/encoder/m4a.py +++ b/timeside/encoder/m4a.py @@ -21,14 +21,7 @@ from timeside.core import Processor, implements, interfacedoc from timeside.api import IEncoder -from numpy import array, frombuffer, getbuffer, float32 - -import pygst -pygst.require('0.10') -import gst -import gobject -gobject.threads_init () - +from timeside.encoder.gstutils import * class AacEncoder(Processor): """ gstreamer-based AAC encoder """ @@ -95,15 +88,7 @@ class AacEncoder(Processor): @interfacedoc def process(self, frames, eod=False): - buf = self.numpy_array_to_gst_buffer(frames) + buf = numpy_array_to_gst_buffer(frames) self.src.emit('push-buffer', buf) if eod: self.src.emit('end-of-stream') return frames, eod - - def numpy_array_to_gst_buffer(self, frames): - """ gstreamer buffer to numpy array conversion """ - buf = gst.Buffer(getbuffer(frames)) - return buf - - - diff --git a/timeside/encoder/mp3.py b/timeside/encoder/mp3.py index d254573..9855648 100644 --- a/timeside/encoder/mp3.py +++ b/timeside/encoder/mp3.py @@ -23,17 +23,9 @@ from timeside.core import Processor, implements, interfacedoc from timeside.api import IEncoder -from numpy import array, frombuffer, getbuffer, float32 -from timeside.core import FixedSizeInputAdapter +from timeside.encoder.gstutils import * -import numpy import mutagen -import pygst -pygst.require('0.10') -import gst -import gobject -gobject.threads_init() - class Mp3Encoder(Processor): """ gstreamer-based mp3 encoder """ @@ -136,7 +128,7 @@ class Mp3Encoder(Processor): @interfacedoc def process(self, frames, eod=False): self.eod = eod - buf = self.numpy_array_to_gst_buffer(frames) + buf = numpy_array_to_gst_buffer(frames) self.src.emit('push-buffer', buf) if self.streaming: self.chunk = self.app.emit('pull-buffer') @@ -144,12 +136,6 @@ class Mp3Encoder(Processor): self.write_metadata() return frames, eod - def numpy_array_to_gst_buffer(self, frames): - """ gstreamer buffer to numpy array conversion """ - buf = gst.Buffer(getbuffer(frames)) - return buf - - class Mp3EncoderSubprocess(object): """MP3 encoder in a subprocess pipe""" diff --git a/timeside/encoder/ogg.py b/timeside/encoder/ogg.py index 477cf79..699e508 100644 --- a/timeside/encoder/ogg.py +++ b/timeside/encoder/ogg.py @@ -21,14 +21,7 @@ from timeside.core import Processor, implements, interfacedoc from timeside.api import IEncoder -from numpy import array, frombuffer, getbuffer, float32 - -import pygst -pygst.require('0.10') -import gst -import gobject -gobject.threads_init() - +from timeside.encoder.gstutils import * class VorbisEncoder(Processor): """ gstreamer-based vorbis encoder """ @@ -116,14 +109,8 @@ class VorbisEncoder(Processor): @interfacedoc def process(self, frames, eod=False): self.eod = eod - - buf = self.numpy_array_to_gst_buffer(frames) + buf = numpy_array_to_gst_buffer(frames) self.src.emit('push-buffer', buf) if self.streaming: self.chunk = self.app.emit('pull-buffer') return frames, eod - - def numpy_array_to_gst_buffer(self, frames): - """ gstreamer buffer to numpy array conversion """ - buf = gst.Buffer(getbuffer(frames)) - return buf diff --git a/timeside/encoder/wav.py b/timeside/encoder/wav.py index 1cd5000..b289210 100644 --- a/timeside/encoder/wav.py +++ b/timeside/encoder/wav.py @@ -22,14 +22,7 @@ from timeside.core import Processor, implements, interfacedoc from timeside.api import IEncoder -from numpy import array, frombuffer, getbuffer, float32 - -import pygst -pygst.require('0.10') -import gst -import gobject -gobject.threads_init() - +from timeside.encoder.gstutils import * class WavEncoder(Processor): """ gstreamer-based encoder """ @@ -116,13 +109,8 @@ class WavEncoder(Processor): @interfacedoc def process(self, frames, eod=False): self.eod = eod - buf = self.numpy_array_to_gst_buffer(frames) + buf = numpy_array_to_gst_buffer(frames) self.src.emit('push-buffer', buf) if self.streaming: self.chunk = self.app.emit('pull-buffer') return frames, eod - - def numpy_array_to_gst_buffer(self, frames): - """ gstreamer buffer to numpy array conversion """ - buf = gst.Buffer(getbuffer(frames)) - return buf diff --git a/timeside/encoder/webm.py b/timeside/encoder/webm.py index d0ea812..5a138cd 100644 --- a/timeside/encoder/webm.py +++ b/timeside/encoder/webm.py @@ -21,14 +21,7 @@ from timeside.core import Processor, implements, interfacedoc from timeside.api import IEncoder -from numpy import array, frombuffer, getbuffer, float32 - -import pygst -pygst.require('0.10') -import gst -import gobject -gobject.threads_init() - +from timeside.encoder.gstutils import * class WebMEncoder(Processor): """ gstreamer-based webm encoder and muxer """ @@ -123,14 +116,8 @@ class WebMEncoder(Processor): @interfacedoc def process(self, frames, eod=False): self.eod = eod - - buf = self.numpy_array_to_gst_buffer(frames) + buf = numpy_array_to_gst_buffer(frames) self.src.emit('push-buffer', buf) if self.streaming: self.chunk = self.app.emit('pull-buffer') return frames, eod - - def numpy_array_to_gst_buffer(self, frames): - """ gstreamer buffer to numpy array conversion """ - buf = gst.Buffer(getbuffer(frames)) - return buf