( bitstream: Bitstream, stRpsIdx: number, num_short_term_ref_pic_sets: number, NumDeltaPocs: number[], )
| 669 | }; |
| 670 | |
| 671 | const skipStRefPicSet = ( |
| 672 | bitstream: Bitstream, |
| 673 | stRpsIdx: number, |
| 674 | num_short_term_ref_pic_sets: number, |
| 675 | NumDeltaPocs: number[], |
| 676 | ) => { |
| 677 | let NumDeltaPocsThis = 0; |
| 678 | let inter_ref_pic_set_prediction_flag = 0; |
| 679 | let RefRpsIdx = 0; |
| 680 | |
| 681 | if (stRpsIdx !== 0) { |
| 682 | inter_ref_pic_set_prediction_flag = bitstream.readBits(1); |
| 683 | } |
| 684 | if (inter_ref_pic_set_prediction_flag) { |
| 685 | if (stRpsIdx === num_short_term_ref_pic_sets) { |
| 686 | const delta_idx_minus1 = readExpGolomb(bitstream); |
| 687 | RefRpsIdx = stRpsIdx - (delta_idx_minus1 + 1); |
| 688 | } else { |
| 689 | RefRpsIdx = stRpsIdx - 1; |
| 690 | } |
| 691 | bitstream.readBits(1); // delta_rps_sign |
| 692 | readExpGolomb(bitstream); // abs_delta_rps_minus1 |
| 693 | |
| 694 | // The number of iterations is NumDeltaPocs[RefRpsIdx] + 1 |
| 695 | const numDelta = NumDeltaPocs[RefRpsIdx] ?? 0; |
| 696 | for (let j = 0; j <= numDelta; j++) { |
| 697 | const used_by_curr_pic_flag = bitstream.readBits(1); |
| 698 | if (!used_by_curr_pic_flag) { |
| 699 | bitstream.readBits(1); // use_delta_flag |
| 700 | } |
| 701 | } |
| 702 | NumDeltaPocsThis = NumDeltaPocs[RefRpsIdx]!; |
| 703 | } else { |
| 704 | const num_negative_pics = readExpGolomb(bitstream); |
| 705 | const num_positive_pics = readExpGolomb(bitstream); |
| 706 | |
| 707 | for (let i = 0; i < num_negative_pics; i++) { |
| 708 | readExpGolomb(bitstream); // delta_poc_s0_minus1[i] |
| 709 | bitstream.readBits(1); // used_by_curr_pic_s0_flag[i] |
| 710 | } |
| 711 | for (let i = 0; i < num_positive_pics; i++) { |
| 712 | readExpGolomb(bitstream); // delta_poc_s1_minus1[i] |
| 713 | bitstream.readBits(1); // used_by_curr_pic_s1_flag[i] |
| 714 | } |
| 715 | NumDeltaPocsThis = num_negative_pics + num_positive_pics; |
| 716 | } |
| 717 | return NumDeltaPocsThis; |
| 718 | }; |
| 719 | |
| 720 | const parseVuiForMinSpatialSegmentationIdc = (bitstream: Bitstream, sps_max_sub_layers_minus1: number) => { |
| 721 | if (bitstream.readBits(1)) { // aspect_ratio_info_present_flag |
no test coverage detected