[vlc-devel] [PATCH 3/6] avcodec: remove vaapi_drm sub module
Thomas Guillem
thomas at gllm.fr
Sun Feb 24 12:27:05 CET 2019
vaapi with DRM should be initialised from the decoder context now.
---
modules/codec/Makefile.am | 9 ---
modules/codec/avcodec/vaapi.c | 134 ----------------------------------
2 files changed, 143 deletions(-)
diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am
index 760141d1f4..4cf2c0a7f4 100644
--- a/modules/codec/Makefile.am
+++ b/modules/codec/Makefile.am
@@ -406,21 +406,12 @@ endif
### avcodec hardware acceleration ###
-libvaapi_drm_plugin_la_SOURCES = \
- codec/avcodec/vaapi.c hw/vaapi/vlc_vaapi.c hw/vaapi/vlc_vaapi.h
-libvaapi_drm_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DVLC_VA_BACKEND_DRM
-libvaapi_drm_plugin_la_CFLAGS = $(AM_CFLAGS) \
- $(LIBVA_DRM_CFLAGS) $(AVCODEC_CFLAGS)
-libvaapi_drm_plugin_la_LIBADD = $(LIBVA_DRM_LIBS)
libvaapi_plugin_la_SOURCES = \
codec/avcodec/vaapi.c hw/vaapi/vlc_vaapi.c hw/vaapi/vlc_vaapi.h
libvaapi_plugin_la_CPPFLAGS = $(AM_CPPFLAGS)
libvaapi_plugin_la_CFLAGS = $(AM_CFLAGS) $(AVCODEC_CFLAGS)
libvaapi_plugin_la_LIBADD = $(LIBVA_LIBS)
if HAVE_AVCODEC_VAAPI
-if HAVE_VAAPI_DRM
-codec_LTLIBRARIES += libvaapi_drm_plugin.la
-endif
codec_LTLIBRARIES += libvaapi_plugin.la
endif
diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
index 0121910b97..8bc9609439 100644
--- a/modules/codec/avcodec/vaapi.c
+++ b/modules/codec/avcodec/vaapi.c
@@ -52,10 +52,6 @@ struct vlc_va_sys_t
{
struct vlc_vaapi_instance *va_inst;
struct vaapi_context hw_ctx;
-
-#ifdef VLC_VA_BACKEND_DRM
- picture_pool_t *pool;
-#endif
};
static int GetVaProfile(AVCodecContext *ctx, const es_format_t *fmt,
@@ -126,8 +122,6 @@ static int GetVaProfile(AVCodecContext *ctx, const es_format_t *fmt,
return VLC_SUCCESS;
}
-#ifndef VLC_VA_BACKEND_DRM
-
static int Get(vlc_va_t *va, picture_t *pic, uint8_t **data)
{
(void) va;
@@ -228,139 +222,11 @@ error:
return ret;
}
-#else /* DRM */
-
-static int GetDRM(vlc_va_t *va, picture_t *pic, uint8_t **data)
-{
- vlc_va_sys_t *sys = va->sys;
-
- picture_t *vapic = picture_pool_Wait(sys->pool);
- if (vapic == NULL)
- return VLC_EGENERIC;
- vlc_vaapi_PicAttachContext(vapic);
-
- pic->context = vapic->context->copy(vapic->context);
- picture_Release(vapic);
- if (pic->context == NULL)
- return VLC_EGENERIC;
-
- *data = (void *)(uintptr_t)vlc_vaapi_PicGetSurface(pic);
- return VLC_SUCCESS;
-}
-
-static void DeleteDRM(vlc_va_t *va, void **hwctx)
-{
- vlc_va_sys_t *sys = va->sys;
- vlc_object_t *o = VLC_OBJECT(va);
-
- (void) hwctx;
- picture_pool_Release(sys->pool);
- vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id);
- vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
- vlc_vaapi_ReleaseInstance(sys->va_inst);
- free(sys);
-}
-
-static int CreateDRM(vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
- const es_format_t *fmt, void *p_sys)
-{
- if (pix_fmt != AV_PIX_FMT_VAAPI_VLD || p_sys)
- return VLC_EGENERIC;
-
- (void) fmt;
- (void) p_sys;
- vlc_object_t *o = VLC_OBJECT(va);
-
- VAProfile i_profile;
- unsigned count;
- int i_vlc_chroma;
- if (GetVaProfile(ctx, fmt, &i_profile, &i_vlc_chroma, &count) != VLC_SUCCESS)
- return VLC_EGENERIC;
-
- vlc_va_sys_t *sys;
-
- sys = malloc(sizeof(vlc_va_sys_t));
- if (!sys)
- return VLC_ENOMEM;
- memset(sys, 0, sizeof (*sys));
-
- /* */
- sys->hw_ctx.display = NULL;
- sys->hw_ctx.config_id = VA_INVALID_ID;
- sys->hw_ctx.context_id = VA_INVALID_ID;
- sys->pool = NULL;
- sys->va_inst = NULL;
-
- /* Create a VA display */
- sys->va_inst = vlc_vaapi_InitializeInstanceDRM(o, vaGetDisplayDRM,
- &sys->hw_ctx.display, NULL);
- if (!sys->va_inst)
- goto error;
-
- sys->hw_ctx.config_id =
- vlc_vaapi_CreateConfigChecked(o, sys->hw_ctx.display, i_profile,
- VAEntrypointVLD, 0);
- if (sys->hw_ctx.config_id == VA_INVALID_ID)
- goto error;
-
- /* Create surfaces */
- assert(ctx->coded_width > 0 && ctx->coded_height > 0);
- video_format_t vfmt = {
- .i_chroma = i_vlc_chroma,
- .i_width = ctx->coded_width,
- .i_height = ctx->coded_height,
- .i_visible_width = ctx->coded_width,
- .i_visible_height = ctx->coded_height
- };
-
- VASurfaceID *surfaces;
- sys->pool = vlc_vaapi_PoolNew(o, sys->va_inst, sys->hw_ctx.display, count,
- &surfaces, &vfmt, false);
-
- if (!sys->pool)
- goto error;
-
- /* Create a context */
- sys->hw_ctx.context_id =
- vlc_vaapi_CreateContext(o, sys->hw_ctx.display, sys->hw_ctx.config_id,
- ctx->coded_width, ctx->coded_height,
- VA_PROGRESSIVE, surfaces, count);
- if (sys->hw_ctx.context_id == VA_INVALID_ID)
- goto error;
-
- msg_Info(va, "Using %s", vaQueryVendorString(sys->hw_ctx.display));
-
- ctx->hwaccel_context = &sys->hw_ctx;
- va->sys = sys;
- va->get = GetDRM;
- return VLC_SUCCESS;
-
-error:
- if (sys->hw_ctx.context_id != VA_INVALID_ID)
- vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id);
- if (sys->pool != NULL)
- picture_pool_Release(sys->pool);
- if (sys->hw_ctx.config_id != VA_INVALID_ID)
- vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
- if (sys->va_inst != NULL)
- vlc_vaapi_ReleaseInstance(sys->va_inst);
- free(sys);
- return VLC_EGENERIC;
-}
-#endif
-
vlc_module_begin ()
-#ifdef VLC_VA_BACKEND_DRM
- set_description( N_("VA-API video decoder via DRM") )
- set_capability( "hw decoder", 0 )
- set_callbacks( CreateDRM, DeleteDRM )
- add_shortcut( "vaapi", "vaapi_drm" )
-#else
set_description( N_("VA-API video decoder") )
set_capability( "hw decoder", 100 )
set_callbacks( Create, Delete )
add_shortcut( "vaapi" )
-#endif
set_category( CAT_INPUT )
set_subcategory( SUBCAT_INPUT_VCODEC )
vlc_module_end ()
--
2.20.1
More information about the vlc-devel
mailing list