brasero r1663 - in trunk: . src/plugins/transcode



Author: philippr
Date: Fri Dec 26 20:20:52 2008
New Revision: 1663
URL: http://svn.gnome.org/viewvc/brasero?rev=1663&view=rev

Log:
2008-12-26  Philippe Rouquier  <ykw localhost localdomain>

	Fix MPEG2 encoding of video for SVCD

	* src/plugins/transcode/burn-vob.c (brasero_vob_build_audio_mp2),
	(brasero_vob_build_video_bin), (brasero_vob_build_pipeline),
	(brasero_vob_start):


Modified:
   trunk/ChangeLog
   trunk/src/plugins/transcode/burn-vob.c

Modified: trunk/src/plugins/transcode/burn-vob.c
==============================================================================
--- trunk/src/plugins/transcode/burn-vob.c	(original)
+++ trunk/src/plugins/transcode/burn-vob.c	Fri Dec 26 20:20:52 2008
@@ -357,7 +357,7 @@
 			     BRASERO_BURN_ERROR,
 			     BRASERO_BURN_ERROR_GENERAL,
 			     _("%s element could not be created"),
-			     "\"Fenc_mp2\"");
+			     "\"ffenc_mp2\"");
 		goto error;
 	}
 	gst_bin_add (GST_BIN (priv->pipeline), encode);
@@ -383,6 +383,13 @@
 		GstElement *filter;
 		GstCaps *filtercaps;
 
+		if (!priv->svcd) {
+			BRASERO_JOB_LOG (vob, "Setting mp2 bitrate to 224000");
+			g_object_set (encode,
+				      "bitrate", 224000,
+				      NULL);
+		}
+
 		/* This is for (S)VCD which need to have audio at 44100 khz */
 
 		/* create a filter */
@@ -577,6 +584,7 @@
 	GstPad *sinkpad;
 	GstElement *scale;
 	GstElement *queue;
+	GstElement *queue1;
 	GstElement *filter;
 	GstElement *encode;
 	GstPadLinkReturn res;
@@ -668,6 +676,7 @@
 		g_object_set (encode,
 			      "format", 8,
 			      NULL);
+
 	/* NOTE: there is another option to improve compatibility with vcdimager
 	 * but that would mean be sure that it's the next. */
 	else if (priv->svcd)
@@ -804,9 +813,26 @@
 		}
 	}
 
-	gst_element_link_many (queue, framerate, scale, colorspace, filter, encode, NULL);
+	/* another queue */
+	queue1 = gst_element_factory_make ("queue", NULL);
+	if (queue1 == NULL) {
+		g_set_error (error,
+			     BRASERO_BURN_ERROR,
+			     BRASERO_BURN_ERROR_GENERAL,
+			     _("%s element could not be created"),
+			     "\"Queue1\"");
+		goto error;
+	}
+	gst_bin_add (GST_BIN (priv->pipeline), queue1);
+	g_object_set (queue1,
+		      "max-size-bytes", 0,
+		      "max-size-buffers", 0,
+		      "max-size-time", (gint64) 0,
+		      NULL);
+
+	gst_element_link_many (queue, framerate, scale, colorspace, filter, encode, queue1, NULL);
 
-	srcpad = gst_element_get_static_pad (encode, "src");
+	srcpad = gst_element_get_static_pad (queue1, "src");
 	sinkpad = gst_element_get_request_pad (muxer, "video_%d");
 	res = gst_pad_link (srcpad, sinkpad);
 	BRASERO_JOB_LOG (vob, "Linked video bin to muxer == %d", res)
@@ -892,9 +918,9 @@
 		g_object_set (muxer,
 			      "format", 4,
 			      NULL);
-	else
+	else	/* This should be 1 but it causes frame drops */
 		g_object_set (muxer,
-			      "format", 1,
+			      "format", 4,
 			      NULL);
 
 	/* create sink */
@@ -983,7 +1009,7 @@
 		priv->is_video_dvd = TRUE;
 
 	BRASERO_JOB_LOG (job,
-			 "Got output type (is DVD %i, is SVCD %i",
+			 "Got output type (is DVD %i, is SVCD %i)",
 			 priv->is_video_dvd,
 			 priv->svcd);
 



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