]> git.sesse.net Git - vlc/blobdiff - modules/codec/omxil/omxil.c
nativewindowpriv: split setup into setUsage and setBuffersGeometry
[vlc] / modules / codec / omxil / omxil.c
index 95e5d0ae8628b78e9f9afe5066d3939e6e90bd83..9bdedc5b0e79b24eeae4fe5196e6e3673eb06a31 100644 (file)
@@ -72,7 +72,6 @@ extern int jni_attach_thread(JNIEnv **env, const char *thread_name);
 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
 
@@ -97,7 +96,7 @@ static OMX_ERRORTYPE OmxFillBufferDone( OMX_HANDLETYPE, OMX_PTR,
 
 #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 );
@@ -2214,19 +2213,20 @@ 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;
     }
 
@@ -2259,13 +2259,6 @@ static int HwBuffer_AllocateBuffers( decoder_t *p_dec, OmxPort *p_port )
         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;
 
@@ -2600,7 +2593,7 @@ static void *DequeueThread( void *data )
 /*****************************************************************************
  * 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;
@@ -2621,7 +2614,7 @@ static void UnlockPicture( picture_t* p_pic )
     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 )
     {
@@ -2629,7 +2622,7 @@ static void UnlockPicture( picture_t* p_pic )
         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 );