Exemplo n.º 1
0
        private static void CheckVideoFormat(IMFMediaType mediaType, IDictionary<FormatCheckElement, Tuple<bool, object>> ret)
        {
            var subType = mediaType.GetSubType();
            ret.Add(FormatCheckElement.VideoCodec, Tuple.Create<bool, object>(subType == MFMediaType.H264, subType));

            var bitrate = mediaType.GetAverageBitrate();
            ret.Add(FormatCheckElement.VideoBitrate, Tuple.Create<bool, object>(bitrate < TwitterLimitation.MaxVideoBitrate, bitrate));

            var size = mediaType.GetSize();
            ret.Add(FormatCheckElement.VideoWidth, Tuple.Create<bool, object>(size.Width >= TwitterLimitation.MinWidth && size.Width <= TwitterLimitation.MaxWidth, size.Width));
            ret.Add(FormatCheckElement.VideoHeight, Tuple.Create<bool, object>(size.Height >= TwitterLimitation.MinHeight && size.Height <= TwitterLimitation.MaxHeight, size.Height));

            var aspectRatio = (double)size.Width / size.Height;
            ret.Add(FormatCheckElement.VideoAspectRatio, Tuple.Create<bool, object>(aspectRatio >= TwitterLimitation.MinAspectRatio && aspectRatio <= TwitterLimitation.MaxAspectRatio, aspectRatio));

            var framerateDouble = mediaType.GetFramerate().ToDouble();
            ret.Add(FormatCheckElement.VideoFramerate, Tuple.Create<bool, object>(framerateDouble <= TwitterLimitation.MaxFramerate, framerateDouble));

            var pixelAspectRatio = mediaType.GetPixelAspectRatio();
            ret.Add(FormatCheckElement.VideoPixelAspectRatio, Tuple.Create<bool, object>(pixelAspectRatio.Numerator == pixelAspectRatio.Denominator, pixelAspectRatio));

            var interlaceMode = mediaType.GetInterlaceMode();
            ret.Add(FormatCheckElement.VideoInterlaceMode, Tuple.Create<bool, object>(interlaceMode == MFVideoInterlaceMode.Progressive || interlaceMode == MFVideoInterlaceMode.MixedInterlaceOrProgressive, interlaceMode));
        }