diff options
Diffstat (limited to 'ext/wpe/gstwpevideosrc.cpp')
-rw-r--r-- | ext/wpe/gstwpevideosrc.cpp | 21 |
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 |