Пытаюсь записать звук, файл создается, буфер передается, но не воспроизводится. что-то не правильно, не пойму что, подскажите что не так? Код | //---------------------------------------------------------------------------
#include <vcl.h> #include <mmsystem.h> #pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- HWAVEIN hWaveIn; WAVEFORMATEX WaveFormat; WAVEHDR WaveHdr; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { WaveFormat.wFormatTag = WAVE_FORMAT_PCM; WaveFormat.nChannels = 1; WaveFormat.nSamplesPerSec = 16000L; WaveFormat.nBlockAlign = 2; WaveFormat.nAvgBytesPerSec = WaveFormat.nSamplesPerSec*WaveFormat.nBlockAlign; WaveFormat.wBitsPerSample = 16; WaveFormat.cbSize = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { waveInOpen(&hWaveIn, WAVE_MAPPER, &WaveFormat, (DWORD)Handle, 0L, CALLBACK_WINDOW);
ULONG BufferSize = WaveFormat.nBlockAlign*WaveFormat.nSamplesPerSec*10; WaveHdr.lpData = (char*)malloc(BufferSize); WaveHdr.dwBufferLength = BufferSize;
waveInPrepareHeader(hWaveIn, &WaveHdr, sizeof(WAVEHDR)); waveInAddBuffer(hWaveIn, &WaveHdr, sizeof(WAVEHDR));
waveInStart(hWaveIn); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { waveInStop(hWaveIn);
waveInUnprepareHeader(hWaveIn, &WaveHdr, sizeof(WAVEHDR));
Label1->Caption = WaveHdr.dwBytesRecorded;
//ULONG BufferSize = WaveFormat.nBlockAlign*WaveFormat.nSamplesPerSec*10; HMMIO hmmio; //Создаём новый файл hmmio = mmioOpen(L"testwww.wav", 0, MMIO_CREATE | MMIO_WRITE); mmioSeek(hmmio, 0, SEEK_SET); //создание заголовка MMCKINFO mmCkInfo; mmCkInfo.ckid = mmioFOURCC('R', 'I', 'F', 'F'); mmCkInfo.fccType = mmioFOURCC('W', 'A', 'V', 'E'); mmCkInfo.dwFlags = MMIO_DIRTY; mmioCreateChunk(hmmio, &mmCkInfo, MMIO_CREATERIFF);
//создание блока с информацией из структуры WAVEFORMATEX mmCkInfo.ckid = mmioFOURCC('f', 'm', 't', ' '); mmCkInfo.dwFlags = MMIO_DIRTY; mmCkInfo.cksize = sizeof(WaveFormat); mmioCreateChunk(hmmio, &mmCkInfo, NULL); mmioWrite(hmmio,(char*)&WaveFormat,sizeof(WaveFormat));
//создание одного болока с данными mmCkInfo.ckid = mmioFOURCC('d', 'a', 't', 'a'); mmCkInfo.cksize = WaveHdr.dwBytesRecorded; mmCkInfo.dwFlags = MMIO_DIRTY; mmioCreateChunk(hmmio, &mmCkInfo, NULL); mmioWrite(hmmio,WaveHdr.lpData,WaveHdr.dwBytesRecorded);
mmioClose(hmmio,MMIO_FHOPEN);
free(WaveHdr.lpData); waveInClose(hWaveIn);
} //---------------------------------------------------------------------------
|
|