summaryrefslogtreecommitdiff
path: root/libavcodec/alac.c
diff options
context:
space:
mode:
authorAndrew D'Addesio <modchipv12@gmail.com>2012-07-09 14:34:41 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2012-07-19 13:26:48 -0400
commit6cda74c155a10bec7321d8c0c5be6fd3d809f41b (patch)
treedb5f6d72234167ea553213e09e309156893056e4 /libavcodec/alac.c
parent5138ff143f2ab3ea0dd7a34e03820f15ec64451d (diff)
alac: simplify channel interleaving
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
Diffstat (limited to 'libavcodec/alac.c')
-rw-r--r--libavcodec/alac.c57
1 files changed, 14 insertions, 43 deletions
diff --git a/libavcodec/alac.c b/libavcodec/alac.c
index ac51c2f3ee..df3c3148eb 100644
--- a/libavcodec/alac.c
+++ b/libavcodec/alac.c
@@ -266,28 +266,6 @@ static void append_extra_bits(int32_t *buffer[MAX_CHANNELS],
buffer[ch][i] = (buffer[ch][i] << extra_bits) | extra_bits_buffer[ch][i];
}
-static void interleave_stereo_16(int32_t *buffer[MAX_CHANNELS],
- int16_t *buffer_out, int numsamples)
-{
- int i;
-
- for (i = 0; i < numsamples; i++) {
- *buffer_out++ = buffer[0][i];
- *buffer_out++ = buffer[1][i];
- }
-}
-
-static void interleave_stereo_24(int32_t *buffer[MAX_CHANNELS],
- int32_t *buffer_out, int numsamples)
-{
- int i;
-
- for (i = 0; i < numsamples; i++) {
- *buffer_out++ = buffer[0][i] << 8;
- *buffer_out++ = buffer[1][i] << 8;
- }
-}
-
static int alac_decode_frame(AVCodecContext *avctx, void *data,
int *got_frame_ptr, AVPacket *avpkt)
{
@@ -430,28 +408,21 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
}
switch(alac->sample_size) {
- case 16:
- if (channels == 2) {
- interleave_stereo_16(alac->output_samples_buffer,
- (int16_t *)alac->frame.data[0],
- alac->nb_samples);
- } else {
- int16_t *outbuffer = (int16_t *)alac->frame.data[0];
- for (i = 0; i < alac->nb_samples; i++) {
- outbuffer[i] = alac->output_samples_buffer[0][i];
- }
- }
+ case 16: {
+ int16_t *outbuffer = (int16_t *)alac->frame.data[0];
+ for (i = 0; i < alac->nb_samples; i++) {
+ *outbuffer++ = alac->output_samples_buffer[0][i];
+ if (channels == 2)
+ *outbuffer++ = alac->output_samples_buffer[1][i];
+ }}
break;
- case 24:
- if (channels == 2) {
- interleave_stereo_24(alac->output_samples_buffer,
- (int32_t *)alac->frame.data[0],
- alac->nb_samples);
- } else {
- int32_t *outbuffer = (int32_t *)alac->frame.data[0];
- for (i = 0; i < alac->nb_samples; i++)
- outbuffer[i] = alac->output_samples_buffer[0][i] << 8;
- }
+ case 24: {
+ int32_t *outbuffer = (int32_t *)alac->frame.data[0];
+ for (i = 0; i < alac->nb_samples; i++) {
+ *outbuffer++ = alac->output_samples_buffer[0][i] << 8;
+ if (channels == 2)
+ *outbuffer++ = alac->output_samples_buffer[1][i] << 8;
+ }}
break;
}