Skip to content

Add IS-11 support#474

Open
lo-simon wants to merge 162 commits intosony:masterfrom
lo-simon:IS-11-patch
Open

Add IS-11 support#474
lo-simon wants to merge 162 commits intosony:masterfrom
lo-simon:IS-11-patch

Conversation

@lo-simon
Copy link
Copy Markdown
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 thread Development/nmos-cpp-node/node_implementation.cpp
…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
Copy Markdown
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?

Comment thread Development/nmos-cpp-node/node_implementation.cpp Outdated
Comment thread Development/nmos-cpp-node/node_implementation.cpp Outdated
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
Copy Markdown
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

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Rename the variable intersection to constraint_set_intersection to prevent declaration of 'intersection' hides function parameter warning.

Comment thread Development/nmos/constraints.cpp
}

// 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
Copy Markdown
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 8 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>
…o prevent `declaration of 'intersection' hides function parameter` warning
# Conflicts:
#	Development/nmos-cpp-node/node_implementation.cpp
@simonbaren
Copy link
Copy Markdown

Hi @lo-simon and @jonathan-r-thorpe thanks for reviving this PR. I've been using the fork for long time now and will be glad to see it in main.
@lo-simon If you need additional set of hands, feel free to contact me.

@jonathan-r-thorpe
Copy link
Copy Markdown
Contributor

Hi @lo-simon and @jonathan-r-thorpe thanks for reviving this PR. I've been using the fork for long time now and will be glad to see it in main. @lo-simon If you need additional set of hands, feel free to contact me.

Hi @simonbaren - have you tried running this branch against the NMOS Testing tool IS-11 test suite? We're having a problem when we run the test suite with EDID switched on that we're trying to understand.

@simonbaren
Copy link
Copy Markdown

@jonathan-r-thorpe yes we did. But we have a custom node-implementation (to interact with our low-level stuff).
I know that we did fail some of the IS-11 EDID tests with errors COULDN'T TEST.
I can try to gather which specific tests it was.

If you want I can try to run the code as-is against nmos-testing to see what is missing.
Note - that there are tests (can't recall the test case number) that in the testing procedure you need to read the advertised EDID with an external tool to verify the test - i.e there is a manual test for it. It happens on the tests with the active constraints_sets.

@simonbaren
Copy link
Copy Markdown

@jonathan-r-thorpe I had another look on the IS-11 project - the EDID code (constraints_sets) is just a stub and doesn't actually modify the effective_edid. Might that be the issue you are seeing?

@N-Nagorny
Copy link
Copy Markdown
Contributor

Hello guys! Glad to see the PR was revived.

Yes, three tests fail.

Test ID Test name Description Resolution
test_01_03 Inputs with Base EDID support reject an invalid EDID The test PUTs a nulled binary to Base EDID. EDID parsing was out of scope for the reference impementation, so nmos-cpp accepts any EDID (returns 204). We can implement basic EDID support. https://github.com/N-Nagorny/libedid could come in handy here, though I can't commit to maintaining it. Alternatively, we can --ignore it in run_nmos_testing.sh.
test_02_03_05_01, test_02_03_05_02 Verify for inputs supporting EDID that the version and the effective EDID change when applying constraints The test tries to constrain a Sender to certain grain_rate for video and sample_rate for audio respectively. node_implementation.cpp declares Sender Capabilities that allow only single value of grain_rate and sample_rate, so Node can't adhere to constraint_sets from the tests and returns 422. This valid response should result into "Could Not Test" but the test suite has a bug in it (fixed in AMWA-TV/nmos-testing#852). Revive AMWA-TV/nmos-testing#852

@simonbaren
Copy link
Copy Markdown

Hi @N-Nagorny .
About test_02_03_05_01 and test_02_03_05_02 - those are very Generator reliant.
I mean - if your source Generator comply to EDID changes - test will fail.
The solution to that (was applied by IPMX I think) is to add a manual step for those tests. When test runs, the tester is prompted to go and read the EDID from the device and check that it changed.

As a semi-automatic test, it is possible to read the effective_edid and validate that it was constrained according to the request, but this is kind of wrong, because the test should check what is on the wire side and not the nmos side.

regarding test_01_03 - it pass for the implementation we run (we do use the libedid: Edid::parse_edid_binary(edid)) .

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.

5 participants