Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описаны минимальные шаги, необходимые для воспроизведения ранее загруженных звуковых данных в XAudio2.
После инициализации XAudio2 (см . практическое руководство. Инициализация XAudio2) и загрузки звуковых данных (см. инструкции. Загрузка файлов аудиоданных в XAudio2) можно воспроизводить звук, создавая исходный голос и передавая звуковые данные в него.
Воспроизведение звука
Сначала инициализировать XAudio2 для воспроизведения звука, выполнив действия, описанные в разделе "Практическое руководство. Инициализация XAudio2".
Затем заполните структуру WAVEFORMATEX и структуру XAUDIO2_BUFFER, выполнив действия, описанные в разделе "Практическое руководство. Загрузка звуковых файлов данных в XAudio2".
Примечание.
В зависимости от формата звуковых данных может потребоваться использовать большую структуру данных (которая содержитструктуру WAVEFORMATEX) вместо WAVEFORMATEX. Дополнительные сведения см. в разделе WAVEFORMATEX.
Затем, чтобы создать исходный голос, вызовите метод IXAudio2::CreateSourceVoice . Это даст вам указатель на интерфейс IXAudio2SourceVoice. Формат голоса определяется значениями, заданными в структуре WAVEFORMATEX.
IXAudio2SourceVoice* m_pXAudio2SourceVoice{}; ... winrt::check_hresult(m_xAudio2->CreateSourceVoice(&m_pXAudio2SourceVoice, (WAVEFORMATEX*)&wfx)));
Отправьте XAUDIO2_BUFFER в исходной голос, вызвав метод IXAudio2SourceVoice::SubmitSourceBuffer.
winrt::check_hresult(m_pXAudio2SourceVoice->SubmitSourceBuffer(&xAudio2Buffer));
Примечание.
Аудио данные, на которые указывает параметр pBuffer функции SubmitSourceBuffer, по-прежнему принадлежат приложению, и они должны оставаться выделены в памяти и доступны до тех пор, пока звук не перестанет воспроизводиться.
Чтобы запустить исходный голос, вызовите метод IXAudio2SourceVoice::Start . Поскольку все голоса XAudio2 по умолчанию отправляют свои выходные данные в мастер-голос, звук из исходного голоса автоматически поступает на звуковое устройство, созданное или выбранное при инициализации. В более сложном звуковом графе исходный голос должен указать, какому голосу должен быть направлен его вывод.
winrt::check_hresult(m_pXAudio2SourceVoice->Start(0));
Смарт-указатели
Для безопасности и удобства можно использовать смарт-указатель для интерфейса IXAudio2 . Но у голосовых интерфейсов (таких как IXAudio2MasteringVoice) нет метода release , поэтому при попытке использовать смарт-указатель для них появится ошибка сборки. В этих фрагментах кода мы используем умный указатель, где это возможно, и необработанный указатель, где это необходимо.