Introduction
ITU-T H.274 (01/2026, version 4), also ISO/IEC 23002-7, defines SEI messages that are not
tied to one codec. H.264 (Annex D of the SEI messages
page's payload list) and H.265 refer to it for the payload types below, and
H.265 uses the same type numbers and the same
syntax for them. The wrapper (payloadType, payloadSize) is the
normal one. Fields marked st(v) are zero-terminated strings.
Messages with a cancel flag end the effect of any earlier message of that type for the
layer; a persistence flag of 0 limits a message to the current picture; with 1 it lasts
until a new coded video sequence, the end of the stream, or the output of a later picture
that carries the same message type.
| Type | Message | Section |
|---|---|---|
| 202 | annotated_regions | below |
| 212 | phase_indication | below |
| 213 | sei_processing_order | below |
| 214 | processing_order_nesting | below |
| 215 | encoder_optimization_info | below |
| 216 | source_picture_timing_info | below |
| 218 | modality_info | below |
| 225 | ai_usage_restrictions_request | below |
| 64 | film_grain_characteristics | the H.274 form of film grain characteristics; its syntax (H.274 clause 8.5) is not reproduced. H.264's own type 19 message is on SEI message fields |
| 210, 211, 65 | nn_post_filter_characteristics, nn_post_filter_activation | not covered, see the end |
| 220, 221, 222, 224 | digitally signed content messages, generative enhancement face video | not covered |
| 223 | generative_face_video | not covered |
Annotated regions (202)
Bounding boxes of labelled objects in the cropped decoded picture. Boxes and labels persist in output order within the CVS until updated or cancelled; a missing update copies the previous message's value.
| Field | Coding | Condition | Meaning |
|---|---|---|---|
ar_cancel_flag | u(1) | 1: cancels earlier annotated regions information; the label, object and box tables are cleared | |
ar_not_optimized_for_viewing_flag | u(1) | 1: pictures are optimised for something else, such as classification | |
ar_true_motion_flag | u(1) | 1: motion information was chosen to follow real object motion | |
ar_occluded_object_flag | u(1) | 1: boxes may cover objects not or only partly visible. Same in all messages of the CVS | |
ar_partial_object_flag_present_flag | u(1) | 1: ar_partial_object_flag is sent per box | |
ar_object_label_present_flag | u(1) | 1: labels are sent | |
ar_object_confidence_info_present_flag | u(1) | 1: a confidence is sent per object | |
ar_object_confidence_length_minus1 | u(4) | confidence present | bits of each confidence − 1 |
ar_object_label_language_present_flag | u(1) | labels | 1: a language tag follows |
ar_bit_equal_to_zero, ar_object_label_language | f(1), st(v) | language flag | zero bits to the byte boundary, then an IETF RFC 5646 tag, at most 255 bytes |
ar_num_label_updates | ue(v) | labels | 0 to 255 |
ar_label_idx[i], ar_label_cancel_flag | ue(v), u(1) | per update | index 0 to 255; 1 removes the label, else byte-aligned zero bits and ar_label[idx] st(v) (at most 255 bytes) assign it |
ar_num_object_updates | ue(v) | 0 to 255 | |
ar_object_idx[i], ar_object_cancel_flag | ue(v), u(1) | per update | object 0 to 255; 1 stops tracking it |
ar_object_label_update_flag, ar_object_label_idx[] | u(1), ue(v) | object not cancelled, labels present | the label of the object, 0 to 255 |
ar_bounding_box_update_flag, ar_bounding_box_cancel_flag | u(1) each | object not cancelled | 1 then: the box is sent (cancel 0) or removed (cancel 1) |
ar_bounding_box_top, _left, _width, _height | u(16) each | box sent | top-left corner and size in units of chroma samples relative to the top-left of the cropped picture, so the luma rectangle is from SubWidthC × left to SubWidthC × (left + width) − 1 horizontally and likewise vertically |
ar_partial_object_flag[] | u(1) | box, partial flag present | 1: the object is only partly visible |
ar_object_confidence[] | u(v) | box, confidence present | in units of 2−(length), higher is more confident |
Phase indication (212)
Where the luma samples of the cropped picture lie relative to a rendering window, so that pictures of different resolution can be aligned when switching.
| Field | Coding | Meaning |
|---|---|---|
pi_hor_phase_num, pi_hor_phase_den_minus1 | u(8) each | horizontal phase = pi_hor_phase_num ÷ (pi_hor_phase_den_minus1 + 1) |
pi_ver_phase_num, pi_ver_phase_den_minus1 | u(8) each | vertical phase, the same way |
SEI processing order and nesting (213, 214)
An SPO message describes a chain of SEI-implied processing steps and the order the encoder prefers; a PON message wraps SEI messages that belong only to such a chain.
| Field | Coding | Condition | Meaning |
|---|---|---|---|
| sei_processing_order (213) | |||
po_id | u(8) | identifies the chain; PON messages name it | |
po_for_human_viewing_idc, po_for_machine_analysis_idc | u(2) each | use of the chain's output: 3 optimised for it, 2 suitable but not optimised, 1 unsuitable, 0 unknown; both may not be 1 | |
po_reserved_zero_4bits | u(4) | 0 | |
po_num_sei_msg_types_minus1 | u(7) | entries − 1 | |
po_breadth_first_flag | u(1) | 1: each processing step is applied to the whole picture before the next, otherwise the chain may run per part | |
po_sei_wrapping_flag[i] | u(1) | per entry | 1: SEI messages of this type are carried inside PON messages, 0: not |
po_sei_importance_flag[i], po_sei_processing_degree_flag[i] | u(1) each | per entry | decide whether the type is part of the chain proper or a property message (Table 24) |
po_sei_payload_type[i] | u(12) | per entry | the SEI payloadType |
po_sei_prefix_flag[i] | u(1) | per entry | 1: an SEI prefix indication follows after the list, to tell apart messages of one type |
po_sei_processing_order[i] | u(8) | per entry | position of the step in the chain |
po_num_bits_in_prefix_indication_minus1[i] | u(8) | prefix flag | bits − 1 |
po_sei_prefix_data_bit[i][j] | u(1) | prefix flag | the first bits of the payload of that type; then ones to the byte boundary (po_byte_alignment_bit_equal_to_one) |
po_complexity_info_present_flag | u(1) | 1: the four complexity fields follow | |
po_parameter_type_idc | u(2) | complexity | parameter number type |
po_log2_parameter_bit_length_minus3 | u(2) | type not 2 | parameter bit length |
po_num_parameters_idc | u(6) | complexity | number of parameters |
po_num_kmac_operations_idc, po_total_kilobyte_size | ue(v) each | complexity | multiply-accumulate operations and size of the chain |
| processing_order_nesting (214) | |||
pon_num_po_ids_minus1 | u(8) | chains − 1 | |
pon_target_po_id[i] | u(8) | the po_id of each chain the nested messages belong to | |
pon_num_seis_minus1 | u(8) | nested messages − 1 | |
pon_processing_order[i] | u(8) | step of the chain this message takes | |
sei_pon_nested_message() | a container defined by the codec | the nested SEI message | |
Only the field lists are given above. The meaning of the importance and processing degree flags (Table 24), the prefix indication matching rules, the way a chain is built from the lists and the complexity field semantics are in H.274 clause 8.30 and are not reproduced.
Encoder optimisation information (215)
| Field | Coding | Condition | Meaning |
|---|---|---|---|
eoi_cancel_flag | u(1) | 1 cancels the previous message | |
eoi_persistence_flag | u(1) | 0: current picture only (then temporal resampling and quality bits of eoi_type must be 0) | |
eoi_for_human_viewing_idc, eoi_for_machine_analysis_idc | u(2) each | 3 the optimisation includes this purpose, 2 suitable but not optimised, 1 unsuitable, 0 unknown; not both 1 | |
eoi_reserved_zero_2bits | u(2) | 0, ignored | |
eoi_type | u(16) | bit mask (Table 25): 0x01 object-based, 0x02 temporal resampling, 0x04 spatial resampling, 0x08 temporal quality fluctuation, 0x10 spatial quality (noise reduction), 0x20 privacy protection. 0: application-defined. Above 63: if the low six bits are 0 the message is ignored, else the elements after eoi_privacy_info_type are | |
eoi_object_based_idc | u(16) | object-based | mask (Table 26): 0x01 outside the objects blurred, 0x02 outside coded with coarser quantisation, 0x04 outside overwritten with a constant, 0x08 overwritten otherwise, 0x10 objects treated by size. 0: application-defined; above 31 only the low five bits count |
eoi_quant_threshold_delta | ue(v) | idc has 0x02 | 0 to 1023; 0: the quantiser difference is unknown, else it is the threshold separating object areas |
eoi_pic_quant_object_flag | u(1) | threshold > 0 | 1: areas coded with the picture quantiser contain objects; 0: they are outside objects |
eoi_temporal_resampling_type_flag, eoi_num_int_pics | u(1), ue(v) | temporal resampling | kind of resampling and the number of inserted (interpolated) pictures |
eoi_src_pic_flag | u(1) | type flag and inserted pictures > 0 | whether the picture is a source picture |
eoi_orig_pic_dimensions_flag | u(1) | spatial resampling | 1: original dimensions follow, else the resampling types |
eoi_orig_pic_width_minus1, eoi_orig_pic_height_minus1 | u(16) each | flag | the original size − 1 |
eoi_spatial_hor_resampling_type_idc, eoi_spatial_ver_resampling_type_idc | u(2) each | no dimensions | resampling method codes |
eoi_privacy_protection_method_idc | u(16) | privacy | method code |
eoi_privacy_info_type | u(8) | privacy | kind of privacy information |
The value tables of the resampling and privacy codes are in H.274 clause 8.31 and are not reproduced.
Source picture timing information (216)
The temporal distance between the source pictures (before encoding) that correspond to the output pictures, for example slow motion or time-lapse material.
| Field | Coding | Condition | Meaning |
|---|---|---|---|
spti_cancel_flag | u(1) | 1 cancels the previous message for the layer | |
spti_persistence_flag | u(1) | 0: current picture only | |
spti_source_timing_equals_output_timing_flag | u(1) | 1: source timing equals output timing (the picture timing message can give it); the rest is absent | |
spti_source_type_present_flag, spti_source_type | u(1), u(16) | timing differs | mask (Table 29), 0 to 255: 0x01 slow motion, 0x02 sped-up motion, 0x04 high-speed imaging (under 1/120 s), 0x08 time-lapse (over 1.001/24 s), 0x10 temporal reversal, 0x20 still image or freeze frame, 0x40 sporadic or event-driven, 0x80 constant frame rate. 0: application-defined |
spti_time_scale, spti_num_units_in_elemental_interval | u(32) each | timing differs | neither 0; ElementalSourcePictureInterval = units ÷ time scale seconds |
spti_direction_flag | u(1) | timing differs | 0: intervals are relative to the previous output picture, 1: to the next |
spti_max_sublayers_minus1 | u(3) | persistence 1 | temporal sub-layers described − 1 |
spti_sublayer_interval_scale_factor[i] | ue(v) | per sub-layer from 0 (persistence) or the last one | SourcePictureInterval[i] = ElementalSourcePictureInterval × factor × (reversal ? −1 : 1), 0 meaning the same source picture as the earlier one (0 to 232 − 2) |
spti_sublayer_synthesized_picture_flag[i] | u(1) | same | 1: pictures of that sub-layer are synthesised, not original source pictures |
Modality information (218)
| Field | Coding | Condition | Meaning |
|---|---|---|---|
mi_modality_info_cancel_flag | u(1) | 1 cancels the previous message | |
mi_modality_info_persistence_flag | u(1) | 0: current picture only | |
mi_modality_type | u(5) | 0 unspecified, 1 visible picture, 2 infrared, 3 ultraviolet, 4 to 31 reserved (the message is ignored). For 2 and 3 the VUI colour primaries, transfer, matrix and range are ignored | |
mi_spectrum_range_present_flag | u(1) | 1: the wavelength range follows | |
mi_min_wavelength_exponent_plus15, mi_min_wavelength_mantissa | u(5), u(11) | range present | MinWavelength = mantissa × 10exponent_plus15 − 15 metres; a zero mantissa means unknown |
mi_max_wavelength_exponent_plus15, mi_max_wavelength_mantissa | u(5), u(11) | range present | MaxWavelength the same way; not below the minimum |
The range must overlap 380 to 780 nm for visible, 780 nm to 1 mm for infrared and 1 nm to 380 nm for ultraviolet.
AI usage restrictions request (225)
Asks that the pictures not be used for the stated kinds of AI application. It imposes no conformance requirement on receivers.
| Field | Coding | Condition | Meaning |
|---|---|---|---|
aurr_cancel_flag | u(1) | 1 cancels the previous message | |
aurr_persistence_flag | u(1) | 0: this picture unit and its decoded picture only | |
aurr_num_restrictions_minus1 | ue(v) | entries − 1; 0 to 5 in this edition | |
aurr_restriction[i] | ue(v) | per entry, all different | Table 35: 0 no AI application, 1 no AI training, 2 no AI inference, 3 no generative AI use, 4 no training of generative AI, 5 no inference with generative AI; 6 to 255 reserved and read as 0 |
aurr_context_present_flag[i] | u(1) | per entry | 0: the restriction applies in every context |
aurr_context[i] | u(16) | flag 1 | mask (Table 36), 1 to 15: 0x0001 commercial use, 0x0002 non-commercial use, 0x0004 official government use, 0x0008 research and academic use. 0 or above 15 is ignored |
aurr_sei_exclusion_flag[i] | u(1) | per entry | its meaning is given in H.274 clause 8.38 and was not read for this page |
Not covered
The neural-network post-filter messages (210, 211; H.274 clause 8.28, about 27 pages), digitally signed content (220 to 222; 8.37), generative face video and generative enhancement face video (223, 224; 8.36), and, from the same Recommendation, the object mask information, text description information, packed regions information (226 in H.265) and image format metadata messages (8.33, 8.35, 8.39, 8.40), whose payload type numbers are not stated in the H.264 or H.265 lists that were read. Also not reproduced are the semantic details marked above. Source: ITU-T H.274 (01/2026, version 4) and the payload type lists of ITU-T H.264 (06/2026) and H.265 (01/2026).