summaryrefslogtreecommitdiffstats
path: root/m_option.c
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-12-27 17:32:54 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-12-27 17:32:54 +0000
commitcd9e4753d7aa57cb750d60311f2d1949106f9265 (patch)
treeac1df52631ed069d9505befe092c4c27808e10a9 /m_option.c
parent507121f7fe2d170dd8db99d3112602036ddef718 (diff)
downloadmpv-cd9e4753d7aa57cb750d60311f2d1949106f9265.tar.bz2
mpv-cd9e4753d7aa57cb750d60311f2d1949106f9265.tar.xz
CONF_TYPE_AFMT similar to CONF_TYPE_IMGFMT
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@14247 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'm_option.c')
-rw-r--r--m_option.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/m_option.c b/m_option.c
index 64f7aaed62..f3ea31ba73 100644
--- a/m_option.c
+++ b/m_option.c
@@ -1041,6 +1041,95 @@ m_option_type_t m_option_type_imgfmt = {
NULL
};
+#include "libaf/af_format.h"
+
+/* FIXME: snyc with af_format.h */
+static struct {
+ char* name;
+ unsigned int fmt;
+} mp_afmt_list[] = {
+ // SPECIAL
+ {"mulaw", AF_FORMAT_MU_LAW},
+ {"alaw", AF_FORMAT_A_LAW},
+ {"mpeg2", AF_FORMAT_MPEG2},
+ {"ac3", AF_FORMAT_AC3},
+ {"imaadpcm", AF_FORMAT_IMA_ADPCM},
+ // ORIDNARY
+ {"u8", AF_FORMAT_U8},
+ {"s8", AF_FORMAT_S8},
+ {"u16le", AF_FORMAT_U16_LE},
+ {"u16be", AF_FORMAT_U16_BE},
+ {"u16ne", AF_FORMAT_U16_NE},
+ {"s16le", AF_FORMAT_S16_LE},
+ {"s16be", AF_FORMAT_S16_BE},
+ {"s16ne", AF_FORMAT_S16_NE},
+ {"u24le", AF_FORMAT_U24_LE},
+ {"u24be", AF_FORMAT_U24_BE},
+ {"u24ne", AF_FORMAT_U24_NE},
+ {"s24le", AF_FORMAT_S24_LE},
+ {"s24be", AF_FORMAT_S24_BE},
+ {"s24ne", AF_FORMAT_S24_NE},
+ {"u32le", AF_FORMAT_U32_LE},
+ {"u32be", AF_FORMAT_U32_BE},
+ {"u32ne", AF_FORMAT_U32_NE},
+ {"s32le", AF_FORMAT_S32_LE},
+ {"s32be", AF_FORMAT_S32_BE},
+ {"s32ne", AF_FORMAT_S32_NE},
+ {"floatle", AF_FORMAT_FLOAT_LE},
+ {"floatbe", AF_FORMAT_FLOAT_BE},
+ {"floatne", AF_FORMAT_FLOAT_NE},
+ { NULL, 0 }
+};
+
+static int parse_afmt(m_option_t* opt,char *name, char *param, void* dst, int src) {
+ uint32_t fmt = 0;
+ int i;
+
+ if (param == NULL || strlen(param) == 0)
+ return M_OPT_MISSING_PARAM;
+
+ if(!strcmp(param,"help")) {
+ mp_msg(MSGT_CFGPARSER, MSGL_INFO, "Available formats:");
+ for(i = 0 ; mp_afmt_list[i].name ; i++)
+ mp_msg(MSGT_CFGPARSER, MSGL_INFO, " %s",mp_afmt_list[i].name);
+ mp_msg(MSGT_CFGPARSER, MSGL_INFO, "\n");
+ return M_OPT_EXIT;
+ }
+
+ if (sscanf(param, "0x%x", &fmt) != 1)
+ {
+ for(i = 0 ; mp_afmt_list[i].name ; i++) {
+ if(!strcasecmp(param,mp_afmt_list[i].name)) {
+ fmt=mp_afmt_list[i].fmt;
+ break;
+ }
+ }
+ if(!mp_afmt_list[i].name) {
+ mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Option %s: unknown format name: '%s'\n",name,param);
+ return M_OPT_INVALID;
+ }
+ }
+
+ if(dst)
+ *((uint32_t*)dst) = fmt;
+
+ return 1;
+}
+
+m_option_type_t m_option_type_afmt = {
+ "Audio format",
+ "Please report any missing formats.",
+ sizeof(uint32_t),
+ 0,
+ parse_afmt,
+ NULL,
+ copy_opt,
+ copy_opt,
+ NULL,
+ NULL
+};
+
+
//// Objects (i.e. filters, etc) settings
#include "m_struct.h"