]> git.sesse.net Git - vlc/commitdiff
nativewindowpriv: add is_hw arg in setup
authorThomas Guillem <thomas@gllm.fr>
Fri, 14 Nov 2014 16:09:54 +0000 (17:09 +0100)
committerJean-Baptiste Kempf <jb@videolan.org>
Sat, 15 Nov 2014 11:22:50 +0000 (12:22 +0100)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/codec/omxil/omxil.c
modules/video_output/android/nativewindowpriv.c
modules/video_output/android/utils.h

index 5b1be012c99ab7415d788a7ba2aeceb7a04035c0..19bf3f78940a95e6576968b93996f92a032ac5da 100644 (file)
@@ -2223,6 +2223,7 @@ static int HwBuffer_AllocateBuffers( decoder_t *p_dec, OmxPort *p_port )
                                         def->format.video.nFrameWidth,
                                         def->format.video.nFrameHeight,
                                         colorFormat,
+                                        true,
                                         (int) i_hw_usage ) != 0 )
     {
         msg_Err( p_dec, "can't setup OMXHWBuffer" );
index 4f870e595862dcc1dd888d263d4857a7ae83fc49..86e0c38a12ed427b0eb0bc079394c801f5487c43 100644 (file)
@@ -27,6 +27,7 @@
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdbool.h>
 
 #if ANDROID_API <= 13
 #include <ui/android_native_buffer.h>
@@ -113,7 +114,7 @@ int ANativeWindowPriv_disconnect( native_window_priv *priv )
     return 0;
 }
 
-int ANativeWindowPriv_setup( native_window_priv *priv, int w, int h, int hal_format, int hw_usage )
+int ANativeWindowPriv_setup( native_window_priv *priv, int w, int h, int hal_format, bool is_hw, int hw_usage )
 {
     int usage = 0;
     status_t err;
@@ -121,7 +122,10 @@ int ANativeWindowPriv_setup( native_window_priv *priv, int w, int h, int hal_for
     LOGD( "setup: %p, %d, %d, %X, %X\n",
           priv->anw, w, h, hal_format, hw_usage );
 
-    usage |= hw_usage | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE;
+    if (is_hw)
+        usage = hw_usage | GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE;
+    else
+        usage= GRALLOC_USAGE_SW_READ_NEVER | GRALLOC_USAGE_SW_WRITE_OFTEN;
 #if ANDROID_API >= 11
     usage |= GRALLOC_USAGE_EXTERNAL_DISP;
 #endif
index 86215f22e4f6e7d0722a2a772255e3100b5dfd84..571477c15e995d352deb337c29ee95faa07bd02d 100644 (file)
@@ -54,7 +54,7 @@ void Manage(vout_display_t *);
 typedef struct native_window_priv native_window_priv;
 typedef native_window_priv *(*ptr_ANativeWindowPriv_connect) (void *);
 typedef int (*ptr_ANativeWindowPriv_disconnect) (native_window_priv *);
-typedef int (*ptr_ANativeWindowPriv_setup) (native_window_priv *, int, int, int, int );
+typedef int (*ptr_ANativeWindowPriv_setup) (native_window_priv *, int, int, int, bool, int );
 typedef int (*ptr_ANativeWindowPriv_getMinUndequeued) (native_window_priv *, unsigned int *);
 typedef int (*ptr_ANativeWindowPriv_setBufferCount) (native_window_priv *, unsigned int );
 typedef int (*ptr_ANativeWindowPriv_setCrop) (native_window_priv *, int, int, int, int);