# HG changeset patch # User vitor # Date 1184285206 0 # Node ID e00f7048c50c706b3fe0f3ada6a970c0bfe968ed # Parent fc46b3f5de1a985c43ff9a8e48e1c4ce1fdc68fa Make "channels" variable mean the number of channels, not the number of channels minus one diff -r fc46b3f5de1a -r e00f7048c50c alac.c --- a/alac.c Thu Jul 12 22:55:35 2007 +0000 +++ b/alac.c Fri Jul 13 00:06:46 2007 +0000 @@ -487,7 +487,7 @@ init_get_bits(&alac->gb, inbuffer, input_buffer_size * 8); - channels = get_bits(&alac->gb, 3); + channels = get_bits(&alac->gb, 3) + 1; /* 2^result = something to do with output waiting. * perhaps matters if we read > 1 frame in a pass? @@ -510,10 +510,10 @@ outputsamples = alac->setinfo_max_samples_per_frame; *outputsize = outputsamples * alac->bytespersample; - readsamplesize = alac->setinfo_sample_size - (wasted_bytes * 8) + channels; + readsamplesize = alac->setinfo_sample_size - (wasted_bytes * 8) + channels - 1; switch(channels) { - case 0: { /* 1 channel */ + case 1: { /* 1 channel */ int ricemodifier; if (!isnotcompressed) { @@ -624,7 +624,7 @@ } break; } - case 1: { /* 2 channels */ + case 2: { /* 2 channels */ uint8_t interlacing_shift; uint8_t interlacing_leftweight;