Commit aadd0e16 authored by Thomas Guillem's avatar Thomas Guillem Committed by Jean-Baptiste Kempf

nativewindowpriv: split setup into setUsage and setBuffersGeometry

Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 18e445ad
...@@ -2215,14 +2215,18 @@ static int HwBuffer_AllocateBuffers( decoder_t *p_dec, OmxPort *p_port ) ...@@ -2215,14 +2215,18 @@ static int HwBuffer_AllocateBuffers( decoder_t *p_dec, OmxPort *p_port )
i_angle ); i_angle );
} }
if( p_port->p_hwbuf->anwpriv.setup( p_port->p_hwbuf->window_priv, if( p_port->p_hwbuf->anwpriv.setUsage( p_port->p_hwbuf->window_priv,
def->format.video.nFrameWidth, true, (int) i_hw_usage ) != 0 )
def->format.video.nFrameHeight, {
colorFormat, msg_Err( p_dec, "can't set usage" );
true, goto error;
(int) i_hw_usage ) != 0 ) }
{ if( p_port->p_hwbuf->anwpriv.setBuffersGeometry( p_port->p_hwbuf->window_priv,
msg_Err( p_dec, "can't setup OMXHWBuffer" ); def->format.video.nFrameWidth,
def->format.video.nFrameHeight,
colorFormat ) != 0 )
{
msg_Err( p_dec, "can't set buffers geometry" );
goto error; goto error;
} }
......
...@@ -384,10 +384,13 @@ static int AndroidWindow_SetupANWP(vout_display_sys_t *sys, ...@@ -384,10 +384,13 @@ static int AndroidWindow_SetupANWP(vout_display_sys_t *sys,
if (!p_window->p_handle_priv) if (!p_window->p_handle_priv)
goto error; goto error;
if (sys->anwp.setup(p_window->p_handle_priv, if (sys->anwp.setUsage(p_window->p_handle_priv, false, 0) != 0)
p_window->fmt.i_width, p_window->fmt.i_height, goto error;
p_window->i_android_hal,
false, 0) != 0) if (sys->anwp.setBuffersGeometry(p_window->p_handle_priv,
p_window->fmt.i_width,
p_window->fmt.i_height,
p_window->i_android_hal) != 0)
goto error; goto error;
sys->anwp.getMinUndequeued(p_window->p_handle_priv, sys->anwp.getMinUndequeued(p_window->p_handle_priv,
......
...@@ -144,12 +144,11 @@ int ANativeWindowPriv_disconnect( native_window_priv *priv ) ...@@ -144,12 +144,11 @@ int ANativeWindowPriv_disconnect( native_window_priv *priv )
return 0; return 0;
} }
int ANativeWindowPriv_setup( native_window_priv *priv, int w, int h, int hal_format, bool is_hw, int hw_usage ) int ANativeWindowPriv_setUsage( native_window_priv *priv, bool is_hw, int hw_usage )
{ {
status_t err; status_t err;
LOGD( "setup: %p, %d, %d, %X, %X\n", LOGD( "setUsage: %p, %d %X\n", priv->anw, is_hw, hw_usage );
priv->anw, w, h, hal_format, hw_usage );
if( is_hw ) if( is_hw )
{ {
...@@ -164,6 +163,15 @@ int ANativeWindowPriv_setup( native_window_priv *priv, int w, int h, int hal_for ...@@ -164,6 +163,15 @@ int ANativeWindowPriv_setup( native_window_priv *priv, int w, int h, int hal_for
err = native_window_set_usage( priv->anw, priv->usage ); err = native_window_set_usage( priv->anw, priv->usage );
CHECK_ERR(); 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", priv->anw, w, h );
#if ANDROID_ICS_OR_LATER #if ANDROID_ICS_OR_LATER
err = native_window_set_buffers_format( priv->anw, hal_format ); err = native_window_set_buffers_format( priv->anw, hal_format );
CHECK_ERR(); CHECK_ERR();
......
...@@ -57,7 +57,8 @@ int LoadNativeWindowPrivAPI(native_window_priv_api_t *native) ...@@ -57,7 +57,8 @@ int LoadNativeWindowPrivAPI(native_window_priv_api_t *native)
{ {
native->connect = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_connect"); native->connect = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_connect");
native->disconnect = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_disconnect"); native->disconnect = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_disconnect");
native->setup = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setup"); native->setUsage = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setUsage");
native->setBuffersGeometry = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setBuffersGeometry");
native->getMinUndequeued = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_getMinUndequeued"); native->getMinUndequeued = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_getMinUndequeued");
native->getMaxBufferCount = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_getMaxBufferCount"); native->getMaxBufferCount = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_getMaxBufferCount");
native->setBufferCount = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setBufferCount"); native->setBufferCount = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setBufferCount");
...@@ -70,9 +71,9 @@ int LoadNativeWindowPrivAPI(native_window_priv_api_t *native) ...@@ -70,9 +71,9 @@ int LoadNativeWindowPrivAPI(native_window_priv_api_t *native)
native->cancel = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_cancel"); native->cancel = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_cancel");
native->setOrientation = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setOrientation"); native->setOrientation = dlsym(RTLD_DEFAULT, "ANativeWindowPriv_setOrientation");
return native->connect && native->disconnect && native->setup && return native->connect && native->disconnect && native->setUsage &&
native->getMinUndequeued && native->getMaxBufferCount && native->setBuffersGeometry && native->getMinUndequeued &&
native->setBufferCount && native->setCrop && native->getMaxBufferCount && native->setBufferCount && native->setCrop &&
native->dequeue && native->lock && native->lockData && native->unlockData && native->dequeue && native->lock && native->lockData && native->unlockData &&
native->queue && native->cancel && native->setOrientation ? 0 : -1; native->queue && native->cancel && native->setOrientation ? 0 : -1;
} }
......
...@@ -73,7 +73,8 @@ static inline int ChromaToAndroidHal(vlc_fourcc_t i_chroma) ...@@ -73,7 +73,8 @@ static inline int ChromaToAndroidHal(vlc_fourcc_t i_chroma)
typedef struct native_window_priv native_window_priv; typedef struct native_window_priv native_window_priv;
typedef native_window_priv *(*ptr_ANativeWindowPriv_connect) (void *); typedef native_window_priv *(*ptr_ANativeWindowPriv_connect) (void *);
typedef int (*ptr_ANativeWindowPriv_disconnect) (native_window_priv *); typedef int (*ptr_ANativeWindowPriv_disconnect) (native_window_priv *);
typedef int (*ptr_ANativeWindowPriv_setup) (native_window_priv *, int, int, int, bool, int ); typedef int (*ptr_ANativeWindowPriv_setUsage) (native_window_priv *, bool, int );
typedef int (*ptr_ANativeWindowPriv_setBuffersGeometry) (native_window_priv *, int, int, int );
typedef int (*ptr_ANativeWindowPriv_getMinUndequeued) (native_window_priv *, unsigned int *); typedef int (*ptr_ANativeWindowPriv_getMinUndequeued) (native_window_priv *, unsigned int *);
typedef int (*ptr_ANativeWindowPriv_getMaxBufferCount) (native_window_priv *, unsigned int *); typedef int (*ptr_ANativeWindowPriv_getMaxBufferCount) (native_window_priv *, unsigned int *);
typedef int (*ptr_ANativeWindowPriv_setBufferCount) (native_window_priv *, unsigned int ); typedef int (*ptr_ANativeWindowPriv_setBufferCount) (native_window_priv *, unsigned int );
...@@ -90,7 +91,8 @@ typedef struct ...@@ -90,7 +91,8 @@ typedef struct
{ {
ptr_ANativeWindowPriv_connect connect; ptr_ANativeWindowPriv_connect connect;
ptr_ANativeWindowPriv_disconnect disconnect; ptr_ANativeWindowPriv_disconnect disconnect;
ptr_ANativeWindowPriv_setup setup; ptr_ANativeWindowPriv_setUsage setUsage;
ptr_ANativeWindowPriv_setBuffersGeometry setBuffersGeometry;
ptr_ANativeWindowPriv_getMinUndequeued getMinUndequeued; ptr_ANativeWindowPriv_getMinUndequeued getMinUndequeued;
ptr_ANativeWindowPriv_getMaxBufferCount getMaxBufferCount; ptr_ANativeWindowPriv_getMaxBufferCount getMaxBufferCount;
ptr_ANativeWindowPriv_setBufferCount setBufferCount; ptr_ANativeWindowPriv_setBufferCount setBufferCount;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment