summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/wmapro.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/wmapro.c')
-rw-r--r--lib/rbcodec/codecs/wmapro.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/rbcodec/codecs/wmapro.c b/lib/rbcodec/codecs/wmapro.c
index d99ca1aa9e..f15f36813d 100644
--- a/lib/rbcodec/codecs/wmapro.c
+++ b/lib/rbcodec/codecs/wmapro.c
@@ -55,6 +55,8 @@ enum codec_status codec_run(void)
55 int size; /* Size of the input frame to the decoder */ 55 int size; /* Size of the input frame to the decoder */
56 intptr_t param; 56 intptr_t param;
57 57
58 elapsedtime = ci->id3->elapsed;
59
58restart_track: 60restart_track:
59 if (codec_init()) { 61 if (codec_init()) {
60 LOGF("(WMA PRO) Error: Error initialising codec\n"); 62 LOGF("(WMA PRO) Error: Error initialising codec\n");
@@ -75,11 +77,17 @@ restart_track:
75 return CODEC_ERROR; 77 return CODEC_ERROR;
76 } 78 }
77 79
78 /* Now advance the file position to the first frame */ 80 if (elapsedtime) {
79 ci->seek_buffer(ci->id3->first_frame_offset); 81 elapsedtime = asf_seek(elapsedtime, &wfx);
82 if (elapsedtime < 1)
83 return CODEC_OK;
84 }
85 else {
86 /* Now advance the file position to the first frame */
87 ci->seek_buffer(ci->id3->first_frame_offset);
88 }
80 89
81 elapsedtime = 0; 90 ci->set_elapsed(elapsedtime);
82 ci->set_elapsed(0);
83 91
84 /* The main decoding loop */ 92 /* The main decoding loop */
85 93
@@ -95,6 +103,7 @@ restart_track:
95 if (param == 0) { 103 if (param == 0) {
96 ci->set_elapsed(0); 104 ci->set_elapsed(0);
97 ci->seek_complete(); 105 ci->seek_complete();
106 elapsedtime = 0;
98 goto restart_track; /* Pretend you never saw this... */ 107 goto restart_track; /* Pretend you never saw this... */
99 } 108 }
100 109