audio: make internal audio format 0 an invalid format
Having to use -1 for that is generally quite annoying. Audio formats are created from bitmasks, and it can't be excluded that 0 is not a valid format. Fix this by adjusting AF_FORMAT_I so that it is never 0. Along with AF_FORMAT_F and the special formats, all valid formats are covered and guaranteed to be non-0. It's possible that this commit will cause some regressions, as the check for invalid audio formats changes a bit.
This commit is contained in:
1 parent
58e826e6f2
commit
53b5227270
5 files changed
+11
-11
No files matched your search
@@ -150,7 +150,7 @@ static int control(struct af_instance* af, int cmd, void* arg)
|
||||
}
|
||||
case AF_CONTROL_COMMAND_LINE:{
|
||||
int format = af_str2fmt_short(bstr0(arg));
|
||||
if (format == -1) {
|
||||
if (!format) {
|
||||
mp_msg(MSGT_AFILTER, MSGL_ERR, "[format] %s is not a valid format\n", (char *)arg);
|
||||
return AF_ERROR;
|
||||
}
|
||||
|
||||
+1
-1
@@ -133,5 +133,5 @@ int af_str2fmt_short(bstr str)
|
||||
if (!bstrcasecmp0(str, af_fmtstr_table[i].name))
|
||||
return af_fmtstr_table[i].format;
|
||||
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
+7
-7
@@ -43,11 +43,6 @@
|
||||
#define AF_FORMAT_US (1<<1) // Unsigned
|
||||
#define AF_FORMAT_SIGN_MASK (1<<1)
|
||||
|
||||
// Fixed or floating point
|
||||
#define AF_FORMAT_I (0<<2) // Int
|
||||
#define AF_FORMAT_F (1<<2) // Foating point
|
||||
#define AF_FORMAT_POINT_MASK (1<<2)
|
||||
|
||||
// Bits used
|
||||
#define AF_FORMAT_8BIT (0<<3)
|
||||
#define AF_FORMAT_16BIT (1<<3)
|
||||
@@ -62,7 +57,12 @@
|
||||
#define AF_FORMAT_IEC61937 (6<<6)
|
||||
#define AF_FORMAT_SPECIAL_MASK (7<<6)
|
||||
|
||||
#define AF_FORMAT_MASK ((1<<9)-1)
|
||||
// Fixed or floating point
|
||||
#define AF_FORMAT_I (1<<9) // Int
|
||||
#define AF_FORMAT_F (2<<9) // Foating point
|
||||
#define AF_FORMAT_POINT_MASK (3<<9)
|
||||
|
||||
#define AF_FORMAT_MASK ((1<<11)-1)
|
||||
|
||||
// PREDEFINED formats
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
#define AF_FORMAT_IEC61937_NE AF_FORMAT_IEC61937_LE
|
||||
#endif
|
||||
|
||||
#define AF_FORMAT_UNKNOWN (-1)
|
||||
#define AF_FORMAT_UNKNOWN 0
|
||||
|
||||
#define AF_FORMAT_IS_AC3(fmt) (((fmt) & AF_FORMAT_SPECIAL_MASK) == AF_FORMAT_AC3)
|
||||
#define AF_FORMAT_IS_IEC61937(fmt) (AF_FORMAT_IS_AC3(fmt) || ((fmt) & AF_FORMAT_SPECIAL_MASK) == AF_FORMAT_IEC61937)
|
||||
|
||||
+1
-1
@@ -1601,7 +1601,7 @@ static int parse_afmt(const m_option_t *opt, struct bstr name,
|
||||
}
|
||||
|
||||
int fmt = af_str2fmt_short(param);
|
||||
if (fmt == -1) {
|
||||
if (!fmt) {
|
||||
mp_msg(MSGT_CFGPARSER, MSGL_ERR,
|
||||
"Option %.*s: unknown format name: '%.*s'\n",
|
||||
BSTR_P(name), BSTR_P(param));
|
||||
|
||||
+1
-1
@@ -802,7 +802,7 @@ const struct MPOpts mp_default_opts = {
|
||||
.sub_pos = 100,
|
||||
.sub_speed = 1.0,
|
||||
.audio_output_channels = MP_CHMAP_INIT_STEREO,
|
||||
.audio_output_format = -1, // AF_FORMAT_UNKNOWN
|
||||
.audio_output_format = 0, // AF_FORMAT_UNKNOWN
|
||||
.playback_speed = 1.,
|
||||
.movie_aspect = -1.,
|
||||
.field_dominance = -1,
|
||||
|
||||
Reference in new issue
Block a user