Make the decompose functions return false when given an unhandled format
This commit is contained in:
parent
51ed22afb9
commit
55262bc6e9
@ -30,8 +30,8 @@ enum SrcFmtChannels {
|
|||||||
SrcFmtX71, /* AL_7POINT1 (WFX order) */
|
SrcFmtX71, /* AL_7POINT1 (WFX order) */
|
||||||
};
|
};
|
||||||
|
|
||||||
void DecomposeInputFormat(ALenum format, enum SrcFmtChannels *chans,
|
ALboolean DecomposeInputFormat(ALenum format, enum SrcFmtChannels *chans,
|
||||||
enum SrcFmtType *type);
|
enum SrcFmtType *type);
|
||||||
ALuint BytesFromSrcFmt(enum SrcFmtType type);
|
ALuint BytesFromSrcFmt(enum SrcFmtType type);
|
||||||
ALuint ChannelsFromSrcFmt(enum SrcFmtChannels chans);
|
ALuint ChannelsFromSrcFmt(enum SrcFmtChannels chans);
|
||||||
static __inline ALuint FrameSizeFromSrcFmt(enum SrcFmtChannels chans,
|
static __inline ALuint FrameSizeFromSrcFmt(enum SrcFmtChannels chans,
|
||||||
@ -57,7 +57,7 @@ enum FmtChannels {
|
|||||||
FmtX71,
|
FmtX71,
|
||||||
};
|
};
|
||||||
|
|
||||||
void DecomposeFormat(ALenum format, enum FmtChannels *chans, enum FmtType *type);
|
ALboolean DecomposeFormat(ALenum format, enum FmtChannels *chans, enum FmtType *type);
|
||||||
ALuint BytesFromFmt(enum FmtType type);
|
ALuint BytesFromFmt(enum FmtType type);
|
||||||
ALuint ChannelsFromFmt(enum FmtChannels chans);
|
ALuint ChannelsFromFmt(enum FmtChannels chans);
|
||||||
static __inline ALuint FrameSizeFromFmt(enum FmtChannels chans, enum FmtType type)
|
static __inline ALuint FrameSizeFromFmt(enum FmtChannels chans, enum FmtType type)
|
||||||
|
@ -1423,146 +1423,143 @@ ALuint ChannelsFromSrcFmt(enum SrcFmtChannels chans)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void DecomposeInputFormat(ALenum format, enum SrcFmtChannels *chans,
|
ALboolean DecomposeInputFormat(ALenum format, enum SrcFmtChannels *chans,
|
||||||
enum SrcFmtType *type)
|
enum SrcFmtType *type)
|
||||||
{
|
{
|
||||||
switch(format)
|
switch(format)
|
||||||
{
|
{
|
||||||
case AL_FORMAT_MONO8:
|
case AL_FORMAT_MONO8:
|
||||||
*chans = SrcFmtMono;
|
*chans = SrcFmtMono;
|
||||||
*type = SrcFmtUByte;
|
*type = SrcFmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_MONO16:
|
case AL_FORMAT_MONO16:
|
||||||
*chans = SrcFmtMono;
|
*chans = SrcFmtMono;
|
||||||
*type = SrcFmtShort;
|
*type = SrcFmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_MONO_FLOAT32:
|
case AL_FORMAT_MONO_FLOAT32:
|
||||||
*chans = SrcFmtMono;
|
*chans = SrcFmtMono;
|
||||||
*type = SrcFmtFloat;
|
*type = SrcFmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_MONO_DOUBLE_EXT:
|
case AL_FORMAT_MONO_DOUBLE_EXT:
|
||||||
*chans = SrcFmtMono;
|
*chans = SrcFmtMono;
|
||||||
*type = SrcFmtDouble;
|
*type = SrcFmtDouble;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_MONO_IMA4:
|
case AL_FORMAT_MONO_IMA4:
|
||||||
*chans = SrcFmtMono;
|
*chans = SrcFmtMono;
|
||||||
*type = SrcFmtIMA4;
|
*type = SrcFmtIMA4;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO8:
|
case AL_FORMAT_STEREO8:
|
||||||
*chans = SrcFmtStereo;
|
*chans = SrcFmtStereo;
|
||||||
*type = SrcFmtUByte;
|
*type = SrcFmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO16:
|
case AL_FORMAT_STEREO16:
|
||||||
*chans = SrcFmtStereo;
|
*chans = SrcFmtStereo;
|
||||||
*type = SrcFmtShort;
|
*type = SrcFmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO_FLOAT32:
|
case AL_FORMAT_STEREO_FLOAT32:
|
||||||
*chans = SrcFmtStereo;
|
*chans = SrcFmtStereo;
|
||||||
*type = SrcFmtFloat;
|
*type = SrcFmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO_DOUBLE_EXT:
|
case AL_FORMAT_STEREO_DOUBLE_EXT:
|
||||||
*chans = SrcFmtStereo;
|
*chans = SrcFmtStereo;
|
||||||
*type = SrcFmtDouble;
|
*type = SrcFmtDouble;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO_IMA4:
|
case AL_FORMAT_STEREO_IMA4:
|
||||||
*chans = SrcFmtStereo;
|
*chans = SrcFmtStereo;
|
||||||
*type = SrcFmtIMA4;
|
*type = SrcFmtIMA4;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_QUAD8_LOKI:
|
case AL_FORMAT_QUAD8_LOKI:
|
||||||
case AL_FORMAT_QUAD8:
|
case AL_FORMAT_QUAD8:
|
||||||
*chans = SrcFmtQuad;
|
*chans = SrcFmtQuad;
|
||||||
*type = SrcFmtUByte;
|
*type = SrcFmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_QUAD16_LOKI:
|
case AL_FORMAT_QUAD16_LOKI:
|
||||||
case AL_FORMAT_QUAD16:
|
case AL_FORMAT_QUAD16:
|
||||||
*chans = SrcFmtQuad;
|
*chans = SrcFmtQuad;
|
||||||
*type = SrcFmtShort;
|
*type = SrcFmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_QUAD32:
|
case AL_FORMAT_QUAD32:
|
||||||
*chans = SrcFmtQuad;
|
*chans = SrcFmtQuad;
|
||||||
*type = SrcFmtFloat;
|
*type = SrcFmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_REAR8:
|
case AL_FORMAT_REAR8:
|
||||||
*chans = SrcFmtRear;
|
*chans = SrcFmtRear;
|
||||||
*type = SrcFmtUByte;
|
*type = SrcFmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_REAR16:
|
case AL_FORMAT_REAR16:
|
||||||
*chans = SrcFmtRear;
|
*chans = SrcFmtRear;
|
||||||
*type = SrcFmtShort;
|
*type = SrcFmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_REAR32:
|
case AL_FORMAT_REAR32:
|
||||||
*chans = SrcFmtRear;
|
*chans = SrcFmtRear;
|
||||||
*type = SrcFmtFloat;
|
*type = SrcFmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_51CHN8:
|
case AL_FORMAT_51CHN8:
|
||||||
*chans = SrcFmtX51;
|
*chans = SrcFmtX51;
|
||||||
*type = SrcFmtUByte;
|
*type = SrcFmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_51CHN16:
|
case AL_FORMAT_51CHN16:
|
||||||
*chans = SrcFmtX51;
|
*chans = SrcFmtX51;
|
||||||
*type = SrcFmtShort;
|
*type = SrcFmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_51CHN32:
|
case AL_FORMAT_51CHN32:
|
||||||
*chans = SrcFmtX51;
|
*chans = SrcFmtX51;
|
||||||
*type = SrcFmtFloat;
|
*type = SrcFmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_61CHN8:
|
case AL_FORMAT_61CHN8:
|
||||||
*chans = SrcFmtX61;
|
*chans = SrcFmtX61;
|
||||||
*type = SrcFmtUByte;
|
*type = SrcFmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_61CHN16:
|
case AL_FORMAT_61CHN16:
|
||||||
*chans = SrcFmtX61;
|
*chans = SrcFmtX61;
|
||||||
*type = SrcFmtShort;
|
*type = SrcFmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_61CHN32:
|
case AL_FORMAT_61CHN32:
|
||||||
*chans = SrcFmtX61;
|
*chans = SrcFmtX61;
|
||||||
*type = SrcFmtFloat;
|
*type = SrcFmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_71CHN8:
|
case AL_FORMAT_71CHN8:
|
||||||
*chans = SrcFmtX71;
|
*chans = SrcFmtX71;
|
||||||
*type = SrcFmtUByte;
|
*type = SrcFmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_71CHN16:
|
case AL_FORMAT_71CHN16:
|
||||||
*chans = SrcFmtX71;
|
*chans = SrcFmtX71;
|
||||||
*type = SrcFmtShort;
|
*type = SrcFmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_71CHN32:
|
case AL_FORMAT_71CHN32:
|
||||||
*chans = SrcFmtX71;
|
*chans = SrcFmtX71;
|
||||||
*type = SrcFmtFloat;
|
*type = SrcFmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_MONO_MULAW:
|
case AL_FORMAT_MONO_MULAW:
|
||||||
*chans = SrcFmtMono;
|
*chans = SrcFmtMono;
|
||||||
*type = SrcFmtMulaw;
|
*type = SrcFmtMulaw;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO_MULAW:
|
case AL_FORMAT_STEREO_MULAW:
|
||||||
*chans = SrcFmtStereo;
|
*chans = SrcFmtStereo;
|
||||||
*type = SrcFmtMulaw;
|
*type = SrcFmtMulaw;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_QUAD_MULAW:
|
case AL_FORMAT_QUAD_MULAW:
|
||||||
*chans = SrcFmtQuad;
|
*chans = SrcFmtQuad;
|
||||||
*type = SrcFmtMulaw;
|
*type = SrcFmtMulaw;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_REAR_MULAW:
|
case AL_FORMAT_REAR_MULAW:
|
||||||
*chans = SrcFmtRear;
|
*chans = SrcFmtRear;
|
||||||
*type = SrcFmtMulaw;
|
*type = SrcFmtMulaw;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_51CHN_MULAW:
|
case AL_FORMAT_51CHN_MULAW:
|
||||||
*chans = SrcFmtX51;
|
*chans = SrcFmtX51;
|
||||||
*type = SrcFmtMulaw;
|
*type = SrcFmtMulaw;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_61CHN_MULAW:
|
case AL_FORMAT_61CHN_MULAW:
|
||||||
*chans = SrcFmtX61;
|
*chans = SrcFmtX61;
|
||||||
*type = SrcFmtMulaw;
|
*type = SrcFmtMulaw;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_71CHN_MULAW:
|
case AL_FORMAT_71CHN_MULAW:
|
||||||
*chans = SrcFmtX71;
|
*chans = SrcFmtX71;
|
||||||
*type = SrcFmtMulaw;
|
*type = SrcFmtMulaw;
|
||||||
break;
|
return AL_TRUE;
|
||||||
|
|
||||||
default:
|
|
||||||
AL_PRINT("Unhandled format specified: 0x%X\n", format);
|
|
||||||
abort();
|
|
||||||
}
|
}
|
||||||
|
return AL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ALuint BytesFromFmt(enum FmtType type)
|
ALuint BytesFromFmt(enum FmtType type)
|
||||||
@ -1589,101 +1586,98 @@ ALuint ChannelsFromFmt(enum FmtChannels chans)
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void DecomposeFormat(ALenum format, enum FmtChannels *chans, enum FmtType *type)
|
ALboolean DecomposeFormat(ALenum format, enum FmtChannels *chans, enum FmtType *type)
|
||||||
{
|
{
|
||||||
switch(format)
|
switch(format)
|
||||||
{
|
{
|
||||||
case AL_FORMAT_MONO8:
|
case AL_FORMAT_MONO8:
|
||||||
*chans = FmtMono;
|
*chans = FmtMono;
|
||||||
*type = FmtUByte;
|
*type = FmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_MONO16:
|
case AL_FORMAT_MONO16:
|
||||||
*chans = FmtMono;
|
*chans = FmtMono;
|
||||||
*type = FmtShort;
|
*type = FmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_MONO_FLOAT32:
|
case AL_FORMAT_MONO_FLOAT32:
|
||||||
*chans = FmtMono;
|
*chans = FmtMono;
|
||||||
*type = FmtFloat;
|
*type = FmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO8:
|
case AL_FORMAT_STEREO8:
|
||||||
*chans = FmtStereo;
|
*chans = FmtStereo;
|
||||||
*type = FmtUByte;
|
*type = FmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO16:
|
case AL_FORMAT_STEREO16:
|
||||||
*chans = FmtStereo;
|
*chans = FmtStereo;
|
||||||
*type = FmtShort;
|
*type = FmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_STEREO_FLOAT32:
|
case AL_FORMAT_STEREO_FLOAT32:
|
||||||
*chans = FmtStereo;
|
*chans = FmtStereo;
|
||||||
*type = FmtFloat;
|
*type = FmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_QUAD8_LOKI:
|
case AL_FORMAT_QUAD8_LOKI:
|
||||||
case AL_FORMAT_QUAD8:
|
case AL_FORMAT_QUAD8:
|
||||||
*chans = FmtQuad;
|
*chans = FmtQuad;
|
||||||
*type = FmtUByte;
|
*type = FmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_QUAD16_LOKI:
|
case AL_FORMAT_QUAD16_LOKI:
|
||||||
case AL_FORMAT_QUAD16:
|
case AL_FORMAT_QUAD16:
|
||||||
*chans = FmtQuad;
|
*chans = FmtQuad;
|
||||||
*type = FmtShort;
|
*type = FmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_QUAD32:
|
case AL_FORMAT_QUAD32:
|
||||||
*chans = FmtQuad;
|
*chans = FmtQuad;
|
||||||
*type = FmtFloat;
|
*type = FmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_REAR8:
|
case AL_FORMAT_REAR8:
|
||||||
*chans = FmtRear;
|
*chans = FmtRear;
|
||||||
*type = FmtUByte;
|
*type = FmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_REAR16:
|
case AL_FORMAT_REAR16:
|
||||||
*chans = FmtRear;
|
*chans = FmtRear;
|
||||||
*type = FmtShort;
|
*type = FmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_REAR32:
|
case AL_FORMAT_REAR32:
|
||||||
*chans = FmtRear;
|
*chans = FmtRear;
|
||||||
*type = FmtFloat;
|
*type = FmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_51CHN8:
|
case AL_FORMAT_51CHN8:
|
||||||
*chans = FmtX51;
|
*chans = FmtX51;
|
||||||
*type = FmtUByte;
|
*type = FmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_51CHN16:
|
case AL_FORMAT_51CHN16:
|
||||||
*chans = FmtX51;
|
*chans = FmtX51;
|
||||||
*type = FmtShort;
|
*type = FmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_51CHN32:
|
case AL_FORMAT_51CHN32:
|
||||||
*chans = FmtX51;
|
*chans = FmtX51;
|
||||||
*type = FmtFloat;
|
*type = FmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_61CHN8:
|
case AL_FORMAT_61CHN8:
|
||||||
*chans = FmtX61;
|
*chans = FmtX61;
|
||||||
*type = FmtUByte;
|
*type = FmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_61CHN16:
|
case AL_FORMAT_61CHN16:
|
||||||
*chans = FmtX61;
|
*chans = FmtX61;
|
||||||
*type = FmtShort;
|
*type = FmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_61CHN32:
|
case AL_FORMAT_61CHN32:
|
||||||
*chans = FmtX61;
|
*chans = FmtX61;
|
||||||
*type = FmtFloat;
|
*type = FmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_71CHN8:
|
case AL_FORMAT_71CHN8:
|
||||||
*chans = FmtX71;
|
*chans = FmtX71;
|
||||||
*type = FmtUByte;
|
*type = FmtUByte;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_71CHN16:
|
case AL_FORMAT_71CHN16:
|
||||||
*chans = FmtX71;
|
*chans = FmtX71;
|
||||||
*type = FmtShort;
|
*type = FmtShort;
|
||||||
break;
|
return AL_TRUE;
|
||||||
case AL_FORMAT_71CHN32:
|
case AL_FORMAT_71CHN32:
|
||||||
*chans = FmtX71;
|
*chans = FmtX71;
|
||||||
*type = FmtFloat;
|
*type = FmtFloat;
|
||||||
break;
|
return AL_TRUE;
|
||||||
|
|
||||||
default:
|
|
||||||
AL_PRINT("Unhandled format specified: 0x%X\n", format);
|
|
||||||
abort();
|
|
||||||
}
|
}
|
||||||
|
return AL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user