void DisplayPixelBuffer(CVPixelBuffer pixelBuffer, double framePTS) { nint width = pixelBuffer.Width; nint height = pixelBuffer.Height; var f = View.Frame; if (width > f.Width || height > f.Height) { width /= 2; height /= 2; } var layer = new EAGLLayer(); if (Math.Abs(videoPreferredTransform.xx + 1f) < float.Epsilon) { layer.AffineTransform.Rotate(NMath.PI); } else if (Math.Abs(videoPreferredTransform.yy) < float.Epsilon) { layer.AffineTransform.Rotate(NMath.PI / 2); } layer.Frame = new CGRect(0f, View.Frame.Height - 50f - height, width, height); layer.PresentationRect = new CGSize(width, height); layer.TimeCode = framePTS.ToString("0.000"); layer.SetupGL(); View.Layer.AddSublayer(layer); layer.DisplayPixelBuffer(pixelBuffer); }
void DisplayPixelBuffer(CVPixelBuffer pixelBuffer, double framePTS) { nint width = pixelBuffer.Width; nint height = pixelBuffer.Height; var f = View.Frame; if (width > f.Width || height > f.Height) { width /= 2; height /= 2; } var layer = new EAGLLayer (); if (Math.Abs (videoPreferredTransform.xx + 1f) < float.Epsilon) layer.AffineTransform.Rotate (NMath.PI); else if (Math.Abs (videoPreferredTransform.yy) < float.Epsilon) layer.AffineTransform.Rotate (NMath.PI / 2); layer.Frame = new CGRect (0f, View.Frame.Height - 50f - height, width, height); layer.PresentationRect = new CGSize (width, height); layer.TimeCode = framePTS.ToString ("0.000"); layer.SetupGL (); View.Layer.AddSublayer (layer); layer.DisplayPixelBuffer (pixelBuffer); }