Browse code

Minor update to scale the phase offset, thanks to kode54.

Naram Qashat authored on 2013/04/26 13:56:54
Showing 2 changed files
... ...
@@ -611,10 +611,11 @@ int32_t Channel::Interpolate()
611 611
 		double kernel[LANCZOS_WIDTH * 2], kernel_sum = 0.0;
612 612
 		int i = LANCZOS_WIDTH, shift = static_cast<int>(std::floor(ratio * LANCZOS_RESOLUTION));
613 613
 		int step = this->reg.sampleIncrease > 1.0 ? static_cast<int>(LANCZOS_RESOLUTION / this->reg.sampleIncrease) : LANCZOS_RESOLUTION;
614
+		int shift_adj = shift * step / LANCZOS_RESOLUTION;
614 615
 		for (; i >= -static_cast<int>(LANCZOS_WIDTH - 1); --i)
615 616
 		{
616 617
 			int pos = i * step;
617
-			kernel_sum += kernel[i + LANCZOS_WIDTH - 1] = this->lanczos_lut[std::abs(shift - pos)];
618
+			kernel_sum += kernel[i + LANCZOS_WIDTH - 1] = this->lanczos_lut[std::abs(shift_adj - pos)];
618 619
 		}
619 620
 		double sum = 0.0;
620 621
 		for (i = 0; i < static_cast<int>(LANCZOS_WIDTH * 2); ++i)
... ...
@@ -42,7 +42,7 @@ public:
42 42
 
43 43
 unsigned XSFConfig::initSampleRate = 44100;
44 44
 std::wstring XSFConfig::commonName = L"NCSF Decoder";
45
-std::wstring XSFConfig::versionNumber = L"1.7";
45
+std::wstring XSFConfig::versionNumber = L"1.7.1";
46 46
 unsigned XSFConfig_NCSF::initInterpolation = 5;
47 47
 std::wstring XSFConfig_NCSF::initMutes = L"0000000000000000";
48 48