Skip to content

Conversation

@lo-simon
Copy link
Collaborator

…move Flow Compatibility API helper functions into details namespace
@lo-simon lo-simon marked this pull request as ready for review November 25, 2025 15:18
Comment on lines +219 to +230
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);
}
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is validate_sdp_parameters redefined? Can Stream Compatability not use the transport file parser initialized in make_node_implementation?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Comment on lines +1061 to +1063
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);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we worry about the Windows 2022 warning?
declaration of 'intersection' hides function parameter

}
return false;
}
return lhs < rhs;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Constraint B has enum keyword when Constraint also has it" perhaps?

lo-simon and others added 2 commits January 22, 2026 09:05
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants