Может быть неправильное место, чтобы спросить это, но я вроде нужно помочь выяснить, что реальная проблема ...Weird Аудио Blips в Записано USB Audio Signal
В принципе, я программирования микроконтроллера сделать USB аудио (используя USB Audio Class 2.0/высокоскоростной USB). Похоже, я получаю довольно близко, чтобы получить его «добро», но я получаю это, когда я записать щебечу в дерзость [ниже отрывок]:
Я предполагаю, что я спрашиваю почему я получаю эти странные перерывы и прыжки на моем сеансе записи? Это потому, что я недостаточно читаю свои входные буферы кодеков или, возможно, длина кадра не установлена правильно?
Как я расчет мой длины кадра, который я получил от USB Audio руководство от компании Apple (используя скорость 44.1 кГц дискретизации и скорость передачи данных 16):
#define AUDIO_POLL_INT 4
#define FRAME_BYTES (BIT_RATE_16/8)
#define NUM_CHANNELS STEREO
uint16_t frame_len = 44 (44.1kHz/1000 samples) * NUM_CHANNELS * FRAME_BYTES;
if (!(frame_pos % 9)) frame_len += (1 * NUM_CHANNELS * FRAME_BYTES)
frame_len = (frame_len/8) * (2 << (AUDIO_POLL_INT-1));
// 10 ms frames
frame_pos = (((frame_pos + 1)/8) * (2 << (AUDIO_POLL_INT-1))) % 10;
Это также процесс чтения ввода кодека :
1) Прочитайте ввод кодека; Загрузка образцов во временный буфер (передача из периферийного устройства кодека в периферийное устройство памяти)
2) Память Периферийное прерывание происходит, когда передача завершена (буфер заполнен, емкость кадра_len выполнена), отправьте образцы буфера на USB. Впоследствии снова прочитайте ввод кодека
Надеюсь, это не слишком запутывает ... дайте мне знать, и я могу добавить дополнительную информацию/прояснить ситуацию. Благодаря!
Вы были правы, у меня была строка, оставшаяся в моем коде, которая на самом деле увеличивала указатели чтения/записи слишком рано, и поэтому я получал эти «блики». Теперь это довольно чисто! –