]> git.sesse.net Git - vlc/commitdiff
vaapi: use AVFrame.opaque to store per-picture state directly
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 24 Jul 2013 20:21:45 +0000 (23:21 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 24 Jul 2013 20:24:14 +0000 (23:24 +0300)
modules/codec/avcodec/vaapi.c

index 418f9afa8860b8159de35e8421f901ade3a7536b..d014d7d690d3e6fcd958f78a21e5b80d00fa222c 100644 (file)
@@ -513,23 +513,17 @@ static int Get( vlc_va_t *va, AVFrame *p_ff )
         if( i == 0 || i == 3 )
             p_ff->data[i] = (void*)(uintptr_t)p_surface->i_id;/* Yummie */
     }
+    p_ff->opaque = p_surface;
     return VLC_SUCCESS;
 }
 
 static void Release( vlc_va_t *va, AVFrame *p_ff )
 {
     vlc_va_sys_t *sys = va->sys;
-
-    VASurfaceID i_surface_id = (VASurfaceID)(uintptr_t)p_ff->data[3];
+    vlc_va_surface_t *p_surface = p_ff->opaque;
 
     vlc_mutex_lock( &sys->lock );
-    for( int i = 0; i < sys->i_surface_count; i++ )
-    {
-        vlc_va_surface_t *p_surface = &sys->p_surface[i];
-
-        if( p_surface->i_id == i_surface_id )
-            p_surface->i_refcount--;
-    }
+    p_surface->i_refcount--;
     vlc_mutex_unlock( &sys->lock );
 }