audio/format: reformat

This commit is contained in:
wm4 2013-11-07 22:12:26 +01:00
parent 6c4b504eca
commit aa48eeac97
2 changed files with 55 additions and 57 deletions

View File

@ -31,13 +31,12 @@ int af_fmt2bits(int format)
if (AF_FORMAT_IS_AC3(format)) return 16; if (AF_FORMAT_IS_AC3(format)) return 16;
if (format == AF_FORMAT_UNKNOWN) if (format == AF_FORMAT_UNKNOWN)
return 0; return 0;
switch(format & AF_FORMAT_BITS_MASK) switch (format & AF_FORMAT_BITS_MASK) {
{ case AF_FORMAT_8BIT: return 8;
case AF_FORMAT_8BIT: return 8; case AF_FORMAT_16BIT: return 16;
case AF_FORMAT_16BIT: return 16; case AF_FORMAT_24BIT: return 24;
case AF_FORMAT_24BIT: return 24; case AF_FORMAT_32BIT: return 32;
case AF_FORMAT_32BIT: return 32; case AF_FORMAT_64BIT: return 64;
case AF_FORMAT_64BIT: return 64;
} }
return 0; return 0;
} }
@ -45,11 +44,11 @@ int af_fmt2bits(int format)
static int bits_to_mask(int bits) static int bits_to_mask(int bits)
{ {
switch (bits) { switch (bits) {
case 8: return AF_FORMAT_8BIT; case 8: return AF_FORMAT_8BIT;
case 16: return AF_FORMAT_16BIT; case 16: return AF_FORMAT_16BIT;
case 24: return AF_FORMAT_24BIT; case 24: return AF_FORMAT_24BIT;
case 32: return AF_FORMAT_32BIT; case 32: return AF_FORMAT_32BIT;
case 64: return AF_FORMAT_64BIT; case 64: return AF_FORMAT_64BIT;
} }
return 0; return 0;
} }
@ -65,7 +64,7 @@ int af_fmt_change_bits(int format, int bits)
/* Convert format to str input str is a buffer for the /* Convert format to str input str is a buffer for the
converted string, size is the size of the buffer */ converted string, size is the size of the buffer */
char* af_fmt2str(int format, char* str, int size) char *af_fmt2str(int format, char* str, int size)
{ {
const char *name = af_fmt2str_short(format); const char *name = af_fmt2str_short(format);
snprintf(str, size, "%s", name); snprintf(str, size, "%s", name);
@ -122,11 +121,10 @@ bool af_fmt_is_valid(int format)
const char *af_fmt2str_short(int format) const char *af_fmt2str_short(int format)
{ {
int i; for (int i = 0; af_fmtstr_table[i].name; i++) {
if (af_fmtstr_table[i].format == format)
for (i = 0; af_fmtstr_table[i].name; i++) return af_fmtstr_table[i].name;
if (af_fmtstr_table[i].format == format) }
return af_fmtstr_table[i].name;
return "??"; return "??";
} }
@ -143,9 +141,9 @@ int af_fmt_seconds_to_bytes(int format, float seconds, int channels, int sampler
int af_str2fmt_short(bstr str) int af_str2fmt_short(bstr str)
{ {
for (int i = 0; af_fmtstr_table[i].name; i++) for (int i = 0; af_fmtstr_table[i].name; i++) {
if (!bstrcasecmp0(str, af_fmtstr_table[i].name)) if (!bstrcasecmp0(str, af_fmtstr_table[i].name))
return af_fmtstr_table[i].format; return af_fmtstr_table[i].format;
}
return 0; return 0;
} }

View File

@ -28,34 +28,34 @@
#include "mpvcore/bstr.h" #include "mpvcore/bstr.h"
// Endianness // Endianness
#define AF_FORMAT_BE (0<<0) // Big Endian #define AF_FORMAT_BE (0<<0) // Big Endian
#define AF_FORMAT_LE (1<<0) // Little Endian #define AF_FORMAT_LE (1<<0) // Little Endian
#define AF_FORMAT_END_MASK (1<<0) #define AF_FORMAT_END_MASK (1<<0)
#if BYTE_ORDER == BIG_ENDIAN #if BYTE_ORDER == BIG_ENDIAN
#define AF_FORMAT_NE AF_FORMAT_BE #define AF_FORMAT_NE AF_FORMAT_BE
#else #else
#define AF_FORMAT_NE AF_FORMAT_LE #define AF_FORMAT_NE AF_FORMAT_LE
#endif #endif
// Signed/unsigned // Signed/unsigned
#define AF_FORMAT_SI (0<<1) // Signed #define AF_FORMAT_SI (0<<1) // Signed
#define AF_FORMAT_US (1<<1) // Unsigned #define AF_FORMAT_US (1<<1) // Unsigned
#define AF_FORMAT_SIGN_MASK (1<<1) #define AF_FORMAT_SIGN_MASK (1<<1)
// Bits used // Bits used
#define AF_FORMAT_8BIT (0<<3) #define AF_FORMAT_8BIT (0<<3)
#define AF_FORMAT_16BIT (1<<3) #define AF_FORMAT_16BIT (1<<3)
#define AF_FORMAT_24BIT (2<<3) #define AF_FORMAT_24BIT (2<<3)
#define AF_FORMAT_32BIT (3<<3) #define AF_FORMAT_32BIT (3<<3)
#define AF_FORMAT_64BIT (4<<3) #define AF_FORMAT_64BIT (4<<3)
#define AF_FORMAT_BITS_MASK (7<<3) #define AF_FORMAT_BITS_MASK (7<<3)
// Special flags refering to non pcm data (note: 1<<6, 2<<6, 5<<6 unused) // Special flags refering to non pcm data (note: 1<<6, 2<<6, 5<<6 unused)
#define AF_FORMAT_MPEG2 (3<<6) // MPEG(2) audio #define AF_FORMAT_MPEG2 (3<<6) // MPEG(2) audio
#define AF_FORMAT_AC3 (4<<6) // Dolby Digital AC3 #define AF_FORMAT_AC3 (4<<6) // Dolby Digital AC3
#define AF_FORMAT_IEC61937 (6<<6) #define AF_FORMAT_IEC61937 (6<<6)
#define AF_FORMAT_SPECIAL_MASK (7<<6) #define AF_FORMAT_SPECIAL_MASK (7<<6)
// Fixed or floating point // Fixed or floating point
#define AF_FORMAT_I (1<<9) // Int #define AF_FORMAT_I (1<<9) // Int
@ -66,29 +66,29 @@
// PREDEFINED formats // PREDEFINED formats
#define AF_FORMAT_U8 (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_8BIT|AF_FORMAT_NE) #define AF_FORMAT_U8 (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_8BIT|AF_FORMAT_NE)
#define AF_FORMAT_S8 (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_8BIT|AF_FORMAT_NE) #define AF_FORMAT_S8 (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_8BIT|AF_FORMAT_NE)
#define AF_FORMAT_U16_LE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_16BIT|AF_FORMAT_LE) #define AF_FORMAT_U16_LE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_16BIT|AF_FORMAT_LE)
#define AF_FORMAT_U16_BE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_16BIT|AF_FORMAT_BE) #define AF_FORMAT_U16_BE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_16BIT|AF_FORMAT_BE)
#define AF_FORMAT_S16_LE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_16BIT|AF_FORMAT_LE) #define AF_FORMAT_S16_LE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_16BIT|AF_FORMAT_LE)
#define AF_FORMAT_S16_BE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_16BIT|AF_FORMAT_BE) #define AF_FORMAT_S16_BE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_16BIT|AF_FORMAT_BE)
#define AF_FORMAT_U24_LE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_24BIT|AF_FORMAT_LE) #define AF_FORMAT_U24_LE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_24BIT|AF_FORMAT_LE)
#define AF_FORMAT_U24_BE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_24BIT|AF_FORMAT_BE) #define AF_FORMAT_U24_BE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_24BIT|AF_FORMAT_BE)
#define AF_FORMAT_S24_LE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_24BIT|AF_FORMAT_LE) #define AF_FORMAT_S24_LE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_24BIT|AF_FORMAT_LE)
#define AF_FORMAT_S24_BE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_24BIT|AF_FORMAT_BE) #define AF_FORMAT_S24_BE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_24BIT|AF_FORMAT_BE)
#define AF_FORMAT_U32_LE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_32BIT|AF_FORMAT_LE) #define AF_FORMAT_U32_LE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_32BIT|AF_FORMAT_LE)
#define AF_FORMAT_U32_BE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_32BIT|AF_FORMAT_BE) #define AF_FORMAT_U32_BE (AF_FORMAT_I|AF_FORMAT_US|AF_FORMAT_32BIT|AF_FORMAT_BE)
#define AF_FORMAT_S32_LE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_32BIT|AF_FORMAT_LE) #define AF_FORMAT_S32_LE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_32BIT|AF_FORMAT_LE)
#define AF_FORMAT_S32_BE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_32BIT|AF_FORMAT_BE) #define AF_FORMAT_S32_BE (AF_FORMAT_I|AF_FORMAT_SI|AF_FORMAT_32BIT|AF_FORMAT_BE)
#define AF_FORMAT_FLOAT_LE (AF_FORMAT_F|AF_FORMAT_32BIT|AF_FORMAT_LE) #define AF_FORMAT_FLOAT_LE (AF_FORMAT_F|AF_FORMAT_32BIT|AF_FORMAT_LE)
#define AF_FORMAT_FLOAT_BE (AF_FORMAT_F|AF_FORMAT_32BIT|AF_FORMAT_BE) #define AF_FORMAT_FLOAT_BE (AF_FORMAT_F|AF_FORMAT_32BIT|AF_FORMAT_BE)
#define AF_FORMAT_DOUBLE_LE (AF_FORMAT_F|AF_FORMAT_64BIT|AF_FORMAT_LE) #define AF_FORMAT_DOUBLE_LE (AF_FORMAT_F|AF_FORMAT_64BIT|AF_FORMAT_LE)
#define AF_FORMAT_DOUBLE_BE (AF_FORMAT_F|AF_FORMAT_64BIT|AF_FORMAT_BE) #define AF_FORMAT_DOUBLE_BE (AF_FORMAT_F|AF_FORMAT_64BIT|AF_FORMAT_BE)
#define AF_FORMAT_AC3_LE (AF_FORMAT_AC3|AF_FORMAT_16BIT|AF_FORMAT_LE) #define AF_FORMAT_AC3_LE (AF_FORMAT_AC3|AF_FORMAT_16BIT|AF_FORMAT_LE)
#define AF_FORMAT_AC3_BE (AF_FORMAT_AC3|AF_FORMAT_16BIT|AF_FORMAT_BE) #define AF_FORMAT_AC3_BE (AF_FORMAT_AC3|AF_FORMAT_16BIT|AF_FORMAT_BE)
#define AF_FORMAT_IEC61937_LE (AF_FORMAT_IEC61937|AF_FORMAT_16BIT|AF_FORMAT_LE) #define AF_FORMAT_IEC61937_LE (AF_FORMAT_IEC61937|AF_FORMAT_16BIT|AF_FORMAT_LE)
#define AF_FORMAT_IEC61937_BE (AF_FORMAT_IEC61937|AF_FORMAT_16BIT|AF_FORMAT_BE) #define AF_FORMAT_IEC61937_BE (AF_FORMAT_IEC61937|AF_FORMAT_16BIT|AF_FORMAT_BE)
@ -136,8 +136,8 @@ int af_fmt_change_bits(int format, int bits);
// Amount of bytes that contain audio of the given duration, aligned to frames. // Amount of bytes that contain audio of the given duration, aligned to frames.
int af_fmt_seconds_to_bytes(int format, float seconds, int channels, int samplerate); int af_fmt_seconds_to_bytes(int format, float seconds, int channels, int samplerate);
char* af_fmt2str(int format, char* str, int size); char *af_fmt2str(int format, char* str, int size);
const char* af_fmt2str_short(int format); const char *af_fmt2str_short(int format);
bool af_fmt_is_valid(int format); bool af_fmt_is_valid(int format);