From 80359c6615658f2784dd834a6978e43022799745 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 1 Dec 2017 18:01:15 +0100 Subject: vd_lavc: drop mediacodec direct rendering support temporarily The libavcodec mediacodec support does not conform to the new hwaccel APIs yet. It has been agreed uppon that this glue code can be deleted for now, and support for it will be restored at a later point. Readding would require that it supports the AVCodecContext.hw_device_ctx API. The hw_device_ctx would then contain the surface ID. vo_mediacodec_embed would actually perform the task of creating vo.hwdec_devs and adding a mp_hwdec_ctx, whose av_device_ref is a AVHWDeviceContext containing the android surface. --- DOCS/man/options.rst | 1 + video/decode/hw_mediacodec.c | 65 -------------------------------------------- video/decode/vd_lavc.c | 12 +++++--- wscript_build.py | 1 - 4 files changed, 9 insertions(+), 70 deletions(-) delete mode 100644 video/decode/hw_mediacodec.c diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index f01d40e563..4611d60b37 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -2524,6 +2524,7 @@ Window value cast to ``intptr_t``. Use with ``--vo=mediacodec_embed`` and ``--hwdec=mediacodec`` for direct rendering using MediaCodec, or with ``--vo=gpu --gpu-context=android`` (with or without ``--hwdec=mediacodec-copy``). + This is currently broken. ``--no-window-dragging`` Don't move the window when clicking on it and moving the mouse pointer. diff --git a/video/decode/hw_mediacodec.c b/video/decode/hw_mediacodec.c deleted file mode 100644 index 0f52695857..0000000000 --- a/video/decode/hw_mediacodec.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * This file is part of mpv. - * - * mpv is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * mpv is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with mpv. If not, see . - */ - -#include - -#include - -#include "options/options.h" -#include "video/decode/lavc.h" - -static int probe(struct lavc_ctx *ctx, struct vd_lavc_hwdec *hwdec, - const char *codec) -{ - if (ctx->opts->vo->WinID == 0) - return HWDEC_ERR_NO_CTX; - - return 0; -} - -static int init_decoder(struct lavc_ctx *ctx) -{ - av_mediacodec_default_free(ctx->avctx); - - AVMediaCodecContext *mcctx = av_mediacodec_alloc_context(); - if (!mcctx) - return -1; - - void *surface = (void *)(intptr_t)(ctx->opts->vo->WinID); - return av_mediacodec_default_init(ctx->avctx, mcctx, surface); -} - -static void uninit(struct lavc_ctx *ctx) -{ - if (ctx->avctx) - av_mediacodec_default_free(ctx->avctx); -} - -const struct vd_lavc_hwdec mp_vd_lavc_mediacodec = { - .type = HWDEC_MEDIACODEC, - .image_format = IMGFMT_MEDIACODEC, - .lavc_suffix = "_mediacodec", - .probe = probe, - .init_decoder = init_decoder, - .uninit = uninit, -}; - -const struct vd_lavc_hwdec mp_vd_lavc_mediacodec_copy = { - .type = HWDEC_MEDIACODEC_COPY, - .lavc_suffix = "_mediacodec", - .copying = true, -}; diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c index 1005c131c6..a422a53819 100644 --- a/video/decode/vd_lavc.c +++ b/video/decode/vd_lavc.c @@ -123,9 +123,6 @@ const struct m_sub_options vd_lavc_conf = { }, }; -extern const struct vd_lavc_hwdec mp_vd_lavc_mediacodec; -extern const struct vd_lavc_hwdec mp_vd_lavc_mediacodec_copy; - #if HAVE_RPI static const struct vd_lavc_hwdec mp_vd_lavc_rpi = { .type = HWDEC_RPI, @@ -279,6 +276,14 @@ static const struct vd_lavc_hwdec mp_vd_lavc_dxva2_copy = { }; #endif +#if HAVE_ANDROID +static const struct vd_lavc_hwdec mp_vd_lavc_mediacodec_copy = { + .type = HWDEC_MEDIACODEC_COPY, + .lavc_suffix = "_mediacodec", + .copying = true, +}; +#endif + static const struct vd_lavc_hwdec *const hwdec_list[] = { #if HAVE_D3D_HWACCEL &mp_vd_lavc_d3d11va, @@ -310,7 +315,6 @@ static const struct vd_lavc_hwdec *const hwdec_list[] = { &mp_vd_lavc_vaapi_copy, #endif #if HAVE_ANDROID - &mp_vd_lavc_mediacodec, &mp_vd_lavc_mediacodec_copy, #endif #if HAVE_CUDA_HWACCEL diff --git a/wscript_build.py b/wscript_build.py index 83b4e8eca0..e649913626 100644 --- a/wscript_build.py +++ b/wscript_build.py @@ -363,7 +363,6 @@ def build(ctx): ( "video/vdpau.c", "vdpau" ), ( "video/vdpau_mixer.c", "vdpau" ), ( "video/decode/dec_video.c"), - ( "video/decode/hw_mediacodec.c", "android" ), ( "video/decode/vd_lavc.c" ), ( "video/filter/refqueue.c" ), ( "video/filter/vf.c" ), -- cgit v1.2.3