From aec75861bed2e7374230c18cd9444d55786f91a4 Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Sat, 23 Nov 2013 16:55:43 -0500 Subject: [PATCH] Use newer lamemp3enc element This fixes trac issue 45 and adapts pull request 42 on github --- morituri/common/encode.py | 45 ++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/morituri/common/encode.py b/morituri/common/encode.py index 874dce3..7e4e0ee 100644 --- a/morituri/common/encode.py +++ b/morituri/common/encode.py @@ -100,20 +100,45 @@ class WavpackProfile(Profile): lossless = True -class MP3Profile(Profile): +class _LameProfile(Profile): + extension = 'mp3' + lossless = False + + def test(self): + version = cgstreamer.elementFactoryVersion('lamemp3enc') + self.debug('lamemp3enc version: %r', version) + if version: + t = tuple([int(s) for s in version.split('.')]) + if t >= (0, 10, 19): + self.pipeline = self._lamemp3enc_pipeline + return True + + version = cgstreamer.elementFactoryVersion('lame') + self.debug('lame version: %r', version) + if version: + self.pipeline = self._lame_pipeline + return True + + return False + + +class MP3Profile(_LameProfile): name = 'mp3' - extension = 'mp3' - pipeline = 'lame name=tagger quality=0 ! id3v2mux' - lossless = False + + _lame_pipeline = 'lame name=tagger quality=0 ! id3v2mux' + _lamemp3enc_pipeline = \ + 'lamemp3enc name=tagger target=bitrate cbr=true bitrate=320 ! ' \ + 'xingmux ! id3v2mux' -class MP3VBRProfile(Profile): +class MP3VBRProfile(_LameProfile): name = 'mp3vbr' - extension = 'mp3' - pipeline = 'lame name=tagger ' \ - 'vbr-quality=0 vbr=new vbr-mean-bitrate=192 ! ' \ - 'id3v2mux' - lossless = False + + _lame_pipeline = 'lame name=tagger ' \ + 'vbr-quality=0 vbr=new vbr-mean-bitrate=192 ! ' \ + 'id3v2mux' + _lamemp3enc_pipeline = 'lamemp3enc name=tagger quality=0 ' \ + '! xingmux ! id3v2mux' class VorbisProfile(Profile):