audio_format: added audio_format_sample_size()

The inline function audio_format_sample_size() calculates how many
bytes each sample consumes.  This function already takes into account
that 24 bit samples are 4 bytes long, not 3.
This commit is contained in:
Max Kellermann
2008-09-23 23:59:54 +02:00
parent e4f5d6bdf4
commit 128d8c7c15
7 changed files with 23 additions and 9 deletions

View File

@@ -47,14 +47,27 @@ static inline int audio_format_equals(const struct audio_format *a,
a->channels == b->channels;
}
/**
* Returns the size of each (mono) sample in bytes.
*/
static inline unsigned audio_format_sample_size(const struct audio_format *af)
{
if (af->bits <= 8)
return 1;
else if (af->bits <= 16)
return 2;
else
return 4;
}
static inline double audio_format_time_to_size(const struct audio_format *af)
{
return af->sampleRate * af->bits * af->channels / 8.0;
return af->sampleRate * af->channels * audio_format_sample_size(af);
}
static inline double audioFormatSizeToTime(const struct audio_format *af)
{
return 8.0 / af->bits / af->channels / af->sampleRate;
return 1.0 / audio_format_time_to_size(af);
}
#endif