Этот вопрос касается не плагина, а самостоятельной разработки прикладной программы и связано с несколькими вопросами, которые я задавал раньше.Потоки производителей аудио с потребительской нитью и обратным вызовом OSX AudioComponent в C
Я должен написать многопоточного аудио функции синтезирования, чье количество данных хруст намного превышает, что может получить размещены на CoreAudio визуализации нить: несколько тысяч независимых амплитуды и фазы интерполирования с точностью до сэмпла синус -волновых генераторов в реальном времени. Это требует большей мощности ЦП, чем любое ядро одного процессора, которое может иметь все доступные оптимизации.
Я делаю все возможное, чтобы изучить его, но это, кажется, стена, а не кривая. Потребительская нить может быть простой CA Принимать обратный вызов приоритета приоритета в реальном времени AudioBufferList iodata и т. Д. ... но какой должна быть нить производителя? Если вы выбираете другой AudioComponent, он не лучше, чем все это в выходном потоке - он только усложняется и вводит дополнительную задержку.
Если положить п параллельных AudioComponents в графа, который питает кольцевой буфер, который питает потребительскую нить, как можно гарантировать, что это не будет в конечном итоге в том же потоке, оставаться в синхронизации и с точностью до сэмпла ?
При написании n традиционные потоки POSIX с соединительными выходами, как достичь модели pull-Core CoreAudio, будет сосуществовать с такой моделью push в реальном времени?
Есть ли такой бесплатный код примера? Есть ли ссылка, учебник или учебник в написании такого кода? Я не нашел общедоступной информации. Меня удивляет, что такого вопроса не задавали раньше?
Заранее благодарен!
Спасибо, это очень разумное направление. Я изучил TPCircularBuffer М. Тайсона. Тем не менее, я немного смущен тем, как писать поток (non-CoreAudio), который будет постоянно запускаться и заполнять круговой буфер с помощью вычисленных выборок или нулей и будет связываться с потоком рендеринга, не блокируя ничего. Я бы предпочел не быть слишком OSX конкретным. Заранее спасибо. – user3078414
Я добавил несколько заметок о блокировании и не-osx vm кольцевых буферах. –
Спасибо за ваш комментарий, но не могли бы вы так любезно сообщить, где вы добавили заметки, пожалуйста? – user3078414