| @@ -2284,6 +2284,48 @@ SEI_FUNC(sei_alpha_channel_info, (CodedBitstreamContext *ctx, RWContext *rw, · 2283 unmodified lines |
| 2284 | return 0; | 2284 | return 0; |
| 2285 | } | 2285 | } |
| 2286 | | 2286 | |
| | 2287 | SEI_FUNC(sei_3d_reference_displays_info, (CodedBitstreamContext *ctx, RWContext *rw, |
| | 2288 | H265RawSEI3DReferenceDisplaysInfo *current, |
| | 2289 | SEIMessageState *sei)) |
| | 2290 | { |
| | 2291 | int length; |
| | 2292 | int err, i; |
| | 2293 | |
| | 2294 | HEADER("Three Dimensional Reference Displays Information"); |
| | 2295 | |
| | 2296 | ue(prec_ref_display_width, 0, 31); |
| | 2297 | flag(ref_viewing_distance_flag); |
| | 2298 | if (current->ref_viewing_distance_flag) |
| | 2299 | ue(prec_ref_viewing_dist, 0, 31); |
| | 2300 | ue(num_ref_displays_minus1, 0, 31); |
| | 2301 | for (i = 0; i <= current->num_ref_displays_minus1; i++) { |
| | 2302 | ues(left_view_id[i], 0, UINT8_MAX, 1, i); |
| | 2303 | ues(right_view_id[i], 0, UINT8_MAX, 1, i); |
| | 2304 | us(6, exponent_ref_display_width[i], 0, 62, 1, i); |
| | 2305 | if (!current->exponent_ref_display_width[i]) |
| | 2306 | length = FFMAX(0, (int)current->prec_ref_display_width - 30); |
| | 2307 | else |
| | 2308 | length = FFMAX(0, (int)current->exponent_ref_display_width[i] + |
| | 2309 | (int)current->prec_ref_display_width - 31); |
| | 2310 | ubs(length, mantissa_ref_display_width[i], 1, i); |
| | 2311 | if (current->ref_viewing_distance_flag) { |
| | 2312 | us(6, exponent_ref_viewing_distance[i], 0, 62, 1, i); |
| | 2313 | if (!current->exponent_ref_viewing_distance[i]) |
| | 2314 | length = FFMAX(0, (int)current->prec_ref_viewing_dist - 30); |
| | 2315 | else |
| | 2316 | length = FFMAX(0, (int)current->exponent_ref_viewing_distance[i] + |
| | 2317 | (int)current->prec_ref_viewing_dist - 31); |
| | 2318 | ubs(length, mantissa_ref_viewing_distance[i], 1, i); |
| | 2319 | } |
| | 2320 | flags(additional_shift_present_flag[i], 1, i); |
| | 2321 | if (current->additional_shift_present_flag[i]) |
| | 2322 | us(10, num_sample_shift_plus512[i], 0, 1023, 1, i); |
| | 2323 | } |
| | 2324 | flag(three_dimensional_reference_displays_extension_flag); |
| | 2325 | |
| | 2326 | return 0; |
| | 2327 | } |
| | 2328 | |
| 2287 | static int FUNC(sei)(CodedBitstreamContext *ctx, RWContext *rw, | 2329 | static int FUNC(sei)(CodedBitstreamContext *ctx, RWContext *rw, |
| 2288 | H265RawSEI *current, int prefix) | 2330 | H265RawSEI *current, int prefix) |
| 2289 | { | 2331 | { |