From 4fa2babacc290b94bed0938658447205c0545e27 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 23 Nov 2013 21:26:31 +0100 Subject: video: move struct mp_hwdec_info into its own header file This means most code accessing this struct must now include hwdec.h instead of dec_video.h. I just put it into dec_video.h at first because I thought a separate file would be a waste, but it's more proper to do it this way, as there are too many files which include dec_video.h only to get the mp_hwdec_info definition. --- mpvcore/player/video.c | 1 + video/decode/dec_video.h | 14 -------------- video/decode/lavc.h | 1 + video/decode/vaapi.c | 2 +- video/decode/vdpau.c | 2 +- video/decode/vdpau_old.c | 2 +- video/filter/vf_vavpp.c | 2 +- video/hwdec.h | 20 ++++++++++++++++++++ video/out/gl_hwdec_vaglx.c | 2 +- video/out/gl_hwdec_vdpau.c | 2 +- video/out/vo_opengl.c | 2 +- video/out/vo_vaapi.c | 2 +- video/out/vo_vdpau.c | 2 +- 13 files changed, 31 insertions(+), 23 deletions(-) create mode 100644 video/hwdec.h diff --git a/mpvcore/player/video.c b/mpvcore/player/video.c index d55a19e79f..ac6406968f 100644 --- a/mpvcore/player/video.c +++ b/mpvcore/player/video.c @@ -35,6 +35,7 @@ #include "demux/demux.h" #include "stream/stream.h" #include "sub/sub.h" +#include "video/hwdec.h" #include "video/filter/vf.h" #include "video/decode/dec_video.h" #include "video/out/vo.h" diff --git a/video/decode/dec_video.h b/video/decode/dec_video.h index 959d50caaf..2564f45f97 100644 --- a/video/decode/dec_video.h +++ b/video/decode/dec_video.h @@ -42,18 +42,4 @@ void video_reinit_vo(struct sh_video *sh_video); int get_current_video_decoder_lag(sh_video_t *sh_video); int vd_control(struct sh_video *sh_video, int cmd, void *arg); -// Used to communicate hardware decoder API handles from VO to video decoder. -// The VO can set the context pointer for supported APIs. -struct mp_hwdec_info { - struct mp_vdpau_ctx *vdpau_ctx; - struct mp_vaapi_ctx *vaapi_ctx; - // Can be used to lazily load a requested API. - // api_name is e.g. "vdpau" (like the fields above, without "_ctx") - // Can be NULL, is idempotent, caller checks _ctx fields for success/access. - void (*load_api)(struct mp_hwdec_info *info, const char *api_name); - void *load_api_ctx; -}; - -void hwdec_request_api(struct mp_hwdec_info *info, const char *api_name); - #endif /* MPLAYER_DEC_VIDEO_H */ diff --git a/video/decode/lavc.h b/video/decode/lavc.h index 9e2533cbd5..0b0cf0a32a 100644 --- a/video/decode/lavc.h +++ b/video/decode/lavc.h @@ -9,6 +9,7 @@ #include "demux/stheader.h" #include "video/mp_image.h" +#include "video/hwdec.h" // keep in sync with --hwdec option enum hwdec_type { diff --git a/video/decode/vaapi.c b/video/decode/vaapi.c index 4603a3c5e1..a27e3cde93 100644 --- a/video/decode/vaapi.c +++ b/video/decode/vaapi.c @@ -33,7 +33,7 @@ #include "video/fmt-conversion.h" #include "video/vaapi.h" #include "video/mp_image_pool.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" #include "video/filter/vf.h" /* diff --git a/video/decode/vdpau.c b/video/decode/vdpau.c index 02f71085d1..02eab84a0c 100644 --- a/video/decode/vdpau.c +++ b/video/decode/vdpau.c @@ -27,7 +27,7 @@ #include "mpvcore/av_common.h" #include "video/fmt-conversion.h" #include "video/vdpau.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" struct priv { struct mp_vdpau_ctx *mpvdp; diff --git a/video/decode/vdpau_old.c b/video/decode/vdpau_old.c index 9a15609e14..1ef6c7857a 100644 --- a/video/decode/vdpau_old.c +++ b/video/decode/vdpau_old.c @@ -30,7 +30,7 @@ #include "lavc.h" #include "video/fmt-conversion.h" #include "video/vdpau.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" struct priv { struct mp_vdpau_ctx *mpvdp; diff --git a/video/filter/vf_vavpp.c b/video/filter/vf_vavpp.c index 49bef77e50..fddc870550 100644 --- a/video/filter/vf_vavpp.c +++ b/video/filter/vf_vavpp.c @@ -22,7 +22,7 @@ #include "mpvcore/options.h" #include "vf.h" #include "video/vaapi.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" static inline bool is_success(VAStatus status, const char *msg) { diff --git a/video/hwdec.h b/video/hwdec.h new file mode 100644 index 0000000000..3ff7e32a50 --- /dev/null +++ b/video/hwdec.h @@ -0,0 +1,20 @@ +#ifndef MP_HWDEC_H_ +#define MP_HWDEC_H_ + +// Used to communicate hardware decoder API handles from VO to video decoder. +// The VO can set the context pointer for supported APIs. +struct mp_hwdec_info { + struct mp_vdpau_ctx *vdpau_ctx; + struct mp_vaapi_ctx *vaapi_ctx; + // Can be used to lazily load a requested API. + // api_name is e.g. "vdpau" (like the fields above, without "_ctx") + // Can be NULL, is idempotent, caller checks _ctx fields for success/access. + void (*load_api)(struct mp_hwdec_info *info, const char *api_name); + void *load_api_ctx; +}; + +// Trivial helper to call info->load_api(). +// Implemented in vd_lavc.c. +void hwdec_request_api(struct mp_hwdec_info *info, const char *api_name); + +#endif diff --git a/video/out/gl_hwdec_vaglx.c b/video/out/gl_hwdec_vaglx.c index abfc656337..8bcc1724de 100644 --- a/video/out/gl_hwdec_vaglx.c +++ b/video/out/gl_hwdec_vaglx.c @@ -26,7 +26,7 @@ #include "x11_common.h" #include "gl_common.h" #include "video/vaapi.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" struct priv { struct mp_vaapi_ctx *ctx; diff --git a/video/out/gl_hwdec_vdpau.c b/video/out/gl_hwdec_vdpau.c index 02f667499c..58e1ab2d8d 100644 --- a/video/out/gl_hwdec_vdpau.c +++ b/video/out/gl_hwdec_vdpau.c @@ -22,7 +22,7 @@ #include "gl_common.h" #include "video/vdpau.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" // This is a GL_NV_vdpau_interop specification bug, and headers (unfortunately) // follow it. I'm not sure about the original nvidia headers. diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c index 08dd84689d..71a5092288 100644 --- a/video/out/vo_opengl.c +++ b/video/out/vo_opengl.c @@ -48,7 +48,7 @@ #include "gl_osd.h" #include "filter_kernels.h" #include "video/memcpy_pic.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" #include "gl_video.h" #include "gl_lcms.h" diff --git a/video/out/vo_vaapi.c b/video/out/vo_vaapi.c index 637c4442fa..83528a2100 100644 --- a/video/out/vo_vaapi.c +++ b/video/out/vo_vaapi.c @@ -39,7 +39,7 @@ #include "video/vfcap.h" #include "video/mp_image.h" #include "video/vaapi.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" struct vaapi_osd_image { int w, h; diff --git a/video/out/vo_vdpau.c b/video/out/vo_vdpau.c index 6845beea08..e1816b1595 100644 --- a/video/out/vo_vdpau.c +++ b/video/out/vo_vdpau.c @@ -36,7 +36,7 @@ #include "config.h" #include "video/vdpau.h" -#include "video/decode/dec_video.h" +#include "video/hwdec.h" #include "mpvcore/mp_msg.h" #include "mpvcore/options.h" #include "talloc.h" -- cgit v1.2.3