package org.jcodec.codecs.mpeg12.bitstream;
import org.jcodec.common.io.BitReader;
import org.jcodec.common.io.BitWriter;
/**
* This class is part of JCodec ( www.jcodec.org ) This software is distributed
* under FreeBSD License
*
* @author The JCodec project
*
*/
public class SequenceExtension {
public static final int Chroma420 = 0x1;
public static final int Chroma422 = 0x2;
public static final int Chroma444 = 0x3;
public int profile_and_level;
public int progressive_sequence;
public int chroma_format;
public int horizontal_size_extension;
public int vertical_size_extension;
public int bit_rate_extension;
public int vbv_buffer_size_extension;
public int low_delay;
public int frame_rate_extension_n;
public int frame_rate_extension_d;
public static SequenceExtension read(BitReader in) {
SequenceExtension se = new SequenceExtension();
se.profile_and_level = in.readNBit(8);
se.progressive_sequence = in.read1Bit();
se.chroma_format = in.readNBit(2);
se.horizontal_size_extension = in.readNBit(2);
se.vertical_size_extension = in.readNBit(2);
se.bit_rate_extension = in.readNBit(12);
se.vbv_buffer_size_extension = in.readNBit(8);
se.low_delay = in.read1Bit();
se.frame_rate_extension_n = in.readNBit(2);
se.frame_rate_extension_d = in.readNBit(5);
return se;
}
public void write(BitWriter out) {
out.writeNBit(profile_and_level, 8);
out.write1Bit(progressive_sequence);
out.writeNBit(chroma_format, 2);
out.writeNBit(horizontal_size_extension, 2);
out.writeNBit(vertical_size_extension, 2);
out.writeNBit(bit_rate_extension, 12);
out.write1Bit(1); // todo: verify this
out.writeNBit(vbv_buffer_size_extension, 8);
out.write1Bit(low_delay);
out.writeNBit(frame_rate_extension_n, 2);
out.writeNBit(frame_rate_extension_d, 5);
}
}