Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 60c3578e431f5f39e18492b0b2d16569 > files > 3

soundconverter-1.5.4-10.fc16.src.rpm

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)