CUETools.Codecs.FLAKE.FlakeWriter.copy_samples C# (CSharp) Method

copy_samples() private method

Copy channel-interleaved input samples into separate subframes
private copy_samples ( int samples, int pos, int block ) : void
samples int
pos int
block int
return void
 		unsafe void copy_samples(int[,] samples, int pos, int block)
		{
			fixed (int* fsamples = samplesBuffer, src = &samples[pos, 0])
			{
				if (channels == 2)
				{
					if (eparams.stereo_method == StereoMethod.Independent)
						AudioSamples.Deinterlace(fsamples + samplesInBuffer, fsamples + Flake.MAX_BLOCKSIZE + samplesInBuffer, src, block);
					else
					{
						int* left = fsamples + samplesInBuffer;
						int* right = left + Flake.MAX_BLOCKSIZE;
						int* leftM = right + Flake.MAX_BLOCKSIZE;
						int* rightM = leftM + Flake.MAX_BLOCKSIZE;
						for (int i = 0; i < block; i++)
						{
							int l = src[2 * i];
							int r = src[2 * i + 1];
							left[i] = l;
							right[i] = r;
							leftM[i] = (l + r) >> 1;
							rightM[i] = l - r;
						}
					}
				}
				else
					for (int ch = 0; ch < channels; ch++)
					{
						int* psamples = fsamples + ch * Flake.MAX_BLOCKSIZE + samplesInBuffer;
						for (int i = 0; i < block; i++)
							psamples[i] = src[i * channels + ch];
					}
			}
			samplesInBuffer += block;
		}