brasero r1562 - in trunk: . src src/plugins/cdrkit src/plugins/cdrtools src/plugins/dvdauthor src/plugins/local-track src/plugins/transcode src/plugins/vcdimager



Author: philippr
Date: Sun Nov 23 14:15:18 2008
New Revision: 1562
URL: http://svn.gnome.org/viewvc/brasero?rev=1562&view=rev

Log:
	Improve previous patch by letting users without a burning backend able
	to write CD-TEXT write audio CDs nevertheless.

	Fix also some crashes introduced in previous patch and some minor glitches

	* src/brasero-audio-disc.c (brasero_audio_disc_set_session_param),
	(brasero_audio_disc_set_session_contents):
	* src/brasero-burn-options.c (brasero_burn_options_valid_media_cb):
	* src/brasero-disc-option-dialog.c
	(brasero_disc_option_dialog_load_multi_state),
	(brasero_disc_option_dialog_valid_media_cb):
	* src/brasero-jacket-edit.c (brasero_jacket_edit_set_audio_tracks):
	* src/brasero-medium-properties.c
	(brasero_medium_properties_valid_session):
	* src/brasero-project-manager.c
	(brasero_project_manager_burn_project):
	* src/brasero-project.c (brasero_project_set_uri):
	* src/brasero-session-cfg.c (brasero_session_cfg_get_error),
	(brasero_session_cfg_update), (brasero_session_cfg_class_init):
	* src/brasero-session-cfg.h:
	* src/burn-caps.c (brasero_caps_get_flags_for_disc),
	(brasero_caps_audio_new):
	* src/burn-debug.c (brasero_debug_audio_format_to_string):
	* src/burn-session.c (brasero_burn_session_class_init):
	* src/burn-track.h:
	* src/main.c (brasero_app_parse_options):
	* src/plugins/cdrkit/burn-wodim.c (brasero_wodim_export_caps):
	* src/plugins/cdrtools/burn-cdrecord.c
	(brasero_cdrecord_export_caps):
	* src/plugins/dvdauthor/burn-dvdauthor.c
	(brasero_dvd_author_export_caps):
	* src/plugins/local-track/burn-local-image.c
	(brasero_local_track_export_caps):
	* src/plugins/transcode/burn-normalize.c
	(brasero_normalize_export_caps):
	* src/plugins/transcode/burn-transcode.c (foreach_tag),
	(brasero_transcode_export_caps):
	* src/plugins/transcode/burn-vob.c (brasero_vob_export_caps):
	* src/plugins/vcdimager/burn-vcdimager.c
	(brasero_vcd_imager_export_caps):

Modified:
   trunk/ChangeLog
   trunk/src/brasero-audio-disc.c
   trunk/src/brasero-burn-options.c
   trunk/src/brasero-disc-option-dialog.c
   trunk/src/brasero-jacket-edit.c
   trunk/src/brasero-medium-properties.c
   trunk/src/brasero-project-manager.c
   trunk/src/brasero-project.c
   trunk/src/brasero-session-cfg.c
   trunk/src/brasero-session-cfg.h
   trunk/src/burn-caps.c
   trunk/src/burn-debug.c
   trunk/src/burn-session.c
   trunk/src/burn-track.h
   trunk/src/main.c
   trunk/src/plugins/cdrkit/burn-wodim.c
   trunk/src/plugins/cdrtools/burn-cdrecord.c
   trunk/src/plugins/dvdauthor/burn-dvdauthor.c
   trunk/src/plugins/local-track/burn-local-image.c
   trunk/src/plugins/transcode/burn-normalize.c
   trunk/src/plugins/transcode/burn-transcode.c
   trunk/src/plugins/transcode/burn-vob.c
   trunk/src/plugins/vcdimager/burn-vcdimager.c

Modified: trunk/src/brasero-audio-disc.c
==============================================================================
--- trunk/src/brasero-audio-disc.c	(original)
+++ trunk/src/brasero-audio-disc.c	Sun Nov 23 14:15:18 2008
@@ -2075,7 +2075,8 @@
 				      value);
 
 	type.type = BRASERO_TRACK_TYPE_AUDIO;
-	type.subtype.audio_format = BRASERO_AUDIO_FORMAT_UNDEFINED;
+	type.subtype.audio_format = BRASERO_AUDIO_FORMAT_UNDEFINED|
+				    BRASERO_METADATA_INFO;
 	brasero_burn_session_set_input_type (session, &type);
 
 	return BRASERO_BURN_OK;
@@ -2089,12 +2090,14 @@
 	GtkTreeModel *model;
 	BraseroTrack *track;
 	BraseroAudioDisc *audio;
+	BraseroTrackType track_type = { 0, };
 
 	audio = BRASERO_AUDIO_DISC (disc);
 	model = gtk_tree_view_get_model (GTK_TREE_VIEW (audio->priv->tree));
 	if (!gtk_tree_model_get_iter_first (model, &iter))
 		return BRASERO_DISC_ERROR_EMPTY_SELECTION;
 
