.data
WND_NAME db 'Video Capture',0
FILENAME db 260 dup(0)
hWndC dd 0
msg:
msHWND dd 0
msMESSAGE dd 0
msWPARAM dd 0
msLPARAM dd 0
msTIME dd 0
ptX dd 0
ptY dd 0
.code
Start:
call capCreateCaptureWindowA,offset WND_NAME, WS_OVERLAPPEDWINDOW, 100, 100,640,480,0,0
mov hWndC,eax
call SendMessageA, hWndC, WM_CAP_DRIVER_CONNECT, 0, 0
call SendMessageA, hWndC, WM_CAP_FILE_GET_CAPTURE_FILE,260,offset FILENAME
call SendMessageA, hWndC, WM_CAP_DLG_VIDEOCOMPRESSION,0,0
call SendMessageA, hWndC, WM_CAP_DLG_VIDEOFORMAT,0,0
call SendMessageA, hWndC, WM_CAP_DLG_VIDEOSOURCE,0,0
call SendMessageA, hWndC, WM_CAP_SEQUENCE, 0, 0

msg_loop:
call GetMessageA,offset msg,hWndC,0,0
cmp eax,-1
jz STOP
call TranslateMessage,offset msg
call DispatchMessageA,offset msg
jmp msg_loop
STOP: call ExitProcess
end Start
WM_CAP_ABORT (445h)
Відміняє операцію зчитування відеоданих.
wParam=0
lParam=0
WM_CAP_DLG_VIDEOCOMPRESSION (42eh)
Відображає діалогове вікно в якому користувач може вибрати один з відео-компресорів, які встановлені на комп’ютері.
wParam=0
lParam=0
WM_CAP_DLG_VIDEODISPLAY (42bh)
Відображає діалогове вікно в якому користувач може вибрати яскравість, контраст, відтінки зображення при виводі на екран. Деякими драйверами може не підтримуватись.
wParam=0
lParam=0
WM_CAP_DLG_VIDEOFORMAT (429h)
Відображає діалогове вікно в якому користувач може вибрати розмір зображення та режим апаратного стиснення.
wParam=0
lParam=0
WM_CAP_DLG_VIDEOSOURCE (42ah)
Відображає діалогове вікно в якому користувач може регулювати джерело відеопотоку - вибрати яскравість, контраст, відтінки зображення.
wParam=0
lParam=0
WM_CAP_DRIVER_CONNECT (40ah)
Асоціює вікно захвату відеопотоку з драйвером відеокамери.
wParam= індекс драйверу, починається з 0.
lParam=0
WM_CAP_DRIVER_DISCONNECT (40bh)
Відокремлює вікно захвату від драйверу відеокамери.
wParam=0
lParam=0
WM_CAP_DRIVER_GET_CAPS (40eh)
Отримує параметри драйвера в спеціальній структурі даних CAPDRIVERCAPS
wParam=довжина структури CAPDRIVERCAPS;
lParam=адреса структури CAPDRIVERCAPS.
WM_CAP_DRIVER_GET_NAME (40ch)
Отримує ім’я драйвера для захоплення відео.
wParam=довжина буферу для імені;
lParam=адреса буферу для імені драйвера.
WM_CAP_DRIVER_GET_VERSION (40dh)
Отримує номер версії драйвера захвату відео.
wParam=довжина буферу для версії;
lParam=адреса буферу для версії драйвера.
WM_CAP_EDIT_COPY (41eh)
Копіює відео-фрейм в буфер обміну.
wParam=0
lParam=0
WM_CAP_FILE_ALLOCATE (416h)
Створює файл для захоплення відео певної мінімальної довжини, яку можна буде збільшити.
wParam=0
lParam=довжина файлу.
WM_CAP_FILE_GET_CAPTURE_FILE (415h)
Отримує ім’я і повний шлях до файлу захвату відео.
wParam=довжина буферу;
lParam=адреса буферу для отримання результату.
WM_CAP_FILE_SAVEAS (417h)
Копіює вміст файлу захвату в інший файл.
wParam=0;
lParam=адреса імені файла-копії.
WM_CAP_FILE_SAVEDIB (419h)
Зберігає поточний кадр у BitMap.
wParam=0;
lParam=адреса імені BMP-файлу.
WM_CAP_FILE_SET_CAPTURE_FILE (414h)
Встановлює AVI-файл для захвату відео.
wParam=0;
lParam=адреса імені AVI-файлу.
WM_CAP_FILE_SET_INFOCHUNK (418h)
Вставляє текстовий фрагмент в AVI-файл.
wParam=0;
lParam=адреса структури CAPINFOCHUNK.
CAPINFOCHUNK:
4 байта – ідентифікатор фрагмента (чанка);
4 байба – вказівник на рядок;
4 байта – розмір рядка.
WM_CAP_GET_AUDIOFORMAT (424h)
Отримує аудіо-формат в спеціальній структурі даних WAVEFORMATEX.
wParam=розмір структури;
lParam=адреса структури.
WM_CAP_SET_AUDIOFORMAT (423h)
Отримує аудіо-формат з спеціальної структури даних WAVEFORMATEX.
wParam=розмір структури;
lParam=адреса структури.
WAVEFORMATEX:
wFormatTag
Waveform-audio format type. Format tags are registered with Microsoft Corporation for many compression algorithms. A complete list of format tags can be found in the MMREG.H header file.
nChannels
Number of channels in the waveform-audio data. Monaural data uses one channel and stereo data uses two channels.
nSamplesPerSec
Sample rate, in samples per second (hertz), that each channel should be played or recorded. If wFormatTag is WAVE_FORMAT_PCM, then common values for nSamplesPerSec are 8.0 kHz, 11.025 kHz, 22.05 kHz, and 44.1 kHz. For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.
nAvgBytesPerSec
Required average data-transfer rate, in bytes per second, for the format tag. If wFormatTag is WAVE_FORMAT_PCM, nAvgBytesPerSec should be equal to the product of nSamplesPerSec and nBlockAlign. For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.
Playback and record software can estimate buffer sizes by using the nAvgBytesPerSec member.
nBlockAlign
Block alignment, in bytes. The block alignment is the minimum atomic unit of data for the wFormatTag format type. If wFormatTag is WAVE_FORMAT_PCM, nBlockAlign should be equal to the product of nChannels and wBitsPerSample divided by 8 (bits per byte). For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.
Playback and record software must process a multiple of nBlockAlign bytes of data at a time. Data written and read from a device must always start at the beginning of a block. For example, it is illegal to start playback of PCM data in the middle of a sample (that is, on a non-block-aligned boundary).
wBitsPerSample
Bits per sample for the wFormatTag format type. If wFormatTag is WAVE_FORMAT_PCM, then wBitsPerSample should be equal to 8 or 16. For non-PCM formats, this member must be set according to the manufacturer's specification of the format tag. Note that some compression schemes cannot define a value for wBitsPerSample, so this member can be zero.
cbSize
Size, in bytes, of extra format information appended to the end of the WAVEFORMATEX structure. This information can be used by non-PCM formats to store extra attributes for the wFormatTag. If no extra information is required by the wFormatTag, this member must be set to zero. Note that for WAVE_FORMAT_PCM formats (and only WAVE_FORMAT_PCM formats), this member is ignored.
WM_CAP_GET_CAPSTREAMPTR (401h) ;???
WM_CAP_GET_MCI_DEVICE (443h)
Встановлює ім’я пристрою для Multimedia Control Intrface.
wParam=довжина буферу;
lParam=адреса буферу для отримання результату.
WM_CAP_GET_SEQUENCE_SETUP (441h)
Отримує параметри відео-потоку, який захоплюється.
wParam=розмір структури CAPTUREPARAMS;
lParam=адреса структури CAPTUREPARAMS.
WM_CAP_SET_SEQUENCE_SETUP (440h)
Встановлює параметри відео-потоку, який захоплюється.
wParam=розмір структури CAPTUREPARAMS;
lParam=адреса структури CAPTUREPARAMS.
CAPTUREPARAMS:
dwRequestMicroSecPerFrame = тривалість одного фрейма в мікросекундах (frame rate). По замовченню = 66667= (15 кадрів в секунду).
fMakeUserHitOKToCapture = прапорець поперпедження початку захоплення (1 або 0 ). По замовченню = 0.
wPercentDropForError = максимальний відсоток зниження швидкості обробки фреймів. По замовченню = 10.
fYield = прапорець утворення паралельних ниток при захопленні відео-потоку. По замовченню = 0.
dwIndexSize = максимальна кількість входів в AVI-файл. (від 1800 до 324000). По замовченню = 34952.
wChunkGranularity = розмір логічного блоку. Значення 0 означає, що розмір блоку співпадає з розміром сектора диску.
fUsingDOSMemory Not used in Win32 applications.
wNumVideoRequested = максимальна кількість буіерів.
fUsingDOSMemory. = Фактична кількість буферів.
fCaptureAudio = прапорець захоплення звуку. По замовченню = 1.
wNumAudioRequested = максимальна кількість аудіо-буферів. По замовченню = 10.
vKeyAbort = код клавіши для припинення захоплення. По замовченню = VK_ESCAPE.
RegisterHotKey function before specifying a keystroke that can abort a capture session.
You can combine keycodes that include CTRL and SHIFT keystrokes by using the logical OR operator with the keycodes for CTRL (0x8000) and SHIFT (0x4000).
fAbortLeftMouse
Abort flag for left mouse button. If this member is TRUE, streaming capture stops if the left mouse button is pressed. The default value is TRUE.
fAbortRightMouse
Abort flag for right mouse button. If this member is TRUE, streaming capture stops if the right mouse button is pressed. The default value is TRUE.
fLimitEnabled
Time limit enabled flag. If this member is TRUE, streaming capture stops after the number of seconds in wTimeLimit has elapsed. The default value is FALSE.
wTimeLimit
Time limit for capture, in seconds. This parameter is used only if fLimitEnabled is TRUE.
fMCIControl
MCI device capture flag. If this member is TRUE, AVICap controls an MCI-compatible video source during streaming capture. MCI-compatible video sources include VCRs and laserdiscs.
fStepMCIDevice
MCI device step capture flag. If this member is TRUE, step capture using an MCI device as a video source is enabled. If it is FALSE, real-time capture using an MCI device is enabled. (If fMCIControl is FALSE, this member is ignored.)
dwMCIStartTime
Starting position, in milliseconds, of the MCI device for the capture sequence. (If fMCIControl is FALSE, this member is ignored.)
dwMCIStopTime
Stopping position, in milliseconds, of the MCI device for the capture sequence. When this position in the content is reached, capture ends and the MCI device stops. (If fMCIControl is FALSE, this member is ignored.)
fStepCaptureAt2x
Double-resolution step capture flag. If this member is TRUE, the capture hardware captures at twice the specified resolution. (The resolution for the height and width is doubled.)
Enable this option if the hardware does not support hardware-based decimation and you are capturing in the RGB format.
wStepCaptureAverageFrames
Number of times a frame is sampled when creating a frame based on the average sample. A typical value for the number of averages is 5.
dwAudioBufferSize
Audio buffer size. If the default value of zero is used, the size of each buffer will be the maximum of 0.5 seconds of audio or 10K bytes.
fDisableWriteCache
Not used in Win32 applications.
AVStreamMaster
Indicates whether the audio stream controls the clock when writing an AVI file. If this member is set to AVSTREAMMASTER_AUDIO, the audio stream is considered the master stream and the video stream duration is forced to match the audio duration. If this member is set to AVSTREAMMASTER_NONE, the durations of audio and video streams can differ.
WM_CAP_GET_STATUS (436h)
Отримує статус вікна захоплення відео
wParam=розмір структури CAPSTATUS;
lParam=адреса структури CAPSTATUS.
CAPSTATUS:
uiImageWidth = ширина зображення
uiImageHeight = висота зображення
fLiveWindow = прапорець попереднього перегляду
fOverlayWindow = прапорець апаратної активізації
fScale = прапорець маштабування
ptScroll = координати відображення кадра
fUsingDefaultPalette = прапорець використовування палітри
fAudioHardware = прапорець аудіо-драйвера
fCapFileExists = прапорець захоплення у файл
dwCurrentVideoFrame = кількість оброблених фреймів
dwCurrentVideoFramesDropped
Number of frames dropped during the current (or most recent) streaming capture. Dropped frames occur when the capture rate exceeds the rate at which frames can be saved to file. In this case, the capture driver has no buffers available for storing data. Dropping frames does not affect synchronization because the previous frame is displayed in place of the dropped frame.
dwCurrentWaveSamples = кількість аудіо-самплів
dwCurrentTimeElapsedMS = час в мілісекундах від початку захоплення
hPalCurrent = хендл поточної палітри
fCapturingNow = прапорець =1 якщо захоплення в даний момент відбувається.
dwReturn = код повідомлення про помилку
wNumVideoAllocated = кількість відео-буферів, що реально використовуються
wNumAudioAllocated = кількість аудио-буферів, що реально використовуються
WM_CAP_GET_USER_DATA (408h)
Отримання рядка, що пов’язаний з вікном
wParam=0
lParam=0
WM_CAP_GET_VIDEOFORMAT (42ch)
Використовується для отримання структури BITMAPINFO для кадра.
wParam=довжина
lParam=адреса BITMAPINFO.
WM_CAP_SET_VIDEOFORMAT (42dh)
Використовується для встановлення формату зображення, яке захоплюється за допомогою структури BITMAPINFO.
wParam=довжина
lParam=адреса BITMAPINFO.
WM_CAP_GRAB_FRAME (43ch)
Відображає один кадр у вікні перегляду.
wParam=0
lParam=0
WM_CAP_GRAB_FRAME_NOSTOP (43dh)
Заповнює фреймовий буфер некомпресованими даними зображення.
wParam=0
lParam=0
WM_CAP_PAL_AUTOCREATE (453h)
WM_CAP_PAL_MANUALCREATE (454h)
WM_CAP_PAL_OPEN (450h)
WM_CAP_PAL_PASTE (452h)
WM_CAP_PAL_SAVE (451h)
WM_CAP_SEQUENCE (43eh)
Ініціює захоплення аудио-відео у файл.
WM_CAP_SET_OVERLAY
WM_CAP_SEQUENCE_NOFILE (43fh)
Ініціює захоплення не використовуючи файл. Для обробки кадрів використовується CallBack-процедура.
wParam=0
lParam=0
WM_CAP_SET_CALLBACK_CAPCONTROL (455h)
Встановлює CallBack-процедуру для керування захопленням кадрів.
wParam=0
lParam=адреса процедури
WM_CAP_SET_CALLBACK_ERROR (402h)
Встановлює CallBack-процедуру для обробки помилок.
wParam=0
lParam=адреса процедури
WM_CAP_SET_CALLBACK_FRAME (405h)
Встановлює CallBack-процедуру для обробки кадрів.
wParam=0
lParam=адреса процедури
WM_CAP_SET_CALLBACK_STATUS (403h)
Встановлює CallBack-процедуру для обробки стану вікна.
wParam=0
lParam=адреса процедури
WM_CAP_SET_CALLBACK_VIDEOSTREAM (406h)
Встановлює CallBack-процедуру для обробки події заповнення відео-буферу.
wParam=0
lParam=адреса процедури
WM_CAP_SET_CALLBACK_WAVESTREAM (407h)
Встановлює CallBack-процедуру для обробки події заповнення аудіо-буферу.
wParam=0
lParam=адреса процедури
WM_CAP_SET_CALLBACK_YIELD (404h)
Встановлює CallBack-процедуру, яка викликається при згортанні вікна.
wParam=0
lParam=адреса процедури
WM_CAP_SET_MCI_DEVICE (442h)
Присвоює ім'я пристрою MCI.
wParam=0
lParam=адреса нового імені
WM_CAP_SET_OVERLAY (433h)
Встановити чи вкинути режим DMA для драйвера.
wParam = прапорець встановлення (1 або 0)
lParam=0
WM_CAP_SET_PREVIEW (432h)
Встановлює або скасовує режим перегляду
wParam = прапорець встановлення (1 або 0)
lParam=0
WM_CAP_SET_PREVIEWRATE (434h)
Встановлює швидкість фреймів для перегляду.
wParam = час за який кадр захоплюється і иримається на екрані (в мілісекундах)
lParam=0
WM_CAP_SET_SCALE (435h)
Дозволяє або забороняє маштабувати зображення.
wParam = прапорець дозволу
lParam=0
WM_CAP_SET_SCROLL (437h)
Дозволяє зсувати зображення при перегляді
wParam = 0
lParam = адреса позиції зображення
WM_CAP_SET_USER_DATA (409h)
Встановлює певні дані у вікні
wParam=розмір рядка;
lParam=адреса рядка.
WM_CAP_SINGLE_FRAME_OPEN (446h)
Відкриває файл для захоплення по одному кадру.
wParam=0
lParam=0
WM_CAP_SINGLE_FRAME (448h)
Додає один кадр до файлу захоплення.
wParam=0
lParam=0
WM_CAP_SINGLE_FRAME_CLOSE (447h)
Закриває файл в режимі захоплення по одному кадру.
wParam=0
lParam=0
WM_CAP_START (400h)
WM_CAP_STOP (444h)
Зупиняє процес запису у файл захоплення.
wParam=0
lParam=0