Generic Docs (Русский) - nkrapivin/GMESCAPI GitHub Wiki
Это просто документация для всех функций/макросов/асинхронных событий в GMESCAPI.
Functions
Все функции что начинаются с __
не надо использовать, ну и объяснять я их не стану.
gm_escapi_count (число)
count = gm_escapi_count();
Возвращает количестно подключенных вебкамер.
gm_escapi_max_count (число)
max_count = gm_escapi_max_count();
Возвращает максимально поддерживаемое количество вебкамер. (сейчас их аж 16)
gm_escapi_version (число)
ver = gm_escapi_version();
Возвращает версию ESCAPI. (сейчас это 0x300
или $300
если вам больше нравится HEX синтаксис из 1.4)
gm_escapi_last_error (строка)
err = gm_escapi_last_error();
Последнее сообщение об ошибке, или пустая строка если их не было.
gm_escapi_get_camera_name (строка)
name = gm_escapi_get_camera_name(0);
Возвращает имя для подключенного индекса веб камеры.
gm_escapi_set_focus_frames (число)
gm_escapi_set_focus_frames(30);
Ставит количество фокус-кадров (почитайте Home (Русский)
чтобы понять больше).
Т.к. камера не всегда готова сразу после того как её попросили сделать снимок, можно указать сколько кадров нужно сделать для одного.
Это должно дать камере время на фокус.
То есть если вы поставили значение 30
, то будет сделано 30
снимков в один и тот же буффер, и 10-ый кадр вы увидите.
gm_escapi_get_focus_frames (число)
f = gm_escapi_get_focus_frames();
Получает количество фокус-кадров (почитайте Home (Русский)
чтобы понять больше).
gm_escapi_set_capture_prop (число)
gm_escapi_set_capture_prop(device, CAPTURE_HUE, 1, false, false);
Устанавливает опцию снимка камеры, имейте ввиду что все изменения будут приняты только после того как вы сделайте снимок, или вызовите gm_escapi_set_sys_capture_props
чтобы применить все изменения сразу (лампочка всё равно включится).
Все изменения которые вы тут ставите будут изменяться в системе, а значит если вы не вернёте всё как было, у возможного пользователя после ваших экспериментов в скайпе будет засветлённое лицо, или что вы там делаете.
Если же вы не хотите трогать настройку, поставьте последний аргумент ignore
в true
.
Аргумент auto
не поддерживается всеми настройками, он говорит должна ли камера попытаться сама понять какое число для настройки оптимальное, но это поддерживают далеко не все камеры.
Значение настройки всегда от 0 до 1.
gm_escapi_get_capture_prop (число)
val = gm_escapi_get_capture_prop(device, CAPTURE_HUE);
Возвращает значение настройки камеры, оно всегда от 0 до 1, и это процент, чтобы получить значение в процентах, умножьте то что вам вернулось на 100.
Если же значение меньше 0, значит эта опция не поддерживается камерой.
gm_escapi_is_capture_prop_auto (число)
if (gm_escapi_is_capture_prop_auto(device, CAPTURE_HUE)) { // ...
Возвращает поставили ли вы опцию auto
для настройки или нет.
Имейте ввиду что не все камеры такие крутые и могут автоматически баланс белого/яркость определять.
gm_escapi_is_capture_prop_ignore (число)
if (gm_escapi_is_capture_prop_ignore(device, CAPTURE_HUE)) { // ...
Возвращает поставили ли вы значение ignore
для настройки или нет.
По умолчанию все опции игнорируются, чтобы не испортить ничего.
gm_escapi_reset_capture_props (число)
gm_escapi_reset_capture_props(device);
Сбрасывает значение для всех настроек на 0, auto
в false
, ignore
в true
.
Аргумент это индекс устройства для которого нужно сбросить, или -1, если хотите сбросить для всех.
Имейте ввиду что это не сбросит настройки в системе, а просто сбросит их у вас в расширении.
gm_escapi_get_sys_capture_props (число)
gm_escapi_get_sys_capture_props(device);
Получает текущие настройки камеры из системы для устройства device
, ну или -1 если хотите получить для всех камер.
Эта функция очень полезна, т.к. позволяет сохранить настройку которая была, и после ваших экспериментов вернуть всё как было.
По умолчанию все настройки сброшены на ноль, и эта функция как раз нужна.
gm_escapi_set_sys_capture_props (number)
gm_escapi_set_sys_capture_props(device);
Эта функция записывает ваши настройки в систему, если у настройки стоит ignore
то она не будет записана.
Обычно все настройки применяются когда вы делаете снимок(снимки), но этой функцией вы можете сохранить все настройки без снимка (лампочка всё равно моргнёт).
gm_escapi_offset (число)
size = gm_escapi_offset(width, height, frames);
buffer_seek(buf, buffer_seek_relative, gm_escapi_offset(width, height, i));
Это небольшая функция которая нужна для расчёта размера буффера или сдвига в буффере, даёте ей высоту/ширину, и сколько кадров вам нужно. А она вам размер в байтах.
gm_escapi_prop_reflection (строка)
str = gm_escapi_prop_reflection(CAPTURE_HUE);
Превращает макрос CAPTURE_
в строку, например для макроса CAPTURE_HUE
вам вернётся строка CAPTURE_HUE
.
Полезно если вам нужно вывести все настройки, и вы хотите так же показать имена каждой.
gm_escapi_capture_async (число)
async_id = gm_escapi_capture_async(device, width, height, buf, 0);
Начинает запись кадра в буффер buf
, со сдвигом в буффере offset
.
Возвращает айди, который вы можете сверить в Async - Social событии после того как кадр будет сделан.
Или -1 если что-то не так.
gm_escapi_capture_async_ext (число)
async_id = gm_escapi_capture_async_ext(device, width, height, buf, 0, frames);
Тоже что и gm_escapi_capture_async
но может писать аж несколько кадров в один буффер.
Имейте ввиду что каждый кадр будет снят столько раз, сколько вы указали в focus_frames
функции.
gm_escapi_capture (число)
status = gm_escapi_capture(device, width, height, buf, 0);
Как gm_escapi_capture_async
, но ничего ждать не надо, буффер будет заполнен сразу после выполнения функции.
Есть один момент, когда будет браться снимок игра подвиснет на пару секунд, что немного выбешивает.
-1
- ошибка, вызовите gm_escapi_last_error
чтобы узнать больше.
0
- что-то странное
1
- всё хорошо
Асинхронные события
Каждое Async - Social событие от GMESCAPI содержит event_type
ключ, так я и буду их идентифицировать.
escapi_capture_result
Результат функции gm_escapi_capture_async
.
Вот описание других ключей в мапе async_load
:
escapi_async_id
- айди который вам изначально вернула функция.
escapi_capture_result
- -1 если ошибка, 0 если что-то странное, и 1 когда всё норм.
escapi_focus_frames
- ваше количество фокус кадров которое использовала функция.
escapi_device_id
- индекс устройства для которого вы запросили снимок.
escapi_capture_result_ext
This is the event made by the gm_escapi_capture_async_ext
function.
Here are the keys that will be in the async_load
map:
escapi_async_id
- айди который вам изначально вернула функция.
escapi_capture_result_ext
- -1 если ошибка, 0 если что-то странное, и 1 когда всё норм.
escapi_focus_frames
- ваше количество фокус кадров которое использовала функция.
escapi_device_id
- индекс устройства для которого вы запросили снимок.
escapi_frames
- количество запрощенных вами кадров (не фокус кадров!).
Макросы
Так же есть макросы начинающиеся на CAPTURE_
, они должны быть использованы в функциях по установке настроек камеры в аргументе prop
.
Объяснять их не надо, но имейте ввиду что CAPTURE_PROP_MAX
это не настройка, а просто количество всех настроек, чтобы можно было делать цикл:
for (var i = 0; i < CAPTURE_PROP_MAX; i++) { // ...
Это всё! Удачи!
Если что-то не поняли звякните в дискорд nik#5351
или пинганите на сервере RGD. : )