Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.118.250] |
|
Сообщ.
#1
,
|
|
|
Всем здорова, написал программку воспроизведения wav файла. в итогу в колонках появляется гудок и все
int _tmain(int argc, _TCHAR* argv[]) { WAVEFORMATEX waveformat; WAVEOUTCAPS waveoutcaps; WAVEHDR wavehdr; char szPname[35]; MMRESULT result; DWORD RIFF; DWORD SIZE_OF_DATA; PCMWAVEFORMAT pcmwaveformat; char WAVE[4]; char fmt[4]; char stroca[4]; FILE *f; char * data; f = fopen("D:\\Minimize2.wav","r"); fread(&RIFF,sizeof(DWORD),1,f); fread(&SIZE_OF_DATA,sizeof(DWORD),1,f); fread(&WAVE,4,1,f); fread(&fmt,4,1,f); fread(&SIZE_OF_DATA,sizeof(DWORD),1,f); fread(&pcmwaveformat,sizeof(PCMWAVEFORMAT),1,f); fread(&stroca,4,1,f); fread(&SIZE_OF_DATA,sizeof(DWORD),1,f); data = new char[SIZE_OF_DATA]; fread(data,SIZE_OF_DATA,1,f); fclose(f); wavehdr.lpData = data; wavehdr.dwBufferLength = SIZE_OF_DATA; wavehdr.dwFlags = 0; wavehdr.dwLoops = 0; wavehdr.dwUser = 0; wavehdr.lpNext = 0; wavehdr.reserved = 0; wavehdr.dwBytesRecorded = 0; waveformat.wFormatTag = pcmwaveformat.wf.wFormatTag; waveformat.nChannels = pcmwaveformat.wf.nChannels; waveformat.nSamplesPerSec = pcmwaveformat.wf.nSamplesPerSec; waveformat.wBitsPerSample = pcmwaveformat.wBitsPerSample; waveformat.nBlockAlign = pcmwaveformat.wf.nBlockAlign;//(waveformat.nChannels * waveformat.wBitsPerSample) / 8; waveformat.nAvgBytesPerSec = pcmwaveformat.wf.nAvgBytesPerSec;//(waveformat.nChannels *waveformat.nSamplesPerSec * waveformat.nBlockAlign) / 8; waveformat.cbSize = sizeof(WAVEFORMATEX); result = waveOutOpen(&wOut,WAVE_MAPPER,&waveformat,(DWORD)CallbackProc,0,CALLBACK_FUNCTION); outResult("open ",result); result = waveOutSetVolume(wOut,0xffff); outResult("SetVolume ",result); result = waveOutPrepareHeader(wOut,&wavehdr,sizeof(WAVEHDR)); outResult("Prepare ",result); result = waveOutWrite(wOut,&wavehdr,sizeof(WAVEHDR)); outResult("Write ",result); getchar(); result = waveOutClose(wOut); outResult("close ",result); getchar(); return 0; } void CALLBACK CallbackProc ( HWAVEOUT Handle, UINT Msg, DWORD Instance, DWORD Param1, DWORD Param2 ) { WAVEHDR * wavehdr; if (Msg == WOM_DONE) { wavehdr = (WAVEHDR *)Param1; } } Что я сделал не так? |