// call_headless.h — headless-аудио-сокет для P2P-звонков // // Отдельный TCP-сокет, через который headless-клиент (CLI/скрипт) обменивается // Opus-кадрами с ядром звонка. Сигналинг идёт по control-сокету (chat_headless_control), // аудио — по этому сокету. // // Бинарный фрейм (обе стороны): // [type:1][call_id:8][len:2][data:len] // type = 0x01 HELLO (клиент → ядро: привязать соединение к call_id, data пусто) // type = 0x02 FRAME (Opus-кадр: клиент → ядро = отправить пиру; ядро → клиент = кадр от пира) #ifndef CALL_HEADLESS_H #define CALL_HEADLESS_H #include struct UASYNC; struct UTUN_INSTANCE; #define CALL_AUDIO_HELLO 0x01 #define CALL_AUDIO_FRAME 0x02 #define CALL_AUDIO_HDR_SIZE 11 /* type(1) + call_id(8) + len(2) */ #ifdef __cplusplus extern "C" { #endif int call_headless_init(struct UASYNC* ua, struct UTUN_INSTANCE* inst, const char* bind_ip, int port); void call_headless_destroy(struct UTUN_INSTANCE* inst); #ifdef __cplusplus } #endif #endif /* CALL_HEADLESS_H */