 |
15.08.2012, 04:02
|
#1
|
Нуждающийся
Регистрация: 23.02.2011
Сообщений: 54
Написано 3 полезных сообщений (для 5 пользователей)
|
Wav файл, XAudio2 и белый шум. Проблема(
Здравствуйте, кто там откликнулся
Опять пишу с проблеммой, а что поделать
Проблемма в том, что при чтении информации из wav файла(не сжатые данные, проверенно) вместо звука громма, воспроизводиться белый шум, и это меня безмерно печалит. Единственно в чем могу найти причину этого несчатья, что данные в wav файле в разных представлениях big-endian и little-endian, но ведь данные в wav файле представлены в локальном представлении и с ними не должно быть проблем. В чем тогда причина?
Буду благодарен великим гуру, которые мне помогут, ведь вы добрые люди
Исходник с аудио файлом и екзешником в приложенном архиве.
http://upwap.ru/2794891
|
(Offline)
|
|
15.08.2012, 12:48
|
#2
|
|
Ответ: Wav файл, XAudio2 и белый шум. Проблема(
скачать не даёт, может частота дискретизации не совпадает ? или в файле вместо pcm потока лежит adpcm, это уже аппаратное сжатие
|
|
|
15.08.2012, 21:36
|
#3
|
Нуждающийся
Регистрация: 23.02.2011
Сообщений: 54
Написано 3 полезных сообщений (для 5 пользователей)
|
Ответ: Wav файл, XAudio2 и белый шум. Проблема(
Тогда вот впринципе код, файл проверял, частота, битрейт совпадает(при дебаге смотрел). Что не так не знаю(

#include"windows.h"
#include<string>
#include"XAudio2.h"
struct sWavHeader
{
// WAV-формат начинается с RIFF-заголовка:
// Содержит символы "RIFF" в ASCII кодировке
// (0x52494646 в big-endian представлении)
char m_cChunkId[4];
// 36 + subchunk2Size, или более точно:
// 4 + (8 + subchunk1Size) + (8 + subchunk2Size)
// Это оставшийся размер цепочки, начиная с этой позиции.
// Иначе говоря, это размер файла - 8, то есть,
// исключены поля chunkId и chunkSize.
DWORD m_dwChunkSize;
// Содержит символы "WAVE"
// (0x57415645 в big-endian представлении)
char m_cFormat[4];
// Формат "WAVE" состоит из двух подцепочек: "fmt " и "data":
// Подцепочка "fmt " описывает формат звуковых данных:
// Содержит символы "fmt "
// (0x666d7420 в big-endian представлении)
char m_cSubchunk1Id[4];
// 16 для формата PCM.
// Это оставшийся размер подцепочки, начиная с этой позиции.
DWORD m_dwSubchunk1Size;
// Аудио формат, полный список можно получить здесь http://audiocoding.ru/wav_formats.txt
// Для PCM = 1 (то есть, Линейное квантование).
// Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
WORD m_wAudioFormat;
// Количество каналов. Моно = 1, Стерео = 2 и т.д.
WORD m_wNumChannels;
// Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
DWORD m_dwSampleRate;
// sampleRate * numChannels * bitsPerSample/8
DWORD m_dwByteRate;
// numChannels * bitsPerSample/8
// Количество байт для одного сэмпла, включая все каналы.
WORD m_wBlockAlign;
// Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
WORD m_wBitsPerSample;
// Подцепочка "data" содержит аудио-данные и их размер.
// Содержит символы "data"
// (0x64617461 в big-endian представлении)
char m_cSubchunk2Id[4];
// numSamples * numChannels * bitsPerSample/8
// Количество байт в области данных.
DWORD m_dwSubchunk2Size;
// Далее следуют непосредственно Wav данные.
};
//Заголовок wav файла
WAVEFORMATEX g_sDataDesc;
//Интерфейс звука
IXAudio2SourceVoice* g_pSource;
//Буффер и информация о аудио данных для интерфейса
XAUDIO2_BUFFER g_sBuffer;
//Основной аудио интерфейс
IXAudio2* g_pAudio;
//Основной голос
IXAudio2MasteringVoice* g_pMasteringVoice;
//Хендл файла
HANDLE v_hFile;
//Структура загаловка wav файла
sWavHeader v_sWavHeader;
//Буффер данных из файла
BYTE* g_pBuffer;
//Считаные байты
DWORD v_dwReadBytes;
int __stdcall WinMain(HINSTANCE a_hInstance,
HINSTANCE a_hPrevInstance,
LPSTR a_pCmdLine, int a_iCmdShow)
{
CoInitializeEx(0,COINIT_MULTITHREADED);
if(FAILED(XAudio2Create(&g_pAudio)))
{
MessageBox(NULL, "Can't create main audio interface.", "Error", MB_OK);
return false;
}
g_pAudio->CreateMasteringVoice(&g_pMasteringVoice);
//Открываем файл и считываем информацию об аудио файле
v_hFile=CreateFile("Grom.wav",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,0);
ReadFile(v_hFile,(void*)&v_sWavHeader,sizeof(sWavHeader),&v_dwReadBytes,NULL);
//Выделяю память под буффер
g_pBuffer=new BYTE[v_sWavHeader.m_dwChunkSize-36];
//Считываю аудио данные
ReadFile(v_hFile,(void*)g_pBuffer,v_sWavHeader.m_dwChunkSize-36,&v_dwReadBytes,NULL);
CloseHandle(v_hFile);
//Заполняю структуры для хаудио2
g_sDataDesc.wFormatTag=1;
g_sDataDesc.nChannels=v_sWavHeader.m_wNumChannels;
g_sDataDesc.nSamplesPerSec=v_sWavHeader.m_dwSampleRate;
g_sDataDesc.nAvgBytesPerSec=v_sWavHeader.m_dwByteRate;
g_sDataDesc.nBlockAlign=v_sWavHeader.m_wBlockAlign;
g_sDataDesc.wBitsPerSample=v_sWavHeader.m_wBitsPerSample;
g_sDataDesc.cbSize=18;
g_sBuffer.Flags=XAUDIO2_END_OF_STREAM;
g_sBuffer.AudioBytes=v_sWavHeader.m_dwChunkSize-36;
g_sBuffer.pAudioData=g_pBuffer;
g_sBuffer.PlayBegin=0;
g_sBuffer.PlayLength=0;
g_sBuffer.LoopBegin=0;
g_sBuffer.LoopLength=0;
g_sBuffer.LoopCount=XAUDIO2_LOOP_INFINITE;
//Создаю источник
g_pAudio->CreateSourceVoice(&g_pSource,&g_sDataDesc);
//Передаю информацию в буффер
g_pSource->SubmitSourceBuffer(&g_sBuffer);
//И о божественная какашка, почему ты проигрываешь белый шум!!!!!!
g_pSource->Start();
MessageBox(NULL, "Stop.", "Message", MB_OK);
g_pSource->Stop();
g_pSource->DestroyVoice();
g_pMasteringVoice->DestroyVoice();
g_pAudio->Release();
CoUninitialize();
return 0;
}
|
(Offline)
|
|
15.08.2012, 22:15
|
#4
|
|
Ответ: Wav файл, XAudio2 и белый шум. Проблема(
выложи еще аудиофайл для полного счастья
|
|
|
16.08.2012, 17:38
|
#5
|
Нуждающийся
Регистрация: 23.02.2011
Сообщений: 54
Написано 3 полезных сообщений (для 5 пользователей)
|
Ответ: Wav файл, XAudio2 и белый шум. Проблема(
не получается выложить, какие файлы во вложения ни кидал, все неудачно загружаются(
|
(Offline)
|
|
16.08.2012, 17:50
|
#6
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Wav файл, XAudio2 и белый шум. Проблема(
про файлообменники не слышал? rghost.ru
|
(Offline)
|
|
16.08.2012, 19:52
|
#7
|
Нуждающийся
Регистрация: 23.02.2011
Сообщений: 54
Написано 3 полезных сообщений (для 5 пользователей)
|
Ответ: Wav файл, XAudio2 и белый шум. Проблема(
Сообщение от pax
про файлообменники не слышал? rghost.ru
|
http://upwap.ru/2794891
Так я же в начале темы кинул ссылку, просто у одного пользователя не открылась, у меня она работает
И все я решил проблему, все-таки коварный виндовс использовал кодирование для файла, так что моя оплошность  Тему можно закрыть 
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:50.
|