public void InferTotalBitrate(bool force = false) { if (MediaStreams == null) { return; } if (!force && Bitrate.HasValue) { return; } var internalStreams = MediaStreams .Where(i => !i.IsExternal) .ToList(); if (internalStreams.Count == 0) { return; } var bitrate = internalStreams .Select(m => m.BitRate ?? 0) .Sum(); if (bitrate > 0) { Bitrate = bitrate; } }
/// <summary> /// Find the first streamable audio stream for the specified language /// </summary> /// <returns></returns> protected int FindAudioStream(string lang = "") { if (string.IsNullOrEmpty(lang)) { lang = "eng"; } if (MediaStreams == null || !MediaStreams.Any()) { return(0); } Logging.Logger.ReportVerbose("Looking for audio stream in {0}", lang); MediaStream stream = null; foreach (var codec in StreamableCodecs) { stream = MediaStreams.FirstOrDefault(s => s.Type == MediaStreamType.Audio && (s.Language == null || s.Language.Equals(lang, StringComparison.OrdinalIgnoreCase)) && s.Codec.Equals(codec, StringComparison.OrdinalIgnoreCase)); if (stream != null) { break; } } Logging.Logger.ReportVerbose("Requesting audio stream #{0}", stream != null ? stream.Index : 0); return(stream != null ? stream.Index : 0); }
void ExportMediaStreams(XmlElement parent, MediaStreams streams, Boolean isOffline) { XmlElement elt = AddChild(parent, "Streams"); elt.SetAttribute("Count", streams.Count.ToString(myNumberFormat)); //IEnumerator enumStream = streams.GetEnumerator(); foreach (MediaStream stream in streams) { ExportMediaStream(elt, stream, isOffline); } }