Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/sanear.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Marsev <alex.marsev@gmail.com>2015-10-12 00:08:13 +0300
committerAlex Marsev <alex.marsev@gmail.com>2015-10-12 17:14:27 +0300
commitf6cb07d4d6eb50b67109a7eaaa8e92af6c4d276a (patch)
treeb3916f916aeff616ebdb9d5c090098f28bcdbc54
parentf1e11f7bfce356ac975179999338ad69509135b2 (diff)
Remove DspRealtimeRate processor
-rw-r--r--sanear.vcxproj2
-rw-r--r--sanear.vcxproj.filters6
-rw-r--r--src/AudioRenderer.cpp1
-rw-r--r--src/AudioRenderer.h3
-rw-r--r--src/DspRealtimeRate.cpp125
-rw-r--r--src/DspRealtimeRate.h41
6 files changed, 0 insertions, 178 deletions
diff --git a/sanear.vcxproj b/sanear.vcxproj
index eb6d000..a87a6b2 100644
--- a/sanear.vcxproj
+++ b/sanear.vcxproj
@@ -110,7 +110,6 @@
<ClInclude Include="src\DspChunk.h" />
<ClInclude Include="src\AudioRenderer.h" />
<ClInclude Include="src\DspTempo.h" />
- <ClInclude Include="src\DspRealtimeRate.h" />
<ClInclude Include="src\DspVolume.h" />
<ClInclude Include="src\Interfaces.h" />
<ClInclude Include="src\MyBasicAudio.h" />
@@ -136,7 +135,6 @@
<ClCompile Include="src\DspMatrix.cpp" />
<ClCompile Include="src\DspChunk.cpp" />
<ClCompile Include="src\DspTempo.cpp" />
- <ClCompile Include="src\DspRealtimeRate.cpp" />
<ClCompile Include="src\DspVolume.cpp" />
<ClCompile Include="src\MyBasicAudio.cpp" />
<ClCompile Include="src\MyFilter.cpp" />
diff --git a/sanear.vcxproj.filters b/sanear.vcxproj.filters
index aa707a8..1b2bf8a 100644
--- a/sanear.vcxproj.filters
+++ b/sanear.vcxproj.filters
@@ -65,9 +65,6 @@
<ClCompile Include="src\AudioDevice.cpp">
<Filter>Renderer</Filter>
</ClCompile>
- <ClCompile Include="src\DspRealtimeRate.cpp">
- <Filter>Processors</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\DspMatrix.h">
@@ -144,9 +141,6 @@
<ClInclude Include="src\AudioDevice.h">
<Filter>Renderer</Filter>
</ClInclude>
- <ClInclude Include="src\DspRealtimeRate.h">
- <Filter>Processors</Filter>
- </ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="DirectShow">
diff --git a/src/AudioRenderer.cpp b/src/AudioRenderer.cpp
index 0c4ca8c..ffb4c06 100644
--- a/src/AudioRenderer.cpp
+++ b/src/AudioRenderer.cpp
@@ -639,7 +639,6 @@ namespace SaneAudioRenderer
m_dspMatrix.Initialize(inChannels, inMask, outChannels, outMask);
m_dspRate.Initialize(m_live || m_externalClock, inRate, outRate, outChannels);
- //m_dspRealtimeRate.Initialize(m_live || m_externalClock, inRate, outRate, outChannels);
m_dspTempo.Initialize(m_rate, outRate, outChannels);
m_dspCrossfeed.Initialize(m_settings, outRate, outChannels, outMask);
m_dspLimiter.Initialize(outRate, outChannels, m_device->IsExclusive());
diff --git a/src/AudioRenderer.h b/src/AudioRenderer.h
index 91522ac..454ae58 100644
--- a/src/AudioRenderer.h
+++ b/src/AudioRenderer.h
@@ -9,7 +9,6 @@
#include "DspMatrix.h"
#include "DspRate.h"
#include "DspTempo.h"
-#include "DspRealtimeRate.h"
#include "DspVolume.h"
#include "Interfaces.h"
#include "SampleCorrection.h"
@@ -75,7 +74,6 @@ namespace SaneAudioRenderer
{
f(&m_dspMatrix);
f(&m_dspRate);
- //f(&m_dspRealtimeRate);
f(&m_dspTempo);
f(&m_dspCrossfeed);
f(&m_dspVolume);
@@ -108,7 +106,6 @@ namespace SaneAudioRenderer
DspMatrix m_dspMatrix;
DspRate m_dspRate;
- //DspRealtimeRate m_dspRealtimeRate;
DspTempo m_dspTempo;
DspCrossfeed m_dspCrossfeed;
DspVolume m_dspVolume;
diff --git a/src/DspRealtimeRate.cpp b/src/DspRealtimeRate.cpp
deleted file mode 100644
index a68508f..0000000
--- a/src/DspRealtimeRate.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-#include "pch.h"
-#include "DspRealtimeRate.h"
-
-namespace SaneAudioRenderer
-{
- void DspRealtimeRate::Initialize(bool realtime, uint32_t inputRate, uint32_t outputRate, uint32_t channels)
- {
- m_active = realtime;
- m_inputRate = inputRate;
- m_outputRate = outputRate;
- m_channels = channels;
- m_adjustTime = 0;
- m_inputFrames = 0;
- m_outputFrames = 0;
-
- if (realtime)
- {
- m_resampler.reset();
- m_resampler.setup((double)outputRate / inputRate, channels,
- std::min(inputRate, outputRate) > 44100 ? 32 : 48);
-
- // Insert silence to align input
-
- DspChunk silence(DspFormat::Float, channels, m_resampler.inpsize() / 2 - 1, outputRate);
- ZeroMemory(silence.GetData(), silence.GetSize());
- DspChunk temp(DspFormat::Float, channels, 1, outputRate);
-
- m_resampler.inp_count = (uint32_t)silence.GetFrameCount();
- m_resampler.out_count = 1;
- m_resampler.inp_data = (float*)silence.GetData();
- m_resampler.out_data = (float*)temp.GetData();
-
- m_resampler.process();
- assert(m_resampler.inp_count == 0);
- assert(m_resampler.out_count == 1);
- }
- }
-
- bool DspRealtimeRate::Active()
- {
- return m_active;
- }
-
- void DspRealtimeRate::Process(DspChunk& chunk)
- {
- if (!m_active || chunk.IsEmpty())
- return;
-
- assert(chunk.GetRate() == m_inputRate);
- assert(chunk.GetChannelCount() == m_channels);
-
- DspChunk::ToFloat(chunk);
-
- {
- REFERENCE_TIME adjustTime = m_adjustTime;
-
- if (m_inputFrames > m_resampler.inpsize() / 2)
- {
- int64_t adjustedFrames = llMulDiv(m_inputFrames - m_resampler.inpsize() / 2,
- m_outputRate, m_inputRate, 0) - m_outputFrames;
-
- adjustTime += llMulDiv(adjustedFrames, OneSecond, m_outputRate, 0);
- }
-
- double ratio = (double)m_outputRate / m_inputRate;
- double adjustRatio = 1.0 + (double)adjustTime / OneSecond / ratio;
-
- // Stay within 5 cents.
- adjustRatio = std::min(1.003, std::max(0.997, adjustRatio));
-
- m_resampler.set_rratio(adjustRatio);
- }
-
- uint32_t outputFrames = (uint32_t)(2 * (uint64_t)chunk.GetFrameCount() * m_outputRate / m_inputRate);
- DspChunk output(DspFormat::Float, m_channels, outputFrames, m_outputRate);
-
- m_resampler.inp_count = (uint32_t)chunk.GetFrameCount();
- m_resampler.out_count = outputFrames;
- m_resampler.inp_data = (float*)chunk.GetData();
- m_resampler.out_data = (float*)output.GetData();
-
- m_resampler.process();
-
- assert(m_resampler.inp_count == 0);
- output.ShrinkTail(outputFrames - m_resampler.out_count);
-
- m_inputFrames += chunk.GetFrameCount();
- m_outputFrames += output.GetFrameCount();
-
- chunk = std::move(output);
- }
-
- void DspRealtimeRate::Finish(DspChunk& chunk)
- {
- if (!m_active)
- return;
-
- // Insert silence to align output
- if (!chunk.IsEmpty())
- {
- DspChunk::ToFloat(chunk);
-
- assert(chunk.GetRate() == m_inputRate);
- assert(chunk.GetChannelCount() == m_channels);
-
- DspChunk temp(DspFormat::Float, m_channels, chunk.GetFrameCount() + m_resampler.inpsize() / 2, m_inputRate);
- memcpy(temp.GetData(), chunk.GetData(), chunk.GetSize());
- ZeroMemory(temp.GetData() + chunk.GetSize(), temp.GetSize() - chunk.GetSize());
-
- chunk = std::move(temp);
- }
- else
- {
- chunk = DspChunk(DspFormat::Float, m_channels, m_resampler.inpsize() / 2, m_inputRate);
- ZeroMemory(chunk.GetData(), chunk.GetSize());
- }
-
- Process(chunk);
- }
-
- void DspRealtimeRate::Adjust(REFERENCE_TIME time)
- {
- m_adjustTime += time;
- }
-}
diff --git a/src/DspRealtimeRate.h b/src/DspRealtimeRate.h
deleted file mode 100644
index 0466169..0000000
--- a/src/DspRealtimeRate.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-
-#include "DspBase.h"
-
-#include <zita-resampler/vresampler.h>
-
-namespace SaneAudioRenderer
-{
- class DspRealtimeRate final
- : public DspBase
- {
- public:
-
- DspRealtimeRate() = default;
- DspRealtimeRate(const DspRealtimeRate&) = delete;
- DspRealtimeRate& operator=(const DspRealtimeRate&) = delete;
- ~DspRealtimeRate() = default;
-
- void Initialize(bool realtime, uint32_t inputRate, uint32_t outputRate, uint32_t channels);
-
- std::wstring Name() override { return L"RealtimeRate"; }
-
- bool Active() override;
-
- void Process(DspChunk& chunk) override;
- void Finish(DspChunk& chunk) override;
-
- void Adjust(REFERENCE_TIME time);
-
- private:
-
- bool m_active = false;
- VResampler m_resampler;
- uint32_t m_inputRate = 0;
- uint32_t m_outputRate = 0;
- uint32_t m_channels = 0;
- REFERENCE_TIME m_adjustTime = 0;
- int64_t m_inputFrames = 0;
- int64_t m_outputFrames = 0;
- };
-}