+	brasero_burn_session_get_input_type (session, &track_type);
 	track = NULL;
 	do {
 		gchar *uri;
@@ -2156,7 +2159,10 @@
 			info->isrc = isrc;
 
 		track = brasero_track_new (BRASERO_TRACK_TYPE_AUDIO);
-		brasero_track_set_audio_source (track, uri, BRASERO_AUDIO_FORMAT_UNDEFINED);
+		brasero_track_set_audio_source (track,
+						uri,
+						track_type.subtype.audio_format);
+
 		brasero_track_set_audio_boundaries (track, start, end, -1);
 		brasero_track_set_audio_info (track, info);
 		brasero_burn_session_add_track (session, track);

Modified: trunk/src/brasero-burn-options.c
==============================================================================
--- trunk/src/brasero-burn-options.c	(original)
+++ trunk/src/brasero-burn-options.c	Sun Nov 23 14:15:18 2008
@@ -221,12 +221,13 @@
 	valid = brasero_session_cfg_get_error (session);
 
 	priv = BRASERO_BURN_OPTIONS_PRIVATE (self);
+	priv->is_valid = BRASERO_SESSION_IS_VALID (valid);
 
-	gtk_widget_set_sensitive (priv->button, valid == BRASERO_SESSION_VALID);
-	gtk_widget_set_sensitive (priv->options, valid == BRASERO_SESSION_VALID);
-	gtk_widget_set_sensitive (priv->properties, valid == BRASERO_SESSION_VALID);
+	gtk_widget_set_sensitive (priv->button, priv->is_valid);
+	gtk_widget_set_sensitive (priv->options, priv->is_valid);
+	gtk_widget_set_sensitive (priv->properties, priv->is_valid);
 
-	if (valid != BRASERO_SESSION_VALID)
+	if (!priv->is_valid)
 		gtk_widget_hide (priv->warning);
 	else if (brasero_burn_session_is_dest_file (BRASERO_BURN_SESSION (priv->session)))
 		gtk_widget_hide (priv->warning);
@@ -246,7 +247,6 @@
 	brasero_notify_message_remove (BRASERO_NOTIFY (priv->message_output),
 				       BRASERO_NOTIFY_CONTEXT_SIZE);
 
-	priv->is_valid = FALSE;
 	if (valid == BRASERO_SESSION_INSUFFICIENT_SPACE) {
 		brasero_notify_message_add (BRASERO_NOTIFY (priv->message_output),
 					    _("Please, choose another CD or DVD or insert a new one."),
@@ -261,6 +261,13 @@
 					    -1,
 					    BRASERO_NOTIFY_CONTEXT_SIZE);
 	}
+	else if (valid == BRASERO_SESSION_NO_CD_TEXT) {
+		brasero_notify_message_add (BRASERO_NOTIFY (priv->message_output),
+					    _("No track information (artist, compositor, ...) will be written to the disc."),
+					    _("This is not supported by the current active burning backend."),
+					    -1,
+					    BRASERO_NOTIFY_CONTEXT_SIZE);
+	}
 	else if (valid == BRASERO_SESSION_NO_INPUT_MEDIUM) {
 		GtkWidget *message;
 
@@ -337,8 +344,6 @@
 				  G_CALLBACK (brasero_burn_options_message_response_cb),
 				  self);
 	}
-	else
-		priv->is_valid = TRUE;
 
 	brasero_burn_options_update_no_medium_warning (self);
 	gtk_window_resize (GTK_WINDOW (self), 10, 10);

Modified: trunk/src/brasero-disc-option-dialog.c
==============================================================================
--- trunk/src/brasero-disc-option-dialog.c	(original)
+++ trunk/src/brasero-disc-option-dialog.c	Sun Nov 23 14:15:18 2008
@@ -102,6 +102,7 @@
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->multi_toggle), value);
 
 	if (!value) {
+		gtk_widget_set_sensitive (priv->multi_toggle, TRUE);
 		g_object_unref (session);
 		return;
 	}
@@ -967,7 +968,7 @@
 	priv = BRASERO_DISC_OPTION_DIALOG_PRIVATE (self);
 
 	if (priv->video_options)
-		gtk_widget_set_sensitive (priv->video_options, brasero_session_cfg_get_error (session) == BRASERO_SESSION_VALID);
+		gtk_widget_set_sensitive (priv->video_options, BRASERO_SESSION_IS_VALID (brasero_session_cfg_get_error (session)));
 
 	/* update the joliet button */
 	brasero_disc_option_dialog_update_joliet (self);

Modified: trunk/src/brasero-jacket-edit.c
==============================================================================
--- trunk/src/brasero-jacket-edit.c	(original)
+++ trunk/src/brasero-jacket-edit.c	Sun Nov 23 14:15:18 2008
@@ -806,40 +806,42 @@
 
 		info = brasero_track_get_audio_info (track);
 
