diff options
Diffstat (limited to 'lib/rbcodec/codecs/wmapro.c')
-rw-r--r-- | lib/rbcodec/codecs/wmapro.c | 17 |
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 | |||
58 | restart_track: | 60 | restart_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 | ||