Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Воспроизведение стереозвука с помощью DirectSound 
:(
    Опции темы
NightWishMaster
Дата 12.11.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 14.4.2006

Репутация: нет
Всего: нет



Воспроизведение одного звукового потока не представляет проблем. Как воспроизводить стереозвук? Можно создать для каждого канала свой буффер, установить вывод для каждого буффера на соответствующую колонку и начать одновременный вывод. При длительном проигрывании наблюдается разбалансировка звука, то есть в этом случае возникает проблема синхронизации каналов между собой. Я думаю, не я первый столкнулся с этой проблемой. Может кто-нибудь что-то подсказать?
Другой вариант – микшировать оба канала в один звуковой поток программно и уже после этого посылать на проигрывание в буффер. Только вот никак не придумаю, как их смикшировать?
Заранее благодарен за советы.

PM MAIL   Вверх
ZloS
Дата 11.12.2006, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.12.2006

Репутация: нет
Всего: нет



Загружать стереозвук в буффер.
WAVEFORMATEX::nChannels
PM MAIL   Вверх
FelikZ
Дата 11.12.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



Другой вариант:
Микшировать оба канала если это простой PCM можно так:
  • 1. Создать буффер с удвоеным размером (важно что-бы оба канала были с одинаковой длиной).
  • 2. Микшировать оба канала в новый буффер таким образом:
    Код

    //first_buffer - Первый канал
    //sec_buffer - Второй канал
    //new_buffer - Новый буффер
    //len - длина первого или второго канала
    for(int i=0;i<len;i++)
    {
        if(i%2)
        {
            new_buffer[i]=first_buffer[i];
        }
        else
        {
            new_buffer[i]=sec_buffer[i];
        }
    }



--------------------
user posted image
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.