-		if (info->title) {
-			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, info->title, "Subtitle", &start);
-		}
-		else {
-			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, _("Unknown song"), "Subtitle", &start);
-		}
+		if (info) {
+			if (info->title) {
+				BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, info->title, "Subtitle", &start);
+			}
+			else {
+				BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, _("Unknown song"), "Subtitle", &start);
+			}
+
+			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, "\t\t", "Subtitle", &start);
+
+			time = brasero_utils_get_time_string (brasero_track_get_audio_end (track) -
+							      brasero_track_get_audio_start (track),
+							      TRUE,
+							      FALSE);
+			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, time, "Subtitle", &start);
+			g_free (time);
+
+			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, "\n", "Subtitle", &start);
+
+			if (info->artist) {
+				/* Translators: "by" is followed by the name of an artist.
+				 * This text is the one written on the cover of a disc.
+				 * Before it there is the name of the song.
+				 * I had to break it because it is in a GtkTextBuffer
+				 * and every word has a different tag. */
+				BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, _("by"), "Artist", &start);
+				BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, " ", "Artist", &start);
+				BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, info->artist, "Artist", &start);
+				BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, " ", "Artist", &start);
+			}
 
-		BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, "\t\t", "Subtitle", &start);
+			if (info->composer)
+				BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, info->composer, "Subtitle", &start);
 
-		time = brasero_utils_get_time_string (brasero_track_get_audio_end (track) -
-						      brasero_track_get_audio_start (track),
-						      TRUE,
-						      FALSE);
-		BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, time, "Subtitle", &start);
-		g_free (time);
-
-		BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, "\n", "Subtitle", &start);
-
-		if (info->artist) {
-			/* Translators: "by" is followed by the name of an artist.
-			 * This text is the one written on the cover of a disc.
-			 * Before it there is the name of the song.
-			 * I had to break it because it is in a GtkTextBuffer
-			 * and every word has a different tag. */
-			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, _("by"), "Artist", &start);
-			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, " ", "Artist", &start);
-			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, info->artist, "Artist", &start);
-			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, " ", "Artist", &start);
+			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, "\n\n", "Subtitle", &start);
 		}
-
-		if (info->composer)
-			BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, info->composer, "Subtitle", &start);
-
-		BRASERO_JACKET_EDIT_INSERT_TAGGED_TEXT (buffer, "\n\n", "Subtitle", &start);
 	}
 
 	/* side */

Modified: trunk/src/brasero-medium-properties.c
==============================================================================
--- trunk/src/brasero-medium-properties.c	(original)
+++ trunk/src/brasero-medium-properties.c	Sun Nov 23 14:15:18 2008
@@ -566,7 +566,7 @@
 
 	/* make sure the current displayed path is valid */
 	if (brasero_burn_session_is_dest_file (priv->session))
-		brasero_medium_properties_update_image_output (self, brasero_session_cfg_get_error (session) == BRASERO_SESSION_VALID);
+		brasero_medium_properties_update_image_output (self, BRASERO_SESSION_IS_VALID (brasero_session_cfg_get_error (session)));
 }
 
 static void

Modified: trunk/src/brasero-project-manager.c
==============================================================================
--- trunk/src/brasero-project-manager.c	(original)
+++ trunk/src/brasero-project-manager.c	Sun Nov 23 14:15:18 2008
@@ -941,7 +941,6 @@
 
 	brasero_project_manager_set_oneshot (manager, TRUE);
 	type = brasero_project_open_project (BRASERO_PROJECT (manager->priv->project), uri);
-
 	if (type == BRASERO_PROJECT_TYPE_INVALID)
 		return;
 

Modified: trunk/src/brasero-project.c
==============================================================================
--- trunk/src/brasero-project.c	(original)
+++ trunk/src/brasero-project.c	Sun Nov 23 14:15:18 2008
@@ -1601,7 +1601,6 @@
 }
 
 /******************************* common to save/open ***************************/
-
 static void
 brasero_project_add_to_recents (BraseroProject *project,
 				const gchar *uri,
@@ -1646,8 +1645,10 @@
 
 	uri = uri ? uri : project->priv->project;
 
-    	/* add it to recent manager */
-    	brasero_project_add_to_recents (project, uri, TRUE);
+	/* add it to recent manager */
+	toplevel = gtk_widget_get_toplevel (GTK_WIDGET (project));
+	if (brasero_app_is_running (BRASERO_APP (toplevel)))
+		brasero_project_add_to_recents (project, uri, TRUE);
 
 	/* update the name of the main window */
     	BRASERO_GET_BASENAME_FOR_DISPLAY (uri, name);
@@ -1662,7 +1663,6 @@
  
 	g_free (name);
 
-	toplevel = gtk_widget_get_toplevel (GTK_WIDGET (project));
 	gtk_window_set_title (GTK_WINDOW (toplevel), title);
 	g_free (title);
 

Modified: trunk/src/brasero-session-cfg.c
==============================================================================
--- trunk/src/brasero-session-cfg.c	(original)
+++ trunk/src/brasero-session-cfg.c	Sun Nov 23 14:15:18 2008
@@ -53,6 +53,7 @@
 
 	BraseroSessionError is_valid;
 
+	guint CD_TEXT_modified:1;
 	guint configuring:1;
 	guint disabled:1;
 };
