private static unsafe SoftwareBitmap MatToSoftwareBitmap(this Mat input) { try { SoftwareBitmap output = new SoftwareBitmap(BitmapPixelFormat.Bgra8, input.Width, input.Height, BitmapAlphaMode.Premultiplied); using (BitmapBuffer Buffer = output.LockBuffer(BitmapBufferAccessMode.ReadWrite)) using (Windows.Foundation.IMemoryBufferReference Reference = Buffer.CreateReference()) { ((IMemoryBufferByteAccess)Reference).GetBuffer(out byte *DataInBytes, out uint capacity); BitmapPlaneDescription BufferLayout = Buffer.GetPlaneDescription(0); for (int i = 0; i < BufferLayout.Height; i++) { for (int j = 0; j < BufferLayout.Width; j++) { int Index = BufferLayout.StartIndex + (BufferLayout.Stride * i) + (4 * j); DataInBytes[Index] = input.DataPointer[Index]; DataInBytes[Index + 1] = input.DataPointer[Index + 1]; DataInBytes[Index + 2] = input.DataPointer[Index + 2]; DataInBytes[Index + 3] = input.DataPointer[Index + 3]; } } } return(output); } catch { return(new SoftwareBitmap(BitmapPixelFormat.Bgra8, input.Width, input.Height, BitmapAlphaMode.Premultiplied)); } }
internal unsafe VisualizationData(AudioFrame frame) { m_Buffer = frame.LockBuffer(AudioBufferAccessMode.Read); m_BufferReference = m_Buffer.CreateReference(); byte *pData; uint capacity; ((IMemoryBufferByteAccess)m_BufferReference).GetBuffer(out pData, out capacity); m_pData = (float *)pData; m_DataCapacity = m_Buffer.Length / sizeof(float); m_DataStep = (uint)frame.ExtendedProperties["{3F692E37-FC20-48DD-93D2-2234E1B1AA23}"]; }
private static unsafe Mat SoftwareBitmapToMat(this SoftwareBitmap softwareBitmap) { try { using (BitmapBuffer Buffer = softwareBitmap.LockBuffer(BitmapBufferAccessMode.Write)) using (Windows.Foundation.IMemoryBufferReference Reference = Buffer.CreateReference()) { ((IMemoryBufferByteAccess)Reference).GetBuffer(out byte *dataInBytes, out uint capacity); return(new Mat(softwareBitmap.PixelHeight, softwareBitmap.PixelWidth, MatType.CV_8UC4, (IntPtr)dataInBytes)); } } catch { return(new Mat(softwareBitmap.PixelHeight, softwareBitmap.PixelWidth, MatType.CV_8UC4)); } }