Fix for WaveRT WDM drivers that do not support memory mapped position register, and correct 8 channel speaker geometry mapping.
This commit is contained in:
parent
33df37a804
commit
dd82ba9976
2 changed files with 26 additions and 2 deletions
|
|
@ -4959,8 +4959,18 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
|||
|
||||
if (result != paNoError)
|
||||
{
|
||||
unsigned long pos = 0xdeadc0de;
|
||||
PA_DEBUG(("Failed to register capture position register, using PinGetAudioPositionViaIOCTL\n"));
|
||||
stream->capture.pPin->fnAudioPosition = PinGetAudioPositionViaIOCTL;
|
||||
/* Test position function */
|
||||
result = (stream->capture.pPin->fnAudioPosition)(stream->capture.pPin, &pos);
|
||||
if (result != paNoError || pos != 0x0)
|
||||
{
|
||||
PA_DEBUG(("Failed to read capture position register (IOCTL)\n"));
|
||||
PaWinWDM_SetLastErrorInfo(paUnanticipatedHostError, "Failed to read capture position register (IOCTL)");
|
||||
result = paUnanticipatedHostError;
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -5071,8 +5081,18 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
|||
|
||||
if (result != paNoError)
|
||||
{
|
||||
unsigned long pos = 0xdeadc0de;
|
||||
PA_DEBUG(("Failed to register rendering position register, using PinGetAudioPositionViaIOCTL\n"));
|
||||
stream->render.pPin->fnAudioPosition = PinGetAudioPositionViaIOCTL;
|
||||
/* Test position function */
|
||||
result = (stream->render.pPin->fnAudioPosition)(stream->render.pPin, &pos);
|
||||
if (result != paNoError || pos != 0x0)
|
||||
{
|
||||
PA_DEBUG(("Failed to read render position register (IOCTL)\n"));
|
||||
PaWinWDM_SetLastErrorInfo(paUnanticipatedHostError, "Failed to read render position register (IOCTL)");
|
||||
result = paUnanticipatedHostError;
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -104,7 +104,6 @@ void PaWin_InitializeWaveFormatExtensible( PaWinWaveFormat *waveFormat,
|
|||
*((GUID*)&waveFormat->fields[PAWIN_INDEXOF_SUBFORMAT]) = guid;
|
||||
}
|
||||
|
||||
|
||||
PaWinWaveFormatChannelMask PaWin_DefaultChannelMask( int numChannels )
|
||||
{
|
||||
switch( numChannels ){
|
||||
|
|
@ -129,11 +128,16 @@ PaWinWaveFormatChannelMask PaWin_DefaultChannelMask( int numChannels )
|
|||
return PAWIN_SPEAKER_5POINT1;
|
||||
/* case 7: */
|
||||
case 8:
|
||||
return PAWIN_SPEAKER_7POINT1;
|
||||
/* RoBi: PAWIN_SPEAKER_7POINT1_SURROUND fits normal surround sound setups better than PAWIN_SPEAKER_7POINT1, f.i. NVidia HDMI Audio
|
||||
output is silent on channels 5&6 with NVidia drivers, and channel 7&8 with Micrsoft HD Audio driver using PAWIN_SPEAKER_7POINT1.
|
||||
With PAWIN_SPEAKER_7POINT1_SURROUND both setups work OK. */
|
||||
return PAWIN_SPEAKER_7POINT1_SURROUND;
|
||||
}
|
||||
|
||||
/* Apparently some Audigy drivers will output silence
|
||||
if the direct-out constant (0) is used. So this is not ideal.
|
||||
|
||||
RoBi 2012-12-19: Also, NVidia driver seem to output garbage instead. Again not very ideal.
|
||||
*/
|
||||
return PAWIN_SPEAKER_DIRECTOUT;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue