allora per adesso non ho impostato alcuna callback ed ora ho il seguente codice:
codice:
#include <windows.h>
#pragma comment (lib, "winmm.lib")
#include <mmsystem.h>
#include <iostream>
#define system_buf_len 4096
BOOL CALLBACK myCallback();
int main()
{
// Definisco la struttura WAVEFORMATEX
WAVEFORMATEX waveFormat;
waveFormat.wFormatTag = WAVE_FORMAT_PCM;
waveFormat.wBitsPerSample = 16;
waveFormat.nChannels = 1;
waveFormat.nSamplesPerSec = 44100;
waveFormat.nBlockAlign = waveFormat.nChannels * waveFormat.wBitsPerSample / 8;
waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAlign;
waveFormat.cbSize = 0;
MMRESULT mmres; // ...
HWAVEIN phvi; // Handle for the input device
UINT uDevice = 0; // Device id "Gruppo Microfoni"
// waveInOpen
mmres = waveInOpen(&phvi,
uDevice,
(LPWAVEFORMATEX)&waveFormat,
0,
0,
CALLBACK_EVENT
);
// Prepare Buffer
char buf[system_buf_len];
WAVEHDR buffer;
buffer.lpData = &buf;
buffer.dwBufferLength = system_buf_len;
buffer.dwBytesRecorded = 0;
buffer.dwUser = 0;
buffer.dwFlags = 0;
buffer.dwLoops = 0;
// waveInPrepareHeader
waveInPrepareHeader(phvi, &buffer, sizeof(WAVEHDR));
// waveInAddBuffer
waveInAddBuffer(phvi, &buffer, sizeof(WAVEHDR));
return 0;
}
mi ritorna questo errore alla riga di codice:
codice:
buffer.lpData = &buf;
cannot convert from 'char (*)[4096]' to 'LPSTR'
credevo dovessi passargli un pointer al buffer (buf)...
così ho letto su:
http://msdn.microsoft.com/en-us/library/aa909814.aspx
lpData
Long pointer to the address of the waveform buffer. This buffer must be block-aligned according to the nBlockAlign member of the WAVEFORMATEX structure used to open the device.
codice:
typedef struct {
LPSTR lpData;
DWORD dwBufferLength;
DWORD dwBytesRecorded;
DWORD dwUser;
DWORD dwFlags;
DWORD dwLoops;
struct wavehdr_tag* lpNext;
DWORD reserved;}
WAVEHDR;