Skip to content

feat(analyzer): full H.265 slice segment header details - #60

Merged
blocksmith314 merged 1 commit into
mainfrom
feature/h265-slice-details
Nov 12, 2026
Merged

blocksmith314 merged 1 commit into
mainfrom
feature/h265-slice-details

Conversation

@blocksmith314

Copy link
Copy Markdown
Owner

Summary

Fixes #59: the NAL details panel now shows the full H.265 slice segment header instead of the basic summary added in #58.

Parsed fields

  • pic_output_flag, colour_plane_id
  • short_term_ref_pic_set_sps_flag + index, or the inline RPS (reuses parseShortTermRefPicSet)
  • long-term references (num_long_term_sps/pics, lt index / POC LSB / MSB cycle)
  • slice_temporal_mvp_enabled_flag, collocated_from_l0_flag, collocated_ref_idx
  • SAO luma/chroma flags
  • reference index overrides, mvd_l1_zero_flag, cabac_init_flag, five_minus_max_num_merge_cand
  • slice_qp_delta, chroma QP offsets
  • deblocking override semantics, beta/tc offsets, loop-filter-across-slices
  • num_entry_point_offsets + offsets, header extension
  • header/data byte split via RbspBitReader::BitsRead(), hex dump from the slice data start

Keyframe NAL types (19/20/21) previously bypassed the details switch and now use the same slice path.

Also fixes three HEVC parsing details: long-term MSB condition, weighted-prediction flag order (all luma flags before chroma), and deblocking override semantics.

Verification

  • ctest: 68/68 pass (new H265ParamsTest.BuildsSliceDetailsText).
  • ./test/tools/tidy.sh core/h265types.cpp core/h265types.h core/nalanalyzer.cpp core/expgolomb.cpp test/test_h265_params.cpp: 0 issues.
  • Field values are parsed per the spec; the new test checks the details text rather than every value against a reference decoder.

Fixes #59

Parse the remaining HEVC slice header fields guarded by SPS/PPS flags:
output/colour plane, short-term RPS reference or inline set, long-term
references, temporal MVP and collocated picture, SAO flags, reference
index overrides, mvd_l1_zero, cabac_init, merge candidates, QP and chroma
offsets, deblocking overrides, loop-filter-across-slices and entry points.

The details panel reports the header/data split (header_bits from
RbspBitReader) and dumps the slice data bytes after the header. Keyframe
NAL types now go through the same slice detail path.

Fixes #59
@blocksmith314
blocksmith314 merged commit be36fad into main Nov 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Show full H.265 slice segment header fields

1 participant