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_type from the unit’s header (codec-specific layout).

class roboto.experimental.video.h265.NalUnitType#

Bases: enum.IntEnum

H.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.type is a plain int; 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 data is a copy of the unit’s bytes (header included, start code excluded).

Return type:

list[roboto.experimental.video.annexb.NalUnit]

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