Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 15.08.2012, 04:02   #1
616}[aKeP
Нуждающийся
 
Аватар для 616}[aKeP
 
Регистрация: 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
jimon
 
Сообщений: n/a
Ответ: Wav файл, XAudio2 и белый шум. Проблема(

скачать не даёт, может частота дискретизации не совпадает ? или в файле вместо pcm потока лежит adpcm, это уже аппаратное сжатие
 
Ответить с цитированием
Старый 15.08.2012, 21:36   #3
616}[aKeP
Нуждающийся
 
Аватар для 616}[aKeP
 
Регистрация: 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;

    
//Интерфейс звука
    
IXAudio2SourceVoiceg_pSource;

    
//Буффер и информация о аудио данных для интерфейса
    
XAUDIO2_BUFFER g_sBuffer;

    
//Основной аудио интерфейс
    
IXAudio2g_pAudio;
            
    
//Основной голос
    
IXAudio2MasteringVoiceg_pMasteringVoice;

    
//Хендл файла
    
HANDLE v_hFile;

    
//Структура загаловка wav файла
    
sWavHeader v_sWavHeader;

    
//Буффер данных из файла
    
BYTEg_pBuffer;

    
//Считаные байты
    
DWORD v_dwReadBytes;

int __stdcall WinMain(HINSTANCE a_hInstance,
                      
HINSTANCE a_hPrevInstance,
                      
LPSTR a_pCmdLineint 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
jimon
 
Сообщений: n/a
Ответ: Wav файл, XAudio2 и белый шум. Проблема(

выложи еще аудиофайл для полного счастья
 
Ответить с цитированием
Старый 16.08.2012, 17:38   #5
616}[aKeP
Нуждающийся
 
Аватар для 616}[aKeP
 
Регистрация: 23.02.2011
Сообщений: 54
Написано 3 полезных сообщений
(для 5 пользователей)
Ответ: Wav файл, XAudio2 и белый шум. Проблема(

не получается выложить, какие файлы во вложения ни кидал, все неудачно загружаются(
(Offline)
 
Ответить с цитированием
Старый 16.08.2012, 17:50   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Wav файл, XAudio2 и белый шум. Проблема(

про файлообменники не слышал? rghost.ru
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 16.08.2012, 19:52   #7
616}[aKeP
Нуждающийся
 
Аватар для 616}[aKeP
 
Регистрация: 23.02.2011
Сообщений: 54
Написано 3 полезных сообщений
(для 5 пользователей)
Ответ: Wav файл, XAudio2 и белый шум. Проблема(

Сообщение от pax Посмотреть сообщение
про файлообменники не слышал? rghost.ru
http://upwap.ru/2794891
Так я же в начале темы кинул ссылку, просто у одного пользователя не открылась, у меня она работает

И все я решил проблему, все-таки коварный виндовс использовал кодирование для файла, так что моя оплошность Тему можно закрыть
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com