@@ -1134,3 +1134,49 @@ fn profile20_apple() -> Result<()> {
11341134
11351135 Ok ( ( ) )
11361136}
1137+
1138+ #[ test]
1139+ fn l15_to_l18 ( ) -> Result < ( ) > {
1140+ let ( original_data, dovi_rpu) = _parse_file ( PathBuf :: from ( "./assets/tests/l15_to_l18.bin" ) ) ?;
1141+ assert_eq ! ( dovi_rpu. dovi_profile, 8 ) ;
1142+ let parsed_data = dovi_rpu. write_hevc_unspec62_nalu ( ) ?;
1143+
1144+ assert_eq ! ( & original_data[ 4 ..] , & parsed_data[ 2 ..] ) ;
1145+
1146+ let vdr_dm_data = dovi_rpu. vdr_dm_data . as_ref ( ) . unwrap ( ) ;
1147+
1148+ let l15_meta = vdr_dm_data. get_block ( 15 ) . unwrap ( ) ;
1149+ if let ExtMetadataBlock :: Level15 ( b) = l15_meta {
1150+ assert_eq ! ( b. confidence, 244 ) ;
1151+ assert_eq ! ( b. precision_rendering_strength, 245 ) ;
1152+ assert_eq ! ( b. d_contrast_plus_one_no_pr, 253 ) ;
1153+ assert_eq ! ( b. revision, 1 ) ;
1154+ }
1155+
1156+ let l16_meta = vdr_dm_data. get_block ( 16 ) . unwrap ( ) ;
1157+ if let ExtMetadataBlock :: Level16 ( b) = l16_meta {
1158+ assert_eq ! ( b. revision, 1 ) ;
1159+ assert_eq ! ( b. count, 2 ) ;
1160+ assert_eq ! ( b. params. len( ) , 2 ) ;
1161+ assert_eq ! ( b. params[ 0 ] . max_d_saturation_plus_one, 234 ) ;
1162+ assert_eq ! ( b. params[ 1 ] . precision_rendering_strength, 128 ) ;
1163+ }
1164+
1165+ let l17_meta = vdr_dm_data. get_block ( 17 ) . unwrap ( ) ;
1166+ if let ExtMetadataBlock :: Level17 ( b) = l17_meta {
1167+ assert_eq ! ( b. mid_boost, 128 ) ;
1168+ assert_eq ! ( b. shadow_drop, 252 ) ;
1169+ assert_eq ! ( b. contrast_boost, 64 ) ;
1170+ assert_eq ! ( b. intensity_indicator_pq, 3696 ) ;
1171+ assert_eq ! ( b. revision, 1 ) ;
1172+ }
1173+
1174+ let l18_meta = vdr_dm_data. get_block ( 18 ) . unwrap ( ) ;
1175+ if let ExtMetadataBlock :: Level18 ( b) = l18_meta {
1176+ assert_eq ! ( b. surround_luminance_pq, 3696 ) ;
1177+ assert_eq ! ( b. max_preserved_luminance_pq, 3699 ) ;
1178+ assert_eq ! ( b. revision, 1 ) ;
1179+ }
1180+
1181+ Ok ( ( ) )
1182+ }
0 commit comments