vd_lavc: Add hwdec wrapper for crystalhd

This hardware decodes to system memory so it only requires a wrapper.
This commit is contained in:
Philip Langdale 2016-10-09 09:18:14 -07:00 committed by wm4
parent 8956229ee4
commit 0a81fe1cf9
4 changed files with 15 additions and 0 deletions

View File

@ -625,6 +625,7 @@ Video
:rpi-copy: copies video back to system RAM (Raspberry Pi only)
:cuda: requires ``--vo=opengl`` (Any platform CUDA is available)
:cuda-copy: copies video back to system RAM (Any platform CUDA is available)
:crystalhd: copies video back to system RAM (Any platform supported by hardware)
``auto`` tries to automatically enable hardware decoding using the first
available method. This still depends what VO you are using. For example,
@ -711,6 +712,11 @@ Video
``rpi`` always uses the hardware overlay renderer, even with
``--vo=opengl``.
``crystalhd`` is not safe. It always converts to 4:2:2 YUV, which
may be lossy, depending on how chroma sub-sampling is done during
conversion. It also discards the top left pixel of each frame for
some reason.
All other methods, in particular the copy-back methods (like
``dxva2-copy`` etc.) are either fully safe, or not worse than software
decoding.

View File

@ -106,6 +106,7 @@ const struct m_opt_choice_alternatives mp_hwdec_names[] = {
{"mediacodec", HWDEC_MEDIACODEC},
{"cuda", HWDEC_CUDA},
{"cuda-copy", HWDEC_CUDA_COPY},
{"crystalhd", HWDEC_CRYSTALHD},
{0}
};

View File

@ -164,6 +164,12 @@ static const struct vd_lavc_hwdec mp_vd_lavc_cuda_copy = {
};
#endif
static const struct vd_lavc_hwdec mp_vd_lavc_crystalhd = {
.type = HWDEC_CRYSTALHD,
.lavc_suffix = "_crystalhd",
.copying = true,
};
static const struct vd_lavc_hwdec *const hwdec_list[] = {
#if HAVE_RPI
&mp_vd_lavc_rpi,
@ -193,6 +199,7 @@ static const struct vd_lavc_hwdec *const hwdec_list[] = {
&mp_vd_lavc_cuda,
&mp_vd_lavc_cuda_copy,
#endif
&mp_vd_lavc_crystalhd,
NULL
};

View File

@ -24,6 +24,7 @@ enum hwdec_type {
HWDEC_MEDIACODEC,
HWDEC_CUDA,
HWDEC_CUDA_COPY,
HWDEC_CRYSTALHD,
};
#define HWDEC_IS_AUTO(x) ((x) == HWDEC_AUTO || (x) == HWDEC_AUTO_COPY)