LINUX.ORG.RU

OpenAL воспроизведение стерео сигнала

 


0

2

Я пытаюсь проиграть стерео сигнал, у которого данные есть только на правом канале.

Заполняю буферные данные: они чередуются нулями и данными с правого канала.

Ожидаю, что в левом наушнике будет тихо, звучать будет только правый наушник. Но звучат оба наушника, почему так происходит?


Как именно воспроизводишь? Покажи пример кода.

mironov_ivan ★★★★★ ()
Ответ на: комментарий от mironov_ivan

Куски кода:

Инициализация

device = alcOpenDevice(NULL);
context = alcCreateContext(device, NULL);
alcMakeContextCurrent(context);

alGenBuffers(buffersCount, buffers);
alGenSources(1, &source);

Читаю данные и помещаю их в buffer

alBufferData(buffer, format, &bufferData[0], static_cast<ALsizei>(readedBytes), audioBuffer->GetFrequency());
alSourceQueueBuffers(source, 1, &buffer);

Проигрываю

alSourcePlay(source);

Это все фрагменты кода, т.к. они разбросаны по разным методам

uKCuH ()
Ответ на: комментарий от uKCuH

Как файл был прочитан? Откуда взялся format? Где у тебя расположен «слушатель»? Где «источник звука»? И так далее...

mironov_ivan ★★★★★ ()
Ответ на: комментарий от mironov_ivan

format — AL_FORMAT_STEREO16

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

Данные которые я передал на вход alBufferData представляют собой чередующийся массив PCM данных '0x00 0x00 0xFF 0xFF 0x00 0x00 0xFF 0xFF...' Т.е. для левого канала всегда нули, для правого канала «истинные» данные.

anonymous ()
Ответ на: комментарий от anonymous

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

Я давно не трогал openal, но по логике как раз в этом случае даже моно-источник должен давать звук во всех каналах.

mironov_ivan ★★★★★ ()
Последнее исправление: mironov_ivan (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.