#pragma once #include #ifdef __cplusplus extern "C" { #endif /* Только метаданные: PCM и содержимое сообщений не записываются. */ enum audio_diag_stage { AUDIO_DIAG_LOOP, AUDIO_DIAG_READ, AUDIO_DIAG_WRITE, AUDIO_DIAG_MAP, AUDIO_DIAG_SUBMIT, AUDIO_DIAG_DUPLEX, AUDIO_DIAG_CALLBACK, AUDIO_DIAG_FEED, AUDIO_DIAG_PULL, AUDIO_DIAG_STAGE_COUNT }; enum audio_diag_kind { AUDIO_DIAG_ENTER, AUDIO_DIAG_LEAVE, AUDIO_DIAG_OPEN, AUDIO_DIAG_CLOSE, AUDIO_DIAG_NOTIFY, AUDIO_DIAG_BACKEND_STARTED, AUDIO_DIAG_HOLE, AUDIO_DIAG_UNFILLED, AUDIO_DIAG_CAPTURE_DROP, AUDIO_DIAG_NO_PROGRESS, AUDIO_DIAG_BACKEND_UNDERRUN, AUDIO_DIAG_BACKEND_OVERFLOW, AUDIO_DIAG_ERROR, AUDIO_DIAG_LABEL, AUDIO_DIAG_LOG }; /* start/stop — управляющий поток; перед stop все producers должны быть остановлены. */ void audio_diag_start(void); void audio_diag_stop(void); void audio_diag_event(const void* device, int kind, int stage, int64_t value, int64_t detail); void audio_diag_label(const void* device, uint64_t id, const char* name); void audio_diag_log(const void* log, unsigned int level, const char* message); #ifdef __cplusplus } #endif