@@ -164,6 +165,11 @@
 	BraseroSessionCfgPrivate *priv;
 
 	priv = BRASERO_SESSION_CFG_PRIVATE (self);
+
+	if (priv->is_valid == BRASERO_SESSION_VALID
+	&&  priv->CD_TEXT_modified)
+		return BRASERO_SESSION_NO_CD_TEXT;
+
 	return priv->is_valid;
 }
 
@@ -576,7 +582,7 @@
 	if (priv->configuring)
 		return;
 
-	/* make sure there is a source */
+	/* Make sure there is a source */
 	brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), &source);
 	if (source.type == BRASERO_TRACK_TYPE_NONE) {
 		priv->is_valid = BRASERO_SESSION_NOT_SUPPORTED;
@@ -636,28 +642,66 @@
 		return;
 	}
 
-	priv->configuring = TRUE;
-
-	if (brasero_drive_is_fake (burner))
-		/* Remove some impossible flags */
-		brasero_burn_session_remove_flag (BRASERO_BURN_SESSION (self),
-						  BRASERO_BURN_FLAG_DUMMY|
-						  BRASERO_BURN_FLAG_NO_TMP_FILES);
-
-	if (update)
-		brasero_session_cfg_set_drive_properties (self);
-	else if (check)
-		brasero_session_cfg_check_drive_settings (self);
-
-	priv->configuring = FALSE;
-
-	result = brasero_burn_caps_is_session_supported (priv->caps, BRASERO_BURN_SESSION (self));
+	/* Check that current input and output work */
+	if (priv->CD_TEXT_modified) {
+		/* Try to redo what we undid (after all a new plugin could have
+		 * been activated in the mean time ...) and see what happens */
+		source.subtype.audio_format |= BRASERO_METADATA_INFO;
+		result = brasero_burn_caps_is_input_supported (priv->caps,
+							       BRASERO_BURN_SESSION (self),
+							       &source,
+							       FALSE);
+		if (result == BRASERO_BURN_OK) {
+			priv->CD_TEXT_modified = FALSE;
+
+			priv->configuring = TRUE;
+			brasero_burn_session_set_input_type (BRASERO_BURN_SESSION (self), &source);
+			priv->configuring = FALSE;
+		}
+		else {
+			/* No, nothing's changed */
+			source.subtype.audio_format &= ~BRASERO_METADATA_INFO;
+			result = brasero_burn_caps_is_input_supported (priv->caps,
+								       BRASERO_BURN_SESSION (self),
+								       &source,
+								       FALSE);
+		}
+	}
+	else {
+		/* NOTE: don't use flags here as they will be adapted afterwards */
+		result = brasero_burn_caps_is_input_supported (priv->caps,
+							       BRASERO_BURN_SESSION (self),
+							       &source,
+							       FALSE);
+
+		if (result != BRASERO_BURN_OK
+		&&  source.type == BRASERO_TRACK_TYPE_AUDIO
+		&& (source.subtype.audio_format & BRASERO_METADATA_INFO)) {
+			/* Another special case in case some burning backends don't
+			 * support CD-TEXT for audio (libburn). If no other backend is
+			 * available remove CD-TEXT option but tell user... */
+			/* NOTE: set flags to NONE as they'll need to be updated */
+			source.subtype.audio_format &= ~BRASERO_METADATA_INFO;
+			result = brasero_burn_caps_is_input_supported (priv->caps,
+								       BRASERO_BURN_SESSION (self),
+								       &source,
+								       FALSE);
+			BRASERO_BURN_LOG ("Tested support without Metadata information (result %d)", result);
+			if (result == BRASERO_BURN_OK) {
+				priv->CD_TEXT_modified = TRUE;
+
+				priv->configuring = TRUE;
+				brasero_burn_session_set_input_type (BRASERO_BURN_SESSION (self), &source);
+				priv->configuring = FALSE;
+			}
+		}
+	}
 
 	if (result != BRASERO_BURN_OK) {
-		/* This is a special case */
 		if (source.type == BRASERO_TRACK_TYPE_DISC
 		&& (source.subtype.media & BRASERO_MEDIUM_PROTECTED)
 		&&  brasero_track_type_is_supported (&source) != BRASERO_BURN_OK) {
+			/* This is a special case to display a helpful message */
 			priv->is_valid = BRASERO_SESSION_DISC_PROTECTED;
 			g_signal_emit (self,
 				       session_cfg_signals [IS_VALID_SIGNAL],
@@ -669,9 +713,27 @@
 				       session_cfg_signals [IS_VALID_SIGNAL],
 				       0);
 		}
+
 		return;
 	}
 
