[vlc-commits] vaapi: inline init and deinit functions

Rémi Denis-Courmont git at videolan.org
Sat Sep 13 11:24:53 CEST 2014


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Sep 13 12:24:40 2014 +0300| [f32044fc32d4aa252de4859ee98aa85978cac186] | committer: Rémi Denis-Courmont

vaapi: inline init and deinit functions

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f32044fc32d4aa252de4859ee98aa85978cac186
---

 modules/codec/avcodec/vaapi.c |   57 +++++++++++++++--------------------------
 1 file changed, 20 insertions(+), 37 deletions(-)

diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
index fb32e1c..22b679a 100644
--- a/modules/codec/avcodec/vaapi.c
+++ b/modules/codec/avcodec/vaapi.c
@@ -93,7 +93,6 @@ struct vlc_va_sys_t
     bool b_supports_derive;
 };
 
-/* */
 static void DestroySurfaces( vlc_va_sys_t *sys )
 {
     if( sys->image.image_id != VA_INVALID_ID )
@@ -417,8 +416,10 @@ static int Setup( vlc_va_t *va, void **pp_hw_ctx, vlc_fourcc_t *pi_chroma,
     return VLC_EGENERIC;
 }
 
-static void Close( vlc_va_sys_t *sys )
+static void Delete( vlc_va_t *va )
 {
+    vlc_va_sys_t *sys = va->sys;
+
     if( sys->i_surface_width || sys->i_surface_height )
         DestroySurfaces( sys );
 
@@ -431,17 +432,20 @@ static void Close( vlc_va_sys_t *sys )
 #ifdef VLC_VA_BACKEND_DRM
     close( sys->drm_fd );
 #endif
-}
-
-static void Delete( vlc_va_t *va )
-{
-    vlc_va_sys_t *sys = va->sys;
-    Close( sys );
     free( sys );
 }
 
-static int Open( vlc_va_t *va, int i_codec_id, int i_thread_count )
+static int Create( vlc_va_t *va, AVCodecContext *ctx, const es_format_t *fmt )
 {
+    (void) fmt;
+#ifdef VLC_VA_BACKEND_XLIB
+    if( !vlc_xlib_init( VLC_OBJECT(va) ) )
+    {
+        msg_Warn( va, "Ignoring VA-X11 API" );
+        return VLC_EGENERIC;
+    }
+#endif
+
     vlc_va_sys_t *sys = calloc( 1, sizeof(*sys) );
     if ( unlikely(sys == NULL) )
        return VLC_ENOMEM;
@@ -452,7 +456,7 @@ static int Open( vlc_va_t *va, int i_codec_id, int i_thread_count )
     int i_surface_count;
 
     /* */
-    switch( i_codec_id )
+    switch( ctx->codec_id )
     {
     case AV_CODEC_ID_MPEG1VIDEO:
     case AV_CODEC_ID_MPEG2VIDEO:
@@ -473,7 +477,7 @@ static int Open( vlc_va_t *va, int i_codec_id, int i_thread_count )
         break;
     case AV_CODEC_ID_H264:
         i_profile = VAProfileH264High;
-        i_surface_count = 16 + i_thread_count + 2;
+        i_surface_count = 16 + ctx->thread_count + 2;
         break;;
     default:
         free( sys );
@@ -571,6 +575,11 @@ static int Open( vlc_va_t *va, int i_codec_id, int i_thread_count )
 
     va->sys = sys;
     va->description = vaQueryVendorString( sys->p_display );
+    va->pix_fmt = PIX_FMT_VAAPI_VLD; /* Only VLD supported */
+    va->setup = Setup;
+    va->get = Get;
+    va->release = Release;
+    va->extract = Extract;
     return VLC_SUCCESS;
 
 error:
@@ -588,32 +597,6 @@ error:
     return VLC_EGENERIC;
 }
 
-static int Create( vlc_va_t *p_va, AVCodecContext *ctx,
-                   const es_format_t *fmt )
-{
-#ifdef VLC_VA_BACKEND_XLIB
-    if( !vlc_xlib_init( VLC_OBJECT(p_va) ) )
-    {
-        msg_Warn( p_va, "Ignoring VA API" );
-        return VLC_EGENERIC;
-    }
-#endif
-
-    (void) fmt;
-
-    int err = Open( p_va, ctx->codec_id, ctx->thread_count );
-    if( err )
-        return err;
-
-    /* Only VLD supported */
-    p_va->pix_fmt = PIX_FMT_VAAPI_VLD;
-    p_va->setup = Setup;
-    p_va->get = Get;
-    p_va->release = Release;
-    p_va->extract = Extract;
-    return VLC_SUCCESS;
-}
-
 vlc_module_begin ()
 #if defined (VLC_VA_BACKEND_XLIB)
     set_description( N_("VA-API video decoder via X11") )



More information about the vlc-commits mailing list