SDL - функция обратного вызова аудио иногда не вызывается во времени - PullRequest
0 голосов
/ 13 января 2012

Я новичок в SDL.Я разрабатываю медиаплеер с использованием SDL, и теперь я столкнулся с проблемой, заключающейся в том, что функция обратного вызова аудио иногда не вызывается вовремя, и это приводит к тому, что звук становится немного бесполезным.

Я использую такой фрагмент кода, чтобы открытьаудиоустройство:

wanted_spec.xxx = xxx;
wanted_spec.callback = audio_callback;    //audio_callback is my audio callback function
SDL_OpenAudio(&wanted_spec, &spec);

Моя ОС - Windows XP.

Знаете ли вы что-нибудь об этом?Может кто-нибудь подсказать, как синхронизировать подачу данных в функцию обратного вызова с задержкой 0.

Моя проблема - вместо предоставления всего файла wav через SDL_LoadWAV, я хочу передать образцы PCM (вероятно, 1024 образца). (Дизайн такойЯ буду получать сэмплы PCM)

Но проблема в том, что функция обратного вызова не вызывается вовремя или вызов задерживается, что приводит к исправлению звука.Я не могу синхронизировать передачу данных в функцию обратного вызова.

Можете ли вы предложить способ синхронизации передачи данных (выборок) в функцию обратного вызова или предоставить какое-либо приложение, в котором данные передаются в выборках?

1 Ответ

0 голосов
/ 13 января 2012

Нам нужны реальные значения, чтобы полностью ответить на ваш вопрос.

Какой у вас размер буфера?

Также следует понимать, что для SDL характерно не давать вам то, что вы хотите, поэтому проверьте, каков реальный размер буфера спецификации.

Я использую двоичный порт SDL mingw32 в Windows, который не даст мне буферов меньше одной секунды, независимо от того, что я запрашиваю.

...