[DllImport("avifil32.dll")]
static extern int AVIStreamReadFormat(IntPtr pavi, int lPos, out WAVEFORMATEX lpFormat, out int lpcbFormat);
'Read the format for a Video stream
<DllImport("avifil32.dll", entrypoint:="AVIStreamReadFormat")> _
Public Shared Function AVIStreamReadFormat(ByVal aviStream As IntPtr,
ByVal lPos As Int32,
ByRef lpFormat As BITMAPINFOHEADER,
ByRef cbFormat As Int32) As Integer
End Function
'Read the format for a audio stream
<DllImport("avifil32.dll")> _
Public Shared Function AVIStreamReadFormat(ByVal aviStream As IntPtr,
ByVal lPos As Int32,
ByRef lpFormat As PCMWAVEFORMAT,
ByRef cbFormat As Int32) As Integer
End Function
Public Structure BITMAPINFOHEADER
Public biSize As Int32
Public biWidth As Int32
Public biHeight As Int32
Public biPlanes As Int16
Public biBitCount As Int16
'<MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Public biCompression As Char() ' for recup directly char (string) FOURCC
Public biCompression As Int32
Public biSizeImage As Int32
Public biXPelsPerMeter As Int32
Public biYPelsPerMeter As Int32
Public biClrUsed As Int32
Public biClrImportant As Int32
End Structure
Public Structure PCMWAVEFORMAT
Public wFormatTag As Short
Public nChannels As Short
Public nSamplesPerSec As Integer
Public nAvgBytesPerSec As Integer
Public nBlockAlign As Short
Public wBitsPerSample As Short
Public cbSize As Short
End Structure
Public Shared Function AVIStreamReadFormat2(ByVal aviStream As IntPtr, ByVal lPos As Int32, ByRef lpFormat As BITMAPINFOHEADER, ByRef cbFormat As Int32) As Integer
Dim hr As Integer = AVIStreamReadFormat(aviStream, lPos, lpFormat, cbFormat)
If lpFormat.biBitCount > 24 Then
lpFormat.biBitCount = 32
ElseIf lpFormat.biBitCount > 16 Then
lpFormat.biBitCount = 24
ElseIf lpFormat.biBitCount > 8 Then
lpFormat.biBitCount = 16
ElseIf lpFormat.biBitCount > 4 Then
lpFormat.biBitCount = 8
ElseIf lpFormat.biBitCount > 0 Then
lpFormat.biBitCount = 4
End If
Return hr
End Function
Do you know one? Please contribute it!
None.
Please add some!
Please add some!