// Create new AVI file using AVIFileOpen.
hr = AVIFileOpen(&pf, lpFileAvi, OF_WRITE | OF_CREATE, NULL);
if (hr != S_OK)
return;
// Create a stream using AVIFileCreateStream.
hr = AVIFileCreateStream(pf, &ps, &ahdr);
if (hr != S_OK) { //Stream created OK? If not, close file.
AVIFileRelease(pf);
return;
}
hr = AVIStreamSetFormat(ps,0,&wfx,sizeof(WAVEFORMATEX));
if (hr != S_OK) { //Stream Set Format OK? If not, close file.
AVIStreamRelease(ps);
AVIFileRelease(pf);
return;
}
int nsamp = 0;
do {
LPBYTE data = new BYTE[numbytes + 1];
mf.ReadData(data);
hr = AVIStreamWrite(ps,nsamp++,1,data,numbytes,0,NULL,NULL);
delete[] data;
} while(numbytes = mf.GetDataLen());
// Close the stream and file.
AVIStreamRelease(ps);
AVIFileRelease(pf);
}