Fixed some audio helper functions

Make sure audio_is_valid_format() is true only
for formats supported by AudioTrack and AudioRecord.
Generalized audio_is_linear_pcm().
Added audio_bytes_per_sample() function.

Change-Id: If588af6c08f09796ab04bccbbd6e720f1e914412
This commit is contained in:
Eric Laurent 2011-06-16 21:13:43 -07:00
parent 9f7ad372b3
commit da38224875
1 changed files with 25 additions and 7 deletions

View File

@ -369,6 +369,10 @@ static inline bool audio_is_valid_format(uint32_t format)
{
switch (format & AUDIO_FORMAT_MAIN_MASK) {
case AUDIO_FORMAT_PCM:
if (format != AUDIO_FORMAT_PCM_16_BIT &&
format != AUDIO_FORMAT_PCM_8_BIT) {
return false;
}
case AUDIO_FORMAT_MP3:
case AUDIO_FORMAT_AMR_NB:
case AUDIO_FORMAT_AMR_WB:
@ -384,15 +388,29 @@ static inline bool audio_is_valid_format(uint32_t format)
static inline bool audio_is_linear_pcm(uint32_t format)
{
switch (format) {
case AUDIO_FORMAT_PCM_16_BIT:
case AUDIO_FORMAT_PCM_8_BIT:
return true;
default:
return false;
}
return ((format & AUDIO_FORMAT_MAIN_MASK) == AUDIO_FORMAT_PCM);
}
static inline size_t audio_bytes_per_sample(uint32_t format)
{
size_t size = 0;
switch (format) {
case AUDIO_FORMAT_PCM_32_BIT:
case AUDIO_FORMAT_PCM_8_24_BIT:
size = sizeof(int32_t);
break;
case AUDIO_FORMAT_PCM_16_BIT:
size = sizeof(int16_t);
break;
case AUDIO_FORMAT_PCM_8_BIT:
size = sizeof(uint8_t);
break;
default:
break;
}
return size;
}
__END_DECLS