private uint VideoSetFormat(ref IntPtr opaque, ref uint chroma, ref uint width, ref uint height, ref uint pitches, ref uint lines) { var context = new VlcControlWpfRendererContext(width, height, PixelFormats.Bgr32); chroma = BitConverter.ToUInt32(new[] { (byte)'R', (byte)'V', (byte)'3', (byte)'2' }, 0); width = (uint)context.Width; height = (uint)context.Height; pitches = (uint)context.Stride; lines = (uint)context.Height; myBitmapSectionPointer = Win32Interop.CreateFileMapping(new IntPtr(-1), IntPtr.Zero, Win32Interop.PageAccess.ReadWrite, 0, context.Size, null); opaque = Win32Interop.MapViewOfFile(myBitmapSectionPointer, Win32Interop.FileMapAccess.AllAccess, 0, 0, (uint)context.Size); Dispatcher.Invoke((Action)(() => { myBitmap = (InteropBitmap)Imaging.CreateBitmapSourceFromMemorySection(myBitmapSectionPointer, context.Width, context.Height, context.PixelFormat, context.Stride, 0); VideoSource = myBitmap; VideoBrush.ImageSource = myBitmap; })); return(1); }
private uint VideoSetFormat(ref IntPtr opaque, ref uint chroma, ref uint width, ref uint height, ref uint pitches, ref uint lines) { myContext = new VlcControlWpfRendererContext(width, height, PixelFormats.Bgr32); chroma = BitConverter.ToUInt32(new[] { (byte)'R', (byte)'V', (byte)'3', (byte)'2' }, 0); width = (uint)myContext.Width; height = (uint)myContext.Height; pitches = (uint)myContext.Stride; lines = (uint)myContext.Height; myBitmapSectionPointer = Win32Interop.CreateFileMapping(new IntPtr(-1), IntPtr.Zero, Win32Interop.PageAccess.ReadWrite, 0, myContext.Size, null); opaque = Win32Interop.MapViewOfFile(myBitmapSectionPointer, Win32Interop.FileMapAccess.AllAccess, 0, 0, (uint)myContext.Size); Dispatcher.Invoke((Action)(() => { myBitmap = (InteropBitmap)Imaging.CreateBitmapSourceFromMemorySection(myBitmapSectionPointer, myContext.Width, myContext.Height, myContext.PixelFormat, myContext.Stride, 0); VideoSource = myBitmap; VideoBrush.ImageSource = myBitmap; })); return 1; }