diff options
Diffstat (limited to 'apps/codecs/alac.c')
-rw-r--r-- | apps/codecs/alac.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/apps/codecs/alac.c b/apps/codecs/alac.c index 3721f04f1f..428fc59836 100644 --- a/apps/codecs/alac.c +++ b/apps/codecs/alac.c | |||
@@ -35,8 +35,6 @@ enum codec_status codec_main(void) | |||
35 | stream_t input_stream; | 35 | stream_t input_stream; |
36 | uint32_t samplesdone; | 36 | uint32_t samplesdone; |
37 | uint32_t elapsedtime; | 37 | uint32_t elapsedtime; |
38 | uint32_t sample_duration; | ||
39 | uint32_t sample_byte_size; | ||
40 | int samplesdecoded; | 38 | int samplesdecoded; |
41 | unsigned int i; | 39 | unsigned int i; |
42 | unsigned char* buffer; | 40 | unsigned char* buffer; |
@@ -112,18 +110,9 @@ enum codec_status codec_main(void) | |||
112 | ci->seek_complete(); | 110 | ci->seek_complete(); |
113 | } | 111 | } |
114 | 112 | ||
115 | /* Lookup the length (in samples and bytes) of block i */ | ||
116 | if (!get_sample_info(&demux_res, i, &sample_duration, | ||
117 | &sample_byte_size)) { | ||
118 | LOGF("ALAC: Error in get_sample_info\n"); | ||
119 | retval = CODEC_ERROR; | ||
120 | goto done; | ||
121 | } | ||
122 | |||
123 | /* Request the required number of bytes from the input buffer */ | 113 | /* Request the required number of bytes from the input buffer */ |
124 | 114 | buffer=ci->request_buffer(&n, demux_res.sample_byte_size[i]); | |
125 | buffer=ci->request_buffer(&n,sample_byte_size); | 115 | if (n!=demux_res.sample_byte_size[i]) { |
126 | if (n!=sample_byte_size) { | ||
127 | retval = CODEC_ERROR; | 116 | retval = CODEC_ERROR; |
128 | goto done; | 117 | goto done; |
129 | } | 118 | } |
@@ -132,15 +121,15 @@ enum codec_status codec_main(void) | |||
132 | ci->yield(); | 121 | ci->yield(); |
133 | samplesdecoded=alac_decode_frame(&alac, buffer, outputbuffer, ci->yield); | 122 | samplesdecoded=alac_decode_frame(&alac, buffer, outputbuffer, ci->yield); |
134 | 123 | ||
135 | /* Advance codec buffer n bytes */ | 124 | /* Advance codec buffer by amount of consumed bytes */ |
136 | ci->advance_buffer(n); | 125 | ci->advance_buffer(alac.bytes_consumed); |
137 | 126 | ||
138 | /* Output the audio */ | 127 | /* Output the audio */ |
139 | ci->yield(); | 128 | ci->yield(); |
140 | ci->pcmbuf_insert(outputbuffer[0], outputbuffer[1], samplesdecoded); | 129 | ci->pcmbuf_insert(outputbuffer[0], outputbuffer[1], samplesdecoded); |
141 | 130 | ||
142 | /* Update the elapsed-time indicator */ | 131 | /* Update the elapsed-time indicator */ |
143 | samplesdone+=sample_duration; | 132 | samplesdone+=samplesdecoded; |
144 | elapsedtime=(samplesdone*10)/(ci->id3->frequency/100); | 133 | elapsedtime=(samplesdone*10)/(ci->id3->frequency/100); |
145 | ci->set_elapsed(elapsedtime); | 134 | ci->set_elapsed(elapsedtime); |
146 | 135 | ||