From 272c34be8369e0d0698326f1bd55d83d5a988663 Mon Sep 17 00:00:00 2001 From: emeric Date: Sun, 8 Oct 2023 23:13:09 +0200 Subject: [PATCH] Subsonic API: handle parameter timeOffset --- src/libs/subsonic/impl/entrypoints/MediaRetrieval.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libs/subsonic/impl/entrypoints/MediaRetrieval.cpp b/src/libs/subsonic/impl/entrypoints/MediaRetrieval.cpp index 3a0db100..d3343106 100644 --- a/src/libs/subsonic/impl/entrypoints/MediaRetrieval.cpp +++ b/src/libs/subsonic/impl/entrypoints/MediaRetrieval.cpp @@ -65,7 +65,8 @@ namespace API::Subsonic // Optional params std::optional maxBitRate{ getParameterAs(context.parameters, "maxBitRate") }; - std::optional format{ getParameterAs(context.parameters, "format") }; + const std::optional format{ getParameterAs(context.parameters, "format") }; + const std::optional timeOffset{ getParameterAs(context.parameters, "timeOffset") }; bool estimateContentLength{ getParameterAs(context.parameters, "estimateContentLength").value_or(false) }; StreamParameters parameters; @@ -75,7 +76,7 @@ namespace API::Subsonic auto transaction{ context.dbSession.createSharedTransaction() }; { - auto track{ Track::find(context.dbSession, id) }; + const auto track{ Track::find(context.dbSession, id) }; if (!track) throw RequestedDataNotFoundError{}; @@ -103,6 +104,7 @@ namespace API::Subsonic transcodeParameters.bitrate = bitRate * 1000; transcodeParameters.format = userTranscodeFormatToAvFormat(user->getSubsonicTranscodeFormat()); transcodeParameters.stripMetadata = false; // We want clients to use metadata (offline use, replay gain, etc.) + transcodeParameters.offset = std::chrono::seconds{ timeOffset ? *timeOffset : 0 }; parameters.transcodeParameters = std::move(transcodeParameters); }