From 68b9eb58fd86bc72b2a089f3f08156a7e006b081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 31 Oct 2013 10:24:52 +0100 Subject: [PATCH] Port Android tutorials to 1.0 --- .../android-tutorial-1/jni/Android.mk | 12 +++--- .../android-tutorial-2/jni/Android.mk | 12 +++--- .../android-tutorial-3/jni/Android.mk | 14 +++---- .../android-tutorial-3/jni/tutorial-3.c | 15 ++++--- .../android-tutorial-4/jni/Android.mk | 14 +++---- .../android-tutorial-4/jni/tutorial-4.c | 39 ++++++++----------- .../android-tutorial-5/jni/Android.mk | 14 +++---- .../android-tutorial-5/jni/tutorial-5.c | 36 +++++++---------- 8 files changed, 71 insertions(+), 85 deletions(-) diff --git a/gst-sdk/tutorials/android-tutorial-1/jni/Android.mk b/gst-sdk/tutorials/android-tutorial-1/jni/Android.mk index aa52af0c5c..7b28a48a8a 100644 --- a/gst-sdk/tutorials/android-tutorial-1/jni/Android.mk +++ b/gst-sdk/tutorials/android-tutorial-1/jni/Android.mk @@ -8,12 +8,12 @@ LOCAL_SHARED_LIBRARIES := gstreamer_android LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) -ifndef GSTREAMER_SDK_ROOT -ifndef GSTREAMER_SDK_ROOT_ANDROID -$(error GSTREAMER_SDK_ROOT_ANDROID is not defined!) +ifndef GSTREAMER_ROOT +ifndef GSTREAMER_ROOT_ANDROID +$(error GSTREAMER_ROOT_ANDROID is not defined!) endif -GSTREAMER_SDK_ROOT := $(GSTREAMER_SDK_ROOT_ANDROID) +GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID) endif -GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/ +GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/ GSTREAMER_PLUGINS := coreelements -include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk +include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk diff --git a/gst-sdk/tutorials/android-tutorial-2/jni/Android.mk b/gst-sdk/tutorials/android-tutorial-2/jni/Android.mk index 3f40633938..f575f42e38 100644 --- a/gst-sdk/tutorials/android-tutorial-2/jni/Android.mk +++ b/gst-sdk/tutorials/android-tutorial-2/jni/Android.mk @@ -8,13 +8,13 @@ LOCAL_SHARED_LIBRARIES := gstreamer_android LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) -ifndef GSTREAMER_SDK_ROOT -ifndef GSTREAMER_SDK_ROOT_ANDROID -$(error GSTREAMER_SDK_ROOT_ANDROID is not defined!) +ifndef GSTREAMER_ROOT +ifndef GSTREAMER_ROOT_ANDROID +$(error GSTREAMER_ROOT_ANDROID is not defined!) endif -GSTREAMER_SDK_ROOT := $(GSTREAMER_SDK_ROOT_ANDROID) +GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID) endif -GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/ +GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/ include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk GSTREAMER_PLUGINS := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_SYS) -include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk +include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk diff --git a/gst-sdk/tutorials/android-tutorial-3/jni/Android.mk b/gst-sdk/tutorials/android-tutorial-3/jni/Android.mk index 2e6abc292b..549e1e39fb 100644 --- a/gst-sdk/tutorials/android-tutorial-3/jni/Android.mk +++ b/gst-sdk/tutorials/android-tutorial-3/jni/Android.mk @@ -8,14 +8,14 @@ LOCAL_SHARED_LIBRARIES := gstreamer_android LOCAL_LDLIBS := -llog -landroid include $(BUILD_SHARED_LIBRARY) -ifndef GSTREAMER_SDK_ROOT -ifndef GSTREAMER_SDK_ROOT_ANDROID -$(error GSTREAMER_SDK_ROOT_ANDROID is not defined!) +ifndef GSTREAMER_ROOT +ifndef GSTREAMER_ROOT_ANDROID +$(error GSTREAMER_ROOT_ANDROID is not defined!) endif -GSTREAMER_SDK_ROOT := $(GSTREAMER_SDK_ROOT_ANDROID) +GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID) endif -GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/ +GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/ include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk GSTREAMER_PLUGINS := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_SYS) $(GSTREAMER_PLUGINS_EFFECTS) -GSTREAMER_EXTRA_DEPS := gstreamer-interfaces-0.10 gstreamer-video-0.10 -include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk +GSTREAMER_EXTRA_DEPS := gstreamer-video-1.0 +include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk diff --git a/gst-sdk/tutorials/android-tutorial-3/jni/tutorial-3.c b/gst-sdk/tutorials/android-tutorial-3/jni/tutorial-3.c index f9552bcce1..10b89b74da 100644 --- a/gst-sdk/tutorials/android-tutorial-3/jni/tutorial-3.c +++ b/gst-sdk/tutorials/android-tutorial-3/jni/tutorial-3.c @@ -4,7 +4,6 @@ #include #include #include -#include #include #include @@ -130,7 +129,7 @@ static void check_initialization_complete (CustomData *data) { GST_DEBUG ("Initialization complete, notifying application. native_window:%p main_loop:%p", data->native_window, data->main_loop); /* The main loop is running and we received a native window, inform the sink about it */ - gst_x_overlay_set_window_handle (GST_X_OVERLAY (data->video_sink), (guintptr)data->native_window); + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (data->video_sink), (guintptr)data->native_window); (*env)->CallVoidMethod (env, data->app, on_gstreamer_initialized_method_id); if ((*env)->ExceptionCheck (env)) { @@ -156,7 +155,7 @@ static void *app_function (void *userdata) { g_main_context_push_thread_default(data->context); /* Build pipeline */ - data->pipeline = gst_parse_launch("videotestsrc ! warptv ! ffmpegcolorspace ! autovideosink", &error); + data->pipeline = gst_parse_launch("videotestsrc ! warptv ! videoconvert ! autovideosink", &error); if (error) { gchar *message = g_strdup_printf("Unable to build pipeline: %s", error->message); g_clear_error (&error); @@ -168,7 +167,7 @@ static void *app_function (void *userdata) { /* Set the pipeline to READY, so it can already accept a window handle, if we have one */ gst_element_set_state(data->pipeline, GST_STATE_READY); - data->video_sink = gst_bin_get_by_interface(GST_BIN(data->pipeline), GST_TYPE_X_OVERLAY); + data->video_sink = gst_bin_get_by_interface(GST_BIN(data->pipeline), GST_TYPE_VIDEO_OVERLAY); if (!data->video_sink) { GST_ERROR ("Could not retrieve video sink"); return NULL; @@ -276,10 +275,10 @@ static void gst_native_surface_init (JNIEnv *env, jobject thiz, jobject surface) if (data->native_window) { ANativeWindow_release (data->native_window); if (data->native_window == new_native_window) { - GST_DEBUG ("New native window is the same as the previous one", data->native_window); + GST_DEBUG ("New native window is the same as the previous one %p", data->native_window); if (data->video_sink) { - gst_x_overlay_expose(GST_X_OVERLAY (data->video_sink)); - gst_x_overlay_expose(GST_X_OVERLAY (data->video_sink)); + gst_video_overlay_expose(GST_VIDEO_OVERLAY (data->video_sink)); + gst_video_overlay_expose(GST_VIDEO_OVERLAY (data->video_sink)); } return; } else { @@ -298,7 +297,7 @@ static void gst_native_surface_finalize (JNIEnv *env, jobject thiz) { GST_DEBUG ("Releasing Native Window %p", data->native_window); if (data->video_sink) { - gst_x_overlay_set_window_handle (GST_X_OVERLAY (data->video_sink), (guintptr)NULL); + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (data->video_sink), (guintptr)NULL); gst_element_set_state (data->pipeline, GST_STATE_READY); } diff --git a/gst-sdk/tutorials/android-tutorial-4/jni/Android.mk b/gst-sdk/tutorials/android-tutorial-4/jni/Android.mk index c298e74bd7..b4028cbb21 100644 --- a/gst-sdk/tutorials/android-tutorial-4/jni/Android.mk +++ b/gst-sdk/tutorials/android-tutorial-4/jni/Android.mk @@ -8,14 +8,14 @@ LOCAL_SHARED_LIBRARIES := gstreamer_android LOCAL_LDLIBS := -llog -landroid include $(BUILD_SHARED_LIBRARY) -ifndef GSTREAMER_SDK_ROOT -ifndef GSTREAMER_SDK_ROOT_ANDROID -$(error GSTREAMER_SDK_ROOT_ANDROID is not defined!) +ifndef GSTREAMER_ROOT +ifndef GSTREAMER_ROOT_ANDROID +$(error GSTREAMER_ROOT_ANDROID is not defined!) endif -GSTREAMER_SDK_ROOT := $(GSTREAMER_SDK_ROOT_ANDROID) +GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID) endif -GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/ +GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/ include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk GSTREAMER_PLUGINS := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_PLAYBACK) $(GSTREAMER_PLUGINS_CODECS) $(GSTREAMER_PLUGINS_NET) $(GSTREAMER_PLUGINS_SYS) -GSTREAMER_EXTRA_DEPS := gstreamer-interfaces-0.10 gstreamer-video-0.10 -include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk +GSTREAMER_EXTRA_DEPS := gstreamer-video-1.0 +include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk diff --git a/gst-sdk/tutorials/android-tutorial-4/jni/tutorial-4.c b/gst-sdk/tutorials/android-tutorial-4/jni/tutorial-4.c index a20f654c3d..648030a511 100644 --- a/gst-sdk/tutorials/android-tutorial-4/jni/tutorial-4.c +++ b/gst-sdk/tutorials/android-tutorial-4/jni/tutorial-4.c @@ -4,7 +4,6 @@ #include #include #include -#include #include #include @@ -43,7 +42,7 @@ typedef struct _CustomData { gboolean is_live; /* Live streams do not use buffering */ } CustomData; -/* playbin2 flags */ +/* playbin flags */ typedef enum { GST_PLAY_FLAG_TEXT = (1 << 2) /* We want subtitle output */ } GstPlayFlags; @@ -124,7 +123,6 @@ static void set_current_ui_position (gint position, gint duration, CustomData *d /* If we have pipeline and it is running, query the current position and clip duration and inform * the application */ static gboolean refresh_ui (CustomData *data) { - GstFormat fmt = GST_FORMAT_TIME; gint64 current = -1; gint64 position; @@ -134,12 +132,12 @@ static gboolean refresh_ui (CustomData *data) { /* If we didn't know it yet, query the stream duration */ if (!GST_CLOCK_TIME_IS_VALID (data->duration)) { - if (!gst_element_query_duration (data->pipeline, &fmt, &data->duration)) { + if (!gst_element_query_duration (data->pipeline, GST_FORMAT_TIME, &data->duration)) { GST_WARNING ("Could not query current duration"); } } - if (gst_element_query_position (data->pipeline, &fmt, &position)) { + if (gst_element_query_position (data->pipeline, GST_FORMAT_TIME, &position)) { /* Java expects these values in milliseconds, and GStreamer provides nanoseconds */ set_current_ui_position (position / GST_MSECOND, data->duration / GST_MSECOND, data); } @@ -254,23 +252,18 @@ static void check_media_size (CustomData *data) { GstElement *video_sink; GstPad *video_sink_pad; GstCaps *caps; - GstVideoFormat fmt; - int width; - int height; + GstVideoInfo info; /* Retrieve the Caps at the entrance of the video sink */ g_object_get (data->pipeline, "video-sink", &video_sink, NULL); video_sink_pad = gst_element_get_static_pad (video_sink, "sink"); - caps = gst_pad_get_negotiated_caps (video_sink_pad); + caps = gst_pad_get_current_caps (video_sink_pad); - if (gst_video_format_parse_caps(caps, &fmt, &width, &height)) { - int par_n, par_d; - if (gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d)) { - width = width * par_n / par_d; - } - GST_DEBUG ("Media size is %dx%d, notifying application", width, height); + if (gst_video_info_from_caps (&info, caps)) { + info.width = info.width * info.par_n / info.par_d; + GST_DEBUG ("Media size is %dx%d, notifying application", info.width, info.height); - (*env)->CallVoidMethod (env, data->app, on_media_size_changed_method_id, (jint)width, (jint)height); + (*env)->CallVoidMethod (env, data->app, on_media_size_changed_method_id, (jint)info.width, (jint)info.height); if ((*env)->ExceptionCheck (env)) { GST_ERROR ("Failed to call Java method"); (*env)->ExceptionClear (env); @@ -313,7 +306,7 @@ static void check_initialization_complete (CustomData *data) { GST_DEBUG ("Initialization complete, notifying application. native_window:%p main_loop:%p", data->native_window, data->main_loop); /* The main loop is running and we received a native window, inform the sink about it */ - gst_x_overlay_set_window_handle (GST_X_OVERLAY (data->pipeline), (guintptr)data->native_window); + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (data->pipeline), (guintptr)data->native_window); (*env)->CallVoidMethod (env, data->app, on_gstreamer_initialized_method_id); if ((*env)->ExceptionCheck (env)) { @@ -341,7 +334,7 @@ static void *app_function (void *userdata) { g_main_context_push_thread_default(data->context); /* Build pipeline */ - data->pipeline = gst_parse_launch("playbin2", &error); + data->pipeline = gst_parse_launch("playbin", &error); if (error) { gchar *message = g_strdup_printf("Unable to build pipeline: %s", error->message); g_clear_error (&error); @@ -432,7 +425,7 @@ static void gst_native_finalize (JNIEnv* env, jobject thiz) { GST_DEBUG ("Done finalizing"); } -/* Set playbin2's URI */ +/* Set playbin's URI */ void gst_native_set_uri (JNIEnv* env, jobject thiz, jstring uri) { CustomData *data = GET_CUSTOM_DATA (env, thiz, custom_data_field_id); if (!data || !data->pipeline) return; @@ -505,10 +498,10 @@ static void gst_native_surface_init (JNIEnv *env, jobject thiz, jobject surface) if (data->native_window) { ANativeWindow_release (data->native_window); if (data->native_window == new_native_window) { - GST_DEBUG ("New native window is the same as the previous one", data->native_window); + GST_DEBUG ("New native window is the same as the previous one %p", data->native_window); if (data->pipeline) { - gst_x_overlay_expose(GST_X_OVERLAY (data->pipeline)); - gst_x_overlay_expose(GST_X_OVERLAY (data->pipeline)); + gst_video_overlay_expose(GST_VIDEO_OVERLAY (data->pipeline)); + gst_video_overlay_expose(GST_VIDEO_OVERLAY (data->pipeline)); } return; } else { @@ -527,7 +520,7 @@ static void gst_native_surface_finalize (JNIEnv *env, jobject thiz) { GST_DEBUG ("Releasing Native Window %p", data->native_window); if (data->pipeline) { - gst_x_overlay_set_window_handle (GST_X_OVERLAY (data->pipeline), (guintptr)NULL); + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (data->pipeline), (guintptr)NULL); gst_element_set_state (data->pipeline, GST_STATE_READY); } diff --git a/gst-sdk/tutorials/android-tutorial-5/jni/Android.mk b/gst-sdk/tutorials/android-tutorial-5/jni/Android.mk index a82f505423..1211734090 100755 --- a/gst-sdk/tutorials/android-tutorial-5/jni/Android.mk +++ b/gst-sdk/tutorials/android-tutorial-5/jni/Android.mk @@ -8,15 +8,15 @@ LOCAL_SHARED_LIBRARIES := gstreamer_android LOCAL_LDLIBS := -llog -landroid include $(BUILD_SHARED_LIBRARY) -ifndef GSTREAMER_SDK_ROOT -ifndef GSTREAMER_SDK_ROOT_ANDROID -$(error GSTREAMER_SDK_ROOT_ANDROID is not defined!) +ifndef GSTREAMER_ROOT +ifndef GSTREAMER_ROOT_ANDROID +$(error GSTREAMER_ROOT_ANDROID is not defined!) endif -GSTREAMER_SDK_ROOT := $(GSTREAMER_SDK_ROOT_ANDROID) +GSTREAMER_ROOT := $(GSTREAMER_ROOT_ANDROID) endif -GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/ +GSTREAMER_NDK_BUILD_PATH := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/ include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk GSTREAMER_PLUGINS := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_PLAYBACK) $(GSTREAMER_PLUGINS_CODECS) $(GSTREAMER_PLUGINS_NET) $(GSTREAMER_PLUGINS_SYS) G_IO_MODULES := gnutls -GSTREAMER_EXTRA_DEPS := gstreamer-interfaces-0.10 gstreamer-video-0.10 -include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk +GSTREAMER_EXTRA_DEPS := gstreamer-video-1.0 +include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk diff --git a/gst-sdk/tutorials/android-tutorial-5/jni/tutorial-5.c b/gst-sdk/tutorials/android-tutorial-5/jni/tutorial-5.c index 33d4bc0893..78dea649c3 100755 --- a/gst-sdk/tutorials/android-tutorial-5/jni/tutorial-5.c +++ b/gst-sdk/tutorials/android-tutorial-5/jni/tutorial-5.c @@ -4,8 +4,8 @@ #include #include #include -#include #include +#include #include GST_DEBUG_CATEGORY_STATIC (debug_category); @@ -124,7 +124,6 @@ static void set_current_ui_position (gint position, gint duration, CustomData *d /* If we have pipeline and it is running, query the current position and clip duration and inform * the application */ static gboolean refresh_ui (CustomData *data) { - GstFormat fmt = GST_FORMAT_TIME; gint64 current = -1; gint64 position; @@ -134,13 +133,13 @@ static gboolean refresh_ui (CustomData *data) { /* If we didn't know it yet, query the stream duration */ if (!GST_CLOCK_TIME_IS_VALID (data->duration)) { - if (!gst_element_query_duration (data->pipeline, &fmt, &data->duration)) { + if (!gst_element_query_duration (data->pipeline, GST_FORMAT_TIME, &data->duration)) { GST_WARNING ("Could not query current duration (normal for still pictures)"); data->duration = 0; } } - if (!gst_element_query_position (data->pipeline, &fmt, &position)) { + if (!gst_element_query_position (data->pipeline, GST_FORMAT_TIME, &position)) { GST_WARNING ("Could not query current position (normal for still pictures)"); position = 0; } @@ -258,23 +257,18 @@ static void check_media_size (CustomData *data) { GstElement *video_sink; GstPad *video_sink_pad; GstCaps *caps; - GstVideoFormat fmt; - int width; - int height; + GstVideoInfo info; /* Retrieve the Caps at the entrance of the video sink */ g_object_get (data->pipeline, "video-sink", &video_sink, NULL); video_sink_pad = gst_element_get_static_pad (video_sink, "sink"); - caps = gst_pad_get_negotiated_caps (video_sink_pad); + caps = gst_pad_get_current_caps (video_sink_pad); - if (gst_video_format_parse_caps(caps, &fmt, &width, &height)) { - int par_n, par_d; - if (gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d)) { - width = width * par_n / par_d; - } - GST_DEBUG ("Media size is %dx%d, notifying application", width, height); + if (gst_video_info_from_caps(&info, caps)) { + info.width = info.width * info.par_n / info.par_d; + GST_DEBUG ("Media size is %dx%d, notifying application", info.width, info.height); - (*env)->CallVoidMethod (env, data->app, on_media_size_changed_method_id, (jint)width, (jint)height); + (*env)->CallVoidMethod (env, data->app, on_media_size_changed_method_id, (jint)info.width, (jint)info.height); if ((*env)->ExceptionCheck (env)) { GST_ERROR ("Failed to call Java method"); (*env)->ExceptionClear (env); @@ -317,7 +311,7 @@ static void check_initialization_complete (CustomData *data) { GST_DEBUG ("Initialization complete, notifying application. native_window:%p main_loop:%p", data->native_window, data->main_loop); /* The main loop is running and we received a native window, inform the sink about it */ - gst_x_overlay_set_window_handle (GST_X_OVERLAY (data->pipeline), (guintptr)data->native_window); + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (data->pipeline), (guintptr)data->native_window); (*env)->CallVoidMethod (env, data->app, on_gstreamer_initialized_method_id); if ((*env)->ExceptionCheck (env)) { @@ -345,7 +339,7 @@ static void *app_function (void *userdata) { g_main_context_push_thread_default(data->context); /* Build pipeline */ - data->pipeline = gst_parse_launch("playbin2", &error); + data->pipeline = gst_parse_launch("playbin", &error); if (error) { gchar *message = g_strdup_printf("Unable to build pipeline: %s", error->message); g_clear_error (&error); @@ -509,10 +503,10 @@ static void gst_native_surface_init (JNIEnv *env, jobject thiz, jobject surface) if (data->native_window) { ANativeWindow_release (data->native_window); if (data->native_window == new_native_window) { - GST_DEBUG ("New native window is the same as the previous one", data->native_window); + GST_DEBUG ("New native window is the same as the previous one %p", data->native_window); if (data->pipeline) { - gst_x_overlay_expose(GST_X_OVERLAY (data->pipeline)); - gst_x_overlay_expose(GST_X_OVERLAY (data->pipeline)); + gst_video_overlay_expose(GST_VIDEO_OVERLAY (data->pipeline)); + gst_video_overlay_expose(GST_VIDEO_OVERLAY (data->pipeline)); } return; } else { @@ -531,7 +525,7 @@ static void gst_native_surface_finalize (JNIEnv *env, jobject thiz) { GST_DEBUG ("Releasing Native Window %p", data->native_window); if (data->pipeline) { - gst_x_overlay_set_window_handle (GST_X_OVERLAY (data->pipeline), (guintptr)NULL); + gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (data->pipeline), (guintptr)NULL); gst_element_set_state (data->pipeline, GST_STATE_READY); }