|
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, время: 08:49.
|