Управлять ЦАП из потока, который синхронизирован из другого источника? - PullRequest
2 голосов
/ 11 февраля 2009

Мой ЦАП имеет тактовую частоту 48 кГц, мне нужно подать его из потока, который также 48 кГц, но синхронизирован из другого источника

Два источника будут дрейфовать со временем, и любая промежуточная буферизация неизбежно будет переполнена или недостаточна.

К сожалению, для источника нет механизма управления скоростью.

Как с этим лучше всего справиться?

Будет ли приемлемым дублировать или отбрасывать случайный образец для компенсации? Я оцениваю 1 образец каждые ~ 70 тыс. Образцов с разницей в 30 частей на миллион.

Ответы [ 3 ]

2 голосов
/ 11 февраля 2009

Поскольку ваши часы работают на двух разных скоростях, у вас нет другого выбора, кроме как дублировать или отбрасывать образцы.

Ведите подсчет количества сэмплов, которые были прочитаны / записаны, и рассчитайте, сколько сэмплов вы ожидаете прочитать / записать на основе текущего времени. Затем можно устранить несоответствия путем дублирования / отбрасывания образцов.

1 голос
/ 22 февраля 2009

Если вас беспокоит верность, вместо отбрасывания или дублирования семплов используйте преобразователь частоты семплирования. Во-первых, используйте временные метки для измерения относительного соотношения частот между частотой дискретизации источника и частотой дискретизации вашего ЦАП. Используйте это соотношение для управления преобразователем частоты дискретизации. Приличный качественный преобразователь частоты дискретизации может обеспечить соотношение сигнал / шум 95 дБ. Более дорогие в вычислительном отношении алгоритмы могут дать вам отношение сигнал / шум> 120 дБ.

См:

- jdkoftinoff

0 голосов
/ 11 февраля 2009

Это может звучать глупо, но выслушайте меня: действительно ли важна скорость вывода?

Рассмотрим этот сценарий - у вас есть устройство ввода звука. Вы выбираете аналоговый входной сигнал с частотой 48 кГц. Эта форма волны может генерироваться чем угодно с любой скоростью - от непрерывного измерения уровня давления микрофона до голосового кодека 8 кГц или ниже. Тот факт, что вы знаете, что этот конкретный выход также на 48 кГц, не имеет никакого отношения к тому, что вы делаете.

Если между устройством вывода и вашим входом была совершенная передача, когда вы сравниваете исходную цифровую форму сигнала с тем, что вы прочитали, иногда вы увидите, что вы дублировали семпл (если ваши часы быстрее) или пропустили один (если ты медленнее). Но это произойдет автоматически, без какой-либо компенсации с вашей стороны. Это легко будет точно так же, как и любая ваша попытка выяснить, когда «дублировать или отбрасывать случайный образец».

На практике вы, скорее всего, не получите точного дубликата между эффектами фильтрации и шумом как в ЦАП, так и в АЦП. Если вы не говорите о каком-либо кодированном цифровом аудиоформате - в этом случае игнорируйте все, что я сказал.

РЕДАКТИРОВАТЬ - Итак, это цифровой звук - S / PDIF?
Сигнал должен нести достаточно информации для реализации фазовой синхронизации. В идеале в аппаратном обеспечении - передние фронты сигнала определяют тактовую частоту - вы можете использовать аппаратное обеспечение ФАПЧ для привязки ваших АЦП к входу. Или на некоторое время пересчитайте и посчитайте нарастающие фронты, чтобы определить скорость. Или на программном уровне измерьте частоту ошибок кадрирования в первых четырех временных интервалах и настройте свои часы для компенсации.

...