?? utiilities.cs
字號:
using System;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
namespace LanMsg.AV
{
#region wave
[StructLayout(LayoutKind.Sequential)]
public struct WAVEHDR
{
public IntPtr lpData; /* pointer to locked data buffer */
public int dwBufferLength; /* length of data buffer */
public int dwBytesRecorded; /* used for input only */
public int dwUser; /* for client's use */
public int dwFlags; /* assorted flags (see defines) */
public int dwLoops; /* loop control counter */
public int lpNext; /* reserved for driver */
public int reserved; /* reserved for driver */
}
[StructLayout(LayoutKind.Sequential)]
public struct WAVEFORMATEX
{
public short wFormatTag;
public short nChannels;
public int nSamplesPerSec;
public int nAvgBytesPerSec;
public short nBlockAlign;
public short wBitsPerSample;
public short cbSize;
}
[StructLayout(LayoutKind.Sequential)]
public struct PCMWAVEFORMAT
{
public WAVEFORMAT wf;
public short wBitsPerSample;
}
[StructLayout(LayoutKind.Sequential)]
public struct WAVEOUTCAPSA
{
public short wMid; /* manufacturer ID */
public short wPid; /* product ID */
public int vDriverVersion; /* version of the driver */
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
public string szPname; /* product name (NULL terminated string) */
public int dwFormats; /* formats supported */
public short wChannels; /* number of sources supported */
public short wReserved1; /* packing */
public int dwSupport; /* functionality supported by driver */
}
[StructLayout(LayoutKind.Sequential)]
public struct WAVEOUTCAPSW
{
public short wMid; /* manufacturer ID */
public short wPid; /* product ID */
public int vDriverVersion; /* version of the driver */
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
public string szPname; /* product name (NULL terminated string) */
public int dwFormats; /* formats supported */
public short wChannels; /* number of sources supported */
public short wReserved1; /* packing */
public int dwSupport; /* functionality supported by driver */
}
[StructLayout(LayoutKind.Sequential)]
public struct WAVEINCAPSW
{
public short wMid; /* manufacturer ID */
public short wPid; /* product ID */
public uint vDriverVersion; /* version of the driver */
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
public string szPname; /* product name (NULL terminated string) */
public int dwFormats; /* formats supported */
public short wChannels; /* number of channels supported */
public short wReserved1; /* structure packing */
}
[StructLayout(LayoutKind.Sequential)]
public struct WAVEINCAPSA
{
public short wMid; /* manufacturer ID */
public short wPid; /* product ID */
public int vDriverVersion; /* version of the driver */
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
public string szPname; /* product name (NULL terminated string) */
public int dwFormats; /* formats supported */
public short wChannels; /* number of channels supported */
public short wReserved1; /* structure packing */
}
[StructLayout(LayoutKind.Sequential)]
public struct WAVEFORMAT
{
public short wFormatTag; /* format type */
public short nChannels; /* number of channels (i.e. mono, stereo, etc.) */
public int nSamplesPerSec; /* sample rate */
public int nAvgBytesPerSec; /* for buffer estimation */
public short nBlockAlign; /* block size of data */
}
public delegate void waveProc(IntPtr hwi,int uMsg,int dwInstance,ref WAVEHDR hdr,int dwParam2);
#endregion
#region video
public delegate int capErrorCallback(
IntPtr hWnd,
int nID,
string lpsz
);
public delegate int capVideoStreamCallback(
IntPtr hWnd,
ref VIDEOHDR lpVHdr
);
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
public struct VIDEOHDR
{
public IntPtr lpData; /* pointer to locked data buffer */
public int dwBufferLength; /* Length of data buffer */
public int dwBytesUsed; /* Bytes actually used */
public int dwTimeCaptured; /* Milliseconds from start of stream */
public int dwUser; /* for client's use */
public int dwFlags; /* assorted flags (see defines) */
public int dwReserved; /* reserved for driver */
}
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
public struct CaptureParms
{
public int dwRequestMicroSecPerFrame; // Requested capture rate
public bool fMakeUserHitOKToCapture; // Show "Hit OK to cap" dlg?
public uint wPercentDropForError; // Give error msg if > (10%)
public bool fYield; // Capture via background task?
public int dwIndexSize; // Max index size in frames (32K)
public uint wChunkGranularity; // Junk chunk granularity (2K)
public bool fUsingDOSMemory; // Use DOS buffers?
public uint wNumVideoRequested; // # video buffers, If 0, autocalc
public bool fCaptureAudio; // Capture audio?
public uint wNumAudioRequested; // # audio buffers, If 0, autocalc
public uint vKeyAbort; // Virtual key causing abort
public bool fAbortLeftMouse; // Abort on left mouse?
public bool fAbortRightMouse; // Abort on right mouse?
public bool fLimitEnabled; // Use wTimeLimit?
public uint wTimeLimit; // Seconds to capture
public bool fMCIControl; // Use MCI video source?
public bool fStepMCIDevice; // Step MCI device?
public int dwMCIStartTime; // Time to start in MS
public int dwMCIStopTime; // Time to stop in MS
public bool fStepCaptureAt2x; // Perform spatial averaging 2x
public int wStepCaptureAverageFrames; // Temporal average n Frames
public int dwAudioBufferSize; // Size of audio bufs (0 = default)
public int fDisableWriteCache; // Attempt to disable write cache
public int AVStreamMaster; // Which stream controls length?
}
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFOHEADER
{
public int biSize;
public int biWidth;
public int biHeight;
public short biPlanes;
public short biBitCount;
public int biCompression;
public int biSizeImage;
public int biXPelsPerMeter;
public int biYPelsPerMeter;
public int biClrUsed;
public int biClrImportant;
}
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFO
{
public BITMAPINFOHEADER bmiHeader;
public int bmiColors;
}
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
public struct CAPSTATUS
{
public int uiImageWidth; // Width of the image
public int uiImageHeight; // Height of the image
public bool fLiveWindow; // Now Previewing video?
public bool fOverlayWindow; // Now Overlaying video?
public bool fScale; // Scale image to client?
public Point ptScroll; // Scroll position
public bool fUsingDefaultPalette; // Using default driver palette?
public bool fAudioHardware; // Audio hardware present?
public bool fCapFileExists; // Does capture file exist?
public int dwCurrentVideoFrame; // # of video frames cap'td
public int dwCurrentVideoFramesDropped;// # of video frames dropped
public int dwCurrentWaveSamples; // # of wave samples cap'td
public int dwCurrentTimeElapsedMS; // Elapsed capture duration
public IntPtr hPalCurrent; // Current palette in use
public bool fCapturingNow; // Capture in progress?
public int dwReturn; // Error value after any operation
public int wNumVideoAllocated; // Actual number of video buffers
public int wNumAudioAllocated; // Actual number of audio buffers
}
#endregion
#region mixer
[StructLayout(LayoutKind.Sequential)]
public struct MIXERCAPS
{
public short wMid;
public short wPid;
public int vDriverVersion;
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
public string szPname;
public int fdwSupport;
public int cDestinations;
}
/*
* typedef struct {
DWORD cbStruct;
DWORD dwControlID;
DWORD dwControlType;
DWORD fdwControl;
DWORD cMultipleItems;
CHAR szShortName[MIXER_SHORT_NAME_CHARS];
CHAR szName[MIXER_LONG_NAME_CHARS];
union {
struct {
LONG lMinimum;
LONG lMaximum;
};
struct {
DWORD dwMinimum;
DWORD dwMaximum;
};
DWORD dwReserved[6];
} Bounds;
union {
DWORD cSteps;
DWORD cbCustomData;
DWORD dwReserved[6];
} Metrics;
} MIXERCONTROL, *PMIXERCONTROL, FAR *LPMIXERCONTROL;
*/
[StructLayout(LayoutKind.Explicit,Size=148)]
public struct MIXERCONTROL
{
[FieldOffset(0)]
public int cbStruct;
[FieldOffset(4)]
public int dwControlID;
[FieldOffset(8)]
public int dwControlType;
[FieldOffset(12)]
public int fdwControl;
[FieldOffset(16)]
public int cMultipleItems;
[FieldOffset(20)]
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
string szShortName;
[FieldOffset(36)]
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=64)]
string szName;
[FieldOffset(100)]
public Volume Bounds;
[FieldOffset(124)]
public int Metrics;
}
public struct Volume
{
public int dwMinimum;
public int dwMaximum;
}
[StructLayout(LayoutKind.Sequential)]
public struct MIXERCONTROLDETAILS
{
public int cbStruct;
public int dwControlID;
public int cChannels;
public int cMultipleItems;
public int cbDetails;
public int paDetails;
}
[StructLayout(LayoutKind.Sequential)]
public class MIXERCONTROLDETAILS_BOOLEAN
{
public bool fValue;
}
[StructLayout(LayoutKind.Sequential)]
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -