Version 1.1.1
Fixed: With some sound card drivers, unwanted sounds were heard when audio got silent (e.g. by pausing). The modification of silent buffers, which seems to cause this issue, is now optionally available via the troubleshooting options in the Configurator. Fixed: In the Configuration Editor the peak gain display in the analysis panel was sometimes showing incorrect values. Improved: The GUI of the GraphicEQ command can now import the measurement text file format from Room EQ Wizard.
This commit is contained in:
1 parent
74359f5bee
commit
9d1d57b352
11 files changed
+85
-26
No files matched your search
+20
-8
@@ -47,6 +47,8 @@ EqualizerAPO::EqualizerAPO(IUnknown* pUnkOuter)
|
||||
else
|
||||
this->pUnkOuter = reinterpret_cast<IUnknown*>(static_cast<INonDelegatingUnknown*>(this));
|
||||
|
||||
allowSilentBufferModification = false;
|
||||
|
||||
childAPO = NULL;
|
||||
childRT = NULL;
|
||||
childCfg = NULL;
|
||||
@@ -142,6 +144,8 @@ HRESULT EqualizerAPO::Initialize(UINT32 cbDataSize, BYTE* pbyData)
|
||||
childApoGuid = apoInfo.preMixChildGuid;
|
||||
else
|
||||
childApoGuid = apoInfo.postMixChildGuid;
|
||||
|
||||
allowSilentBufferModification = apoInfo.currentInstallState.allowSilentBufferModification;
|
||||
}
|
||||
}
|
||||
catch (RegistryException e)
|
||||
@@ -425,18 +429,26 @@ void EqualizerAPO::APOProcess(UINT32 u32NumInputConnections,
|
||||
|
||||
if (ppInputConnections[0]->u32BufferFlags == BUFFER_SILENT)
|
||||
{
|
||||
unsigned outputFrameCount = ppOutputConnections[0]->u32ValidFrameCount * engine.getOutputChannelCount();
|
||||
boolean silent = true;
|
||||
for (unsigned i = 0; i < outputFrameCount; i++)
|
||||
if (allowSilentBufferModification)
|
||||
{
|
||||
if (outputFrames[i] != 0.0)
|
||||
unsigned outputFrameCount = ppOutputConnections[0]->u32ValidFrameCount * engine.getOutputChannelCount();
|
||||
boolean silent = true;
|
||||
for (unsigned i = 0; i < outputFrameCount; i++)
|
||||
{
|
||||
silent = false;
|
||||
break;
|
||||
if (abs(outputFrames[i]) > 1e-10)
|
||||
{
|
||||
silent = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// BUFFER_SILENT seems to be important for some sound card drivers, so only use BUFFER_VALID if there really is audio
|
||||
ppOutputConnections[0]->u32BufferFlags = silent ? BUFFER_SILENT : BUFFER_VALID;
|
||||
}
|
||||
else
|
||||
{
|
||||
memset(outputFrames, 0, ppOutputConnections[0]->u32ValidFrameCount * engine.getOutputChannelCount() * sizeof(float));
|
||||
ppOutputConnections[0]->u32BufferFlags = BUFFER_SILENT;
|
||||
}
|
||||
// BUFFER_SILENT seems to be important for some sound card drivers, so only use BUFFER_VALID if there really is audio
|
||||
ppOutputConnections[0]->u32BufferFlags = silent ? BUFFER_SILENT : BUFFER_VALID;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user