summaryrefslogtreecommitdiffstats
path: root/debian/patches/escape-url-passed-to-gstreamer.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/escape-url-passed-to-gstreamer.diff')
-rw-r--r--debian/patches/escape-url-passed-to-gstreamer.diff50
1 files changed, 50 insertions, 0 deletions
diff --git a/debian/patches/escape-url-passed-to-gstreamer.diff b/debian/patches/escape-url-passed-to-gstreamer.diff
new file mode 100644
index 000000000..e90fadb1c
--- /dev/null
+++ b/debian/patches/escape-url-passed-to-gstreamer.diff
@@ -0,0 +1,50 @@
+From 6167f5815aefa78a70517c8e2acbdd7b9c9be27d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolan.mcnamara@collabora.com>
+Date: Fri, 3 Nov 2023 14:20:07 +0000
+Subject: escape url passed to gstreamer
+
+Change-Id: I3c93ee34800cc8563370f75ef3ef6f8a9220e6ec
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158894
+Tested-by: Jenkins
+Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
+(cherry picked from commit f41dcadf6492a6ffd32696d50f818e44355b9ad9)
+Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159583
+---
+ avmedia/source/gstreamer/gstframegrabber.cxx | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/avmedia/source/gstreamer/gstframegrabber.cxx b/avmedia/source/gstreamer/gstframegrabber.cxx
+index ece799d87530..25170a296e66 100644
+--- a/avmedia/source/gstreamer/gstframegrabber.cxx
++++ b/avmedia/source/gstreamer/gstframegrabber.cxx
+@@ -50,11 +50,9 @@ void FrameGrabber::disposePipeline()
+
+ FrameGrabber::FrameGrabber( std::u16string_view rURL )
+ {
+- gchar *pPipelineStr;
+- pPipelineStr = g_strdup_printf(
+- "uridecodebin uri=%s ! videoconvert ! videoscale ! appsink "
+- "name=sink caps=\"video/x-raw,format=RGB,pixel-aspect-ratio=1/1\"",
+- OUStringToOString( rURL, RTL_TEXTENCODING_UTF8 ).getStr() );
++ const char pPipelineStr[] =
++ "uridecodebin name=source ! videoconvert ! videoscale ! appsink "
++ "name=sink caps=\"video/x-raw,format=RGB,pixel-aspect-ratio=1/1\"";
+
+ GError *pError = nullptr;
+ mpPipeline = gst_parse_launch( pPipelineStr, &pError );
+@@ -65,6 +63,12 @@ FrameGrabber::FrameGrabber( std::u16string_view rURL )
+ }
+
+ if( mpPipeline ) {
++
++ if (GstElement *pUriDecode = gst_bin_get_by_name(GST_BIN(mpPipeline), "source"))
++ g_object_set(pUriDecode, "uri", OUStringToOString(rURL, RTL_TEXTENCODING_UTF8).getStr(), nullptr);
++ else
++ g_warning("Missing 'source' element in gstreamer pipeline");
++
+ // pre-roll
+ switch( gst_element_set_state( mpPipeline, GST_STATE_PAUSED ) ) {
+ case GST_STATE_CHANGE_FAILURE:
+--
+cgit v1.2.1
+