diff -Nur soundconverter-1.5.4-pl4/src/soundconverter.py soundconverter-1.5.4-pl5/src/soundconverter.py --- soundconverter-1.5.4-pl4/src/soundconverter.py 2011-08-19 13:12:46.186280952 +0200 +++ soundconverter-1.5.4-pl5/src/soundconverter.py 2011-08-19 14:48:29.481147167 +0200 @@ -48,6 +48,23 @@ gettext.install(PACKAGE,localedir='@datadir@/locale',unicode=1) +flacoggwarn_message = """Converting FLAC files to Ogg Vorbis is currently not +possible due to a stream corruption bug in GStreamer. + +Further info: +https://bugzilla.gnome.org/show_bug.cgi?id=651615 +""" + +def flacoggwarn(): + d = gtk.MessageDialog(None, + gtk.DIALOG_DESTROY_WITH_PARENT, + gtk.MESSAGE_WARNING, + gtk.BUTTONS_OK, + flacoggwarn_message) + d.run() + d.destroy() + + def cpuCount(): ''' Returns the number of CPUs in the system. @@ -117,6 +134,8 @@ 'affect\n the output MIME type.') % settings['cli-output-suffix']) parser.add_option('-j', '--jobs', action='store', type='int', dest='jobs', metavar='NUM', help=_('Force number of concurrent conversions.')) + parser.add_option('-f', '--force', action="store_true", dest="force", + help=_("Force conversion to Ogg Vorbis.")) parser.add_option('--help-gst', action="store_true", dest="_unused", help=_('Show GStreamer Options')) return parser @@ -542,6 +561,7 @@ self.tags_read = False self.duration = 0 self.mime_type = None + self.mime_type_keep = None def get_uri(self): return self.uri @@ -1056,6 +1076,7 @@ for t in mime_whitelist: if t in mime_type: self.sound_file.mime_type = mime_type + self.sound_file.mime_type_keep = mime_type if not self.sound_file.mime_type: log('Mime type skipped: %s' % mime_type) self.pipeline.set_state(gst.STATE_NULL) @@ -1456,6 +1477,12 @@ def found_type(self, sound_file, mime): debug('found_type', sound_file.get_filename()) + omime = _GCONF.get_string(gconfsc+'/output-mime-type') + if mime == 'audio/x-flac' and omime == 'audio/x-vorbis': + if sound_file.get_uri() in self.filelist: + del self.filelist[sound_file.get_uri()] + flacoggwarn() + return self.append_file(sound_file) self.window.set_sensitive() @@ -2717,8 +2744,12 @@ self.converter.add(sound_file) def do_convert(self): + omime = self.prefs.get_string('output-mime-type') try: for sound_file in self.filelist.get_files(): + if sound_file.mime_type_keep == 'audio/x-flac' and omime == 'audio/x-vorbis': + flacoggwarn() + continue if sound_file.tags_read: self.converter.add(sound_file) else: @@ -2934,6 +2965,11 @@ output_type = get_option('cli-output-type') output_suffix = get_option('cli-output-suffix') + if output_type == 'audio/x-vorbis' and not options.force: + sys.stderr.write('\nCAUTION: '+flacoggwarn_message) + sys.stderr.write('\nUse option -f/--force to ignore this at your own risk.\n') + sys.exit(1) + generator = TargetNameGenerator() generator.set_target_suffix(output_suffix)