1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 from timeside.core import Processor, implements, interfacedoc
23 from timeside.encoder.core import GstEncoder
24 from timeside.api import IEncoder
25 from timeside.tools import *
29 """ gstreamer-based FLAC encoder """
30 implements(IEncoder)
31
32 @interfacedoc
33 - def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
34 super(FlacEncoder, self).setup(channels, samplerate, blocksize, totalframes)
35
36 self.pipe = ''' appsrc name=src ! audioconvert
37 ! flacenc '''
38
39 if self.filename and self.streaming:
40 self.pipe += ''' ! tee name=t
41 ! queue ! filesink location=%s
42 t. ! queue ! appsink name=app sync=False
43 ''' % self.filename
44
45 elif self.filename :
46 self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
47 else:
48 self.pipe += '! queue ! appsink name=app sync=False '
49
50 self.start_pipeline(channels, samplerate)
51
52
53 @staticmethod
54 @interfacedoc
57
58 @staticmethod
59 @interfacedoc
61 return "FLAC GStreamer based encoder"
62
63 @staticmethod
64 @interfacedoc
67
68 @staticmethod
69 @interfacedoc
72
73 @staticmethod
74 @interfacedoc
77
78 @interfacedoc
81