Вы знаете, сколько семплов находится в каждом буфере, и вы знаете частоту семплирования, на которой воспроизводится источник.Это должно дать вам довольно хорошее представление о том, когда источник завершит обработку буфера.
Если вы чувствуете себя очень смело, вы можете взломать это в исходный код OpenAL.Судя по внешнему виду кода, вы поместите изменение в mixer.c
в самом конце файла, где-то ближе к концу функции MixSource()
.
Помня, конечно, что OpenAL-soft это lGPL;поэтому вам нужно выпустить / сделать доступными любые изменения, которые вы внесли в саму библиотеку.
Если вы застряли с использованием предварительно включенных библиотек, у вас не так много вариантов.OpenAL отвергает идею функций обратного вызова.