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. : )