public FlacResidual(FlacBitReader reader, FlacFrameHeader header, FlacSubFrameData data, int order) { FlacEntropyCoding codingMethod = (FlacEntropyCoding)reader.ReadBits(FlacConstant.ENTROPY_CODING_METHOD_TYPE_LEN); // 2 Bit int riceOrder = -1; if (codingMethod == FlacEntropyCoding.PartitionedRice || codingMethod == FlacEntropyCoding.PartitionedRice2) { riceOrder = (int)reader.ReadBits(FlacConstant.ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN); // 4 Bit FlacPartitionedRice rice = new FlacPartitionedRice(riceOrder, codingMethod, data.Content); if (rice.ProcessResidual(reader, header, data, order) == false) { throw new FlacException("Decoding Flac Residual failed.", FlacLayer.SubFrame); } CodingMethod = codingMethod; RiceOrder = riceOrder; Rice = rice; } else { throw new FlacException("Not supported RICE-Coding-Method. Stream unparseable!", FlacLayer.SubFrame); } }
public FlacResidual(FlacBitReader reader, FlacFrameHeader header, FlacSubFrameData data, int order) { FlacEntropyCoding codingMethod = (FlacEntropyCoding)reader.ReadBits(FlacConstant.EntropyCodingMethodTypeLen); // 2 Bit if (codingMethod == FlacEntropyCoding.PartitionedRice || codingMethod == FlacEntropyCoding.PartitionedRice2) { int riceOrder = (int)reader.ReadBits(FlacConstant.EntropyCodingMethodPartitionedRiceOrderLen); FlacPartitionedRice rice = new FlacPartitionedRice(riceOrder, codingMethod, data.Content); if (rice.ProcessResidual(reader, header, data, order) == false) { throw new FlacException("Decoding Flac Residual failed.", FlacLayer.SubFrame); } #if DEBUG CodingMethod = codingMethod; RiceOrder = riceOrder; Rice = rice; #endif } else { throw new FlacException("Not supported RICE-Coding-Method. Stream unparseable!", FlacLayer.SubFrame); } }
public FlacResidual(FlacBitReader reader, FlacFrameHeader header, FlacSubFrameData data, int order) { FlacResidualCodingMethod codingMethod = (FlacResidualCodingMethod)reader.ReadBits(2); // 2 Bit if (codingMethod == FlacResidualCodingMethod.PartitionedRice || codingMethod == FlacResidualCodingMethod.PartitionedRice2) { int partitionOrder = (int)reader.ReadBits(4); //"Partition order." see https://xiph.org/flac/format.html#partitioned_rice and https://xiph.org/flac/format.html#partitioned_rice2 FlacPartitionedRice.ProcessResidual(reader, header, data, order, partitionOrder, codingMethod); #if FLAC_DEBUG CodingMethodMethod = codingMethod; PartitionOrder = partitionOrder; #endif } else { throw new FlacException("Not supported RICE-Coding-Method. Stream unparseable!", FlacLayer.SubFrame); } }