summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--options/options.c23
-rw-r--r--video/hwdec.h7
2 files changed, 20 insertions, 10 deletions
diff --git a/options/options.c b/options/options.c
index 4ba2db1590..d286e5b63c 100644
--- a/options/options.c
+++ b/options/options.c
@@ -38,6 +38,7 @@
#include "common/common.h"
#include "stream/stream.h"
#include "video/csputils.h"
+#include "video/hwdec.h"
#include "sub/osd.h"
#include "audio/mixer.h"
#include "audio/filter/af.h"
@@ -79,6 +80,18 @@ extern const struct m_obj_list af_obj_list;
extern const struct m_obj_list vo_obj_list;
extern const struct m_obj_list ao_obj_list;
+const struct m_opt_choice_alternatives mp_hwdec_names[] = {
+ {"no", HWDEC_NONE},
+ {"auto", HWDEC_AUTO},
+ {"vdpau", HWDEC_VDPAU},
+ {"vda", HWDEC_VDA},
+ {"vaapi", HWDEC_VAAPI},
+ {"vaapi-copy", HWDEC_VAAPI_COPY},
+ {"dxva2-copy", HWDEC_DXVA2_COPY},
+ {"rpi", HWDEC_RPI},
+ {0}
+};
+
#define OPT_BASE_STRUCT struct MPOpts
const m_option_t mp_opts[] = {
@@ -283,15 +296,7 @@ const m_option_t mp_opts[] = {
OPT_FLAG("ad-spdif-dtshd", dtshd, 0),
- OPT_CHOICE("hwdec", hwdec_api, 0,
- ({"no", 0},
- {"auto", -1},
- {"vdpau", 1},
- {"vda", 2},
- {"vaapi", 4},
- {"vaapi-copy", 5},
- {"dxva2-copy", 6},
- {"rpi", 7})),
+ OPT_CHOICE_C("hwdec", hwdec_api, 0, mp_hwdec_names),
OPT_STRING("hwdec-codecs", hwdec_codecs, 0),
OPT_SUBSTRUCT("sws", vo.sws_opts, sws_conf, 0),
diff --git a/video/hwdec.h b/video/hwdec.h
index 761b8d699b..c9eb8e6a95 100644
--- a/video/hwdec.h
+++ b/video/hwdec.h
@@ -1,9 +1,11 @@
#ifndef MP_HWDEC_H_
#define MP_HWDEC_H_
+#include "options/m_option.h"
+
struct mp_image_pool;
-// keep in sync with --hwdec option
+// keep in sync with --hwdec option (see mp_hwdec_names)
enum hwdec_type {
HWDEC_AUTO = -1,
HWDEC_NONE = 0,
@@ -15,6 +17,9 @@ enum hwdec_type {
HWDEC_RPI = 7,
};
+// hwdec_type names (options.c)
+extern const struct m_opt_choice_alternatives mp_hwdec_names[];
+
struct mp_hwdec_ctx {
enum hwdec_type type;