package org.jcodec.codecs.mpeg12.bitstream; import org.jcodec.common.io.BitReader; import org.jcodec.common.io.BitWriter; import java.nio.ByteBuffer; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed * under FreeBSD License * * @author The JCodec project * */ public class PictureSpatialScalableExtension implements MPEGHeader { public int lower_layer_temporal_reference; public int lower_layer_horizontal_offset; public int lower_layer_vertical_offset; public int spatial_temporal_weight_code_table_index; public int lower_layer_progressive_frame; public int lower_layer_deinterlaced_field_select; public static final int Picture_Spatial_Scalable_Extension = 0x9; public static PictureSpatialScalableExtension read(BitReader _in) { PictureSpatialScalableExtension psse = new PictureSpatialScalableExtension(); psse.lower_layer_temporal_reference = _in.readNBit(10); _in.read1Bit(); psse.lower_layer_horizontal_offset = _in.readNBit(15); _in.read1Bit(); psse.lower_layer_vertical_offset = _in.readNBit(15); psse.spatial_temporal_weight_code_table_index = _in.readNBit(2); psse.lower_layer_progressive_frame = _in.read1Bit(); psse.lower_layer_deinterlaced_field_select = _in.read1Bit(); return psse; } @Override public void write(ByteBuffer bb) { BitWriter bw = new BitWriter(bb); bw.writeNBit(PictureSpatialScalableExtension.Picture_Spatial_Scalable_Extension, 4); bw.writeNBit(lower_layer_temporal_reference, 10); bw.write1Bit(1); // todo: verify this bw.writeNBit(lower_layer_horizontal_offset, 15); bw.write1Bit(1); // todo: verify this bw.writeNBit(lower_layer_vertical_offset, 15); bw.writeNBit(spatial_temporal_weight_code_table_index, 2); bw.write1Bit(lower_layer_progressive_frame); bw.write1Bit(lower_layer_deinterlaced_field_select); bw.flush(); } }