private static void readDecoderPicMarking ( NALUnit nalUnit , SliceHeader sh , BitReader _in ) { if ( nalUnit . type == NALUnitType . IDR_SLICE ) { boolean noOutputOfPriorPicsFlag = readBool ( _in , "SH: no_output_of_prior_pics_flag" ) ; boolean longTermReferenceFlag = readBool ( _in , "SH: long_term_reference_flag" ) ; sh . refPicMarkingIDR = new RefPicMarkingIDR ( noOutputOfPriorPicsFlag , longTermReferenceFlag ) ; } else { boolean adaptiveRefPicMarkingModeFlag = readBool ( _in , "SH: adaptive_ref_pic_marking_mode_flag" ) ; if ( adaptiveRefPicMarkingModeFlag ) { ArrayList < Instruction > mmops = new ArrayList < Instruction > ( ) ; int memoryManagementControlOperation ; do { memoryManagementControlOperation = readUEtrace ( _in , "SH: memory_management_control_operation" ) ; Instruction instr = null ; switch ( memoryManagementControlOperation ) { case 1 : instr = new RefPicMarking . Instruction ( InstrType . REMOVE_SHORT , readUEtrace ( _in , "SH: difference_of_pic_nums_minus1" ) + 1 , 0 ) ; break ; case 2 : instr = new RefPicMarking . Instruction ( InstrType . REMOVE_LONG , readUEtrace ( _in , "SH: long_term_pic_num" ) , 0 ) ; break ; case 3 : instr = new RefPicMarking . Instruction ( InstrType . CONVERT_INTO_LONG , readUEtrace ( _in , "SH: difference_of_pic_nums_minus1" ) + 1 , readUEtrace ( _in , "SH: long_term_frame_idx" ) ) ; break ; case 4 : instr = new RefPicMarking . Instruction ( InstrType . TRUNK_LONG , readUEtrace ( _in , "SH: max_long_term_frame_idx_plus1" ) - 1 , 0 ) ; break ; case 5 : instr = new RefPicMarking . Instruction ( InstrType . CLEAR , 0 , 0 ) ; break ; case 6 : instr = new RefPicMarking . Instruction ( InstrType . MARK_LONG , readUEtrace ( _in , "SH: long_term_frame_idx" ) , 0 ) ; break ; } if ( instr != null ) mmops . add ( instr ) ; } while ( memoryManagementControlOperation != 0 ) ; sh . refPicMarkingNonIDR = new RefPicMarking ( mmops . toArray ( new Instruction [ ] { } ) ) ; } } }
static int i = 0 ;