Conversation
lo-simon
commented
Nov 14, 2025
- Add IS-11 NMOS Stream Compatibility Management support.
- This is superseded IS-11 support #271 which was initially created by @N-Nagorny
…move Flow Compatibility API helper functions into details namespace
…raint Set is a subset of another one
…alue with debug message
…o describe the purpose of the validate_base_edid callback
…amcompatibility_base_edid_handler callback, instead of using exception
…amcompatibility_active_constraints_handler callback, instead of using exception
| const auto validate_sdp_parameters = [](const web::json::value& receiver, const nmos::sdp_parameters& sdp_params) | ||
| { | ||
| if (nmos::media_types::video_jxsv == nmos::get_media_type(sdp_params)) | ||
| { | ||
| nmos::validate_video_jxsv_sdp_parameters(receiver, sdp_params); | ||
| } | ||
| else | ||
| { | ||
| // validate core media types, i.e., "video/raw", "audio/L", "video/smpte291" and "video/SMPTE2022-6" | ||
| nmos::validate_sdp_parameters(receiver, sdp_params); | ||
| } | ||
| }; |
There was a problem hiding this comment.
Why is validate_sdp_parameters redefined? Can Stream Compatability not use the transport file parser initialized in make_node_implementation?
There was a problem hiding this comment.
Yes, the same validate_sdp_parameters function can be reused, now fixed.
…callback to parse "transport_file" and Stream Compatibility Management API callback to perform application-specific receiver validation with its transport file.
… be initialized after" warning
| auto output = edid_support | ||
| ? nmos::experimental::make_streamcompatibility_output(output_id, device_id, true, boost::variant<utility::string_t, web::uri>(edid), receiver_ids, model.settings) | ||
| : nmos::experimental::make_streamcompatibility_output(output_id, device_id, true, receiver_ids, model.settings); |
There was a problem hiding this comment.
Hmmm, what's the behaviour if EDID support is set to true in the config? Does this pass any of the EDID tests in the NMOS Testing tool?
| if (!nmos::caps::meta::enabled(constraint_set)) continue; | ||
| for (const auto& sender_caps_constraint_set : sender_capabilities) | ||
| { | ||
| const auto intersection = nmos::experimental::get_constraint_set_intersection(sender_caps_constraint_set, constraint_set); |
There was a problem hiding this comment.
Should we worry about the Windows 2022 warning?
declaration of 'intersection' hides function parameter
| } | ||
| return false; | ||
| } | ||
| return lhs < rhs; |
There was a problem hiding this comment.
Are we guarding against a rational being compared with a scalar, or is that a legal comparison?
| } | ||
|
|
||
| // Constraint B is a subconstraint of Constraint A if: | ||
| // 1. Constraint B has enum keyword when Constraint A has it and enumerated values of Constraint B are a subset of enumerated values of Constraint A |
There was a problem hiding this comment.
"Constraint B has enum keyword when Constraint also has it" perhaps?
Co-authored-by: jonathan-r-thorpe <64410119+jonathan-r-thorpe@users.noreply.github.com>
Co-authored-by: jonathan-r-thorpe <64410119+jonathan-r-thorpe@users.noreply.github.com>