private void DecodeResidue() { residueArray[0] = new double[window.n]; residueArray[1] = new double[window.n]; Logger.LogDebug("■DecodeResidue"); Byte[] do_not_decode_flag = new Byte[2]; for (int i = 0; i < mappingHeader.subMapsAdd1; i++) { int ch = 0; for (int j = 0; j < vorbisHeader.identification.audioChannels; j++) { if (mappingHeader.mux[j] == i) { if (noResidue[j] == 0x01) { Logger.LogDebug("noResidue"); do_not_decode_flag[ch] = 0x01; } else { Logger.LogDebug("Residue"); do_not_decode_flag[ch] = 0x00; } ch++; } else { Logger.LogError("■lMappingHeader.mux[j] != i"); } } int lResidueNumber = mappingHeader.subMapResidue[i]; ResidueHeader lResidueHeader = vorbisHeader.setup.residue.header[lResidueNumber]; lResidueHeader.DecodePacket(byteArray, vorbisHeader.identification.audioChannels, vorbisHeader.setup.codebook.headerArray, window.n, ch, do_not_decode_flag, residueArray); ch = 0; for (int j = 0; j < vorbisHeader.identification.audioChannels; j++) { if (mappingHeader.mux[j] == i) { //i. residue vector for channel [j] is set to decoded residue vector [ch] ch++; } } } }
public VorbisResidue(ByteArray aByteArray) { count = ( Byte )(aByteArray.ReadBitsAsByte(6) + 1); Logger.LogWarning("Vorbis Residue Count:" + count.ToString()); header = new ResidueHeader[count]; for (int i = 0; i < count; i++) { header[i] = new ResidueHeader(aByteArray); } }