chiark / gitweb /
gremlin/gremlin.in: Sane behaviour if `bitrate' property is omitted.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 14 Feb 2016 02:00:21 +0000 (02:00 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 14 Feb 2016 02:09:46 +0000 (02:09 +0000)
The OggVorbisFormat would choose the most terrible quality; and
MP3Format just threw a fatal exception.

gremlin/gremlin.in

index 1fd862d59d1e38933e20cadd239badbc6df1674d..e32d084a8446c6ef78cf535377610e780554a1d1 100755 (executable)
@@ -1100,13 +1100,15 @@ class OggVorbisFormat (AudioFormat):
   EXT = 'ogg'
 
   def encoder_chain(me):
-    for q, br in me.QMAP:
-      if br >= me.bitrate:
-        break
-    else:
-      raise ValueError, 'no suitable quality setting found'
-    return [make_element('vorbisenc',
-                         quality = q/10.0),
+    encprops = {}
+    if me.bitrate is not None:
+      for q, br in me.QMAP:
+        if br >= me.bitrate:
+          break
+        else:
+          raise ValueError, 'no suitable quality setting found'
+      encprops['quality'] = q/10.0
+    return [make_element('vorbisenc', **encprops),
             make_element('oggmux')]
 
 defformat('ogg-vorbis', OggVorbisFormat)
@@ -1119,9 +1121,9 @@ class MP3Format (AudioFormat):
   EXT = 'mp3'
 
   def encoder_chain(me):
-    return [make_element('lame',
-                         vbr_mean_bitrate = me.bitrate,
-                         vbr = 4),
+    encprops = {}
+    if me.bitrate is not None: encprops['vbr_mean_bitrate'] = me.bitrate
+    return [make_element('lame', vbr = 4, **encprops),
             make_element('xingmux'),
             make_element('id3v2mux')]