roboto.experimental.video.h265#
Minimal H.265 (HEVC) Annex B bitstream inspection.
Implements only the byte-level parsing needed to drive a GOP-aware decoder: splitting a frame’s data into NAL units and detecting keyframes (IRAP pictures). It neither decodes video nor parses variable-length fields — the decoder reads everything else from the in-band parameter sets.
The start-code scan shared with H.264 lives in annexb; this module
adds the H.265 specifics: a 2-byte NAL header whose first byte carries a
6-bit type in bits 6..1 (ITU-T H.265 section 7.3.1.2).
Module Contents#
- class roboto.experimental.video.h265.NalUnit#
One NAL unit split out of Annex B-framed data.
- data: bytes#
header included, start code excluded.
- Type:
The unit’s bytes
- type: int#
nal_unit_typefrom the unit’s header (codec-specific layout).
- class roboto.experimental.video.h265.NalUnitType#
Bases:
enum.IntEnumH.265 NAL unit types (ITU-T H.265 table 7-1) relevant to this module.
NAL headers can carry any 6-bit type value, so
NalUnit.typeis a plainint; compare against these members for the types that matter here.- BLA_W_LP = 16#
- CRA_NUT = 21#
- IDR_N_LP = 20#
- IDR_W_RADL = 19#
- PICTURE_PARAMETER_SET = 34#
- SEQUENCE_PARAMETER_SET = 33#
- TRAIL_R = 1#
- VIDEO_PARAMETER_SET = 32#
- roboto.experimental.video.h265.find_nal_units(data)#
Split Annex B-framed H.265 data into its NAL units.
- Parameters:
data (bytes) – One frame’s Annex B-framed bytes, using 3-byte or 4-byte start codes.
- Returns:
The frame’s NAL units in bitstream order. Each unit’s
datais a copy of the unit’s bytes (header included, start code excluded).- Return type:
Examples
>>> from roboto.experimental.video.h265 import NalUnitType, find_nal_units >>> units = find_nal_units(annex_b_frame_bytes) >>> [unit.type for unit in units] [32, 33, 34, 19]
- roboto.experimental.video.h265.is_keyframe(data)#
Whether the Annex B-framed H.265 frame contains an IRAP picture.
An IRAP picture (IDR, CRA, or BLA) is a clean decoder entry point: decoding may start at this frame without any earlier GOP state. Frames without one are delta frames, decodable only after the preceding keyframe has been fed to the decoder.
- Parameters:
data (bytes) – One frame’s Annex B-framed bytes.
- Returns:
True when the frame contains an IRAP picture.
- Return type:
bool