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@tmm1.net>
This commit is contained in:
Aman Gupta 2019-09-05 12:49:00 -07:00
parent 8a3623e2fb
commit 7fddf4b266
2 changed files with 8 additions and 5 deletions

View File

@ -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;
}

View File

@ -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 */