+	/* Configure flags */
+	priv->configuring = TRUE;
+
+	if (brasero_drive_is_fake (burner))
+		/* Remove some impossible flags */
+		brasero_burn_session_remove_flag (BRASERO_BURN_SESSION (self),
+						  BRASERO_BURN_FLAG_DUMMY|
+						  BRASERO_BURN_FLAG_NO_TMP_FILES);
+
+	if (update)
+		brasero_session_cfg_set_drive_properties (self);
+	else if (check)
+		brasero_session_cfg_check_drive_settings (self);
+
+	priv->configuring = FALSE;
+
+	/* Finally check size */
 	if (brasero_burn_session_same_src_dest_drive (BRASERO_BURN_SESSION (self))) {
 		priv->is_valid = BRASERO_SESSION_VALID;
 		g_signal_emit (self,
@@ -875,7 +937,7 @@
 	session_cfg_signals[IS_VALID_SIGNAL] =
 		g_signal_new ("is_valid",
 		              G_OBJECT_CLASS_TYPE (klass),
-		              G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_RUN_CLEANUP | G_SIGNAL_ACTION,
+		              G_SIGNAL_RUN_LAST | G_SIGNAL_RUN_CLEANUP | G_SIGNAL_ACTION,
 		              0,
 		              NULL, NULL,
 		              g_cclosure_marshal_VOID__VOID,

Modified: trunk/src/brasero-session-cfg.h
==============================================================================
--- trunk/src/brasero-session-cfg.h	(original)
+++ trunk/src/brasero-session-cfg.h	Sun Nov 23 14:15:18 2008
@@ -60,7 +60,8 @@
 
 typedef enum {
 	BRASERO_SESSION_VALID				= 0,
-	BRASERO_SESSION_NO_INPUT_IMAGE			= 1,
+	BRASERO_SESSION_NO_CD_TEXT			= 1,
+	BRASERO_SESSION_NO_INPUT_IMAGE			= 2,
 	BRASERO_SESSION_UNKNOWN_IMAGE,
 	BRASERO_SESSION_NO_INPUT_MEDIUM,
 	BRASERO_SESSION_NO_OUTPUT,
@@ -70,6 +71,10 @@
 	BRASERO_SESSION_DISC_PROTECTED
 } BraseroSessionError;
 
+#define BRASERO_SESSION_IS_VALID(result_MACRO)					\
+	((result_MACRO) == BRASERO_SESSION_VALID ||				\
+	 (result_MACRO) == BRASERO_SESSION_NO_CD_TEXT)
+
 BraseroSessionCfg *
 brasero_session_cfg_new (void);
 

Modified: trunk/src/burn-caps.c
==============================================================================
--- trunk/src/burn-caps.c	(original)
+++ trunk/src/burn-caps.c	Sun Nov 23 14:15:18 2008
@@ -2398,6 +2398,13 @@
 	else
 		supported_flags &= ~BRASERO_BURN_FLAG_RAW;
 
+	if ((supported_flags & BRASERO_BURN_FLAG_DAO)
+	&&   input->type == BRASERO_TRACK_TYPE_AUDIO
+	&&  (input->subtype.img_format & BRASERO_METADATA_INFO)) {
+		/* In this case, DAO is compulsory if we want to write CD-TEXT */
+		compulsory_flags |= BRASERO_BURN_FLAG_DAO;
+	}
+
 	if (io_flags & BRASERO_PLUGIN_IO_ACCEPT_PIPE) {
 		supported_flags |= BRASERO_BURN_FLAG_NO_TMP_FILES;
 
@@ -3147,15 +3154,22 @@
 		 * them, the other does have a VIDEO stream too. */
 		common_audio = BRASERO_AUDIO_CAPS_AUDIO (caps->type.subtype.audio_format) & 
 			       BRASERO_AUDIO_CAPS_AUDIO (format);
-		if (common_audio == BRASERO_AUDIO_FORMAT_NONE)
+		if (common_audio == BRASERO_AUDIO_FORMAT_NONE
+		&& (BRASERO_AUDIO_CAPS_AUDIO (caps->type.subtype.audio_format)
+		||  BRASERO_AUDIO_CAPS_AUDIO (format)))
 			continue;
 
 		common_video = BRASERO_AUDIO_CAPS_VIDEO (caps->type.subtype.audio_format) & 
 			       BRASERO_AUDIO_CAPS_VIDEO (format);
-		if (common_video == BRASERO_AUDIO_FORMAT_NONE)
+
+		if (common_video == BRASERO_AUDIO_FORMAT_NONE
+		&& (BRASERO_AUDIO_CAPS_VIDEO (caps->type.subtype.audio_format)
+		||  BRASERO_AUDIO_CAPS_VIDEO (format)))
 			continue;
 
-		common = common_audio|common_video;
+		/* Likewise... that must be common */
+		if ((caps->type.subtype.audio_format & BRASERO_METADATA_INFO) != (format & BRASERO_METADATA_INFO))
+			continue;
 
 		/* encompassed caps just add it to retval */
 		if (caps->type.subtype.audio_format == common)

Modified: trunk/src/burn-debug.c
==============================================================================
--- trunk/src/burn-debug.c	(original)
+++ trunk/src/burn-debug.c	Sun Nov 23 14:15:18 2008
@@ -305,6 +305,9 @@
 
 	if (format & BRASERO_VIDEO_FORMAT_VCD)
 		strcat (buffer, "Video DVD ");
+
+	if (format & BRASERO_METADATA_INFO)
+		strcat (buffer, "Metadata Information ");
 }
 
 void

Modified: trunk/src/burn-session.c
==============================================================================
--- trunk/src/burn-session.c	(original)
+++ trunk/src/burn-session.c	Sun Nov 23 14:15:18 2008
@@ -1607,7 +1607,7 @@
 	brasero_burn_session_signals [OUTPUT_CHANGED_SIGNAL] =
 	    g_signal_new ("output_changed",
 			  BRASERO_TYPE_BURN_SESSION,
-			  G_SIGNAL_RUN_FIRST|G_SIGNAL_ACTION|G_SIGNAL_NO_RECURSE,
+			  G_SIGNAL_RUN_FIRST,
 			  G_STRUCT_OFFSET (BraseroBurnSessionClass, output_changed),
 			  NULL,
 			  NULL,
@@ -1618,7 +1618,7 @@
 	brasero_burn_session_signals [INPUT_CHANGED_SIGNAL] =
 	    g_signal_new ("input_changed",
 			  BRASERO_TYPE_BURN_SESSION,
-			  G_SIGNAL_RUN_FIRST|G_SIGNAL_ACTION|G_SIGNAL_NO_RECURSE,
+			  G_SIGNAL_RUN_FIRST,
 			  G_STRUCT_OFFSET (BraseroBurnSessionClass, input_changed),
 			  NULL,
 			  NULL,

Modified: trunk/src/burn-track.h
==============================================================================
--- trunk/src/burn-track.h	(original)
+++ trunk/src/burn-track.h	Sun Nov 23 14:15:18 2008
@@ -70,11 +70,13 @@
 	BRASERO_AUDIO_FORMAT_48000		= 1 << 6,
 	BRASERO_VIDEO_FORMAT_UNDEFINED		= 1 << 7,
 	BRASERO_VIDEO_FORMAT_VCD		= 1 << 8,
-	BRASERO_VIDEO_FORMAT_VIDEO_DVD		= 1 << 9
+	BRASERO_VIDEO_FORMAT_VIDEO_DVD		= 1 << 9,
+
+	BRASERO_METADATA_INFO			= 1 << 10
 } BraseroAudioFormat;
 
 #define BRASERO_AUDIO_CAPS_AUDIO(caps_FORMAT)	((caps_FORMAT) & 0x007F)
-#define BRASERO_AUDIO_CAPS_VIDEO(caps_FORMAT)	((caps_FORMAT) & 0x0180)
+#define BRASERO_AUDIO_CAPS_VIDEO(caps_FORMAT)	((caps_FORMAT) & 0x0380)
 
 typedef enum {
 	BRASERO_CHECKSUM_NONE			= 0,

Modified: trunk/src/main.c
==============================================================================
--- trunk/src/main.c	(original)
+++ trunk/src/main.c	Sun Nov 23 14:15:18 2008
@@ -207,6 +207,8 @@
 		nb ++;
 
 	if (nb > 1) {
+		brasero_app_run (app, FALSE);
+
 		brasero_app_alert (app,
 				   _("Incompatible command line options used."),
 				   _("Only one option can be given at a time"),

Modified: trunk/src/plugins/cdrkit/burn-wodim.c
==============================================================================
--- trunk/src/plugins/cdrkit/burn-wodim.c	(original)
+++ trunk/src/plugins/cdrkit/burn-wodim.c	Sun Nov 23 14:15:18 2008
@@ -1057,6 +1057,15 @@
 	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_PIPE|
 					BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					BRASERO_AUDIO_FORMAT_RAW|
+					BRASERO_AUDIO_FORMAT_44100|
+					BRASERO_METADATA_INFO);
+
+	brasero_plugin_link_caps (plugin, output, input);
+	g_slist_free (input);
+
+	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_PIPE|
+					BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					BRASERO_AUDIO_FORMAT_RAW|
 					BRASERO_AUDIO_FORMAT_44100);
 
 	brasero_plugin_link_caps (plugin, output, input);

Modified: trunk/src/plugins/cdrtools/burn-cdrecord.c
==============================================================================
--- trunk/src/plugins/cdrtools/burn-cdrecord.c	(original)
+++ trunk/src/plugins/cdrtools/burn-cdrecord.c	Sun Nov 23 14:15:18 2008
@@ -1047,6 +1047,15 @@
 	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_PIPE|
 					BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					BRASERO_AUDIO_FORMAT_RAW|
+					BRASERO_AUDIO_FORMAT_44100|
+					BRASERO_METADATA_INFO);
+
+	brasero_plugin_link_caps (plugin, output, input);
+	g_slist_free (input);
+
+	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_PIPE|
+					BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					BRASERO_AUDIO_FORMAT_RAW|
 					BRASERO_AUDIO_FORMAT_44100);
 
 	brasero_plugin_link_caps (plugin, output, input);

Modified: trunk/src/plugins/dvdauthor/burn-dvdauthor.c
==============================================================================
--- trunk/src/plugins/dvdauthor/burn-dvdauthor.c	(original)
+++ trunk/src/plugins/dvdauthor/burn-dvdauthor.c	Sun Nov 23 14:15:18 2008
@@ -372,12 +372,25 @@
 					BRASERO_AUDIO_FORMAT_RAW|
 					BRASERO_AUDIO_FORMAT_44100|
 					BRASERO_AUDIO_FORMAT_48000|
+					BRASERO_METADATA_INFO|
 					BRASERO_VIDEO_FORMAT_VIDEO_DVD);
+
 	output = brasero_caps_data_new (BRASERO_IMAGE_FS_ISO|
 					BRASERO_IMAGE_FS_UDF|
 					BRASERO_IMAGE_FS_VIDEO);
 
 	brasero_plugin_link_caps (plugin, output, input);
+	g_slist_free (input);
+
+	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					BRASERO_AUDIO_FORMAT_AC3|
+					BRASERO_AUDIO_FORMAT_MP2|
+					BRASERO_AUDIO_FORMAT_RAW|
+					BRASERO_AUDIO_FORMAT_44100|
+					BRASERO_AUDIO_FORMAT_48000|
+					BRASERO_VIDEO_FORMAT_VIDEO_DVD);
+
+	brasero_plugin_link_caps (plugin, output, input);
 	g_slist_free (output);
 	g_slist_free (input);
 

Modified: trunk/src/plugins/local-track/burn-local-image.c
==============================================================================
--- trunk/src/plugins/local-track/burn-local-image.c	(original)
+++ trunk/src/plugins/local-track/burn-local-image.c	Sun Nov 23 14:15:18 2008
@@ -1085,10 +1085,24 @@
 				       BRASERO_AUDIO_FORMAT_AC3|
 				       BRASERO_AUDIO_FORMAT_MP2|
 				       BRASERO_AUDIO_FORMAT_44100|
-				       BRASERO_AUDIO_FORMAT_48000);
+				       BRASERO_AUDIO_FORMAT_48000|
+				       BRASERO_METADATA_INFO);
 	brasero_plugin_process_caps (plugin, caps);
 	g_slist_free (caps);
 
