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)); }