extern void jni_detach_thread();
extern jobject jni_LockAndGetAndroidJavaSurface();
extern void jni_UnlockAndroidSurface();
-extern void jni_SetAndroidSurfaceSize(int width, int height, int visible_width, int visible_height, int sar_num, int sar_den);
extern bool jni_IsVideoPlayerActivityCreated();
#endif
#if defined(USE_IOMX)
static void *DequeueThread( void *data );
-static void UnlockPicture( picture_t* p_pic );
+static void UnlockPicture( picture_t* p_pic, bool b_render );
static void HwBuffer_Init( decoder_t *p_dec, OmxPort *p_port );
static void HwBuffer_Destroy( decoder_t *p_dec, OmxPort *p_port );
static int HwBuffer_AllocateBuffers( decoder_t *p_dec, OmxPort *p_port );
}
p_port->p_hwbuf->anwpriv.setOrientation( p_port->p_hwbuf->window_priv,
i_angle );
- video_format_ApplyRotation( &p_port->p_hwbuf->fmt_out,
- &p_port->p_fmt->video );
- } else
- p_port->p_hwbuf->fmt_out = p_port->p_fmt->video;
-
- if( p_port->p_hwbuf->anwpriv.setup( p_port->p_hwbuf->window_priv,
- def->format.video.nFrameWidth,
- def->format.video.nFrameHeight,
- colorFormat,
- true,
- (int) i_hw_usage ) != 0 )
- {
- msg_Err( p_dec, "can't setup OMXHWBuffer" );
+ }
+
+ if( p_port->p_hwbuf->anwpriv.setUsage( p_port->p_hwbuf->window_priv,
+ true, (int) i_hw_usage ) != 0 )
+ {
+ msg_Err( p_dec, "can't set usage" );
+ goto error;
+ }
+ if( p_port->p_hwbuf->anwpriv.setBuffersGeometry( p_port->p_hwbuf->window_priv,
+ def->format.video.nFrameWidth,
+ def->format.video.nFrameHeight,
+ colorFormat ) != 0 )
+ {
+ msg_Err( p_dec, "can't set buffers geometry" );
goto error;
}
goto error;
}
- jni_SetAndroidSurfaceSize( p_port->p_hwbuf->fmt_out.i_width,
- p_port->p_hwbuf->fmt_out.i_height,
- p_port->p_hwbuf->fmt_out.i_visible_width,
- p_port->p_hwbuf->fmt_out.i_visible_height,
- p_port->p_hwbuf->fmt_out.i_sar_num,
- p_port->p_hwbuf->fmt_out.i_sar_den );
-
p_port->p_hwbuf->i_buffers = p_port->definition.nBufferCountActual;
p_port->p_hwbuf->i_max_owned = p_port->p_hwbuf->i_buffers - min_undequeued;
/*****************************************************************************
* vout callbacks
*****************************************************************************/
-static void UnlockPicture( picture_t* p_pic )
+static void UnlockPicture( picture_t* p_pic, bool b_render )
{
picture_sys_t *p_picsys = p_pic->p_sys;
decoder_t *p_dec = p_picsys->priv.hw.p_dec;
p_handle = p_port->pp_buffers[p_picsys->priv.hw.i_index]->pBuffer;
OMX_DBG( "DisplayBuffer: %s %p",
- p_picsys->b_render ? "render" : "cancel", p_handle );
+ b_render ? "render" : "cancel", p_handle );
if( !p_handle )
{
goto end;
}
- if( p_picsys->b_render )
+ if( b_render )
p_port->p_hwbuf->anwpriv.queue( p_port->p_hwbuf->window_priv, p_handle );
else
p_port->p_hwbuf->anwpriv.cancel( p_port->p_hwbuf->window_priv, p_handle );