diff options
Diffstat (limited to 'apps/codecs/libalac/alac.c')
-rw-r--r-- | apps/codecs/libalac/alac.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/apps/codecs/libalac/alac.c b/apps/codecs/libalac/alac.c index a7d7448b97..38fd6e1cdf 100644 --- a/apps/codecs/libalac/alac.c +++ b/apps/codecs/libalac/alac.c | |||
@@ -1108,10 +1108,14 @@ int alac_decode_frame(alac_file *alac, | |||
1108 | { | 1108 | { |
1109 | int channels; | 1109 | int channels; |
1110 | int outputsamples; | 1110 | int outputsamples; |
1111 | int input_buffer_start; | ||
1111 | 1112 | ||
1112 | /* setup the stream */ | 1113 | /* setup the stream */ |
1113 | alac->input_buffer = inbuffer; | 1114 | alac->input_buffer = inbuffer; |
1114 | alac->input_buffer_bitaccumulator = 0; | 1115 | alac->input_buffer_bitaccumulator = 0; |
1116 | |||
1117 | /* save to gather byte consumption */ | ||
1118 | input_buffer_start = (int)alac->input_buffer; | ||
1115 | 1119 | ||
1116 | channels = readbits(alac, 3); | 1120 | channels = readbits(alac, 3); |
1117 | 1121 | ||
@@ -1127,6 +1131,11 @@ int alac_decode_frame(alac_file *alac, | |||
1127 | default: /* Unsupported */ | 1131 | default: /* Unsupported */ |
1128 | return -1; | 1132 | return -1; |
1129 | } | 1133 | } |
1134 | |||
1135 | /* calculate consumed bytes */ | ||
1136 | alac->bytes_consumed = (int)alac->input_buffer - input_buffer_start; | ||
1137 | alac->bytes_consumed += (alac->input_buffer_bitaccumulator>5) ? 2 : 1; | ||
1138 | |||
1130 | return outputsamples; | 1139 | return outputsamples; |
1131 | } | 1140 | } |
1132 | 1141 | ||