[FFmpeg-cvslog] avcodec/mediacodec_surface: define and use FFANativeWindow to mimic NDK interface

Aman Gupta git at videolan.org
Tue Sep 10 23:53:04 EEST 2019


ffmpeg | branch: master | Aman Gupta <aman at tmm1.net> | Thu Sep  5 12:49:00 2019 -0700| [7fddf4b2662b25f048f4dbed74cf28cd375694fc] | committer: Aman Gupta

avcodec/mediacodec_surface: define and use FFANativeWindow to mimic NDK interface

This will make it easy to switch to ANativeWindow_fromSurface
and ANativeWindow_release in the future.

Signed-off-by: Aman Gupta <aman at tmm1.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7fddf4b2662b25f048f4dbed74cf28cd375694fc
---

 libavcodec/mediacodec_surface.c | 6 +++---
 libavcodec/mediacodec_surface.h | 7 +++++--
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/libavcodec/mediacodec_surface.c b/libavcodec/mediacodec_surface.c
index 26724d3574..09a42295d2 100644
--- a/libavcodec/mediacodec_surface.c
+++ b/libavcodec/mediacodec_surface.c
@@ -25,7 +25,7 @@
 #include "ffjni.h"
 #include "mediacodec_surface.h"
 
-void *ff_mediacodec_surface_ref(void *surface, void *log_ctx)
+FFANativeWindow *ff_mediacodec_surface_ref(void *surface, void *log_ctx)
 {
     JNIEnv *env = NULL;
 
@@ -37,7 +37,7 @@ void *ff_mediacodec_surface_ref(void *surface, void *log_ctx)
     return (*env)->NewGlobalRef(env, surface);
 }
 
-int ff_mediacodec_surface_unref(void *surface, void *log_ctx)
+int ff_mediacodec_surface_unref(FFANativeWindow *window, void *log_ctx)
 {
     JNIEnv *env = NULL;
 
@@ -46,7 +46,7 @@ int ff_mediacodec_surface_unref(void *surface, void *log_ctx)
         return AVERROR_EXTERNAL;
     }
 
-    (*env)->DeleteGlobalRef(env, surface);
+    (*env)->DeleteGlobalRef(env, window);
 
     return 0;
 }
diff --git a/libavcodec/mediacodec_surface.h b/libavcodec/mediacodec_surface.h
index 0178b8ae71..933dc2bf51 100644
--- a/libavcodec/mediacodec_surface.h
+++ b/libavcodec/mediacodec_surface.h
@@ -25,7 +25,10 @@
 
 #include "libavcodec/avcodec.h"
 
-void *ff_mediacodec_surface_ref(void *surface, void *log_ctx);
-int ff_mediacodec_surface_unref(void *surface, void *log_ctx);
+struct FFANativeWindow;
+typedef struct FFANativeWindow FFANativeWindow;
+
+FFANativeWindow *ff_mediacodec_surface_ref(void *surface, void *log_ctx);
+int ff_mediacodec_surface_unref(FFANativeWindow *window, void *log_ctx);
 
 #endif /* AVCODEC_MEDIACODEC_SURFACE_H */



More information about the ffmpeg-cvslog mailing list