summaryrefslogtreecommitdiff
path: root/apps/codecs/alac.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/alac.c')
-rw-r--r--apps/codecs/alac.c21
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