aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/HttpHandlers/AudioHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/HttpHandlers/AudioHandler.cs')
-rw-r--r--MediaBrowser.Api/HttpHandlers/AudioHandler.cs48
1 files changed, 44 insertions, 4 deletions
diff --git a/MediaBrowser.Api/HttpHandlers/AudioHandler.cs b/MediaBrowser.Api/HttpHandlers/AudioHandler.cs
index 311f8f9c7..c7adc9a58 100644
--- a/MediaBrowser.Api/HttpHandlers/AudioHandler.cs
+++ b/MediaBrowser.Api/HttpHandlers/AudioHandler.cs
@@ -113,19 +113,59 @@ namespace MediaBrowser.Api.HttpHandlers
audioTranscodeParams.Add("-ab " + bitrate.Value);
}
- if (AudioChannels.HasValue)
+ int? channels = GetNumAudioChannelsParam();
+
+ if (channels.HasValue)
{
- audioTranscodeParams.Add("-ac " + AudioChannels.Value);
+ audioTranscodeParams.Add("-ac " + channels.Value);
}
- if (AudioSampleRate.HasValue)
+ int? sampleRate = GetSampleRateParam();
+
+ if (sampleRate.HasValue)
{
- audioTranscodeParams.Add("-ar " + AudioSampleRate.Value);
+ audioTranscodeParams.Add("-ar " + sampleRate.Value);
}
audioTranscodeParams.Add("-f " + outputFormat);
return "-i \"" + LibraryItem.Path + "\" -vn " + string.Join(" ", audioTranscodeParams.ToArray()) + " -";
}
+
+ /// <summary>
+ /// Gets the number of audio channels to specify on the command line
+ /// </summary>
+ private int? GetNumAudioChannelsParam()
+ {
+ // If the user requested a max number of channels
+ if (AudioChannels.HasValue)
+ {
+ // Only specify the param if we're going to downmix
+ if (AudioChannels.Value < LibraryItem.Channels)
+ {
+ return AudioChannels.Value;
+ }
+ }
+
+ return null;
+ }
+
+ /// <summary>
+ /// Gets the number of audio channels to specify on the command line
+ /// </summary>
+ private int? GetSampleRateParam()
+ {
+ // If the user requested a max value
+ if (AudioSampleRate.HasValue)
+ {
+ // Only specify the param if we're going to downmix
+ if (AudioSampleRate.Value < LibraryItem.SampleRate)
+ {
+ return AudioSampleRate.Value;
+ }
+ }
+
+ return null;
+ }
}
}