Skip to content
Roboto
Esc
↑↓navigate↵open⌘Jpreview
On this page

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

NalUnit

class roboto.experimental.video.h265.NalUnit#View Source

One NAL unit split out of Annex B-framed data.

Attributes

NalUnit.data

data bytes #

The unit’s bytes: header included, start code excluded.

NalUnit.type

type int #

nal_unit_type from the unit’s header (codec-specific layout).

NalUnitType

class roboto.experimental.video.h265.NalUnitType#View Source

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.

Attributes

NalUnitType.BLA_W_LP

BLA_W_LP = 16 #

NalUnitType.CRA_NUT

CRA_NUT = 21 #

NalUnitType.IDR_N_LP

IDR_N_LP = 20 #

NalUnitType.IDR_W_RADL

IDR_W_RADL = 19 #

NalUnitType.PICTURE_PARAMETER_SET

PICTURE_PARAMETER_SET = 34 #

NalUnitType.SEQUENCE_PARAMETER_SET

SEQUENCE_PARAMETER_SET = 33 #

NalUnitType.TRAIL_R

TRAIL_R = 1 #

NalUnitType.VIDEO_PARAMETER_SET

VIDEO_PARAMETER_SET = 32 #

find_nal_units()

roboto.experimental.video.h265.find_nal_units(data)#View Source

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).

Usage

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]

is_keyframe()

roboto.experimental.video.h265.is_keyframe(data)#View Source

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

bool

True when the frame contains an IRAP picture.

Was this page helpful?