Что нового

Создать структуру BITMAPINFO

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Хочу для WebCam UDF написать функцию изменения формата захваченных видео данных, но вот не могу разобраться со структурой

Первые 2 написал, а с заключающей - непонятки.

Код:
Local $tagRGBQUAD = '' & _
	    'byte rgbBlue;' & _
	    'byte rgbGreen;' & _
        'byte rgbRed;' & _
	    'byte rgbReserved;'
		
	Local $tagBITMAPINFOHEADER = '' & _
        'dword biSize;' & _
		'long  biWidth;' & _
		'long  biHeight;' & _
		'word  biPlanes;' & _
		'word  biBitCount;' & _
		'dword biComression;' & _
		'dword biSizeImage;' & _
		'long  biXPelsPerMeter;' & _
		'long  biYPelsPerMeter;' & _
		'dword biClrUsed;' & _
		'dword biClrImportant;'

	Local $tRGBQUAD = DllStructCreate($tagRGBQUAD)
	Local $tBITMAPINFOHEADER = DllStructCreate($tagBITMAPINFOHEADER)
	Local $tBITMAPINFO = DllStructCreate('? bmiHeader;? bmiColors[1]')
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Viktor1703,
$tagBITMAPINFO в StructureConstants.au3 - не эта?
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Да она, спасибо, но там не всё что требуется для WM_CAP_SET_VIDEOFORMAT, я уже нашёл ответ, заключающая структура, это как бы контейнер для 2х

Код:
Func _WebCam_SetVideoFormat($hCapture, $Width, $Height, $Bit)
	Local $tagRGBQUAD = '' & _
	    'byte rgbBlue;' & _
		'byte rgbGreen;' & _
		'byte rgbRed;' & _
		'byte rgbReserved;'
		
	Local $tagBITMAPINFOHEADER = '' & _
        'dword biSize;' & _
		'long  biWidth;' & _
		'long  biHeight;' & _
		'word  biPlanes;' & _
		'word  biBitCount;' & _
		'dword biComression;' & _
		'dword biSizeImage;' & _
		'long  biXPelsPerMeter;' & _
		'long  biYPelsPerMeter;' & _
		'dword biClrUsed;' & _
		'dword biClrImportant;'

	Local $tRGBQUAD = DllStructCreate($tagRGBQUAD)
	Local $tBITMAPINFOHEADER = DllStructCreate($tagBITMAPINFOHEADER)
	Local $tBITMAPINFO = DllStructCreate('ptr bmiHeader;ptr bmiColors[1]')
    
	DllStructSetData($tBITMAPINFOHEADER, 'biWidth', $Width)
	DllStructSetData($tBITMAPINFOHEADER, 'biHeight', $Height)
	DllStructSetData($tBITMAPINFOHEADER, 'biSizeImage', 3 * $Width * $Height)
	DllStructSetData($tBITMAPINFOHEADER, 'biBitCount', $Bit)
	
	DllStructSetData($tBITMAPINFO, 'bmiHeader', DllStructGetPtr($tBITMAPINFOHEADER))
	DllStructSetData($tBITMAPINFO, 'bmiColors', DllStructGetPtr($tRGBQUAD))
	
	_WebCam_SendMessage($hCapture, 0x42D, 'int', DllStructGetSize($tBITMAPINFO), 'ptr', DllStructGetPtr($tBITMAPINFO))
	If @error Then Return 0
    Return 1
EndFunc


Я её написал уже, но вот результата от функции не вижу ни какого, думаю нужна ли она? Прилагаю пример, хотелось бы полностью доработать UDF, нужная штука.
 
Верх