+	caps = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+				       BRASERO_AUDIO_FORMAT_UNDEFINED|
+				       BRASERO_AUDIO_FORMAT_4_CHANNEL|
+				       BRASERO_AUDIO_FORMAT_RAW|
+				       BRASERO_VIDEO_FORMAT_UNDEFINED|
+				       BRASERO_VIDEO_FORMAT_VCD|
+				       BRASERO_VIDEO_FORMAT_VIDEO_DVD|
+				       BRASERO_AUDIO_FORMAT_AC3|
+				       BRASERO_AUDIO_FORMAT_MP2|
+				       BRASERO_AUDIO_FORMAT_44100|
+				       BRASERO_AUDIO_FORMAT_48000);
+	brasero_plugin_process_caps (plugin, caps);
+	g_slist_free (caps);
 	caps = brasero_caps_data_new (BRASERO_IMAGE_FS_ANY);
 	brasero_plugin_process_caps (plugin, caps);
 	g_slist_free (caps);

Modified: trunk/src/plugins/transcode/burn-normalize.c
==============================================================================
--- trunk/src/plugins/transcode/burn-normalize.c	(original)
+++ trunk/src/plugins/transcode/burn-normalize.c	Sun Nov 23 14:15:18 2008
@@ -586,12 +586,18 @@
 	gst_object_unref (element);
 
 	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					BRASERO_AUDIO_FORMAT_UNDEFINED|
