summaryrefslogtreecommitdiff
path: root/apps/codecs/libpcm/dvi_adpcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libpcm/dvi_adpcm.c')
-rw-r--r--apps/codecs/libpcm/dvi_adpcm.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/apps/codecs/libpcm/dvi_adpcm.c b/apps/codecs/libpcm/dvi_adpcm.c
index 2784b21786..2e702ca394 100644
--- a/apps/codecs/libpcm/dvi_adpcm.c
+++ b/apps/codecs/libpcm/dvi_adpcm.c
@@ -54,12 +54,14 @@ static bool set_format(struct pcm_format *format)
54 return true; 54 return true;
55} 55}
56 56
57static struct pcm_pos *get_seek_pos(long seek_time, 57static struct pcm_pos *get_seek_pos(uint32_t seek_val, int seek_mode,
58 uint8_t *(*read_buffer)(size_t *realsize)) 58 uint8_t *(*read_buffer)(size_t *realsize))
59{ 59{
60 static struct pcm_pos newpos; 60 static struct pcm_pos newpos;
61 uint32_t newblock = ((uint64_t)seek_time * ci->id3->frequency) 61 uint32_t newblock = (seek_mode == PCM_SEEK_TIME) ?
62 / (1000LL * fmt->samplesperblock); 62 ((uint64_t)seek_val * ci->id3->frequency / 1000LL)
63 / fmt->samplesperblock :
64 seek_val / fmt->blockalign;
63 65
64 (void)read_buffer; 66 (void)read_buffer;
65 newpos.pos = newblock * fmt->blockalign; 67 newpos.pos = newblock * fmt->blockalign;