using System; using System.IO; using System.Linq; using MediaBrowser.Model.IO; using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.Controller.MediaEncoding { /// /// Class MediaEncoderHelpers /// public static class MediaEncoderHelpers { /// /// Gets the input argument. /// /// The file system. /// The video path. /// The protocol. /// The iso mount. /// The playable stream file names. /// System.String[][]. public static string[] GetInputArgument(IFileSystem fileSystem, string videoPath, MediaProtocol protocol, IIsoMount isoMount, string[] playableStreamFileNames) { if (playableStreamFileNames.Length > 0) { if (isoMount == null) { return GetPlayableStreamFiles(fileSystem, videoPath, playableStreamFileNames); } return GetPlayableStreamFiles(fileSystem, isoMount.MountedPath, playableStreamFileNames); } return new[] { videoPath }; } private static string[] GetPlayableStreamFiles(IFileSystem fileSystem, string rootPath, string[] filenames) { if (filenames.Length == 0) { return new string[] { }; } var allFiles = fileSystem .GetFilePaths(rootPath, true) .ToArray(); return filenames.Select(name => allFiles.FirstOrDefault(f => string.Equals(Path.GetFileName(f), name, StringComparison.OrdinalIgnoreCase))) .Where(f => !string.IsNullOrEmpty(f)) .ToArray(); } } }