Stabilize DeckLink Linux support and require Desktop Video 15.x+#241
Closed
xShirae wants to merge 12 commits intoAcademySoftwareFoundation:mainfrom
Closed
Stabilize DeckLink Linux support and require Desktop Video 15.x+#241xShirae wants to merge 12 commits intoAcademySoftwareFoundation:mainfrom
xShirae wants to merge 12 commits intoAcademySoftwareFoundation:mainfrom
Conversation
|
5d6c188 to
326793f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
• ## Summary
This PR stabilizes the Blackmagic DeckLink output plugin on Linux by improving runtime detection, hardening callback and teardown
behavior, tightening error handling, and narrowing Linux support to Blackmagic Desktop Video 15.x+.
The end result is a simpler and safer integration path:
Problem
We were seeing multiple reliability issues in the DeckLink integration on Linux:
From testing:
Because the requirement is to support both audio and video output, “best effort” compatibility on older runtimes was not
sufficient.
What We Tried Before
Before adopting the final policy, we tried to preserve Linux backward compatibility.
1. Linux ABI fallback
We added a Linux fallback path to probe older DeckLink ABI/interface behavior when the modern output interface was unavailable.
2. Version-gated compatibility
We then narrowed that experiment to a specific compatibility window around 14.2.1 through 14.x, while rejecting anything older.
3. Focused diagnostics
We added HRESULT logging around:
That investigation showed a consistent pattern on 14.2.1:
4. Minimal callback refactor
We also split the old mixed audio/video callback object into separate callback objects so the legacy path was not using one
combined object for both registrations.
Why We Reverted To Strict 15.x+ Support
After testing and narrowing the issue, we concluded that maintaining Linux 14.x compatibility was not a good tradeoff.
Reasons:
set
video”
So this PR makes the support policy explicit:
Code Changes
Runtime diagnostics
Added explicit DeckLink runtime detection and reporting, including:
This made Linux driver/runtime mismatches diagnosable instead of opaque.
Callback/interface correctness
Improved COM-style callback behavior and then split callback responsibilities:
This removed the old mixed callback object and made registration/lifetime handling cleaner.
Startup and teardown hardening
Added explicit startup-state tracking for:
Cleanup now uses those states instead of assuming all startup stages completed successfully.
Strict Linux runtime policy
Linux runtime gating now:
Supported-path robustness fixes
The supported modern path was then hardened further:
Logging cleanup
Reduced noisy duplicate logs by:
User-Facing Behavior
On Linux with Desktop Video 15.x+
On Linux with older Desktop Video runtimes
Rationale
In short:
Testing Notes
Validated during investigation:
Expected behavior after this PR:
› don't say "we" but "I" instead
• ## Summary
This PR stabilizes the Blackmagic DeckLink output plugin on Linux by improving runtime detection, hardening callback and teardown
behavior, tightening error handling, and narrowing Linux support to Blackmagic Desktop Video 15.x+.
The end result is a simpler and safer integration path:
Problem
I was seeing multiple reliability issues in the DeckLink integration on Linux:
From testing:
Because the requirement is to support both audio and video output, “best effort” compatibility on older runtimes was not
sufficient.
What I Tried Before
Before adopting the final policy, I tried to preserve Linux backward compatibility.
1. Linux ABI fallback
I added a Linux fallback path to probe older DeckLink ABI/interface behavior when the modern output interface was unavailable.
2. Version-gated compatibility
I then narrowed that experiment to a specific compatibility window around 14.2.1 through 14.x, while rejecting anything older.
3. Focused diagnostics
I added HRESULT logging around:
That investigation showed a consistent pattern on 14.2.1:
4. Minimal callback refactor
I also split the old mixed audio/video callback object into separate callback objects so the legacy path was not using one
combined object for both registrations.
Why I Reverted To Strict 15.x+ Support
After testing and narrowing the issue, I concluded that maintaining Linux 14.x compatibility was not a good tradeoff.
Reasons:
set
video”
So this PR makes the support policy explicit:
Code Changes
Runtime diagnostics
I added explicit DeckLink runtime detection and reporting, including:
This made Linux driver/runtime mismatches diagnosable instead of opaque.
Callback/interface correctness
I improved COM-style callback behavior and then split callback responsibilities:
This removed the old mixed callback object and made registration/lifetime handling cleaner.
Startup and teardown hardening
I added explicit startup-state tracking for:
Cleanup now uses those states instead of assuming all startup stages completed successfully.
Strict Linux runtime policy
Linux runtime gating now:
Supported-path robustness fixes
I then hardened the supported modern path further:
Logging cleanup
I reduced noisy duplicate logs by:
User-Facing Behavior
On Linux with Desktop Video 15.x+
On Linux with older Desktop Video runtimes
Rationale
This PR intentionally favors a known-good, supportable Linux DeckLink integration over continued investment in a legacy ABI path
that never reached reliable audio+video operation.
In short:
Testing Notes
Validated during investigation:
Expected behavior after this PR: