summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Yan <tom.ty89@gmail.com>2018-08-09 16:19:10 +0800
committerJan Ekström <jeebjp@gmail.com>2018-09-29 22:22:20 +0300
commit4243d067616c867d748f91f73e8154697e8e5a90 (patch)
tree486f19921fd2d7682fd7151fefe24946d8de538e
parent4d074a960dcb9563e24cfbe9acfee4eec0872a2e (diff)
downloadmpv-4243d067616c867d748f91f73e8154697e8e5a90.tar.bz2
mpv-4243d067616c867d748f91f73e8154697e8e5a90.tar.xz
audio/format: decouple af_fmt_is_planar from af_fmt_to_planar
so that af_fmt_to_planar (and hence af_fmt_from_planar) can just return the input when it is not an interleaved (planar) format. (cherry picked from commit f2311ff51461ec9539efb00458b8a54ded56511b)
-rw-r--r--audio/format.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/audio/format.c b/audio/format.c
index 7004409d10..a5fcf36e37 100644
--- a/audio/format.c
+++ b/audio/format.c
@@ -55,12 +55,6 @@ bool af_fmt_is_int(int format)
return format && !af_fmt_is_spdif(format) && !af_fmt_is_float(format);
}
-// false for interleaved and AF_FORMAT_UNKNOWN
-bool af_fmt_is_planar(int format)
-{
- return format && af_fmt_to_planar(format) == format;
-}
-
bool af_fmt_is_spdif(int format)
{
return af_format_sample_alignment(format) > 1;
@@ -79,32 +73,37 @@ static const int planar_formats[][2] = {
{AF_FORMAT_DOUBLEP, AF_FORMAT_DOUBLE},
};
+bool af_fmt_is_planar(int format)
+{
+ for (int n = 0; n < MP_ARRAY_SIZE(planar_formats); n++) {
+ if (planar_formats[n][0] == format)
+ return true;
+ }
+ return false;
+}
+
// Return the planar format corresponding to the given format.
-// If the format is already planar, return it.
-// Return 0 if there's no equivalent.
+// If the format is already planar or if there's no equivalent,
+// return it.
int af_fmt_to_planar(int format)
{
for (int n = 0; n < MP_ARRAY_SIZE(planar_formats); n++) {
if (planar_formats[n][1] == format)
return planar_formats[n][0];
- if (planar_formats[n][0] == format)
- return format;
}
- return 0;
+ return format;
}
// Return the interleaved format corresponding to the given format.
-// If the format is already interleaved, return it.
-// Return 0 if there's no equivalent.
+// If the format is already interleaved or if there's no equivalent,
+// return it.
int af_fmt_from_planar(int format)
{
for (int n = 0; n < MP_ARRAY_SIZE(planar_formats); n++) {
if (planar_formats[n][0] == format)
return planar_formats[n][1];
- if (planar_formats[n][1] == format)
- return format;
}
- return 0;
+ return format;
}
bool af_fmt_is_valid(int format)