#ifndef _SSRC_REC_CORE_H_
#define _SSRC_REC_CORE_H_

#if F1_MUSIC_UAC2 == 1

#include <xs1.h>
#include <platform.h>

/**
 * Downsample recording core — runs on tile[1]
 * Uses two streaming channels (ds_stereo.S 需要独立 c_in/c_out，不能别名):
 *   - c_from_tile0: tile[0]→tile[1] 192kHz stereo input
 *   - c_to_tile0:   tile[1]→tile[0] 48kHz  stereo output
 */
void ds_rec_core(streaming chanend c_from_tile0, streaming chanend c_to_tile0);

/**
 * Upsample recording core — runs on tile[1]
 * 改动原因：us_stereo.S 是持续运行函数，只会在控制 token 时返回；
 * 因此本 core 只负责把 48kHz 输入升采样写入 tile[1] 本地 ring buffer。
 */
void us_rec_core(streaming chanend c_us_in);

/**
 * Upsample output sender — runs on tile[1]
 * 改动原因：从 us_rec_core 写入的 tile[1] 本地 ring buffer 取 192kHz 数据，
 * 通过普通 channel 发回 tile[0]，避免等待 us_stereo.S 返回导致死锁。
 */
void us_rec_output_core(chanend c_us_out);

#endif

#endif
