From 7fd1359fcf72f28eb7bc24392f50f1fdbd75b956 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 31 Oct 2017 15:18:57 +0100 Subject: videotoolbox: use generic code for dummy hwdevice init And move the remaining code (just 2 struct constant definitions) to vd_lavc.c. --- video/decode/hw_videotoolbox.c | 73 ------------------------------------------ video/decode/vd_lavc.c | 21 ++++++++++-- 2 files changed, 19 insertions(+), 75 deletions(-) delete mode 100644 video/decode/hw_videotoolbox.c (limited to 'video') diff --git a/video/decode/hw_videotoolbox.c b/video/decode/hw_videotoolbox.c deleted file mode 100644 index 833b6fdead..0000000000 --- a/video/decode/hw_videotoolbox.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of mpv. - * - * Copyright (c) 2015 Sebastien Zwickert - * - * 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 "config.h" - -#include - -#include "video/decode/lavc.h" - -static void vt_dummy_destroy(struct mp_hwdec_ctx *ctx) -{ - av_buffer_unref(&ctx->av_device_ref); - talloc_free(ctx); -} - -static struct mp_hwdec_ctx *vt_create_dummy(struct mpv_global *global, - struct mp_log *plog, bool probing) -{ - struct mp_hwdec_ctx *ctx = talloc_ptrtype(NULL, ctx); - *ctx = (struct mp_hwdec_ctx) { - .type = HWDEC_VIDEOTOOLBOX_COPY, - .ctx = "dummy", - .destroy = vt_dummy_destroy, - }; - - if (av_hwdevice_ctx_create(&ctx->av_device_ref, AV_HWDEVICE_TYPE_VIDEOTOOLBOX, - NULL, NULL, 0) < 0) - { - vt_dummy_destroy(ctx); - return NULL; - } - - return ctx; -} - -const struct vd_lavc_hwdec mp_vd_lavc_videotoolbox = { - .type = HWDEC_VIDEOTOOLBOX, - .image_format = IMGFMT_VIDEOTOOLBOX, - .generic_hwaccel = true, - .set_hwframes = true, - .pixfmt_map = (const enum AVPixelFormat[][2]) { - {AV_PIX_FMT_NONE} - }, -}; - -const struct vd_lavc_hwdec mp_vd_lavc_videotoolbox_copy = { - .type = HWDEC_VIDEOTOOLBOX_COPY, - .copying = true, - .image_format = IMGFMT_VIDEOTOOLBOX, - .generic_hwaccel = true, - .create_dev = vt_create_dummy, - .set_hwframes = true, - .pixfmt_map = (const enum AVPixelFormat[][2]) { - {AV_PIX_FMT_NONE} - }, - .delay_queue = HWDEC_DELAY_QUEUE_COUNT, -}; diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c index e3b5018d7c..3b22159f2b 100644 --- a/video/decode/vd_lavc.c +++ b/video/decode/vd_lavc.c @@ -126,8 +126,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; -extern const struct vd_lavc_hwdec mp_vd_lavc_videotoolbox; -extern const struct vd_lavc_hwdec mp_vd_lavc_videotoolbox_copy; extern const struct vd_lavc_hwdec mp_vd_lavc_dxva2; extern const struct vd_lavc_hwdec mp_vd_lavc_dxva2_copy; extern const struct vd_lavc_hwdec mp_vd_lavc_d3d11va; @@ -251,6 +249,25 @@ static const struct vd_lavc_hwdec mp_vd_lavc_vdpau_copy = { }; #endif +#if HAVE_VIDEOTOOLBOX_HWACCEL +static const struct vd_lavc_hwdec mp_vd_lavc_videotoolbox = { + .type = HWDEC_VIDEOTOOLBOX, + .image_format = IMGFMT_VIDEOTOOLBOX, + .generic_hwaccel = true, + .set_hwframes = true, +}; +static const struct vd_lavc_hwdec mp_vd_lavc_videotoolbox_copy = { + .type = HWDEC_VIDEOTOOLBOX_COPY, + .copying = true, + .image_format = IMGFMT_VIDEOTOOLBOX, + .generic_hwaccel = true, + .create_standalone_dev = true, + .create_standalone_dev_type = AV_HWDEVICE_TYPE_VIDEOTOOLBOX, + .set_hwframes = true, + .delay_queue = HWDEC_DELAY_QUEUE_COUNT, +}; +#endif + static const struct vd_lavc_hwdec *const hwdec_list[] = { #if HAVE_RPI &mp_vd_lavc_rpi, -- cgit v1.2.3