Mercurial > mplayer.hg
changeset 3763:81d84039dd17
fixed stereo IMA4 decoding
author | melanson |
---|---|
date | Wed, 26 Dec 2001 13:22:03 +0000 |
parents | 6d9dcfa08611 |
children | 0195894e279f |
files | adpcm.c |
diffstat | 1 files changed, 8 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/adpcm.c Wed Dec 26 13:17:55 2001 +0000 +++ b/adpcm.c Wed Dec 26 13:22:03 2001 +0000 @@ -77,11 +77,9 @@ int initial_predictor_r = 0; int initial_index_l = 0; int initial_index_r = 0; - int stream_ptr = 0; int i; - initial_predictor_l = BE_16(&input[stream_ptr]); - stream_ptr += 2; + initial_predictor_l = BE_16(&input[0]); initial_index_l = initial_predictor_l; // mask, sign-extend, and clamp the predictor portion @@ -96,8 +94,7 @@ // handle stereo if (channels > 1) { - initial_predictor_r = BE_16(&input[stream_ptr]); - stream_ptr += 2; + initial_predictor_r = BE_16(&input[IMA_ADPCM_BLOCK_SIZE]); initial_index_r = initial_predictor_r; // mask, sign-extend, and clamp the predictor portion @@ -114,18 +111,16 @@ if (channels == 1) for (i = 0; i < IMA_ADPCM_SAMPLES_PER_BLOCK / 2; i++) { - output[i * 2 + 0] = input[stream_ptr] & 0x0F; - output[i * 2 + 1] = input[stream_ptr] >> 4; - stream_ptr++; + output[i * 2 + 0] = input[2 + i] & 0x0F; + output[i * 2 + 1] = input[2 + i] >> 4; } else for (i = 0; i < IMA_ADPCM_SAMPLES_PER_BLOCK / 2 * 2; i++) { - output[i * 4 + 0] = input[stream_ptr] & 0x0F; - output[i * 4 + 1] = input[stream_ptr + 1] & 0x0F; - output[i * 4 + 2] = input[stream_ptr] >> 4; - output[i * 4 + 3] = input[stream_ptr + 1] >> 4; - stream_ptr++; + output[i * 4 + 0] = input[2 + i] & 0x0F; + output[i * 4 + 1] = input[2 + IMA_ADPCM_BLOCK_SIZE + i] & 0x0F; + output[i * 4 + 2] = input[2 + i] >> 4; + output[i * 4 + 3] = input[2 + IMA_ADPCM_BLOCK_SIZE + i] >> 4; } ima_dvi_decode_nibbles(output, channels,