private static Stream TranslateVideoStream(MediaInfo m, int num) { Stream s = new Stream(); s.Id = m.Get(StreamKind.Video, num, "UniqueID"); s.Codec = TranslateCodec(m.Get(StreamKind.Video, num, "Codec")); s.CodecID = (m.Get(StreamKind.Video, num, "CodecID")); s.StreamType = "1"; s.Width = m.Get(StreamKind.Video, num, "Width"); string title = m.Get(StreamKind.Video, num, "Title"); if (!string.IsNullOrEmpty(title)) { s.Title = title; } string lang = m.Get(StreamKind.Video, num, "Language/String3"); if (!string.IsNullOrEmpty(lang)) { s.LanguageCode = PostTranslateCode3(lang); } string lan = PostTranslateLan(GetLanguageFromCode3(lang, m.Get(StreamKind.Video, num, "Language/String1"))); if (!string.IsNullOrEmpty(lan)) { s.Language = lan; } string duration = m.Get(StreamKind.Video, num, "Duration"); if (!string.IsNullOrEmpty(duration)) { s.Duration = duration; } s.Height = m.Get(StreamKind.Video, num, "Height"); int brate = BiggerFromList(m.Get(StreamKind.Video, num, "BitRate")); if (brate != 0) { s.Bitrate = Math.Round(brate / 1000F).ToString(CultureInfo.InvariantCulture); } string stype = m.Get(StreamKind.Video, num, "ScanType"); if (!string.IsNullOrEmpty(stype)) { s.ScanType = stype.ToLower(); } string refframes = m.Get(StreamKind.Video, num, "Format_Settings_RefFrames"); if (!string.IsNullOrEmpty(refframes)) { s.RefFrames = refframes; } string fprofile = m.Get(StreamKind.Video, num, "Format_Profile"); if (!string.IsNullOrEmpty(fprofile)) { int a = fprofile.ToLower(CultureInfo.InvariantCulture).IndexOf("@", StringComparison.Ordinal); if (a > 0) { s.Profile = TranslateProfile(s.Codec, fprofile.ToLower(CultureInfo.InvariantCulture).Substring(0, a)); s.Level = TranslateLevel(fprofile.ToLower(CultureInfo.InvariantCulture).Substring(a + 1)); } else { s.Profile = TranslateProfile(s.Codec, fprofile.ToLower(CultureInfo.InvariantCulture)); } } string rot = m.Get(StreamKind.Video, num, "Rotation"); if (!string.IsNullOrEmpty(rot)) { float val; if (float.TryParse(rot, out val)) { if (val == 90F) { s.Orientation = "9"; } else if (val == 180F) { s.Orientation = "3"; } else if (val == 270F) { s.Orientation = "6"; } } else { s.Orientation = rot; } } string muxing = m.Get(StreamKind.Video, num, "MuxingMode"); if (!string.IsNullOrEmpty(muxing)) { if (muxing.ToLower(CultureInfo.InvariantCulture).Contains("strip")) { s.HeaderStripping = "1"; } } string cabac = m.Get(StreamKind.Video, num, "Format_Settings_CABAC"); if (!string.IsNullOrEmpty(cabac)) { s.Cabac = cabac.ToLower(CultureInfo.InvariantCulture) == "yes" ? "1" : "0"; } if (s.Codec == "h264") { if (!string.IsNullOrEmpty(s.Level) && (s.Level == "31") && (s.Cabac == null || s.Cabac == "0")) { s.HasScalingMatrix = "1"; } else { s.HasScalingMatrix = "0"; } } string fratemode = m.Get(StreamKind.Video, num, "FrameRate_Mode"); if (!string.IsNullOrEmpty(fratemode)) { s.FrameRateMode = fratemode.ToLower(CultureInfo.InvariantCulture); } float frate = m.GetFloat(StreamKind.Video, num, "FrameRate"); if (frate == 0.0F) { frate = m.GetFloat(StreamKind.Video, num, "FrameRate_Original"); } if (frate != 0.0F) { s.FrameRate = frate.ToString("F3"); } string colorspace = m.Get(StreamKind.Video, num, "ColorSpace"); if (!string.IsNullOrEmpty(colorspace)) { s.ColorSpace = colorspace.ToLower(CultureInfo.InvariantCulture); } string chromasubsampling = m.Get(StreamKind.Video, num, "ChromaSubsampling"); if (!string.IsNullOrEmpty(chromasubsampling)) { s.ChromaSubsampling = chromasubsampling.ToLower(CultureInfo.InvariantCulture); } int bitdepth = m.GetInt(StreamKind.Video, num, "BitDepth"); if (bitdepth != 0) { s.BitDepth = bitdepth.ToString(CultureInfo.InvariantCulture); } string id = m.Get(StreamKind.Video, num, "ID"); if (!string.IsNullOrEmpty(id)) { int idx; if (int.TryParse(id, out idx)) { s.Index = idx.ToString(CultureInfo.InvariantCulture); } } string qpel = m.Get(StreamKind.Video, num, "Format_Settings_QPel"); if (!string.IsNullOrEmpty(qpel)) { s.QPel = qpel.ToLower(CultureInfo.InvariantCulture) == "yes" ? "1" : "0"; } string gmc = m.Get(StreamKind.Video, num, "Format_Settings_GMC"); if (!string.IsNullOrEmpty(gmc)) { s.GMC = gmc; } string bvop = m.Get(StreamKind.Video, num, "Format_Settings_BVOP"); if (!string.IsNullOrEmpty(bvop) && (s.Codec != "mpeg1video")) { if (bvop == "No") { s.BVOP = "0"; } else if ((bvop == "1") || (bvop == "Yes")) { s.BVOP = "1"; } } string def = m.Get(StreamKind.Text, num, "Default"); if (!string.IsNullOrEmpty(def)) { if (def.ToLower(CultureInfo.InvariantCulture) == "yes") { s.Default = "1"; } } string forced = m.Get(StreamKind.Text, num, "Forced"); if (!string.IsNullOrEmpty(forced)) { if (forced.ToLower(CultureInfo.InvariantCulture) == "yes") { s.Forced = "1"; } } s.PA = m.GetFloat(StreamKind.Video, num, "PixelAspectRatio"); string sp2 = m.Get(StreamKind.Video, num, "PixelAspectRatio_Original"); if (!string.IsNullOrEmpty(sp2)) { s.PA = System.Convert.ToSingle(sp2); } if ((s.PA != 1.0) && (!string.IsNullOrEmpty(s.Width))) { float width = int.Parse(s.Width); width *= s.PA; s.PixelAspectRatio = ((int)Math.Round(width)).ToString(CultureInfo.InvariantCulture) + ":" + s.Width; } return(s); }
private static Stream TranslateVideoStream(MediaInfo m, int num) { Stream s=new Stream(); s.Id = m.Get(StreamKind.Video,num,"UniqueID"); s.Codec = TranslateCodec(m.Get(StreamKind.Video, num, "Codec")); s.CodecID = (m.Get(StreamKind.Video, num, "CodecID")); s.StreamType = "1"; s.Width = m.Get(StreamKind.Video, num, "Width"); string title = m.Get(StreamKind.Video, num, "Title"); if (!string.IsNullOrEmpty(title)) s.Title = title; string lang = m.Get(StreamKind.Video, num, "Language/String3"); if (!string.IsNullOrEmpty(lang)) s.LanguageCode = PostTranslateCode3(lang); string lan = PostTranslateLan(GetLanguageFromCode3(lang, m.Get(StreamKind.Video, num, "Language/String1"))); if (!string.IsNullOrEmpty(lan)) s.Language = lan; string duration = m.Get(StreamKind.Video, num, "Duration"); if (!string.IsNullOrEmpty(duration)) s.Duration = duration; s.Height = m.Get(StreamKind.Video, num, "Height"); int brate = BiggerFromList(m.Get(StreamKind.Video, num, "BitRate")); if (brate!=0) s.Bitrate = Math.Round(brate / 1000F).ToString(CultureInfo.InvariantCulture); string stype = m.Get(StreamKind.Video, num, "ScanType"); if (!string.IsNullOrEmpty(stype)) s.ScanType=stype.ToLower(); string refframes = m.Get(StreamKind.Video, num, "Format_Settings_RefFrames"); if (!string.IsNullOrEmpty(refframes)) s.RefFrames = refframes; string fprofile = m.Get(StreamKind.Video, num, "Format_Profile"); if (!string.IsNullOrEmpty(fprofile)) { int a = fprofile.ToLower(CultureInfo.InvariantCulture).IndexOf("@", StringComparison.Ordinal); if (a > 0) { s.Profile = TranslateProfile(s.Codec,fprofile.ToLower(CultureInfo.InvariantCulture).Substring(0, a)); s.Level = TranslateLevel(fprofile.ToLower(CultureInfo.InvariantCulture).Substring(a + 1)); } else s.Profile = TranslateProfile(s.Codec, fprofile.ToLower(CultureInfo.InvariantCulture)); } string rot = m.Get(StreamKind.Video, num, "Rotation"); if (!string.IsNullOrEmpty(rot)) { float val; if (float.TryParse(rot, out val)) { if (val == 90F) s.Orientation = "9"; else if (val == 180F) s.Orientation = "3"; else if (val == 270F) s.Orientation = "6"; } else s.Orientation = rot; } string muxing = m.Get(StreamKind.Video, num, "MuxingMode"); if (!string.IsNullOrEmpty(muxing)) { if (muxing.ToLower(CultureInfo.InvariantCulture).Contains("strip")) s.HeaderStripping = "1"; } string cabac = m.Get(StreamKind.Video, num, "Format_Settings_CABAC"); if (!string.IsNullOrEmpty(cabac)) { s.Cabac = cabac.ToLower(CultureInfo.InvariantCulture) == "yes" ? "1" : "0"; } if (s.Codec=="h264") { if (!string.IsNullOrEmpty(s.Level) && (s.Level=="31") && (s.Cabac==null || s.Cabac=="0")) s.HasScalingMatrix = "1"; else s.HasScalingMatrix = "0"; } string fratemode = m.Get(StreamKind.Video, num, "FrameRate_Mode"); if (!string.IsNullOrEmpty(fratemode)) s.FrameRateMode = fratemode.ToLower(CultureInfo.InvariantCulture); float frate = m.GetFloat(StreamKind.Video, num, "FrameRate"); if (frate==0.0F) frate = m.GetFloat(StreamKind.Video, num, "FrameRate_Original"); if (frate != 0.0F) s.FrameRate=frate.ToString("F3"); string colorspace = m.Get(StreamKind.Video, num, "ColorSpace"); if (!string.IsNullOrEmpty(colorspace)) s.ColorSpace=colorspace.ToLower(CultureInfo.InvariantCulture); string chromasubsampling= m.Get(StreamKind.Video, num, "ChromaSubsampling"); if (!string.IsNullOrEmpty(chromasubsampling)) s.ChromaSubsampling=chromasubsampling.ToLower(CultureInfo.InvariantCulture); int bitdepth = m.GetInt(StreamKind.Video, num, "BitDepth"); if (bitdepth != 0) s.BitDepth = bitdepth.ToString(CultureInfo.InvariantCulture); string id = m.Get(StreamKind.Video, num, "ID"); if (!string.IsNullOrEmpty(id)) { int idx; if (int.TryParse(id, out idx)) { s.Index = idx.ToString(CultureInfo.InvariantCulture); } } string qpel = m.Get(StreamKind.Video, num, "Format_Settings_QPel"); if (!string.IsNullOrEmpty(qpel)) { s.QPel = qpel.ToLower(CultureInfo.InvariantCulture) == "yes" ? "1" : "0"; } string gmc = m.Get(StreamKind.Video, num, "Format_Settings_GMC"); if (!string.IsNullOrEmpty(gmc)) { s.GMC = gmc; } string bvop = m.Get(StreamKind.Video, num, "Format_Settings_BVOP"); if (!string.IsNullOrEmpty(bvop) && (s.Codec!="mpeg1video")) { if (bvop == "No") s.BVOP = "0"; else if ((bvop == "1") || (bvop=="Yes")) s.BVOP = "1"; } string def = m.Get(StreamKind.Text, num, "Default"); if (!string.IsNullOrEmpty(def)) { if (def.ToLower(CultureInfo.InvariantCulture) == "yes") s.Default = "1"; } string forced = m.Get(StreamKind.Text, num, "Forced"); if (!string.IsNullOrEmpty(forced)) { if (forced.ToLower(CultureInfo.InvariantCulture) == "yes") s.Forced = "1"; } s.PA = m.GetFloat(StreamKind.Video, num, "PixelAspectRatio"); string sp2 = m.Get(StreamKind.Video, num, "PixelAspectRatio_Original"); if (!string.IsNullOrEmpty(sp2)) s.PA = System.Convert.ToSingle(sp2); if ((s.PA != 1.0) && (!string.IsNullOrEmpty(s.Width))) { float width = int.Parse(s.Width); width *= s.PA; s.PixelAspectRatio=((int)Math.Round(width)).ToString(CultureInfo.InvariantCulture)+":"+s.Width; } return s; }