+					BRASERO_METADATA_INFO);
+	brasero_plugin_process_caps (plugin, input);
+	g_slist_free (input);
+
+	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					BRASERO_AUDIO_FORMAT_UNDEFINED);
 	brasero_plugin_process_caps (plugin, input);
+	g_slist_free (input);
 
 	/* We should run first */
 	brasero_plugin_set_process_flags (plugin, BRASERO_PLUGIN_RUN_PREPROCESSING);
-	g_slist_free (input);
 
 	return BRASERO_BURN_OK;
 }

Modified: trunk/src/plugins/transcode/burn-transcode.c
==============================================================================
--- trunk/src/plugins/transcode/burn-transcode.c	(original)
+++ trunk/src/plugins/transcode/burn-transcode.c	Sun Nov 23 14:15:18 2008
@@ -1213,18 +1213,18 @@
 	brasero_job_get_current_track (BRASERO_JOB (transcode), &track);
 	info = brasero_track_get_audio_info (track);
 
-	if (!strcmp (tag, GST_TAG_TITLE)) {
+	if (info && !strcmp (tag, GST_TAG_TITLE)) {
 		if (!info->title)
 			gst_tag_list_get_string (list, tag, &(info->title));
 	}
-	else if (!strcmp (tag, GST_TAG_ARTIST)) {
+	else if (info && !strcmp (tag, GST_TAG_ARTIST)) {
 		if (!info->artist)
 			gst_tag_list_get_string (list, tag, &(info->artist));
 	}
-	else if (!strcmp (tag, GST_TAG_ISRC)) {
+	else if (info && !strcmp (tag, GST_TAG_ISRC)) {
 		gst_tag_list_get_int (list, tag, &(info->isrc));
 	}
-	else if (!strcmp (tag, GST_TAG_PERFORMER)) {
+	else if (info && !strcmp (tag, GST_TAG_PERFORMER)) {
 		if (!info->artist)
 			gst_tag_list_get_string (list, tag, &(info->artist));
 	}
@@ -1551,6 +1551,20 @@
 	output = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE|
 					 BRASERO_PLUGIN_IO_ACCEPT_PIPE,
 					 BRASERO_AUDIO_FORMAT_RAW|
+					 BRASERO_AUDIO_FORMAT_44100|
+					 BRASERO_METADATA_INFO);
+
+	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					BRASERO_AUDIO_FORMAT_UNDEFINED|
+					BRASERO_METADATA_INFO);
+
+	brasero_plugin_link_caps (plugin, output, input);
+	g_slist_free (output);
+	g_slist_free (input);
+
+	output = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE|
+					 BRASERO_PLUGIN_IO_ACCEPT_PIPE,
+					 BRASERO_AUDIO_FORMAT_RAW|
 					 BRASERO_AUDIO_FORMAT_44100);
 
 	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,

Modified: trunk/src/plugins/transcode/burn-vob.c
==============================================================================
--- trunk/src/plugins/transcode/burn-vob.c	(original)
+++ trunk/src/plugins/transcode/burn-vob.c	Sun Nov 23 14:15:18 2008
@@ -1093,10 +1093,12 @@
 
 	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					BRASERO_AUDIO_FORMAT_UNDEFINED|
-					BRASERO_VIDEO_FORMAT_UNDEFINED);
+					BRASERO_VIDEO_FORMAT_UNDEFINED|
+					BRASERO_METADATA_INFO);
 	output = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					 BRASERO_AUDIO_FORMAT_MP2|
 					 BRASERO_AUDIO_FORMAT_44100|
