internal VideoInfo(MkvToolJsonSchema.Track track) : base(track) { // Missing: Profile // Missing: Interlaced // Missing: HDR // Missing: ClosedCaptions }
internal TrackInfo(MkvToolJsonSchema.Track track) { if (track == null) { throw new ArgumentNullException(nameof(track)); } Format = track.Codec; Codec = track.Properties.CodecId; Title = track.Properties.TrackName; Default = track.Properties.DefaultTrack; // If the "language" and "tag_language" fields are set FfProbe uses the tag language instead of the track language // https://github.com/MediaArea/MediaAreaXml/issues/34 if (!string.IsNullOrEmpty(track.Properties.TagLanguage) && !string.IsNullOrEmpty(track.Properties.Language) && !track.Properties.Language.Equals(track.Properties.TagLanguage, StringComparison.OrdinalIgnoreCase)) { HasErrors = true; Log.Logger.Warning("Tag and Track Language Mismatch : {TagLanguage} != {Language}", track.Properties.TagLanguage, track.Properties.Language); } // Set language if (string.IsNullOrEmpty(track.Properties.Language)) { Language = "und"; } else { // MkvMerge normally sets the language to und or 3 letter ISO 639-2 code // Try to lookup the language to make sure it is correct Iso6393 lang = PlexCleaner.Language.GetIso6393(track.Properties.Language); if (lang != null) { Language = lang.Part2B; } else { HasErrors = true; Log.Logger.Warning("Invalid Language : {Language}", track.Properties.Language); Language = "und"; } } // Take care to use id and number correctly in MkvMerge and MkvPropEdit Id = track.Id; Number = track.Properties.Number; // Has tags HasTags = MediaInfo.IsTagTitle(Title); // Verify required info Debug.Assert(!string.IsNullOrEmpty(Format)); Debug.Assert(!string.IsNullOrEmpty(Codec)); }
internal SubtitleInfo(MkvToolJsonSchema.Track track) : base(track) { Forced = track.Properties.Forced; }
internal AudioInfo(MkvToolJsonSchema.Track track) : base(track) { }