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

@@ -237,7 +237,8 @@ static FLAC__StreamDecoderWriteStatus flacWrite(const flac_decoder *dec,
FLAC__uint32 samples = frame->header.blocksize;
unsigned int c_samp;
const unsigned int num_channels = frame->header.channels;
const unsigned int bytes_per_sample = (data->audio_format.bits / 8);
const unsigned int bytes_per_sample =
audio_format_sample_size(&data->audio_format);
const unsigned int bytes_per_channel =
bytes_per_sample * frame->header.channels;
const unsigned int max_samples = FLAC_CHUNK_SIZE / bytes_per_channel;

View File

@@ -160,7 +160,7 @@ static FLAC__StreamDecoderWriteStatus oggflacWrite(mpd_unused const
FLAC__uint16 u16;
unsigned char *uc;
unsigned int c_samp, c_chan;
int i;
unsigned int i;
float timeChange;
timeChange = ((float)samples) / frame->header.sample_rate;
@@ -183,7 +183,7 @@ static FLAC__StreamDecoderWriteStatus oggflacWrite(mpd_unused const
c_chan++) {
u16 = buf[c_chan][c_samp];
uc = (unsigned char *)&u16;
for (i = 0; i < (data->audio_format.bits / 8); i++) {
for (i = 0; i < audio_format_sample_size(&data->audio_format); i++) {
if (data->chunk_length >= FLAC_CHUNK_SIZE) {
if (flacSendChunk(data) < 0) {
return