static void gst_player_video_overlay_video_renderer_finalize (GObject * object) { GstPlayerVideoOverlayVideoRenderer *self = GST_PLAYER_VIDEO_OVERLAY_VIDEO_RENDERER (object); if (self->video_overlay) gst_object_unref (self->video_overlay); G_OBJECT_CLASS (gst_player_video_overlay_video_renderer_parent_class)->finalize (object); }
static void gst_player_video_overlay_video_renderer_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstPlayerVideoOverlayVideoRenderer *self = GST_PLAYER_VIDEO_OVERLAY_VIDEO_RENDERER (object); switch (prop_id) { case VIDEO_OVERLAY_VIDEO_RENDERER_PROP_WINDOW_HANDLE: g_value_set_pointer (value, self->window_handle); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static GstElement *gst_player_video_overlay_video_renderer_create_video_sink (GstPlayerVideoRenderer * iface, GstPlayer * player) { GstElement *video_overlay; GstPlayerVideoOverlayVideoRenderer *self = GST_PLAYER_VIDEO_OVERLAY_VIDEO_RENDERER (iface); if (self->video_overlay) gst_object_unref (self->video_overlay); video_overlay = gst_player_get_pipeline (player); g_return_val_if_fail (GST_IS_VIDEO_OVERLAY (video_overlay), NULL); self->video_overlay = GST_VIDEO_OVERLAY (video_overlay); gst_video_overlay_set_window_handle (self->video_overlay, (guintptr) self->window_handle); return NULL; }
static void native_set_surface (JNIEnv * env, jobject thiz, jobject surface) { Player *player = GET_CUSTOM_DATA (env, thiz, native_player_field_id); ANativeWindow *new_native_window; if (!player) return; new_native_window = surface ? ANativeWindow_fromSurface (env, surface) : NULL; GST_DEBUG ("Received surface %p (native window %p)", surface, new_native_window); if (player->native_window) { ANativeWindow_release (player->native_window); } player->native_window = new_native_window; gst_player_video_overlay_video_renderer_set_window_handle (GST_PLAYER_VIDEO_OVERLAY_VIDEO_RENDERER (player->renderer), (gpointer) new_native_window); }