public async Task Start(string baseurl, string guid, Manifest manifest, Media media, CancellationToken token,IProgress<double> progress) { this.media = media; this.guid = guid; this.baseurl = baseurl; this.bootstrap = media.Info.Info; this.manifest = manifest; await InitFile(); await DoNextFragment(); progress.Report((double)bootstrap.CurrentFragmentWrite * 100D/(double)bootstrap.FragmentCount); token.ThrowIfCancellationRequested(); await ThreadProcessor(token, progress); token.ThrowIfCancellationRequested(); }
private KeyValuePair<Media,Quality>? BestMediaFromManifest(Manifest m, Quality q) { List<Quality> qs = Enum.GetValues(typeof (Quality)).Cast<Quality>().ToList(); int idx = qs.IndexOf(q); do { foreach (Media a in m.Medias) { if ((int) a.MetadataInfo.height == q.ToHeight()) { return new KeyValuePair<Media, Quality>(a,q); } } idx--; if (idx>=0) q = qs[idx]; } while (idx==-1); return null; }