- ui(8, colour_primaries);
- ui(8, transfer_characteristics);
- ui(8, matrix_coefficients);
+#ifdef READ
+#define READ_AND_PATCH(name) do { \
+ ui(8, name); \
+ if (current->name == 0) { \
+ current->name = 2; \
+ av_log(ctx->log_ctx, AV_LOG_WARNING, "%s in a sequence display " \
+ "extension had the invalid value 0. Setting it to 2 " \
+ "(meaning unknown) instead.\n", #name); \
+ } \
+ } while (0)
+ READ_AND_PATCH(colour_primaries);
+ READ_AND_PATCH(transfer_characteristics);
+ READ_AND_PATCH(matrix_coefficients);
+#undef READ_AND_PATCH
+#else
+ uir(8, colour_primaries);
+ uir(8, transfer_characteristics);
+ uir(8, matrix_coefficients);
+#endif
+ } else {
+ infer(colour_primaries, 2);
+ infer(transfer_characteristics, 2);
+ infer(matrix_coefficients, 2);