summaryrefslogtreecommitdiff
path: root/src/liana/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/liana/handlers')
-rw-r--r--src/liana/handlers/cdio_server.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/liana/handlers/cdio_server.c b/src/liana/handlers/cdio_server.c
index 118f6b5..d271829 100644
--- a/src/liana/handlers/cdio_server.c
+++ b/src/liana/handlers/cdio_server.c
@@ -45,14 +45,20 @@ static void cdio_server_subscribe(struct lia_server_handler *handler, s32 mask)
static u64 cdio_server_get_duration(struct lia_server_handler *handler)
{
- (void)handler;
- return 0;
+ struct lia_cdio_server *cdio = (struct lia_cdio_server *)handler;
+ struct cch_chapter *first = &al_array_at(cdio->handle->entry->chapters, 0);
+ struct cch_chapter *last = &al_array_last(cdio->handle->entry->chapters);
+ f64 seconds = camu_audio_format_bytes_to_sec(&cdio->fmt, (last->end - first->start) * CDIO_CD_FRAMESIZE_RAW);
+ al_log_info("cdio", "Length: %.2fs.", seconds);
+ return (u64)(seconds * 1000000.0);
}
static bool cdio_server_seek(struct lia_server_handler *handler, u64 pos)
{
struct lia_cdio_server *cdio = (struct lia_cdio_server *)handler;
- return cch_handle_seek(cdio->handle, pos, SEEK_SET);
+ (void)cdio;
+ (void)pos;
+ return false;
}
static void cdio_server_step(struct lia_server_handler *handler)