always disable wmme clip and dither if an spdif passthrough wave format is requested
This commit is contained in:
parent
78131d9a78
commit
5bf449b175
3 changed files with 15 additions and 2 deletions
|
|
@ -53,6 +53,10 @@ extern "C"
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
|
||||||
|
/* The following are flags which can be set in
|
||||||
|
PaWinMmeStreamInfo's flags field.
|
||||||
|
*/
|
||||||
|
|
||||||
#define paWinMmeUseLowLevelLatencyParameters (0x01)
|
#define paWinMmeUseLowLevelLatencyParameters (0x01)
|
||||||
#define paWinMmeUseMultipleDevices (0x02) /* use mme specific multiple device feature */
|
#define paWinMmeUseMultipleDevices (0x02) /* use mme specific multiple device feature */
|
||||||
#define paWinMmeUseChannelMask (0x04)
|
#define paWinMmeUseChannelMask (0x04)
|
||||||
|
|
@ -64,7 +68,8 @@ extern "C"
|
||||||
*/
|
*/
|
||||||
#define paWinMmeDontThrottleOverloadedProcessingThread (0x08)
|
#define paWinMmeDontThrottleOverloadedProcessingThread (0x08)
|
||||||
|
|
||||||
/* flags for non-PCM spdif passthrough */
|
/* Flags for non-PCM spdif passthrough.
|
||||||
|
*/
|
||||||
#define paWinMmeWaveFormatDolbyAc3Spdif (0x10)
|
#define paWinMmeWaveFormatDolbyAc3Spdif (0x10)
|
||||||
#define paWinMmeWaveFormatWmaSpdif (0x20)
|
#define paWinMmeWaveFormatWmaSpdif (0x20)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2389,6 +2389,14 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
|
||||||
return paInvalidFlag; /* unexpected platform specific flag */
|
return paInvalidFlag; /* unexpected platform specific flag */
|
||||||
|
|
||||||
|
|
||||||
|
/* always disable clipping and dithering if we are outputting a raw spdif stream */
|
||||||
|
if( (winMmeSpecificOutputFlags & paWinMmeWaveFormatDolbyAc3Spdif)
|
||||||
|
|| (winMmeSpecificOutputFlags & paWinMmeWaveFormatWmaSpdif) ){
|
||||||
|
|
||||||
|
streamFlags = streamFlags | paClipOff | paDitherOff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
result = CalculateBufferSettings( &framesPerHostInputBuffer, &hostInputBufferCount,
|
result = CalculateBufferSettings( &framesPerHostInputBuffer, &hostInputBufferCount,
|
||||||
&framesPerHostOutputBuffer, &hostOutputBufferCount,
|
&framesPerHostOutputBuffer, &hostOutputBufferCount,
|
||||||
inputChannelCount, hostInputSampleFormat, suggestedInputLatency, inputStreamInfo,
|
inputChannelCount, hostInputSampleFormat, suggestedInputLatency, inputStreamInfo,
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ int main(int argc, char* argv[])
|
||||||
&outputParameters,
|
&outputParameters,
|
||||||
SAMPLE_RATE,
|
SAMPLE_RATE,
|
||||||
FRAMES_PER_BUFFER,
|
FRAMES_PER_BUFFER,
|
||||||
paClipOff | paDitherOff, /* IMPORTANT must disable clipping and dithering for WMME AC3 */
|
0,
|
||||||
patestCallback,
|
patestCallback,
|
||||||
&data );
|
&data );
|
||||||
if( err != paNoError ) goto error;
|
if( err != paNoError ) goto error;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue