#ifndef AUDIO_SINK_H
#define AUDIO_SINK_H

#include <glib.h>
#include <stddef.h>
#include <stdint.h>

typedef struct AudioSink AudioSink;

/* alsa_device: plughw:X,Y 用于播放 */
AudioSink *audio_sink_start(const char *alsa_device, char **error_message);
void audio_sink_stop(AudioSink *src);

/* 接收 Opus RTP payload 写入播放管道。data 是 Opus payload（不含 RTP 头），size 是字节数 */
gboolean audio_sink_push_opus(AudioSink *src, const uint8_t *data, size_t size);

/* 设置播放音量 0.0~1.0 */
void audio_sink_set_volume(AudioSink *src, double volume);

/* USB声卡排队锁: 本地音频和audio_sink串行访问同一个USB声卡 */
void audio_sink_lock_alsa(void);
void audio_sink_unlock_alsa(void);

/* 中断当前按键会话, 释放ALSA设备让DataChannel音频能立即播放 */
void audio_sink_interrupt(AudioSink *src);

#endif