From 3c7b509d597d7a9f812cf3d7600ee20da5170b3d Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Wed, 19 Feb 2020 22:41:38 -0800 Subject: [PATCH] Add headers to MediaPlaybackRequest. Add a name/value map for headers to MediaPlaybackRequest. When adding a new gst source that accepts extra-headers (souphttpsrc), add these headers. --- src/engines/gstenginepipeline.cpp | 17 +++++++++++++++++ src/engines/playbackrequest.h | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 8acb29533..23b05ed3c 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -1034,6 +1034,23 @@ void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, g_object_set(element, "ssl-strict", TRUE, nullptr); #endif } + + if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), + "extra-headers")) { + if (!instance->current_.headers_.empty()) { + GstStructure* gheaders = gst_structure_new_empty("headers"); + QMapIterator i(instance->current_.headers_); + while (i.hasNext()) { + i.next(); + qLog(Debug) << "Adding header" << i.key(); + gst_structure_set(gheaders, i.key().constData(), G_TYPE_STRING, + i.value().constData(), nullptr); + } + g_object_set(element, "extra-headers", gheaders, nullptr); + gst_structure_free(gheaders); + } + } + g_object_unref(element); } diff --git a/src/engines/playbackrequest.h b/src/engines/playbackrequest.h index 649529687..02812ffe9 100644 --- a/src/engines/playbackrequest.h +++ b/src/engines/playbackrequest.h @@ -18,6 +18,7 @@ #ifndef ENGINES_PLAYBACKREQUEST_H_ #define ENGINES_PLAYBACKREQUEST_H_ +#include #include class MediaPlaybackRequest { @@ -26,6 +27,9 @@ class MediaPlaybackRequest { MediaPlaybackRequest() {} QUrl url_; + + typedef QMap HeaderList; + HeaderList headers_; }; #endif // ENGINES_PLAYBACKREQUEST_H_