diff options
Diffstat (limited to 'apps/codecs/aac.c')
-rw-r--r-- | apps/codecs/aac.c | 18 |
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(); |