mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-24 11:05:08 +01:00
split files into separate classes
This commit is contained in:
@@ -22,7 +22,12 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
public List<string> GetCodecs()
|
||||
{
|
||||
return (Codec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (Codec ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public bool ContainsCodec(string codec)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaBrowser.Model.Dlna
|
||||
@@ -20,7 +19,12 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
public List<string> GetContainers()
|
||||
{
|
||||
return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (Container ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,12 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
public List<string> GetSupportedMediaTypes()
|
||||
{
|
||||
return (SupportedMediaTypes ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (SupportedMediaTypes ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public TranscodingProfile GetAudioTranscodingProfile(string container, string audioCodec)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaBrowser.Model.Dlna
|
||||
@@ -20,17 +19,32 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
public List<string> GetContainers()
|
||||
{
|
||||
return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (Container ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<string> GetAudioCodecs()
|
||||
{
|
||||
return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (AudioCodec ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<string> GetVideoCodecs()
|
||||
{
|
||||
return (VideoCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (VideoCodec ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaBrowser.Model.Dlna
|
||||
@@ -33,17 +32,32 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
public List<string> GetContainers()
|
||||
{
|
||||
return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (Container ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
public List<string> GetAudioCodecs()
|
||||
{
|
||||
return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (AudioCodec ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<string> GetVideoCodecs()
|
||||
{
|
||||
return (VideoCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (VideoCodec ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,12 +24,17 @@ namespace MediaBrowser.Model.Dlna
|
||||
// Avoid implicitly captured closure
|
||||
string mediaSourceId = options.MediaSourceId;
|
||||
|
||||
mediaSources = mediaSources
|
||||
.Where(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase))
|
||||
.ToList();
|
||||
mediaSources = new List<MediaSourceInfo>();
|
||||
foreach (MediaSourceInfo i in mediaSources)
|
||||
{
|
||||
if (string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase))
|
||||
mediaSources.Add(i);
|
||||
}
|
||||
}
|
||||
|
||||
List<StreamInfo> streams = mediaSources.Select(i => BuildAudioItem(i, options)).ToList();
|
||||
List<StreamInfo> streams = new List<StreamInfo>();
|
||||
foreach (MediaSourceInfo i in mediaSources)
|
||||
streams.Add(BuildAudioItem(i, options));
|
||||
|
||||
foreach (StreamInfo stream in streams)
|
||||
{
|
||||
@@ -52,12 +57,17 @@ namespace MediaBrowser.Model.Dlna
|
||||
// Avoid implicitly captured closure
|
||||
string mediaSourceId = options.MediaSourceId;
|
||||
|
||||
mediaSources = mediaSources
|
||||
.Where(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase))
|
||||
.ToList();
|
||||
mediaSources = new List<MediaSourceInfo>();
|
||||
foreach (MediaSourceInfo i in mediaSources)
|
||||
{
|
||||
if (string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase))
|
||||
mediaSources.Add(i);
|
||||
}
|
||||
}
|
||||
|
||||
List<StreamInfo> streams = mediaSources.Select(i => BuildVideoItem(i, options)).ToList();
|
||||
List<StreamInfo> streams = new List<StreamInfo>();
|
||||
foreach (MediaSourceInfo i in mediaSources)
|
||||
streams.Add(BuildVideoItem(i, options));
|
||||
|
||||
foreach (StreamInfo stream in streams)
|
||||
{
|
||||
@@ -72,8 +82,19 @@ namespace MediaBrowser.Model.Dlna
|
||||
{
|
||||
// Grab the first one that can be direct streamed
|
||||
// If that doesn't produce anything, just take the first
|
||||
return streams.FirstOrDefault(i => i.IsDirectStream) ??
|
||||
streams.FirstOrDefault();
|
||||
foreach (StreamInfo i in streams)
|
||||
{
|
||||
if (i.IsDirectStream)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (StreamInfo stream in streams)
|
||||
{
|
||||
return stream;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private StreamInfo BuildAudioItem(MediaSourceInfo item, AudioOptions options)
|
||||
@@ -191,8 +212,15 @@ namespace MediaBrowser.Model.Dlna
|
||||
}
|
||||
|
||||
// Can't direct play, find the transcoding profile
|
||||
TranscodingProfile transcodingProfile = options.Profile.TranscodingProfiles
|
||||
.FirstOrDefault(i => i.Type == playlistItem.MediaType);
|
||||
TranscodingProfile transcodingProfile = null;
|
||||
foreach (TranscodingProfile i in options.Profile.TranscodingProfiles)
|
||||
{
|
||||
if (i.Type == playlistItem.MediaType)
|
||||
{
|
||||
transcodingProfile = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (transcodingProfile != null)
|
||||
{
|
||||
@@ -200,7 +228,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
playlistItem.Container = transcodingProfile.Container;
|
||||
playlistItem.EstimateContentLength = transcodingProfile.EstimateContentLength;
|
||||
playlistItem.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
|
||||
playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',').FirstOrDefault();
|
||||
playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',')[0];
|
||||
playlistItem.VideoCodec = transcodingProfile.VideoCodec;
|
||||
playlistItem.Protocol = transcodingProfile.Protocol;
|
||||
playlistItem.AudioStreamIndex = options.AudioStreamIndex;
|
||||
@@ -261,8 +289,15 @@ namespace MediaBrowser.Model.Dlna
|
||||
MediaStream audioStream)
|
||||
{
|
||||
// See if it can be direct played
|
||||
DirectPlayProfile directPlay = profile.DirectPlayProfiles
|
||||
.FirstOrDefault(i => i.Type == DlnaProfileType.Video && IsVideoDirectPlaySupported(i, mediaSource, videoStream, audioStream));
|
||||
DirectPlayProfile directPlay = null;
|
||||
foreach (DirectPlayProfile i in profile.DirectPlayProfiles)
|
||||
{
|
||||
if (i.Type == DlnaProfileType.Video && IsVideoDirectPlaySupported(i, mediaSource, videoStream, audioStream))
|
||||
{
|
||||
directPlay = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (directPlay == null)
|
||||
{
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
using MediaBrowser.Model.Drawing;
|
||||
using MediaBrowser.Model.Dto;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.MediaInfo;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using MediaBrowser.Model.MediaInfo;
|
||||
|
||||
namespace MediaBrowser.Model.Dlna
|
||||
{
|
||||
@@ -134,14 +133,23 @@ namespace MediaBrowser.Model.Dlna
|
||||
{
|
||||
if (MediaSource != null)
|
||||
{
|
||||
IEnumerable<MediaStream> audioStreams = MediaSource.MediaStreams.Where(i => i.Type == MediaStreamType.Audio);
|
||||
|
||||
if (AudioStreamIndex.HasValue)
|
||||
{
|
||||
return audioStreams.FirstOrDefault(i => i.Index == AudioStreamIndex.Value);
|
||||
foreach (MediaStream i in MediaSource.MediaStreams)
|
||||
{
|
||||
if (i.Index == AudioStreamIndex.Value && i.Type == MediaStreamType.Audio)
|
||||
return i;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
return audioStreams.FirstOrDefault();
|
||||
foreach (MediaStream stream in MediaSource.MediaStreams)
|
||||
{
|
||||
if (stream.Type == MediaStreamType.Audio)
|
||||
return stream;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -157,8 +165,12 @@ namespace MediaBrowser.Model.Dlna
|
||||
{
|
||||
if (MediaSource != null)
|
||||
{
|
||||
return MediaSource.MediaStreams
|
||||
.FirstOrDefault(i => i.Type == MediaStreamType.Video && (i.Codec ?? string.Empty).IndexOf("jpeg", StringComparison.OrdinalIgnoreCase) == -1);
|
||||
foreach (MediaStream i in MediaSource.MediaStreams)
|
||||
{
|
||||
if (i.Type == MediaStreamType.Video && (i.Codec ?? string.Empty).IndexOf("jpeg", StringComparison.OrdinalIgnoreCase) == -1)
|
||||
return i;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -35,7 +35,12 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
public List<string> GetAudioCodecs()
|
||||
{
|
||||
return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList();
|
||||
List<string> list = new List<string>();
|
||||
foreach (string i in (AudioCodec ?? string.Empty).Split(','))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(i)) list.Add(i);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user