Это вообще возможно? Было бы очень круто, если бы мне каким-то образом удавалось вызывать функцию каждый раз, когда обрабатывается буфер. Любые другие идеи, кроме опроса источника, приветствуются: D
Определить, когда буфер был воспроизведен без опроса источника в OpenAL
comment
Вы имели в виду опрос источника?
- person geofftnz   schedule 05.04.2011
comment
+1 Действительно, извините, я отредактировал вопрос
- person Valentin Radu   schedule 05.04.2011
comment
Вот что-то похожее: stackoverflow.com/questions/1046315/
- person geofftnz   schedule 05.04.2011
comment
и это, которое, кажется, говорит нет: opensource.creative.com/pipermail /openal/2009-April/011616.html
- person geofftnz   schedule 05.04.2011
comment
Да, я думаю, что это невозможно, но все же интересно, будет ли это ресурсоемко по сравнению с опросом?
- person Valentin Radu   schedule 05.04.2011
Ответы (1)
Вы знаете, сколько сэмплов находится в каждом буфере, и вы знаете частоту дискретизации, с которой воспроизводится источник. Это должно дать вам довольно хорошее представление о том, когда источник закончит обработку буфера.
Если вы чувствуете себя очень бесстрашным, вы можете взломать исходный код OpenAL-soft. Судя по коду, вы поместите изменение в mixer.c
в самый конец файла, где-то ближе к концу функции MixSource()
.
Помня, конечно, что OpenAL-soft — это лицензия LGPL; поэтому вам нужно будет выпустить/сделать доступными любые изменения, которые вы внесли в саму библиотеку.
Если вы застряли с использованием предварительно включенных библиотек, у вас не так много вариантов. OpenAL отвергает идею функций обратного вызова.
person
JCooper
schedule
05.04.2011
Я думаю, что понимаю, что вы говорите, JCooper, однако я не знаю, смогу ли я коснуться этой реализации OpenAL (iOS). Если бы я мог, помогло бы мне знание частоты дискретизации и количества выборок в каждом буфере, если фактическая обработка зависит от процессора? (можно больше или меньше).
- person Valentin Radu; 05.04.2011
Я сомневаюсь, что вы можете изменить версию OpenAL для iOS, но я думаю, что вы можете заставить ее использовать OpenAL-soft в качестве плагина или что-то в этом роде. Я не уверен, что вы имеете в виду с остальной частью вашего комментария. Продолжительность обработки звукового буфера должна быть более или менее независимой от процессора.
- person JCooper; 05.04.2011
Я выбираю ваш ответ, потому что даже если для iOS это не сработает (в итоге я опрашиваю источник), возможно, это поможет кому-то еще, кто работает на другой платформе! Спасибо!
- person Valentin Radu; 05.04.2011