[totem] backend: added audio converters
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [totem] backend: added audio converters
- Date: Tue, 6 Nov 2012 12:33:24 +0000 (UTC)
commit b8f8c66c8c634e689e81a83d80c624aca3a98888
Author: Carlos Rafael Giani <dv pseudoterminal org>
Date: Fri Nov 2 23:35:20 2012 +0100
backend: added audio converters
This makes the backend more robust in case either playbin's internal
decodebin does not produce supported audio formats, or the audio sink
cannot playback with the produced audio format.
Signed-off-by: Carlos Rafael Giani <dv pseudoterminal org>
https://bugzilla.gnome.org/show_bug.cgi?id=687483
src/backend/bacon-video-widget.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/src/backend/bacon-video-widget.c b/src/backend/bacon-video-widget.c
index e017645..dc727d9 100644
--- a/src/backend/bacon-video-widget.c
+++ b/src/backend/bacon-video-widget.c
@@ -5947,7 +5947,7 @@ bacon_video_widget_initable_init (GInitable *initable,
gchar *version_str;
GstPlayFlags flags;
ClutterConstraint *constraint;
- GstElement *audio_bin;
+ GstElement *audio_bin, *audio_converter;
GstPad *audio_pad;
bvw = BACON_VIDEO_WIDGET (initable);
@@ -5967,11 +5967,13 @@ bacon_video_widget_initable_init (GInitable *initable,
/* Instantiate all the fallible plugins */
bvw->priv->play = element_make_or_warn ("playbin", "play");
+ audio_converter = element_make_or_warn ("audioconvert", "audio-converter");
bvw->priv->audio_pitchcontrol = element_make_or_warn ("scaletempo", "scaletempo");
video_sink = element_make_or_warn ("cluttersink", "video-sink");
audio_sink = element_make_or_warn ("autoaudiosink", "audio-sink");
if (!bvw->priv->play ||
+ !audio_converter ||
!bvw->priv->audio_pitchcontrol ||
!video_sink ||
!audio_sink) {
@@ -5979,6 +5981,8 @@ bacon_video_widget_initable_init (GInitable *initable,
g_object_ref_sink (video_sink);
if (audio_sink)
g_object_ref_sink (audio_sink);
+ if (audio_converter)
+ g_object_ref_sink (audio_converter);
g_set_error_literal (error, BVW_ERROR, BVW_ERROR_PLUGIN_LOAD,
_("Some necessary plug-ins are missing. "
"Make sure that the program is correctly installed."));
@@ -6062,14 +6066,17 @@ bacon_video_widget_initable_init (GInitable *initable,
bvw->priv->audio_capsfilter =
gst_element_factory_make ("capsfilter", "audiofilter");
audio_bin = gst_bin_new ("audiosinkbin");
- gst_bin_add_many (GST_BIN (audio_bin), bvw->priv->audio_capsfilter,
- bvw->priv->audio_pitchcontrol, audio_sink, NULL);
+ gst_bin_add_many (GST_BIN (audio_bin), audio_converter,
+ bvw->priv->audio_capsfilter,
+ bvw->priv->audio_pitchcontrol, audio_sink, NULL);
+ gst_element_link_pads (audio_converter, "src",
+ bvw->priv->audio_capsfilter, "sink");
gst_element_link_pads (bvw->priv->audio_capsfilter, "src",
- bvw->priv->audio_pitchcontrol, "sink");
+ bvw->priv->audio_pitchcontrol, "sink");
gst_element_link_pads (bvw->priv->audio_pitchcontrol, "src",
- audio_sink, "sink");
+ audio_sink, "sink");
- audio_pad = gst_element_get_static_pad (bvw->priv->audio_capsfilter, "sink");
+ audio_pad = gst_element_get_static_pad (audio_converter, "sink");
gst_element_add_pad (audio_bin, gst_ghost_pad_new ("sink", audio_pad));
gst_object_unref (audio_pad);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]