1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| if (ts.in.nbuf==0)
ts.in.nbuf=2;
pa->sizebufperchannel=ts.in.bufko<<10;
if (ts.in.bits==16)
pa->sizebufperchannel<<=1;
if (ts.in.channel==THSound_Channel::stereo)
pa->sizebufperchannel<<=1;
pa->exiting=false;
pa->param=ts.in.param;
pa->devent=ts.in.devent;
pa->endev=ts.in.endev;
pa->hEvent=ts.in.hEvent;
pa->nbuf=ts.in.nbuf;
pa->WaveHeader=new WAVEHDR[pa->nbuf];
pa->typeheader=new BYTE[pa->nbuf];
strcpy_s(pa->name,name);
for (int i = 0 ; i<pa->nbuf;i++)
pa->typeheader[i]=F_FREE;
pa->WaveFormat.wFormatTag = WAVE_FORMAT_PCM; // Uncompressed sound format
pa->WaveFormat.nChannels = 1; // 1=Mono 2=Stereo
if (ts.in.channel==THSound_Channel::stereo)
pa->WaveFormat.nChannels=2;
pa->WaveFormat.wBitsPerSample = ts.in.bits; // Bits per sample per channel
pa->WaveFormat.nSamplesPerSec = ts.in.freq; // Sample Per Second
pa->WaveFormat.nBlockAlign = pa->WaveFormat.nChannels * pa->WaveFormat.wBitsPerSample / 8;
pa->WaveFormat.nAvgBytesPerSec = (pa->WaveFormat.nSamplesPerSec * pa->WaveFormat.nBlockAlign);
pa->WaveFormat.cbSize = 0;
DWORD rmci;
DWORD ThreadID;
HANDLE hThread = CreateThread( 0, 0, ( LPTHREAD_START_ROUTINE )ThreadFunc, pa, 0, &ThreadID );
if ( ! hThread )
{
if (mcierror!=NULL)
*mcierror=0xffff;
delete pa;
return NULL;
}
pa->hThread=hThread;
CloseHandle(pa->hEvent);
pa->thid=ThreadID;
int nbs=0;
bool err=false;
while (1)
{
rmci=waveOutOpen(&pa->hWave,WAVE_MAPPER,&pa->WaveFormat,ThreadID,0,CALLBACK_THREAD); ///Freeze ICI
if (rmci==MMSYSERR_NOERROR)
break;
else
{
err=true;
Sleep(1000);
}
nbs++;
if (nbs>=16)
break;
}
static DWORD WINAPI ThreadFunc( void * Param )
{
//bool waitsound = true;
PA pa=(PA)Param;
pa->waitsound = true;
pa->readding = false;
//int i, j, k, l, n, v, f;
HWAVEOUT hw;
MSG Msg;
Param = Param; // Eviter un warning à la compilation
while( GetMessage( &Msg, 0, 0, 0 ) )
{
...
...
} |
Partager