private static IEnumerable <VideoTrack> ParseVideoTracks(XElement videoTracksElement)
        {
            IEnumerable <VideoTrack> videoTracks = null;

            if (videoTracksElement != null)
            {
                videoTracks = videoTracksElement
                              .Elements(AssetMetadataParser.VideoTrackElementName)
                              .Select(v => VideoTrack.Load(v))
                              .ToArray();
            }

            return(videoTracks);
        }
        internal static VideoTrack Load(XElement videoTrackElement)
        {
            VideoTrack videoTrack = new VideoTrack();

            videoTrack.Id            = videoTrackElement.GetAttributeAsIntOrDefault(AssetMetadataParser.IdAttributeName);
            videoTrack.Bitrate       = videoTrackElement.GetAttributeAsIntOrDefault(AssetMetadataParser.BitrateAttributeName);
            videoTrack.TargetBitrate = videoTrackElement.GetAttributeAsIntOrDefault(AssetMetadataParser.TargetBitrateAttributeName);
            videoTrack.FourCC        = videoTrackElement.GetAttributeOrDefault(AssetMetadataParser.FourCCAttributeName);
            videoTrack.Width         = videoTrackElement.GetAttributeAsIntOrDefault(AssetMetadataParser.WidthAttributeName);
            videoTrack.Height        = videoTrackElement.GetAttributeAsIntOrDefault(AssetMetadataParser.HeightAttributeName);
            videoTrack.DisplayAspectRatioNumerator   = videoTrackElement.GetAttributeAsIntOrDefault(AssetMetadataParser.DisplayAspectRatioNumeratorAttributeName);
            videoTrack.DisplayAspectRatioDenominator = videoTrackElement.GetAttributeAsIntOrDefault(AssetMetadataParser.DisplayAspectRatioDenominatorAttributeName);
            videoTrack.Framerate       = videoTrackElement.GetAttributeAsDoubleOrDefault(AssetMetadataParser.FramerateAttributeName);
            videoTrack.TargetFramerate = videoTrackElement.GetAttributeAsDoubleOrDefault(AssetMetadataParser.TargetFramerateAttributeName);

            return(videoTrack);
        }