[vlc-commits] vout: android: remove ANW private API usage
Thomas Guillem
git at videolan.org
Fri Feb 2 17:04:14 CET 2018
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Fri Feb 2 16:57:08 2018 +0100| [9763dbf8dacae7a80fae8ec899904e68a3425a6f] | committer: Thomas Guillem
vout: android: remove ANW private API usage
It's not legal to use it since Android 5.0 and we prefer the gles2 vout.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9763dbf8dacae7a80fae8ec899904e68a3425a6f
---
modules/video_output/android/display.c | 169 ++--------
modules/video_output/android/nativewindowpriv.c | 426 ------------------------
modules/video_output/android/utils.c | 31 --
modules/video_output/android/utils.h | 32 --
4 files changed, 24 insertions(+), 634 deletions(-)
diff --git a/modules/video_output/android/display.c b/modules/video_output/android/display.c
index f7c71b4439..9824a417e8 100644
--- a/modules/video_output/android/display.c
+++ b/modules/video_output/android/display.c
@@ -96,13 +96,11 @@ struct android_window
unsigned int i_angle;
unsigned int i_pic_count;
unsigned int i_min_undequeued;
- bool b_use_priv;
bool b_opaque;
enum AWindow_ID id;
ANativeWindow *p_surface;
jobject *p_jsurface;
- native_window_priv *p_surface_priv;
};
typedef struct buffer_bounds buffer_bounds;
@@ -122,8 +120,6 @@ struct vout_display_sys_t
AWindowHandler *p_awh;
native_window_api_t *anw;
- native_window_priv_api_t anwp;
- bool b_has_anwp;
android_window *p_window;
android_window *p_sub_window;
@@ -160,8 +156,7 @@ static inline int ChromaToAndroidHal(vlc_fourcc_t i_chroma)
}
}
-static int UpdateVideoSize(vout_display_sys_t *sys, video_format_t *p_fmt,
- bool b_cropped)
+static int UpdateVideoSize(vout_display_sys_t *sys, video_format_t *p_fmt)
{
unsigned int i_width, i_height;
unsigned int i_sar_num = 1, i_sar_den = 1;
@@ -173,13 +168,8 @@ static int UpdateVideoSize(vout_display_sys_t *sys, video_format_t *p_fmt,
i_sar_num = rot_fmt.i_sar_num;
i_sar_den = rot_fmt.i_sar_den;
}
- if (b_cropped) {
- i_width = rot_fmt.i_visible_width;
- i_height = rot_fmt.i_visible_height;
- } else {
- i_width = rot_fmt.i_width;
- i_height = rot_fmt.i_height;
- }
+ i_width = rot_fmt.i_width;
+ i_height = rot_fmt.i_height;
AWindowHandler_setVideoLayout(sys->p_awh, i_width, i_height,
rot_fmt.i_visible_width,
@@ -323,10 +313,6 @@ static void SetupPictureYV12(picture_t *p_picture, uint32_t i_in_stride)
static void AndroidWindow_DisconnectSurface(vout_display_sys_t *sys,
android_window *p_window)
{
- if (p_window->p_surface_priv) {
- sys->anwp.disconnect(p_window->p_surface_priv);
- p_window->p_surface_priv = NULL;
- }
if (p_window->p_surface) {
AWindowHandler_releaseANativeWindow(sys->p_awh, p_window->id);
p_window->p_surface = NULL;
@@ -351,8 +337,7 @@ static int AndroidWindow_ConnectSurface(vout_display_sys_t *sys,
static android_window *AndroidWindow_New(vout_display_t *vd,
video_format_t *p_fmt,
- enum AWindow_ID id,
- bool b_use_priv)
+ enum AWindow_ID id)
{
vout_display_sys_t *sys = vd->sys;
android_window *p_window = NULL;
@@ -364,8 +349,6 @@ static android_window *AndroidWindow_New(vout_display_t *vd,
p_window->id = id;
p_window->b_opaque = p_fmt->i_chroma == VLC_CODEC_ANDROID_OPAQUE;
if (!p_window->b_opaque) {
- p_window->b_use_priv = sys->b_has_anwp && b_use_priv;
-
p_window->i_android_hal = ChromaToAndroidHal(p_fmt->i_chroma);
if (p_window->i_android_hal == -1)
goto error;
@@ -385,10 +368,7 @@ static android_window *AndroidWindow_New(vout_display_t *vd,
default:
p_window->i_angle = 0;
}
- if (p_window->b_use_priv)
- p_window->fmt = *p_fmt;
- else
- video_format_ApplyRotation(&p_window->fmt, p_fmt);
+ video_format_ApplyRotation(&p_window->fmt, p_fmt);
p_window->i_pic_count = 1;
if (AndroidWindow_ConnectSurface(sys, p_window) != 0)
@@ -413,73 +393,6 @@ static void AndroidWindow_Destroy(vout_display_t *vd,
free(p_window);
}
-static int AndroidWindow_UpdateCrop(vout_display_sys_t *sys,
- android_window *p_window)
-{
- if (!p_window->p_surface_priv)
- return -1;
-
- return sys->anwp.setCrop(p_window->p_surface_priv,
- p_window->fmt.i_x_offset,
- p_window->fmt.i_y_offset,
- p_window->fmt.i_visible_width,
- p_window->fmt.i_visible_height);
-}
-
-static int AndroidWindow_SetupANWP(vout_display_sys_t *sys,
- android_window *p_window,
- bool b_java_configured)
-{
- unsigned int i_max_buffer_count = 0;
-
- if (!p_window->p_surface_priv)
- p_window->p_surface_priv = sys->anwp.connect(p_window->p_surface);
-
- if (!p_window->p_surface_priv)
- goto error;
-
- if (sys->anwp.setUsage(p_window->p_surface_priv, false, 0) != 0)
- goto error;
-
- if (!b_java_configured
- && sys->anwp.setBuffersGeometry(p_window->p_surface_priv,
- p_window->fmt.i_width,
- p_window->fmt.i_height,
- p_window->i_android_hal) != 0)
- goto error;
-
- sys->anwp.getMinUndequeued(p_window->p_surface_priv,
- &p_window->i_min_undequeued);
-
- sys->anwp.getMaxBufferCount(p_window->p_surface_priv, &i_max_buffer_count);
-
- if ((p_window->i_min_undequeued + p_window->i_pic_count) >
- i_max_buffer_count)
- p_window->i_pic_count = i_max_buffer_count - p_window->i_min_undequeued;
-
- if (sys->anwp.setBufferCount(p_window->p_surface_priv,
- p_window->i_pic_count +
- p_window->i_min_undequeued) != 0)
- goto error;
-
- if (sys->anwp.setOrientation(p_window->p_surface_priv,
- p_window->i_angle) != 0)
- goto error;
-
- AndroidWindow_UpdateCrop(sys, p_window);
-
- return 0;
-error:
- if (p_window->p_surface_priv) {
- sys->anwp.disconnect(p_window->p_surface_priv);
- p_window->p_surface_priv = NULL;
- }
- p_window->b_use_priv = false;
- if (p_window->i_angle != 0)
- video_format_TransformTo(&p_window->fmt, ORIENT_NORMAL);
- return -1;
-}
-
static int AndroidWindow_ConfigureJavaSurface(vout_display_sys_t *sys,
android_window *p_window,
bool *p_java_configured)
@@ -544,11 +457,8 @@ static int AndroidWindow_Setup(vout_display_sys_t *sys,
&b_java_configured) != 0)
return -1;
- if (!p_window->b_use_priv
- || AndroidWindow_SetupANWP(sys, p_window, b_java_configured) != 0) {
- if (AndroidWindow_SetupANW(sys, p_window, b_java_configured) != 0)
- return -1;
- }
+ if (AndroidWindow_SetupANW(sys, p_window, b_java_configured) != 0)
+ return -1;
} else {
sys->p_window->i_pic_count = 31; // TODO
sys->p_window->i_min_undequeued = 0;
@@ -559,21 +469,14 @@ static int AndroidWindow_Setup(vout_display_sys_t *sys,
static void AndroidWindow_UnlockPicture(vout_display_sys_t *sys,
android_window *p_window,
- picture_t *p_pic,
- bool b_render)
+ picture_t *p_pic)
{
picture_sys_t *p_picsys = p_pic->p_sys;
if (!p_picsys->b_locked)
return;
- if (p_window->b_use_priv) {
- void *p_handle = p_picsys->sw.p_handle;
-
- if (p_handle != NULL)
- sys->anwp.unlockData(p_window->p_surface_priv, p_handle, b_render);
- } else
- sys->anw->unlockAndPost(p_window->p_surface);
+ sys->anw->unlockAndPost(p_window->p_surface);
p_picsys->b_locked = false;
}
@@ -587,27 +490,17 @@ static int AndroidWindow_LockPicture(vout_display_sys_t *sys,
if (p_picsys->b_locked)
return -1;
- if (p_window->b_use_priv) {
- void *p_handle;
- int err;
+ if (sys->anw->winLock(p_window->p_surface,
+ &p_picsys->sw.buf, NULL) != 0)
+ return -1;
- err = sys->anwp.lockData(p_window->p_surface_priv,
- &p_handle, &p_picsys->sw.buf);
- if (err != 0)
- return -1;
- p_picsys->sw.p_handle = p_handle;
- } else {
- if (sys->anw->winLock(p_window->p_surface,
- &p_picsys->sw.buf, NULL) != 0)
- return -1;
- }
if (p_picsys->sw.buf.width < 0 ||
p_picsys->sw.buf.height < 0 ||
(unsigned)p_picsys->sw.buf.width < p_window->fmt.i_width ||
(unsigned)p_picsys->sw.buf.height < p_window->fmt.i_height)
{
p_picsys->b_locked = true;
- AndroidWindow_UnlockPicture(sys, p_window, p_pic, false);
+ AndroidWindow_UnlockPicture(sys, p_window, p_pic);
return -1;
}
@@ -681,12 +574,6 @@ static int OpenCommon(vout_display_t *vd)
sys->p_awh = p_awh;
sys->anw = AWindowHandler_getANativeWindowAPI(sys->p_awh);
-#ifdef USE_ANWP
- sys->b_has_anwp = android_loadNativeWindowPrivApi(&sys->anwp) == 0;
- if (!sys->b_has_anwp)
- msg_Warn(vd, "Could not initialize NativeWindow Priv API.");
-#endif
-
sys->i_display_width = vd->cfg->display.width;
sys->i_display_height = vd->cfg->display.height;
@@ -717,25 +604,24 @@ static int OpenCommon(vout_display_t *vd)
}
}
- sys->p_window = AndroidWindow_New(vd, &vd->fmt, AWindow_Video, true);
+ sys->p_window = AndroidWindow_New(vd, &vd->fmt, AWindow_Video);
if (!sys->p_window)
goto error;
if (AndroidWindow_Setup(sys, sys->p_window, 0) != 0)
goto error;
- /* use software rotation if we don't use private anw */
- if (!sys->p_window->b_opaque && !sys->p_window->b_use_priv)
+ /* use software rotation if we don't do opaque */
+ if (!sys->p_window->b_opaque)
video_format_TransformTo(&vd->fmt, ORIENT_NORMAL);
- msg_Dbg(vd, "using %s", sys->p_window->b_opaque ? "opaque" :
- (sys->p_window->b_use_priv ? "ANWP" : "ANW"));
+ msg_Dbg(vd, "using %s", sys->p_window->b_opaque ? "opaque" : "ANW");
video_format_ApplyRotation(&sub_fmt, &vd->fmt);
sub_fmt.i_chroma = subpicture_chromas[0];
SetRGBMask(&sub_fmt);
video_format_FixRgb(&sub_fmt);
- sys->p_sub_window = AndroidWindow_New(vd, &sub_fmt, AWindow_Subtitles, false);
+ sys->p_sub_window = AndroidWindow_New(vd, &sub_fmt, AWindow_Subtitles);
if (sys->p_sub_window) {
FixSubtitleFormat(sys);
@@ -823,11 +709,6 @@ end:
android_window *p_window = sys->p_window;
ANativeWindow_Buffer buf;
- if (p_window->p_surface_priv) {
- sys->anwp.disconnect(p_window->p_surface_priv);
- p_window->p_surface_priv = NULL;
- }
-
if (sys->anw->setBuffersGeometry(p_window->p_surface, 1, 1,
WINDOW_FORMAT_RGB_565) == 0
&& sys->anw->winLock(p_window->p_surface, &buf, NULL) == 0)
@@ -849,7 +730,7 @@ static void Close(vlc_object_t *p_this)
if (sys->b_has_subpictures)
{
SubpicturePrepare(vd, NULL);
- AndroidWindow_UnlockPicture(sys, sys->p_sub_window, sys->p_sub_pic, true);
+ AndroidWindow_UnlockPicture(sys, sys->p_sub_window, sys->p_sub_pic);
}
if (sys->pool)
@@ -895,7 +776,7 @@ static void PoolUnlockPicture(picture_t *p_pic)
picture_sys_t *p_picsys = p_pic->p_sys;
vout_display_sys_t *sys = p_picsys->sw.p_vd_sys;
- AndroidWindow_UnlockPicture(sys, sys->p_window, p_pic, false);
+ AndroidWindow_UnlockPicture(sys, sys->p_window, p_pic);
}
static int PoolLockOpaquePicture(picture_t *p_pic)
@@ -927,7 +808,7 @@ static picture_pool_t *PoolAlloc(vout_display_t *vd, unsigned requested_count)
requested_count = sys->p_window->i_pic_count;
msg_Dbg(vd, "PoolAlloc: got %d frames", requested_count);
- UpdateVideoSize(sys, &sys->p_window->fmt, sys->p_window->b_use_priv);
+ UpdateVideoSize(sys, &sys->p_window->fmt);
pp_pics = calloc(requested_count, sizeof(picture_t));
@@ -1162,13 +1043,12 @@ static void Display(vout_display_t *vd, picture_t *picture,
if (sys->p_window->b_opaque)
AndroidOpaquePicture_Release(picture->p_sys, true);
else
- AndroidWindow_UnlockPicture(sys, sys->p_window, picture, true);
+ AndroidWindow_UnlockPicture(sys, sys->p_window, picture);
picture_Release(picture);
if (sys->p_sub_pic)
- AndroidWindow_UnlockPicture(sys, sys->p_sub_window, sys->p_sub_pic,
- true);
+ AndroidWindow_UnlockPicture(sys, sys->p_sub_window, sys->p_sub_pic);
if (subpicture)
subpicture_Delete(subpicture);
@@ -1195,11 +1075,10 @@ static int Control(vout_display_t *vd, int query, va_list args)
if (query == VOUT_DISPLAY_CHANGE_SOURCE_CROP) {
video_format_CopyCrop(&sys->p_window->fmt, &vd->source);
- AndroidWindow_UpdateCrop(sys, sys->p_window);
} else
CopySourceAspect(&sys->p_window->fmt, &vd->source);
- UpdateVideoSize(sys, &sys->p_window->fmt, sys->p_window->b_use_priv);
+ UpdateVideoSize(sys, &sys->p_window->fmt);
FixSubtitleFormat(sys);
return VLC_SUCCESS;
}
diff --git a/modules/video_output/android/nativewindowpriv.c b/modules/video_output/android/nativewindowpriv.c
deleted file mode 100644
index e035b145b6..0000000000
--- a/modules/video_output/android/nativewindowpriv.c
+++ /dev/null
@@ -1,426 +0,0 @@
-/*****************************************************************************
- * nativewindowpriv.c: Wrapper to android native window private api
- *****************************************************************************
- * Copyright (C) 2011 VLC authors and VideoLAN
- *
- * Authors: Thomas Guillem <guillem at archos.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-
-#include <android/native_window.h>
-
-#define ANDROID_HC_OR_LATER (ANDROID_API >= 11)
-#define ANDROID_ICS_OR_LATER (ANDROID_API >= 14)
-#define ANDROID_JBMR2_OR_LATER (ANDROID_API >= 18)
-
-#if ANDROID_JBMR2_OR_LATER
-/* for waiting for fence_fd returned by dequeueBuffer */
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#define SYNC_IOC_MAGIC '>'
-#define SYNC_IOC_WAIT _IOW(SYNC_IOC_MAGIC, 0, __s32)
-#endif
-
-#if ANDROID_ICS_OR_LATER
-#include <system/window.h>
-#else
-#include <ui/android_native_buffer.h>
-#include <ui/egl/android_natives.h>
-#endif
-
-#include <hardware/gralloc.h>
-
-#include <android/log.h>
-
-#define NO_ERROR 0
-typedef int32_t status_t;
-
-#if !ANDROID_ICS_OR_LATER
-typedef android_native_buffer_t ANativeWindowBuffer_t;
-#endif
-typedef struct native_window_priv native_window_priv;
-
-struct native_window_priv
-{
- ANativeWindow *anw;
- gralloc_module_t const* gralloc;
- int usage;
-};
-
-#define LOG_TAG "VLC/ANW"
-
-#define LOGD(...) __android_log_print( ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__ )
-#define LOGE(...) __android_log_print( ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__ )
-
-#define CHECK_ERR() do {\
- if( err != NO_ERROR ) {\
- LOGE( "error %d in %s line %d\n", err, __FUNCTION__, __LINE__ );\
- return err;\
- }\
-} while (0)
-
-#define CHECK_ANB() do {\
- if( anb->common.magic != ANDROID_NATIVE_BUFFER_MAGIC &&\
- anb->common.version != sizeof(ANativeWindowBuffer_t) ) {\
- LOGE( "error, buffer not valid\n" );\
- return -EINVAL;\
- }\
-} while (0)
-
-static int window_connect( ANativeWindow *anw )
-{
-#if ANDROID_ICS_OR_LATER
- return native_window_api_connect( anw, NATIVE_WINDOW_API_MEDIA );
-#else
- return 0;
-#endif
-}
-
-static int window_disconnect( ANativeWindow *anw )
-{
-#if ANDROID_ICS_OR_LATER
- return native_window_api_disconnect( anw, NATIVE_WINDOW_API_MEDIA );
-#else
- return 0;
-#endif
-}
-
-native_window_priv *ANativeWindowPriv_connect( void *window )
-{
- native_window_priv *priv;
- hw_module_t const* module;
- ANativeWindow *anw = (ANativeWindow *)window;
-
- if( anw->common.magic != ANDROID_NATIVE_WINDOW_MAGIC &&
- anw->common.version != sizeof(ANativeWindow) ) {
- LOGE( "error, window not valid\n" );
- return NULL;
- }
-
- if ( hw_get_module( GRALLOC_HARDWARE_MODULE_ID,
- &module ) != 0 )
- return NULL;
-
- if( window_connect( anw ) != 0 ) {
- LOGE( "native_window_api_connect FAIL" );
- return NULL;
- }
-
- priv = calloc( 1, sizeof(native_window_priv) );
-
- if( !priv ) {
- window_disconnect( anw );
- return NULL;
- }
- priv->anw = anw;
- priv->gralloc = (gralloc_module_t const *) module;
-
- return priv;
-}
-
-int ANativeWindowPriv_disconnect( native_window_priv *priv )
-{
- window_disconnect( priv->anw );
- free(priv);
-
- return 0;
-}
-
-int ANativeWindowPriv_setUsage( native_window_priv *priv, bool is_hw, int hw_usage )
-{
- status_t err;
-
- LOGD( "setUsage: %p, %d %X\n", (void *)priv->anw, is_hw, hw_usage );
-
- if( is_hw )
- {
- priv->usage = hw_usage | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE;
-#if ANDROID_HC_OR_LATER
- priv->usage |= GRALLOC_USAGE_EXTERNAL_DISP;
-#endif
- }
- else
- priv->usage = GRALLOC_USAGE_SW_READ_NEVER | GRALLOC_USAGE_SW_WRITE_OFTEN;
-
- err = native_window_set_usage( priv->anw, priv->usage );
- CHECK_ERR();
-
- return 0;
-}
-
-int ANativeWindowPriv_setBuffersGeometry( native_window_priv *priv, int w, int h, int hal_format )
-{
- status_t err;
-
- LOGD( "setBuffersGeometry: %p, %d, %d", (void *)priv->anw, w, h );
-
-#if ANDROID_ICS_OR_LATER
- err = native_window_set_buffers_format( priv->anw, hal_format );
- CHECK_ERR();
-
-#if ANDROID_JBMR2_OR_LATER
- err = native_window_set_buffers_user_dimensions( priv->anw, w, h );
-#else
- err = native_window_set_buffers_dimensions( priv->anw, w, h );
-#endif
- CHECK_ERR();
-
- err = native_window_set_scaling_mode( priv->anw, NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW );
- CHECK_ERR();
-#else
- err = native_window_set_buffers_geometry( priv->anw, w, h, hal_format );
- CHECK_ERR();
-#endif
-
- return 0;
-}
-
-int ANativeWindowPriv_getMinUndequeued( native_window_priv *priv, unsigned int *min_undequeued )
-{
- status_t err;
-
-#if ANDROID_HC_OR_LATER
- int query;
- err = priv->anw->query( priv->anw, NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS, &query );
- CHECK_ERR();
- if( query < 0 )
- return -1;
- *min_undequeued = query;
-#endif
- /* set a minimum value of min_undequeued in case query fails */
- if( *min_undequeued == 0 )
- *min_undequeued = 1;
-
- LOGD( "getMinUndequeued: %p %u", (void *)priv->anw, *min_undequeued );
-
- return 0;
-}
-
-int ANativeWindowPriv_getMaxBufferCount( native_window_priv *priv, unsigned int *max_buffer_count )
-{
-#if ANDROID_ICS_OR_LATER
- *max_buffer_count = 32;
-#else
- *max_buffer_count = 15;
-#endif
- return 0;
-}
-
-int ANativeWindowPriv_setBufferCount(native_window_priv *priv, unsigned int count )
-{
- status_t err;
-
- LOGD( "setBufferCount: %p %u", (void *)priv->anw, count );
-
- err = native_window_set_buffer_count( priv->anw, count );
- CHECK_ERR();
-
- return 0;
-}
-
-int ANativeWindowPriv_setCrop( native_window_priv *priv, int ofs_x, int ofs_y, int w, int h )
-{
- android_native_rect_t crop;
-
- crop.left = ofs_x;
- crop.top = ofs_y;
- crop.right = ofs_x + w;
- crop.bottom = ofs_y + h;
- return native_window_set_crop( priv->anw, &crop );
-}
-
-static int dequeue_fence( native_window_priv *priv, void **pp_handle,
- int *p_fence_fd )
-{
- ANativeWindowBuffer_t *anb;
- status_t err = NO_ERROR;
- int i_fence_fd = -1;
-
-#if ANDROID_JBMR2_OR_LATER
- err = priv->anw->dequeueBuffer( priv->anw, &anb, &i_fence_fd );
- CHECK_ERR();
- if( !p_fence_fd && i_fence_fd != -1 )
- {
- __s32 timeout = 5000;
- if( ioctl( i_fence_fd, SYNC_IOC_WAIT, &timeout ) != 0 )
- {
- priv->anw->queueBuffer( priv->anw, anb, i_fence_fd );
- return -1;
- }
- close( i_fence_fd );
- i_fence_fd = -1;
- }
-#else
- err = priv->anw->dequeueBuffer( priv->anw, &anb );
- CHECK_ERR();
-#endif
-
- if( p_fence_fd )
- *p_fence_fd = i_fence_fd;
- *pp_handle = anb;
-
- return 0;
-}
-
-int ANativeWindowPriv_dequeue( native_window_priv *priv, void **pp_handle )
-{
- return dequeue_fence( priv, pp_handle, NULL );
-}
-
-int ANativeWindowPriv_lock( native_window_priv *priv, void *p_handle )
-{
-#if !ANDROID_JBMR2_OR_LATER
- ANativeWindowBuffer_t *anb = (ANativeWindowBuffer_t *)p_handle;
- status_t err = NO_ERROR;
-
- CHECK_ANB();
-
- err = priv->anw->lockBuffer( priv->anw, anb );
- CHECK_ERR();
-
-#endif
- return 0;
-}
-
-static int queue_fence( native_window_priv *priv, void *p_handle,
- int i_fence_fd )
-{
- ANativeWindowBuffer_t *anb = (ANativeWindowBuffer_t *)p_handle;
- status_t err = NO_ERROR;
-
- CHECK_ANB();
-
-#if ANDROID_JBMR2_OR_LATER
- err = priv->anw->queueBuffer( priv->anw, anb, i_fence_fd );
-#else
- err = priv->anw->queueBuffer( priv->anw, anb );
-#endif
- CHECK_ERR();
-
- return 0;
-}
-
-int ANativeWindowPriv_queue( native_window_priv *priv, void *p_handle )
-{
- return queue_fence( priv, p_handle, -1 );
-}
-
-static int cancel_fence( native_window_priv *priv, void *p_handle,
- int i_fence_fd )
-{
- ANativeWindowBuffer_t *anb = (ANativeWindowBuffer_t *)p_handle;
- status_t err = NO_ERROR;
-
- CHECK_ANB();
-
-#if ANDROID_JBMR2_OR_LATER
- err = priv->anw->cancelBuffer( priv->anw, anb, i_fence_fd );
-#else
- err = priv->anw->cancelBuffer( priv->anw, anb );
-#endif
- CHECK_ERR();
-
- return 0;
-}
-
-int ANativeWindowPriv_cancel( native_window_priv *priv, void *p_handle )
-{
- return cancel_fence( priv, p_handle, -1 );
-}
-
-int ANativeWindowPriv_lockData( native_window_priv *priv, void **pp_handle,
- ANativeWindow_Buffer *p_out_anb )
-{
- ANativeWindowBuffer_t *anb;
- status_t err = NO_ERROR;
- void *p_data;
-
- err = dequeue_fence( priv, pp_handle, NULL );
- CHECK_ERR();
-
- anb = (ANativeWindowBuffer_t *)*pp_handle;
- CHECK_ANB();
-
- err = ANativeWindowPriv_lock( priv, *pp_handle );
- CHECK_ERR();
-
- err = priv->gralloc->lock( priv->gralloc, anb->handle, priv->usage,
- 0, 0, anb->width, anb->height, &p_data );
- CHECK_ERR();
- if( p_out_anb ) {
- p_out_anb->bits = p_data;
- p_out_anb->width = anb->width;
- p_out_anb->height = anb->height;
- p_out_anb->stride = anb->stride;
- p_out_anb->format = anb->format;
- }
-
- return 0;
-}
-
-int ANativeWindowPriv_unlockData( native_window_priv *priv, void *p_handle,
- bool b_render )
-{
- ANativeWindowBuffer_t *anb = (ANativeWindowBuffer_t *)p_handle;
- status_t err = NO_ERROR;
-
- CHECK_ANB();
-
- err = priv->gralloc->unlock( priv->gralloc, anb->handle );
- CHECK_ERR();
-
- if( b_render )
- queue_fence( priv, p_handle, -1 );
- else
- cancel_fence( priv, p_handle, -1 );
-
- return 0;
-}
-
-int ANativeWindowPriv_setOrientation( native_window_priv *priv, int orientation )
-{
- status_t err = NO_ERROR;
- int transform;
-
- switch( orientation )
- {
- case 90:
- transform = NATIVE_WINDOW_TRANSFORM_ROT_90;
- break;
- case 180:
- transform = NATIVE_WINDOW_TRANSFORM_ROT_180;
- break;
- case 270:
- transform = NATIVE_WINDOW_TRANSFORM_ROT_270;
- break;
- default:
- transform = 0;
- }
-
- err = native_window_set_buffers_transform( priv->anw, transform );
- CHECK_ERR();
-
- return 0;
-}
diff --git a/modules/video_output/android/utils.c b/modules/video_output/android/utils.c
index d944e499ba..b59035ef89 100644
--- a/modules/video_output/android/utils.c
+++ b/modules/video_output/android/utils.c
@@ -45,7 +45,6 @@ struct AWindowHandler
ptr_ANativeWindow_fromSurface pf_winFromSurface;
ptr_ANativeWindow_release pf_winRelease;
native_window_api_t anw_api;
- native_window_priv_api_t anwpriv_api;
struct {
awh_events_t cb;
@@ -298,36 +297,6 @@ LoadNativeWindowAPI(AWindowHandler *p_awh)
}
/*
- * Android private NativeWindow (post android 2.3)
- */
-
-int
-android_loadNativeWindowPrivApi(native_window_priv_api_t *native)
-{
-#define LOAD(symbol) do { \
-if ((native->symbol = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_" #symbol)) == NULL) \
- return -1; \
-} while(0)
- LOAD(connect);
- LOAD(disconnect);
- LOAD(setUsage);
- LOAD(setBuffersGeometry);
- LOAD(getMinUndequeued);
- LOAD(getMaxBufferCount);
- LOAD(setBufferCount);
- LOAD(setCrop);
- LOAD(dequeue);
- LOAD(lock);
- LOAD(lockData);
- LOAD(unlockData);
- LOAD(queue);
- LOAD(cancel);
- LOAD(setOrientation);
- return 0;
-#undef LOAD
-}
-
-/*
* Andoid JNIEnv helper
*/
diff --git a/modules/video_output/android/utils.h b/modules/video_output/android/utils.h
index 87b0d9cc67..3684cd4eca 100644
--- a/modules/video_output/android/utils.h
+++ b/modules/video_output/android/utils.h
@@ -52,29 +52,6 @@ typedef struct
int32_t (*setBuffersGeometry)(ANativeWindow*, int32_t, int32_t, int32_t); /* can be NULL */
} native_window_api_t;
-/**
- * native_window_priv_api_t. See system/core/include/system/window.h in AOSP.
- */
-typedef struct native_window_priv native_window_priv;
-typedef struct
-{
- native_window_priv *(*connect)(ANativeWindow *);
- int (*disconnect) (native_window_priv *);
- int (*setUsage) (native_window_priv *, bool, int );
- int (*setBuffersGeometry) (native_window_priv *, int, int, int );
- int (*getMinUndequeued) (native_window_priv *, unsigned int *);
- int (*getMaxBufferCount) (native_window_priv *, unsigned int *);
- int (*setBufferCount) (native_window_priv *, unsigned int );
- int (*setCrop) (native_window_priv *, int, int, int, int);
- int (*dequeue) (native_window_priv *, void **);
- int (*lock) (native_window_priv *, void *);
- int (*queue) (native_window_priv *, void *);
- int (*cancel) (native_window_priv *, void *);
- int (*lockData) (native_window_priv *, void **, ANativeWindow_Buffer *);
- int (*unlockData) (native_window_priv *, void *, bool b_render);
- int (*setOrientation) (native_window_priv *, int);
-} native_window_priv_api_t;
-
struct awh_mouse_coords
{
int i_action;
@@ -92,15 +69,6 @@ typedef struct
} awh_events_t;
/**
- * Load a private native window API
- *
- * This can be used to access the private ANativeWindow API.
- * \param api doesn't need to be released
- * \return 0 on success, -1 on error.
- */
-int android_loadNativeWindowPrivApi(native_window_priv_api_t *api);
-
-/**
* Attach or get a JNIEnv*
*
* The returned JNIEnv* is created from the android JavaVM attached to the VLC
More information about the vlc-commits
mailing list