summaryrefslogtreecommitdiff
path: root/libavcodec/alac.c
diff options
context:
space:
mode:
authorVitor Sessak <vitor1001@gmail.com>2007-07-10 13:32:22 +0000
committerVitor Sessak <vitor1001@gmail.com>2007-07-10 13:32:22 +0000
commita562e2e651e5ac29340dffdc525a6d2f1ed988dd (patch)
treeef3bdbc6781b593753e2c91129ea12ea118d6150 /libavcodec/alac.c
parent0d79efeba95dca471d8c26b2be609da024c691af (diff)
Remove some duplicated code
Originally committed as revision 9575 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/alac.c')
-rw-r--r--libavcodec/alac.c57
1 files changed, 12 insertions, 45 deletions
diff --git a/libavcodec/alac.c b/libavcodec/alac.c
index 75e6b3e9c8..fee6466d40 100644
--- a/libavcodec/alac.c
+++ b/libavcodec/alac.c
@@ -460,6 +460,10 @@ static int alac_decode_frame(AVCodecContext *avctx,
int channels;
int32_t outputsamples;
+ int hassize;
+ int readsamplesize;
+ int wasted_bytes;
+ int isnotcompressed;
/* short-circuit null buffers */
if (!inbuffer || !input_buffer_size)
@@ -479,24 +483,10 @@ static int alac_decode_frame(AVCodecContext *avctx,
alac->context_initialized = 1;
}
- outputsamples = alac->setinfo_max_samples_per_frame;
-
init_get_bits(&alac->gb, inbuffer, input_buffer_size * 8);
channels = get_bits(&alac->gb, 3);
- *outputsize = outputsamples * alac->bytespersample;
-
- switch(channels) {
- case 0: { /* 1 channel */
- int hassize;
- int isnotcompressed;
- int readsamplesize;
-
- int wasted_bytes;
- int ricemodifier;
-
-
/* 2^result = something to do with output waiting.
* perhaps matters if we read > 1 frame in a pass?
*/
@@ -514,10 +504,15 @@ static int alac_decode_frame(AVCodecContext *avctx,
/* now read the number of samples,
* as a 32bit integer */
outputsamples = get_bits(&alac->gb, 32);
- *outputsize = outputsamples * alac->bytespersample;
- }
+ } else
+ outputsamples = alac->setinfo_max_samples_per_frame;
- readsamplesize = alac->setinfo_sample_size - (wasted_bytes * 8);
+ *outputsize = outputsamples * alac->bytespersample;
+ readsamplesize = alac->setinfo_sample_size - (wasted_bytes * 8) + channels;
+
+ switch(channels) {
+ case 0: { /* 1 channel */
+ int ricemodifier;
if (!isnotcompressed) {
/* so it is compressed */
@@ -628,37 +623,9 @@ static int alac_decode_frame(AVCodecContext *avctx,
break;
}
case 1: { /* 2 channels */
- int hassize;
- int isnotcompressed;
- int readsamplesize;
-
- int wasted_bytes;
-
uint8_t interlacing_shift;
uint8_t interlacing_leftweight;
- /* 2^result = something to do with output waiting.
- * perhaps matters if we read > 1 frame in a pass?
- */
- get_bits(&alac->gb, 4);
-
- get_bits(&alac->gb, 12); /* unknown, skip 12 bits */
-
- hassize = get_bits(&alac->gb, 1); /* the output sample size is stored soon */
-
- wasted_bytes = get_bits(&alac->gb, 2); /* unknown ? */
-
- isnotcompressed = get_bits(&alac->gb, 1); /* whether the frame is compressed */
-
- if (hassize) {
- /* now read the number of samples,
- * as a 32bit integer */
- outputsamples = get_bits(&alac->gb, 32);
- *outputsize = outputsamples * alac->bytespersample;
- }
-
- readsamplesize = alac->setinfo_sample_size - (wasted_bytes * 8) + 1;
-
if (!isnotcompressed) {
/* compressed */
int16_t predictor_coef_table_a[32];