9cbaef4fe7
patch-server_asobj_SoundGst_cpp from guilherme m. schroeder on ports@ patch-server_asobj_NetStreamGst_cpp from Deomid Ryabkov on gnash-dev With help from kurt@ and brad@, thanks!
75 lines
3.4 KiB
Plaintext
75 lines
3.4 KiB
Plaintext
$OpenBSD: patch-server_asobj_NetStreamGst_cpp,v 1.1 2008/06/28 15:46:33 deanna Exp $
|
|
--- server/asobj/NetStreamGst.cpp.orig Tue Jun 3 20:11:29 2008
|
|
+++ server/asobj/NetStreamGst.cpp Tue Jun 24 20:10:07 2008
|
|
@@ -84,6 +84,7 @@ NetStreamGst::NetStreamGst()
|
|
|
|
// Setup video conversion and sink
|
|
|
|
+ GstElement* video_queue = gst_element_factory_make ("queue", "gnash_videoqueue");
|
|
|
|
// setup the video colorspaceconverter converter
|
|
GstElement* colorspace = gst_element_factory_make ("ffmpegcolorspace", "gnash_colorspace");
|
|
@@ -112,21 +113,27 @@ NetStreamGst::NetStreamGst()
|
|
|
|
// Create the video pipeline and link the elements. The pipeline will
|
|
// dereference the elements when they are destroyed.
|
|
- gst_bin_add_many (GST_BIN (_videobin), colorspace, videoscale, videocaps, videosink, NULL);
|
|
+ gst_bin_add_many (GST_BIN (_videobin), video_queue, colorspace, videoscale,
|
|
+ videocaps, videosink, NULL);
|
|
|
|
- if (!colorspace || !videoscale || !videocaps || !videosink) {
|
|
+ if (!video_queue || !colorspace || !videoscale || !videocaps || !videosink) {
|
|
log_error(_("Couldn't create the Gstreamer video conversion elements. "
|
|
"Please make sure Gstreamer and gstreamer-plugins-base are "
|
|
"correctly installed. Video playback will not be possible."));
|
|
}
|
|
|
|
- rv = gst_element_link_many(colorspace, videoscale, videocaps, videosink, NULL);
|
|
+ rv = gst_element_link_many(video_queue, colorspace, videoscale, videocaps, videosink, NULL);
|
|
if (!rv) {
|
|
log_error(_("Failed to link video conversion elements. Video playback will"
|
|
" not be possible"));
|
|
}
|
|
|
|
+ GstPad* target_videopad = gst_element_get_static_pad (video_queue, "sink");
|
|
+ gst_element_add_pad(_videobin, gst_ghost_pad_new ("sink", target_videopad));
|
|
+ gst_object_unref(GST_OBJECT(target_videopad));
|
|
+
|
|
// Setup audio sink
|
|
+ GstElement* audio_queue = gst_element_factory_make ("queue", "gnash_audioqueue");
|
|
GstElement* audioconvert = gst_element_factory_make ("audioconvert", NULL);
|
|
GstElement* audioresample = gst_element_factory_make ("audioresample", NULL);
|
|
|
|
@@ -143,27 +150,20 @@ NetStreamGst::NetStreamGst()
|
|
audiosink = gst_element_factory_make ("fakesink", NULL);
|
|
}
|
|
|
|
- gst_bin_add_many(GST_BIN(_audiobin), audioconvert, audioresample, audiosink, NULL);
|
|
+ gst_bin_add_many(GST_BIN(_audiobin), audio_queue, audioconvert, audioresample, audiosink, NULL);
|
|
|
|
- if (!audioconvert || !audiosink || !audioresample) {
|
|
+ if (!audio_queue || !audioconvert || !audiosink || !audioresample) {
|
|
log_error("Couldn't create Gstreamer audio elements. Audio playback will "
|
|
"not be possible");
|
|
}
|
|
- rv = gst_element_link_many(audioconvert, audioresample, audiosink, NULL);
|
|
+ rv = gst_element_link_many(audio_queue, audioconvert, audioresample, audiosink, NULL);
|
|
if (!rv) {
|
|
log_error("Couldn't link audio elements. There will be no audio playback.");
|
|
}
|
|
|
|
- GstPad* target_audiopad = gst_element_get_static_pad (audioconvert, "sink");
|
|
- GstPad* target_videopad = gst_element_get_static_pad (colorspace, "sink");
|
|
-
|
|
- gst_element_add_pad(_videobin, gst_ghost_pad_new ("sink", target_videopad));
|
|
+ GstPad* target_audiopad = gst_element_get_static_pad (audio_queue, "sink");
|
|
gst_element_add_pad(_audiobin, gst_ghost_pad_new ("sink", target_audiopad));
|
|
-
|
|
- gst_object_unref(GST_OBJECT(target_videopad));
|
|
gst_object_unref(GST_OBJECT(target_audiopad));
|
|
-
|
|
-
|
|
}
|
|
|
|
NetStreamGst::~NetStreamGst()
|