public int OpenStream(string fileName) { FileName = fileName; FolderComplete = Torrent.file.paths.Count == 1 ? config.DownloadPath : Torrent.data.folder; fileIndex = Torrent.file.paths.IndexOf(fileName); FileSize = Torrent.file.lengths[fileIndex]; downloadNextStarted = false; fileIndexNext = -1; if (Torrent.data.files[fileIndex] != null && !Torrent.data.files[fileIndex].Created) { player.UrlType = InputType.TorrentPart; } else if (File.Exists(Path.Combine(FolderComplete, FileName))) { player.UrlType = InputType.TorrentFile; } else { return(-1); } int ret; bitSwarm.FocusAreInUse = false; bitSwarmOpt.EnableBuffering = true; if (player.UrlType == InputType.TorrentPart) { bitSwarm.IncludeFiles(new List <string>() { fileName }); if (!bitSwarm.isRunning) { Log("Starting"); bitSwarm.Start(); } ret = player.decoder.Open(Torrent.GetTorrentStream(FileName)); } else { if (!DownloadNext()) { Log("Pausing"); bitSwarm.Pause(); } //if (Torrent.data.files[fileIndex] != null && Torrent.data.files[fileIndex].Created) //ret = player.decoder.Open(Torrent.GetTorrentStream(FileName)); //else ret = player.decoder.Open(Path.Combine(FolderComplete, FileName)); } bitSwarmOpt.EnableBuffering = false; return(ret); }
public int SetMediaFile(string fileName) { Log($"{streamType.ToString()}: File Selected {fileName}"); if (streamType == StreamType.TORRENT) { Pause(); FileName = fileName; fileIndex = torrent.file.paths.IndexOf(fileName); FileSize = torrent.file.lengths[fileIndex]; fileDistance = 0; for (int i = 0; i < fileIndex; i++) { fileDistance += torrent.file.lengths[i]; } fileLastPiece = FilePosToPiece(FileSize); if (sortedPaths == null) { sortedPaths = Utils.GetMoviesSorted(torrent.file.paths); } downloadNextStarted = false; fileIndexNext = -1; FolderComplete = torrent.file.paths.Count == 1 ? config.DownloadPath : torrent.data.folder; if (torrent.data.files[fileIndex] != null) { if (!torrent.data.files[fileIndex].Created) { bitSwarm.IncludeFiles(new List <string>() { fileName }); if (!bitSwarm.isRunning) { bitSwarm.Start(); } } } // Both complete & incomplete files are missing! else { if (File.Exists(Path.Combine(FolderComplete, FileName))) { status = Status.OPENED; if (!DownloadNext()) { bitSwarm.Pause(); } player.UrlType = MediaRouter.InputType.TorrentFile; return(player.decoder.Open(Path.Combine(FolderComplete, FileName))); } else { return(-5); // File Missing?! } } player.UrlType = MediaRouter.InputType.TorrentPart; status = Status.BUFFERING; player.renderer.NewMessage(OSDMessage.Type.Buffering, $"Buffering ...", null, 30000); Log($"[BB OPENING]"); int ret = decoder.Open(null, "", "", "", DecoderRequestsBuffer, FileSize); if (ret != 0) { return(ret); } Log($"[DD OPENING]"); ret = player.decoder.Open(null, "", "", "", DecoderRequests, FileSize); if (ret != 0) { return(ret); } status = Status.OPENED; DownloadNext(); return(ret); } else { Log($"[BB OPENING]"); int ret = decoder.Open(null, "", "", "", DecoderRequestsBuffer, FileSize); if (ret != 0) { return(ret); } Log($"[DD OPENING]"); ret = player.decoder.Open(null, "", "", "", DecoderRequests, FileSize); if (ret != 0) { return(ret); } return(0); } }