@@ -7,78 +7,84 @@ import (
77 "github.com/wader/fq/pkg/scalar"
88)
99
10+ var avcSeiMpegItuT35Group decode.Group
11+
1012func init () {
1113 interp .RegisterFormat (
1214 format .AVC_SEI ,
1315 & decode.Format {
1416 Description : "H.264/AVC Supplemental Enhancement Information" ,
1517 DecodeFn : avcSEIDecode ,
18+ Dependencies : []decode.Dependency {
19+ {Groups : []* decode.Group {format .MPEG_ITU_T35 }, Out : & avcSeiMpegItuT35Group },
20+ },
1621 })
1722}
1823
1924const (
20- avcSEIUserDataUnregistered = 5
25+ avcSEIUserDataRegisteredItuTT35 = 4
26+ avcSEIUserDataUnregistered = 5
2127)
2228
2329var seiNames = scalar.UintMapSymStr {
24- 0 : "buffering_period" ,
25- 1 : "pic_timing" ,
26- 2 : "pan_scan_rect" ,
27- 3 : "filler_payload" ,
28- 4 : "user_data_registered_itu_t_t35" ,
29- avcSEIUserDataUnregistered : "user_data_unregistered" ,
30- 6 : "recovery_point" ,
31- 7 : "dec_ref_pic_marking_repetition" ,
32- 8 : "spare_pic" ,
33- 9 : "scene_info" ,
34- 10 : "sub_seq_info" ,
35- 11 : "sub_seq_layer_characteristics" ,
36- 12 : "sub_seq_characteristics" ,
37- 13 : "full_frame_freeze" ,
38- 14 : "full_frame_freeze_release" ,
39- 15 : "full_frame_snapshot" ,
40- 16 : "progressive_refinement_segment_start" ,
41- 17 : "progressive_refinement_segment_end" ,
42- 18 : "motion_constrained_slice_group_set" ,
43- 19 : "film_grain_characteristics" ,
44- 20 : "deblocking_filter_display_preference" ,
45- 21 : "stereo_video_info" ,
46- 22 : "post_filter_hint" ,
47- 23 : "tone_mapping_info" ,
48- 24 : "scalability_info" ,
49- 25 : "sub_pic_scalable_layer" ,
50- 26 : "non_required_layer_rep" ,
51- 27 : "priority_layer_info" ,
52- 28 : "layers_not_present" ,
53- 29 : "layer_dependency_change" ,
54- 30 : "scalable_nesting" ,
55- 31 : "base_layer_temporal_hrd" ,
56- 32 : "quality_layer_integrity_check" ,
57- 33 : "redundant_pic_property" ,
58- 34 : "tl0_dep_rep_index" ,
59- 35 : "tl_switching_point" ,
60- 36 : "parallel_decoding_info" ,
61- 37 : "mvc_scalable_nesting" ,
62- 38 : "view_scalability_info" ,
63- 39 : "multiview_scene_info" ,
64- 40 : "multiview_acquisition_info" ,
65- 41 : "non_required_view_component" ,
66- 42 : "view_dependency_change" ,
67- 43 : "operation_points_not_present" ,
68- 44 : "base_view_temporal_hrd" ,
69- 45 : "frame_packing_arrangement" ,
70- 46 : "multiview_view_position" ,
71- 47 : "display_orientation" ,
72- 48 : "mvcd_scalable_nesting" ,
73- 49 : "mvcd_view_scalability_info" ,
74- 50 : "depth_representation_info" ,
75- 51 : "three_dimensional_reference_displays_info" ,
76- 52 : "depth_timing" ,
77- 53 : "depth_sampling_info" ,
78- 54 : "constrained_depth_parameter_set_identifier" ,
79- 56 : "green_metadata" ,
80- 137 : "mastering_display_colour_volume" ,
81- 181 : "alternative_depth_info" ,
30+ 0 : "buffering_period" ,
31+ 1 : "pic_timing" ,
32+ 2 : "pan_scan_rect" ,
33+ 3 : "filler_payload" ,
34+ avcSEIUserDataRegisteredItuTT35 : "user_data_registered_itu_t_t35" ,
35+ avcSEIUserDataUnregistered : "user_data_unregistered" ,
36+ 6 : "recovery_point" ,
37+ 7 : "dec_ref_pic_marking_repetition" ,
38+ 8 : "spare_pic" ,
39+ 9 : "scene_info" ,
40+ 10 : "sub_seq_info" ,
41+ 11 : "sub_seq_layer_characteristics" ,
42+ 12 : "sub_seq_characteristics" ,
43+ 13 : "full_frame_freeze" ,
44+ 14 : "full_frame_freeze_release" ,
45+ 15 : "full_frame_snapshot" ,
46+ 16 : "progressive_refinement_segment_start" ,
47+ 17 : "progressive_refinement_segment_end" ,
48+ 18 : "motion_constrained_slice_group_set" ,
49+ 19 : "film_grain_characteristics" ,
50+ 20 : "deblocking_filter_display_preference" ,
51+ 21 : "stereo_video_info" ,
52+ 22 : "post_filter_hint" ,
53+ 23 : "tone_mapping_info" ,
54+ 24 : "scalability_info" ,
55+ 25 : "sub_pic_scalable_layer" ,
56+ 26 : "non_required_layer_rep" ,
57+ 27 : "priority_layer_info" ,
58+ 28 : "layers_not_present" ,
59+ 29 : "layer_dependency_change" ,
60+ 30 : "scalable_nesting" ,
61+ 31 : "base_layer_temporal_hrd" ,
62+ 32 : "quality_layer_integrity_check" ,
63+ 33 : "redundant_pic_property" ,
64+ 34 : "tl0_dep_rep_index" ,
65+ 35 : "tl_switching_point" ,
66+ 36 : "parallel_decoding_info" ,
67+ 37 : "mvc_scalable_nesting" ,
68+ 38 : "view_scalability_info" ,
69+ 39 : "multiview_scene_info" ,
70+ 40 : "multiview_acquisition_info" ,
71+ 41 : "non_required_view_component" ,
72+ 42 : "view_dependency_change" ,
73+ 43 : "operation_points_not_present" ,
74+ 44 : "base_view_temporal_hrd" ,
75+ 45 : "frame_packing_arrangement" ,
76+ 46 : "multiview_view_position" ,
77+ 47 : "display_orientation" ,
78+ 48 : "mvcd_scalable_nesting" ,
79+ 49 : "mvcd_view_scalability_info" ,
80+ 50 : "depth_representation_info" ,
81+ 51 : "three_dimensional_reference_displays_info" ,
82+ 52 : "depth_timing" ,
83+ 53 : "depth_sampling_info" ,
84+ 54 : "constrained_depth_parameter_set_identifier" ,
85+ 56 : "green_metadata" ,
86+ 137 : "mastering_display_colour_volume" ,
87+ 181 : "alternative_depth_info" ,
8288}
8389
8490var (
@@ -108,10 +114,14 @@ func avcSEIDecode(d *decode.D) any {
108114
109115 d .FramedFn (int64 (payloadSize )* 8 , func (d * decode.D ) {
110116 switch payloadType {
117+ case avcSEIUserDataRegisteredItuTT35 :
118+ d .FieldFormat ("data" , & avcSeiMpegItuT35Group , nil )
111119 case avcSEIUserDataUnregistered :
112120 d .FieldRawLen ("uuid" , 16 * 8 , userDataUnregisteredNames )
121+ d .FieldRawLen ("data" , d .BitsLeft ())
122+ default :
123+ d .FieldRawLen ("data" , d .BitsLeft ())
113124 }
114- d .FieldRawLen ("data" , d .BitsLeft ())
115125 })
116126
117127 d .FieldRawLen ("rbsp_trailing_bits" , d .BitsLeft ())
0 commit comments