diff options
author | Caolán McNamara <caolan.mcnamara@collabora.com> | 2023-11-03 14:20:07 +0000 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2023-11-28 16:28:55 +0100 |
commit | a4c35f05c20a8a55c8c83c906352c2e52e44e7c4 (patch) | |
tree | 97bed29a67315c0477f51e5e86f6a2bc29b6e439 | |
parent | 4a8c643848e5852b7b58c9fb0d2e066af2c8ca34 (diff) |
escape url passed to gstreamer
Change-Id: I3c93ee34800cc8563370f75ef3ef6f8a9220e6ec
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158895
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 33c526aeddc5623a1cef38e6e5e82ef746551ab0)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159032
(cherry picked from commit e8dff645dbf021334c4c931aa0a424d391489356)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159919
Tested-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r-- | avmedia/source/gstreamer/gstframegrabber.cxx | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/avmedia/source/gstreamer/gstframegrabber.cxx b/avmedia/source/gstreamer/gstframegrabber.cxx index 7da1917a019b..c49528496e25 100644 --- a/avmedia/source/gstreamer/gstframegrabber.cxx +++ b/avmedia/source/gstreamer/gstframegrabber.cxx @@ -51,11 +51,9 @@ void FrameGrabber::disposePipeline() FrameGrabber::FrameGrabber( const OUString &rURL ) : FrameGrabber_BASE() { - 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 ); @@ -66,6 +64,12 @@ FrameGrabber::FrameGrabber( const OUString &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: |