From 5b90b1997e0b5b97da14b13ed61471c04ad29ea2 Mon Sep 17 00:00:00 2001 From: emeric Date: Sun, 4 Jan 2026 16:30:52 +0100 Subject: [PATCH] Relaxed checks, more explicit errors, ref #797 --- src/libs/subsonic/impl/endpoints/MediaRetrieval.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libs/subsonic/impl/endpoints/MediaRetrieval.cpp b/src/libs/subsonic/impl/endpoints/MediaRetrieval.cpp index 2b0378b2..954d2523 100644 --- a/src/libs/subsonic/impl/endpoints/MediaRetrieval.cpp +++ b/src/libs/subsonic/impl/endpoints/MediaRetrieval.cpp @@ -155,10 +155,14 @@ namespace lms::api::subsonic requestedFormat = userTranscodeFormatToOutputFormat(context.getUser()->getSubsonicDefaultTranscodingOutputFormat()); } + // Extra checks when requesting a lossless format if (requestedFormat && core::media::getCodecDesc(requestedFormat->codec).isLossless) { - if (maxBitRate > 0) - throw BadParameterGenericError{ "maxBitRate", "Cannot limit bitrate when requesting a lossless format" }; + if (!core::media::getCodecDesc(audioFileInfo.audioProperties.codec).isLossless && maxBitRate > 0) + throw BadParameterGenericError{ "maxBitRate", "Cannot limit bitrate when requesting a lossless format from a lossy source" }; + + if (core::media::getCodecDesc(audioFileInfo.audioProperties.codec).isLossless && maxBitRate > 0 && audioFileInfo.audioProperties.bitrate > maxBitRate) + throw BadParameterGenericError{ "maxBitRate", "Cannot honor maxBitRate, source is lossless with higher bitrate (" + std::to_string(audioFileInfo.audioProperties.bitrate) + " bps)" }; // we accept to transcode from a lossy format to a lossless one }