+					 BRASERO_METADATA_INFO|
 					 BRASERO_VIDEO_FORMAT_VCD);
 	brasero_plugin_link_caps (plugin, output, input);
 	g_slist_free (output);
@@ -1107,10 +1109,31 @@
 					 BRASERO_AUDIO_FORMAT_RAW|
 					 BRASERO_AUDIO_FORMAT_44100|
 					 BRASERO_AUDIO_FORMAT_48000|
+					 BRASERO_METADATA_INFO|
 					 BRASERO_VIDEO_FORMAT_VIDEO_DVD);
 	brasero_plugin_link_caps (plugin, output, input);
 	g_slist_free (output);
 	g_slist_free (input);
 
+	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					BRASERO_AUDIO_FORMAT_UNDEFINED|
+					BRASERO_VIDEO_FORMAT_UNDEFINED);
+	output = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					 BRASERO_AUDIO_FORMAT_MP2|
+					 BRASERO_AUDIO_FORMAT_44100|
+					 BRASERO_VIDEO_FORMAT_VCD);
+	brasero_plugin_link_caps (plugin, output, input);
+	g_slist_free (output);
+
+	output = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					 BRASERO_AUDIO_FORMAT_AC3|
+					 BRASERO_AUDIO_FORMAT_MP2|
+					 BRASERO_AUDIO_FORMAT_RAW|
+					 BRASERO_AUDIO_FORMAT_44100|
+					 BRASERO_AUDIO_FORMAT_48000|
+					 BRASERO_VIDEO_FORMAT_VIDEO_DVD);
+	brasero_plugin_link_caps (plugin, output, input);
+	g_slist_free (output);
+	g_slist_free (input);
 	return BRASERO_BURN_OK;
 }

Modified: trunk/src/plugins/vcdimager/burn-vcdimager.c
==============================================================================
--- trunk/src/plugins/vcdimager/burn-vcdimager.c	(original)
+++ trunk/src/plugins/vcdimager/burn-vcdimager.c	Sun Nov 23 14:15:18 2008
@@ -481,11 +481,21 @@
 	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					BRASERO_AUDIO_FORMAT_MP2|
 					BRASERO_AUDIO_FORMAT_44100|
-					BRASERO_VIDEO_FORMAT_VCD);
+					BRASERO_VIDEO_FORMAT_VCD|
+					BRASERO_METADATA_INFO);
+
 	output = brasero_caps_image_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
 					 BRASERO_IMAGE_FORMAT_CUE);
 
 	brasero_plugin_link_caps (plugin, output, input);
+	g_slist_free (input);
+
+	input = brasero_caps_audio_new (BRASERO_PLUGIN_IO_ACCEPT_FILE,
+					BRASERO_AUDIO_FORMAT_MP2|
+					BRASERO_AUDIO_FORMAT_44100|
+					BRASERO_VIDEO_FORMAT_VCD);
+
+	brasero_plugin_link_caps (plugin, output, input);
 	g_slist_free (output);
 	g_slist_free (input);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]