fix for half duplex and build issues from Toni Wilen.
This commit is contained in:
parent
076044de33
commit
836bd46253
1 changed files with 22 additions and 15 deletions
|
|
@ -77,7 +77,7 @@
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
|
#include <process.h>
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#undef PA_LOGE_
|
#undef PA_LOGE_
|
||||||
|
|
@ -121,24 +121,16 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
#define NOMMIDS
|
||||||
#define DYNAMIC_GUID(data) {data}
|
#define DYNAMIC_GUID(data) {data}
|
||||||
#define _INC_MMREG
|
|
||||||
#define _NTRTL_ /* Turn off default definition of DEFINE_GUIDEX */
|
#define _NTRTL_ /* Turn off default definition of DEFINE_GUIDEX */
|
||||||
#undef DEFINE_GUID
|
#undef DEFINE_GUID
|
||||||
#define DEFINE_GUID(n,data) EXTERN_C const GUID n = {data}
|
#define DEFINE_GUID(n,data) EXTERN_C const GUID n = {data}
|
||||||
#define DEFINE_GUID_THUNK(n,data) DEFINE_GUID(n,data)
|
#define DEFINE_GUID_THUNK(n,data) DEFINE_GUID(n,data)
|
||||||
#define DEFINE_GUIDEX(n) DEFINE_GUID_THUNK(n, STATIC_##n)
|
#define DEFINE_GUIDEX(n) DEFINE_GUID_THUNK(n, STATIC_##n)
|
||||||
#if !defined( DEFINE_WAVEFORMATEX_GUID )
|
|
||||||
#define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
|
|
||||||
#endif
|
|
||||||
#define WAVE_FORMAT_ADPCM 0x0002
|
|
||||||
#define WAVE_FORMAT_IEEE_FLOAT 0x0003
|
|
||||||
#define WAVE_FORMAT_ALAW 0x0006
|
|
||||||
#define WAVE_FORMAT_MULAW 0x0007
|
|
||||||
#define WAVE_FORMAT_MPEG 0x0050
|
|
||||||
#define WAVE_FORMAT_DRM 0x0009
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <mmreg.h>
|
||||||
#include <ks.h>
|
#include <ks.h>
|
||||||
#include <ksmedia.h>
|
#include <ksmedia.h>
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
|
|
@ -2924,11 +2916,26 @@ static DWORD WINAPI ProcessingThread(LPVOID pParam)
|
||||||
PaUtil_SetInputChannel(&stream->bufferProcessor,i,((unsigned char*)(stream->packets[inbuf].Header.Data))+(i*stream->inputSampleSize),stream->deviceInputChannels);
|
PaUtil_SetInputChannel(&stream->bufferProcessor,i,((unsigned char*)(stream->packets[inbuf].Header.Data))+(i*stream->inputSampleSize),stream->deviceInputChannels);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Only call the EndBufferProcessing function is the total input frames == total output frames */
|
|
||||||
if((stream->bufferProcessor.hostInputFrameCount[0] + stream->bufferProcessor.hostInputFrameCount[1]) ==
|
if (stream->recordingPin && stream->playbackPin) /* full duplex */
|
||||||
(stream->bufferProcessor.hostOutputFrameCount[0] + stream->bufferProcessor.hostOutputFrameCount[1]) )
|
{
|
||||||
|
/* Only call the EndBufferProcessing function when the total input frames == total output frames */
|
||||||
|
|
||||||
|
if((stream->bufferProcessor.hostInputFrameCount[0] + stream->bufferProcessor.hostInputFrameCount[1]) ==
|
||||||
|
(stream->bufferProcessor.hostOutputFrameCount[0] + stream->bufferProcessor.hostOutputFrameCount[1]) )
|
||||||
|
{
|
||||||
|
framesProcessed = PaUtil_EndBufferProcessing(&stream->bufferProcessor,&cbResult);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
framesProcessed = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
framesProcessed = PaUtil_EndBufferProcessing(&stream->bufferProcessor,&cbResult);
|
framesProcessed = PaUtil_EndBufferProcessing(&stream->bufferProcessor,&cbResult);
|
||||||
else framesProcessed = 0;
|
}
|
||||||
|
|
||||||
if( doChannelCopy )
|
if( doChannelCopy )
|
||||||
{
|
{
|
||||||
/* Copy the first output channel to the other channels */
|
/* Copy the first output channel to the other channels */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue