aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar wm4 <wm4@nowhere>2015-07-07 14:25:37 +0200
committerGravatar wm4 <wm4@nowhere>2015-07-07 15:05:32 +0200
commit1d29177c5c150e700cace0c875185c6fa5e92d3c (patch)
treec1ccbcfbbfb607120bbc14bab3f98768dd3b2f77
parentdc33eb56f4ae28b75ddc4127bd9e766606096c25 (diff)
options: cleanup hwdec name mappings
Now there's a "canonical" table for mapping the names, that other code can use, without having to rely too much on option code magic. Also, use the central HWDEC constants, instead of magic values. (There used to be semi-ok reasons to do this, but now it makes no sense anymore.)
-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;