summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-12-01 18:01:15 +0100
committerwm4 <wm4@nowhere>2017-12-01 18:01:15 +0100
commit80359c6615658f2784dd834a6978e43022799745 (patch)
treed94f5a1772f97f8e4732a68a2e08e3bc16545f74
parent9f52a92899db1acf8ae630d5d06c28eb6be652c6 (diff)
downloadmpv-80359c6615658f2784dd834a6978e43022799745.tar.bz2
mpv-80359c6615658f2784dd834a6978e43022799745.tar.xz
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.
-rw-r--r--DOCS/man/options.rst1
-rw-r--r--video/decode/hw_mediacodec.c65
-rw-r--r--video/decode/vd_lavc.c12
-rw-r--r--wscript_build.py1
4 files changed, 9 insertions, 70 deletions
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 <http://www.gnu.org/licenses/>.
- */
-
-#include <stdbool.h>
-
-#include <libavcodec/mediacodec.h>
-
-#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" ),