我正在生成声音样本与C的飞行操作系统是Linux。硬件是Raspberry Pi 3 Model B。我需要将生成的样本写入到与采样率同步的循环缓冲区。ALSA似乎相当复杂,所以我想象有一个标志或其他东西,我可以使用它来确保我不会溢出或不足缓冲区。因此,如果我每秒使用48000个样本,我希望生成下一个样本,并在写入最后一个样本后1/48000秒写入它。感谢您的建议,以及对好的ALSA文档的参考。
我正试图了解hasSpaceAvailable on NSOutputStream背后的逻辑。
在我的应用程序中,我通过NSInput/output流管理的CFSocket将大量数据(100 my )分解成4080字节块(硬限制)。
当我开始编写数据时,经过hasSpaceAvailable大约四分之一的路突然变成了NO,所以我将数据添加到队列中。但是,如果我忽略了这一点,并试图以任何方式写入数据,那么写入似乎会工作,因为write:maxLength:的返回值与maxLength参数(4080)匹配。
输出流有什么空间?据我所知,在使用UNIX/Berkley套接字时,没有可用的逻辑来确定是
我得到了以下代码( log函数的一部分):
/* set to 32 on purpose */
#define MAX_LOG_MSG_SZ 32
void log(const char *fmt, ...) {
....
char msg[MAX_LOG_MSG_SZ] = {0};
int nb_bytes = 0;
/* get current time */
time_t now = time(NULL);
char time_buf[32] = {0};
/* format time as `14 Jul 20:00