summaryrefslogtreecommitdiff
path: root/apps/codecs/aac.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/aac.c')
-rw-r--r--apps/codecs/aac.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/apps/codecs/aac.c b/apps/codecs/aac.c
index 532082ff05..6c86f38372 100644
--- a/apps/codecs/aac.c
+++ b/apps/codecs/aac.c
@@ -75,9 +75,11 @@ next_track:
75 goto exit; 75 goto exit;
76 } 76 }
77 77
78 while (!rb->taginfo_ready) 78 while (!*ci->taginfo_ready && !ci->stop_codec)
79 rb->yield(); 79 ci->sleep(1);
80 80
81 samplesdone = ci->id3->offset;
82
81 ci->configure(DSP_SET_FREQUENCY, (long *)(rb->id3->frequency)); 83 ci->configure(DSP_SET_FREQUENCY, (long *)(rb->id3->frequency));
82 84
83 stream_create(&input_stream,ci); 85 stream_create(&input_stream,ci);
@@ -117,7 +119,17 @@ next_track:
117 ci->id3->frequency=s; 119 ci->id3->frequency=s;
118 120
119 i=0; 121 i=0;
120 samplesdone=0; 122
123 if (samplesdone > 0) {
124 if (alac_seek_raw(&demux_res, &input_stream, samplesdone,
125 &samplesdone, (int *)&i)) {
126 elapsedtime=(samplesdone*10)/(ci->id3->frequency/100);
127 ci->set_elapsed(elapsedtime);
128 } else {
129 samplesdone=0;
130 }
131 }
132
121 /* The main decoding loop */ 133 /* The main decoding loop */
122 while (i < demux_res.num_sample_byte_sizes) { 134 while (i < demux_res.num_sample_byte_sizes) {
123 rb->yield(); 135 rb->yield();