summaryrefslogtreecommitdiff
path: root/ext/wpe/gstwpevideosrc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ext/wpe/gstwpevideosrc.cpp')
-rw-r--r--ext/wpe/gstwpevideosrc.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/ext/wpe/gstwpevideosrc.cpp b/ext/wpe/gstwpevideosrc.cpp
index 7d7556fb5..ca5fc59ec 100644
--- a/ext/wpe/gstwpevideosrc.cpp
+++ b/ext/wpe/gstwpevideosrc.cpp
@@ -86,6 +86,7 @@
#endif
#include "gstwpevideosrc.h"
+#include "gstwpe-private.h"
#include <gst/gl/gl.h>
#include <gst/gl/egl/gstglmemoryegl.h>
#include <gst/gl/wayland/gstgldisplay_wayland.h>
@@ -128,6 +129,8 @@ struct _GstWpeVideoSrc
gint64 n_frames; /* total frames sent */
WPEView *view;
+ const struct wpe_audio_receiver *audio_receiver;
+ gpointer audio_receiver_data;
GMutex lock;
};
@@ -296,6 +299,11 @@ gst_wpe_video_src_start (GstWpeVideoSrc * src)
if (created_view) {
src->n_frames = 0;
+ if (src->audio_receiver) {
+ src->view->registerAudioReceiver(src->audio_receiver, src->audio_receiver_data);
+ src->audio_receiver = NULL,
+ src->audio_receiver_data = NULL;
+ }
}
WPE_UNLOCK (src);
return TRUE;
@@ -735,4 +743,17 @@ gst_wpe_video_src_class_init (GstWpeVideoSrcClass * klass)
static_cast < GSignalFlags > (G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
G_CALLBACK (gst_wpe_video_src_load_bytes), NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_BYTES);
+}
+
+void
+gst_wpe_video_src_register_audio_receiver(GstElement* video_src, const struct wpe_audio_receiver* receiver, gpointer user_data)
+{
+ GstWpeVideoSrc* src = GST_WPE_VIDEO_SOURCE(video_src);
+
+ if (!src->view) {
+ src->audio_receiver = receiver;
+ src->audio_receiver_data = user_data;
+ return;
+ }
+ src->view->registerAudioReceiver(receiver, user_data);
} \ No newline at end of file