avistreamreadformat (avifil32)
Last changed: -82.233.47.168

.
Summary
The AVIStreamReadFormat function reads the stream format data.

C# Signature:

[DllImport("avifil32.dll")]
static extern int AVIStreamReadFormat(IntPtr pavi, int lPos, out WAVEFORMATEX lpFormat, out int lpcbFormat);

VB Signature:

  '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

VB Structure:

    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

VB BITMAPINFOHEADER Warning

    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

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

Documentation