INTERACT FORUM
Windows => Television => Topic started by: Yaobing on October 04, 2024, 09:52:11 am
-
Users have requested that we support HDR tone mapping, and Hendrik said it was great if we can do it.
We support these devices using DirectShow, as WDM devices. Blackmagic Design does not support HDR tone mapping in DirectShow directly, a user mentioned that someone used a "back-door" method to pass the HDR tone mapping to video renderer. I thought we might be able to do that too, as we use JRVR.
On the other hand, the company provides an SDK so we can use that too. That means we redo part of our code and use the SDK functions instead of Microsoft functions.
Either way, I have not gained enough understanding to proceed further.
jmone said he could document current status of MC's support of such devices, what's working, and what's not. So I create this thread for everyone to chime in.
-
For HDR, all you really need from the device is some metadata if the source is HDR or not, thats the bare minimum. Additionally, there might be some static HDR metadata that could be useful (brightness etc), but if its not present it would still work ok-ish.
If we can somehow obtain this, I can tell you how to format it to send it to JRVR.
-
MC Exposes 2 different "Devices" with my BMD UltraStudio 4K Mini:
- Decklink Video Capture, and
- Blackmagic WDM Capture
I have both added in the TV Section. I "think" the Backmagic WDM Capture is the most recent as looking at the exposed option in the pins, it goes up to 4K, where the Decklink only goes up to 2K.
Let me know what you would like me to test. eg, I can do short recordings if that helps, but what signal(s) do you want me to feed it? I normally attach a Video Camera (that could output SDR, HLG, Raw) over HDMI or attach a MC Library Server client (and do SDR / HDR).
-
Did some testing feeding the BMD a UHD HDR Signal (from a MC Library Server Client).
- I don't think there is any colour space metadata being sent. I say this is even with capturing the stream in Resolve it does not tag it's recordings either (you have to manually assign the colour space Gamut and Gamma) to the clip.
- For some reason it is only showing it as an 8-Bit even if sending 10-Bit (in Resolve it can be captured in 10-Bit)
- Watching live playback is smooth (even though JRVR is reporting tons of empty queue counts)
- Recording in MC is not usable (guessing it is trying to stuff Uncompressed Video into the JTV Container without any on the fly compression), so you get maybe 1fps.
-
Here is the filter graph info:
Filter Graph Info (TV graph):
Filter 'JRiver Audio Renderer'
CLSID: {A4002F8E-510F-442C-8AD3-F9C7B23FB394}
Host:
Input Pin 'In'
Connected to pin 'Output1' of filter 'Blackmagic WDM Capture C7A65834542C631B'
Major type MEDIATYPE_Audio Sub type MEDIASUBTYPE_PCM, Format type FORMAT_WaveFormatEx
Filter 'JRVR'
CLSID: {555E6803-14EF-4946-8646-B6EF9E9121E2}
Host:
Input Pin ''
Connected to pin 'XForm Out' of filter 'AVIDecompressor'
Major type MEDIATYPE_Video Sub type MEDIASUBTYPE_RGB32, Format type FORMAT_VideoInfo
Filter 'AVIDecompressor'
CLSID: {CF49D4E0-1115-11CE-B03A-0020AF0BA770}
Host: c:\windows\system32\quartz.dll
Input Pin 'XForm In'
Connected to pin 'Output0' of filter 'Blackmagic WDM Capture C7A65834542C631B'
Major type MEDIATYPE_Video Sub type Unknown GUID Name: {43594448-0000-0010-8000-00AA00389B71}, Format type FORMAT_VideoInfo
Output Pin 'XForm Out'
Connected to pin '' of filter 'JRVR'
Major type MEDIATYPE_Video Sub type MEDIASUBTYPE_RGB32, Format type FORMAT_VideoInfo
Filter 'Blackmagic WDM Capture C7A65834542C631B'
CLSID: {17CCA71B-ECD7-11D0-B908-00A0C9223196}
Host: c:\windows\system32\ksproxy.ax
Output Pin 'Output0'
Connected to pin 'XForm In' of filter 'AVIDecompressor'
Major type MEDIATYPE_Video Sub type Unknown GUID Name: {43594448-0000-0010-8000-00AA00389B71}, Format type FORMAT_VideoInfo
Output Pin 'Output1'
Connected to pin 'In' of filter 'JRiver Audio Renderer'
Major type MEDIATYPE_Audio Sub type MEDIASUBTYPE_PCM, Format type FORMAT_WaveFormatEx
-
I think there are only two things that would make it "work" correctly as it stands:
- Colour Space: Let the user in the TV HW Setup page select the colour space for the device (HDR / SDR)... or even let them create two (one for SDR, one for HDR).
- Encoding: Add a new HW accelerated encoding feature for recording.
Apart from that, the current setup using WDM Capture Device works well. The above two features would also be good for any sort of live HDMI feed.
-
It would also be good to add in the JRVR Info Box under Input what the FPS is. I can confirm that the JTV recording was correct (23.98 fps) for this BD capture.
-
Thanks Nathan!
Yes, video capture is done without any on-the-fly video compression, because we don't have a video compression filter. The video compressor created by Matt more than 20 years ago was good for SD analog TV, but not for HD video, not to mention the 4k or higher videos.
-
You don't really want to play with uncompressed video :), the bitrates are insane.... but we already have avcodec as part of MC's plugins.
I did a quick test and the following worked fine in capturing a live UHD stream from the WDM filter (with the correct frame rate automatically) that then plays just fine in MC.
ffmpeg -f dshow -i video="Blackmagic WDM Capture":audio="Line In (Blackmagic UltraStudio 4K Mini Audio)" out.mp4
It would need some tweaking for Format, Bitrate, Buffering and setting the colour space tagging etc, but it works simply enough. I don't know if you can build it all in one graph, or if you would need to kick off the capture / compression in one thread, and the playback in another.
-
When I look at the options for the WDM filter using:
ffmpeg -f dshow -list_options true -i video="Blackmagic WDM Capture":audio="Line In (Blackmagic UltraStudio 4K Mini Audio)"
...it looks like there is nothing to set in the way of frame rate or resolution for the Video side (it matches what the Ultrastudio is being feed) but you can specify the Audio capture (though I got the 2ch by default anyway).
[dshow @ 0000021b1d3fd040] DirectShow video device options (from video devices)
[dshow @ 0000021b1d3fd040] Pin "Output0" (alternative pin name "0")
[dshow @ 0000021b1d3fd040] pixel_format=uyvy422 min s=3840x2160 fps=50 max s=3840x2160 fps=50
[dshow @ 0000021b1d3fd040] vcodec=v210 min s=3840x2160 fps=50 max s=3840x2160 fps=50
[dshow @ 0000021b1d3fd040] Pin "Output1" (alternative pin name "1")
[dshow @ 0000021b1d3fd040] DirectShow audio only device options (from audio devices)
[dshow @ 0000021b1d3fd040] Pin "Capture" (alternative pin name "Capture")
[dshow @ 0000021b1d3fd040] min ch=1 bits=8 rate= 11025 max ch=2 bits=16 rate= 44100
-
ffmpeg -f dshow -i video="Blackmagic WDM Capture":audio="Line In (Blackmagic UltraStudio 4K Mini Audio)" out.mp4
So FFMPEG is handling the capture filter's output internally and convert to desired output. It appears that we can not take advantage of that in our current system because we are not controlling the output.
We will have to create something new for this.
-
Pretty much. It is just an example of what could be done to record the uncompressed HDMI feed to a std rendered H264(or H265, AV1 file) in real time that then use would be used for normal playback / time shifting. You can also specify encoding settings like resolution, bitrate etc etc. There are also flags for taging the file with Colour Space info (BT709, BT2020 etc).
It would be worth chatting to Hendrik, as for all I know this can all be done using the existing avcodec plugin that does the on the fly video transcoding used for streaming to client devices.
-
One approach would be to create a video compression filter, using the available library, like the reverse of LAV Video Decoder.
Another is to abandon the current Microsoft approach, and use Blackmagic API directly. They use the COM too, but just not DirectShow. Not sure if this is going to be easier than creating a stand alone compression filter, as we still need to deal with what to do with the video output we get from the device.
Creating a filter would seem better from the point of being able to use it with other video capture devices that we also support.
Hendrik, any thoughts?
-
I agree. It could then be used with any device.
FWIW, these are a range of these BMD devices (both PCI-E cards and thunderbolt connected boxes) and most of them don't have an on-board Video Encoder, so even with the API you would need to still encode the video somehow.
-
In build 37, just out on beta board, I added this:
Changed: Added some exploratory logging on Blackmagic DeckLink video capture devices.
Please run the device and provide me a log file.
The relevant log lines contain this: "BlackmagicWDMCapture::ExploreDecklinkAPI"
-
Tried running it a few times on the "Blackmagic WDM Capture" but MC now just crashes (see log). I'll rollback and see if it still works with the older version of MC.
-
Yup it is only Build 37 that crashes. Build 36 is fine.
-
...and the crash happens immediately after the new "BlackmagicWDMCapture::ExploreDecklinkAPI" call.
0008847: 13328: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: Start
0008867: 13328: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: decklink device: UltraStudio 4K Mini, model UltraStudio 4K Mini
0008867: 13328: General: TopLevelExceptionFilter: Unhandled exception -- program crashing
0008867: 13328: General: TopLevelExceptionFilter: Message: 514, wParam: 0, lParam: 121701199
-
Is "UltraStudio 4K Mini" the device you tried to use in MC? Exactly the same?
-
I'm not sure I understand the question fully.
I've setup the device in in MC prior to Build 37 in the devices section of TV and it works just fine, but that profile crashes on Build 37. I'll try setting it up again in Build 37.
-
I just tried to do the setup again in Build 37 and that makes MC crash as well.
FWIW - Here is the DirectShow Filter into again from Build 36
Filter Graph Info (TV graph):
Filter 'JRiver Audio Renderer'
CLSID: {A4002F8E-510F-442C-8AD3-F9C7B23FB394}
Host:
Input Pin 'In'
Connected to pin 'Output1' of filter 'Blackmagic WDM Capture C7A65834542C631B'
Major type MEDIATYPE_Audio Sub type MEDIASUBTYPE_PCM, Format type FORMAT_WaveFormatEx
Filter 'JRVR'
CLSID: {555E6803-14EF-4946-8646-B6EF9E9121E2}
Host:
Input Pin ''
Connected to pin 'XForm Out' of filter 'AVIDecompressor'
Major type MEDIATYPE_Video Sub type MEDIASUBTYPE_RGB32, Format type FORMAT_VideoInfo
Filter 'AVIDecompressor'
CLSID: {CF49D4E0-1115-11CE-B03A-0020AF0BA770}
Host: c:\windows\system32\quartz.dll
Input Pin 'XForm In'
Connected to pin 'Output0' of filter 'Blackmagic WDM Capture C7A65834542C631B'
Major type MEDIATYPE_Video Sub type Unknown GUID Name: {43594448-0000-0010-8000-00AA00389B71}, Format type FORMAT_VideoInfo
Output Pin 'XForm Out'
Connected to pin '' of filter 'JRVR'
Major type MEDIATYPE_Video Sub type MEDIASUBTYPE_RGB32, Format type FORMAT_VideoInfo
Filter 'Blackmagic WDM Capture C7A65834542C631B'
CLSID: {17CCA71B-ECD7-11D0-B908-00A0C9223196}
Host: c:\windows\system32\ksproxy.ax
Output Pin 'Output0'
Connected to pin 'XForm In' of filter 'AVIDecompressor'
Major type MEDIATYPE_Video Sub type Unknown GUID Name: {43594448-0000-0010-8000-00AA00389B71}, Format type FORMAT_VideoInfo
Output Pin 'Output1'
Connected to pin 'In' of filter 'JRiver Audio Renderer'
Major type MEDIATYPE_Audio Sub type MEDIASUBTYPE_PCM, Format type FORMAT_WaveFormatEx
-
Here is the log of it working in Build 36
-
I'm not sure I understand the question fully.
I've setup the device in in MC prior to Build 37 in the devices section of TV and it works just fine, but that profile crashes on Build 37. I'll try setting it up again in Build 37.
Identical name?
-
Sure, but I'm not sure what string and in what area to compare too? All I know is that the profile I'd set up in that worked now crashes MC Build 37 and I can't setup a new one in MC37 as it too crashes.
-
Thanks, you answered my question.
In DirectShow, MC picks up this device: "Blackmagic WDM Capture" which is so generic.
In Blackmagic DeckLink API, this device showed up before the crash: " UltraStudio 4K Mini". There is no match.
That is a problem, as we can not identify the device in an easy way. That, however, should not be the cause of the crash, which I am still trying to figure out.
-
Figured out why it crashed.
I emailed you an updated DLL. It should prevent crashing. It will not give us any other info because we are not able to have matching devices names.
Emailing failed for some reason. Here is the file:
-
Crashing is fixed :) Log attached of it playing the device.
-
You may be able to do what you want over dshow anyway? Had a look at the options that are exposed (using ffmpeg).
I'm using these devices (that work in MC now):
[dshow @ 000001e92068cf00] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000001e92068cf00] "Blackmagic WDM Capture"
[dshow @ 000001e92068cf00] Alternative name "@device_pnp_\\?\decklink#avstream#9&1d8ec6ee&0&0#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\decklinkcapture1"
[dshow @ 000001e92068cf00] DirectShow audio devices
[dshow @ 000001e92068cf00] "Line In (Blackmagic UltraStudio 4K Mini Audio)"
[dshow @ 000001e92068cf00] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{D1D418E7-A7DA-47EB-8662-28E939E16C24}"
But don't use these ones as MC does not seem to get a feed (just a blank screen)
[dshow @ 000001e92068cf00] "Decklink Video Capture"
[dshow @ 000001e92068cf00] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{44A8B5C7-13B6-4211-BD40-35B629D9E6DF}"
[dshow @ 000001e92068cf00] "Decklink Audio Capture"
[dshow @ 000001e92068cf00] Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{AAA22F7E-5AA0-49D9-8C8D-B52B1AA92EB7}"
-
...and this is what I see for the cobo that works now in MC:
ffmpeg -f dshow -list_options true -i video="Blackmagic WDM Capture":audio="Line In (Blackmagic UltraStudio 4K Mini Audio)"
[dshow @ 000002cae903cfc0] DirectShow video device options (from video devices)
[dshow @ 000002cae903cfc0] Pin "Output0" (alternative pin name "0")
[dshow @ 000002cae903cfc0] pixel_format=uyvy422 min s=3840x2160 fps=50 max s=3840x2160 fps=50
[dshow @ 000002cae903cfc0] vcodec=v210 min s=3840x2160 fps=50 max s=3840x2160 fps=50
[dshow @ 000002cae903cfc0] Pin "Output1" (alternative pin name "1")
[dshow @ 000002cae903cfc0] DirectShow audio only device options (from audio devices)
[dshow @ 000002cae903cfc0] Pin "Capture" (alternative pin name "Capture")
[dshow @ 000002cae903cfc0] min ch=1 bits=8 rate= 11025 max ch=2 bits=16 rate= 44100
-
...and here is the loooong list of options for the generic "Decklink" one (that do not work in MC currently).
-
I am still not able to make a name match (or model) between the API name and the DirectShow name. So I created a DLL to use the first device enumerated by the API for the purpose of exploring its capabilities.
-
:) - This seems to work. Here is the log file that shows not only the device enumeration but also Playback of the two exposed BM "devices" from the UltraStudioMini4K (same as before):
- Blackmagic WDM Capture : Works as usual - shows the image & sound
- Decklink Video Capture : Black Screen
-
You are still going to need some encoding filter to make timeshifting / recording possible. Most of these BMD devices (except some of the higher end models) do not have an onboard HW encoder.
-
Playback of the two exposed BM "devices" from the UltraStudioMini4K (same as before):
- Decklink Video Capture : Black Screen
This is because I never put code in to explicitly support this device. That means it will load up generic code, instead of Blackmagic specific code. Now this is added.
Please test the updated DLL. I also refined some of the exploratory logging entries.
-
Here you go, same test as before will a log. Similar results.
I did get the Decklink Video Capture to move past "Starting TV" on one occasion (did not get a log) and not sure how as I could not repeat it. On that occasion, I got audio but a black video that was reported as something like 576i (I think), rather than the UHD it was being sent.
-
Thanks.
DeckLink Video Capture filter could not be rendered, according to the log. I am still trying to determine why, but there is nothing else that got logged.
Have you used GraphEdit or GraphEditPlus before? If so and if you still have it on your computer, can you try it? For this device, you need to add two filters, "DeckLink Video Capture" and "DeckLink Audio Capture". Both filters expose an output pin called "Capture". See if you can render from these pins in GraphEdit. The video capture filter also has two other output pins, and I don't know what they are for.
-
Ahhh, the "good 'ol days" of graphstudio! Had a good play:
- Decklink: EDIT: See later posts, it can be made to work! I could only get Audio to work. Always a blackscreen. Tried both 1080p and UHD as I notice in the (see pic) DS options there is no ability to pick anything above 2K. I know that everything has to be set to the same format (Input Device, UltraStudio, and Renderer) or it fails....
- BMD WDM: This one just works, and you don't have to set anything on the UltraStudio or in the WDM drivers (infact there is no options at all), it will put it into the correct mode each time the graph is created (eg UHD or 1080p) based on the incomming signal. It's also one filter for both Video and Audio capture. Nice.
Can you explain what the issue is of using the BMD WDM filters over the Decklink ones? The WDM ones "just work" already and seems to be the one for "consumption" rather than the Decklink ones that are more for studio work.
-
...and you don't have to worry about the other two pins which are:
- VANC (Vertical Ancillary data) : Additional meta data embedded into the SDI stream for specific broadcast and cinema camera setups (you can ignore)
- TimeCode : Used to match a multi camera setup to avoid drift from different clocks in each (you can ignore)
-
Got "Decklink" working at 1080p, with the following settings:
-
Still no luck getting Decklink to work in MC even at 1080p. I think the issue is, even if I manually set the Desklink Filter, it seems to always revert back to the default (see pic) once playback is attempted.
-
That graph looks simple enough. I figured out (sort of) why it is not playing in MC.
0034766: 42708: TV: CMainTVManager::PlayDefaultChannel: Start
0034766: 42708: TV: CMainTVManager::PlayDefaultChannel: Finish (0 ms)
I would expect logging lines between the two lines above, but none was found. That means the graph-building is skipped entirely. The only explanation would be that the device exposes an interface that led MC to treat it as an "external device" - "The IAMExtDevice interface controls an external device, such as a DV camera or video tape recoder [sic](VTR)." per Microsoft.
That is a bit surprising. The DLL below should confirm whether that is the case. We had code to deal with DV camcorders, but it was about twenty years ago. Right now I am not sure if it still works, but the code (or part of it) is there. I may have to make a special case not to treat "DeckLink Video Capture" as an external device.
-
I can't download that new DLL, I get a 404 - File not found.
-
Try this one:
It had a double JR. I'm just guessing this is the right one.
-
Sorry, my bad. Link fixed.
-
This DLL forces Blackmagic devices not to be an "External Device":
-
Nice work, getting there. The playback graph seems to get built
The log should show in order:
- 1 x BMD WDB Play: Works as usual, got both video and sound
- 2 x Decklink Plays: Works, but the input video format is not set correctly and reverts to 525i @ 59.94 and not the 1080p/50p signal I was feeding it. I do get the playback window but the video is blank as a result. Sound works fine. I tried setting it in the DS Filter's pop up but it does not "stick" between sessions, and changing it once the graph is setup does not work.
Looking at the Decklink API doco, I think you can check what the input signal is and set the device accordingly before building the graph?
-
Thanks.
It is odd that the format resets to SD video. The graph dump shows that SD format was used for connection. I will try setting the format.
-
Looking at the Decklink API doco, I think you can check what the input signal is and set the device accordingly before building the graph?
The IDeckLinkInput interface has methods to iterate through all supported display modes, but I can not find a method that tells me which format it is currently using. Maybe it expects the apps to set it.
For now I will just see if I can set the capture filter's output format to 1080p/50p, for you to test.
-
- I know that in Davinci Resolve I have to manually set the exact resolution and frame rate or capture will fail
- The BMD WDM filter auto adjust to the input resolution and frame rate.
BlackMagic have a forum for App Developers you can ask questions with at - https://forum.blackmagicdesign.com/viewforum.php?f=12
There are references in the Decklink API Doco to these calls:
Automatic Mode Detection
The automatic mode detection feature will notify an application when a property of the video input signal changes. This feature is supported on certain DeckLink devices. For an example of using automatic mode detection, please refer the AutomaticModeDetection sample in the DeckLink SDK.
To use this feature please refer to the following steps:
— Call IDeckLinkProfileAttributes::GetFlag with the BMDDeckLinkSupportsInputFormatDetection flag to check that the DeckLink hardware supports the automatic format detection feature.
— Create a callback class that subclasses from IDeckLinkInputCallback and implements all of its methods. The IDeckLinkInputCallback::VideoInputFormatChanged method will be called when a change in the property of the video signal has been detected.
— Install a callback by calling IDeckLinkInput::SetCallback and referencing an instance of your callback class.
— Call IDeckLinkInput::EnableVideoInput with an initial video mode and pixel format and set the bmdVideoInputEnableFormatDetection flag.
— Call IDeckLinkInput::EnableAudioInput.
— Call IDeckLinkInput::StartStreams to begin capture.
While the input streams are running:
If a change in a property of the input video signal is detected then IDeckLinkInputCallback::VideoInputFormatChanged will be called in your callback object with the new video properties provided in the parameters.
If the video mode or pixel format has changed, then the following sequence could be used to restart capture with the new settings: IDeckLinkInput::PauseStreams Call IDeckLinkInput::EnableVideoInput with the detected video mode and pixel format.IDeckLinkInput::FlushStreams IDeckLinkInput::StartStreams
— Call IDeckLinkInput::StopStreams to stop capture.
— Call IDeckLinkInput::DisableVideoInput
— Call IDeckLinkInput::DisableAudioInput
-
This is also these resources - https://www.blackmagicdesign.com/developer/products/capture-and-playback/sdk-and-software
Towards the bottom of this page is a "Introduction to Video Capture and Playback" button that gives you some code samples including one called "DeckLinkInputDevices.cs" that seems to have what you may need. I've attached this one.
-
Thanks. I read the text you quoted, and did not pay much attention because it requires having the device start streaming, then detect changes in a callback. I was looking for a way of getting the current/default format before the device starts.
I tried setting it in the DS Filter's pop up but it does not "stick" between sessions, and changing it once the graph is setup does not work.
Did you try to get this through right-click menu while the video is playing in MC? That will not stick. To get the format saved, you need to run "Configure Device". This is accessed through right-clicking Television tree branch, and selecting the device from the list, and clicking "Configure..." button. Once the dialog window pops up, go to Advanced section and double-click "Video Capture pin"
-
Yeah, neither method works and it always reverts.
I can make the change on the Video Capture Pin (under the TV Configure Device) just fine, but it seems to revert to the default as soon as I leave MC's "Configure Device" dialogue.
I'm only guessing on the various calls and hope the sample code sheds some light. Otherwise, I'd suggest just posting over on the BMD's Dev Forum. It's a bit like Interact and has both users and BM staff that respond pretty well to most questions.
-
Can you find this registry key?
HKEY_CURRENT_USER\SOFTWARE\JRiver\Media Center 33\TV Settings\<device id>\MediaType
where <device id> should look similar to this for your device:
@device:sw:{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{44A8B5C7-13B6-4211-BD40-35B629D9E6DF}
except that some characters are replaced with '_'.
That location is where we save the format after you run the configuration tool. If it is there, but we still get the wrong value, it means the device reverts before we even have a chance to save.
I will see if I can get it going using another method.
-
I'm not sure if it matters but the device path is "JRiver" not "JRiver"
Computer\HKEY_CURRENT_USER\Software\JRiver\Media Center 33\TV Settings\@device:sw:{860BB310-5D01-11D0-BD3B-00A0C911CE86}_{44A8B5C7-13B6-4211-BD40-35B629D9E6DF}
Attached is the registry settings for this device (note: It looks pretty identical to the other devices).
Update: I can make the change on the Video Capture Pin (under the TV Configure Device) just fine, and it stays set while I'm in the "Configure Device" dialogue (eg I can go back into the pin and see it is still set), but it seems to revert to the default as soon as I leave MC's "Configure Device" dialogue.
-
I meant for you to look for the MediaType sub key.
In any case, I found a line of code that is too restrictive, which might have led to skipping the saving of info to the registry.
-
I'll give it a try in a sec, but FYI - there is no MediaType sub key at all for the Decklink entries, but there is one for the WDM ones.
-
No change in the behavour (setting, playback etc).
No "MediaType" sub key was added to the registry either.
-
Do you want me to try copying the MediaType sub key from the BMD WDM over to the Decklink?
-
Please post a log. Look for "CAnalogTVDevice::DisplayVideoCapturePinPropPages" entries in the log file.
-
I'm not sure if it matters but the device path is "JRiver" not "JRiver"
We kept the old name in registry settings. So J and R separated by a period and a space is correct for registry paths. (and J and R separated by just a space is correct for program installation folder name.)
-
Post of log of doing what?
- Trying to set the Pin,
- Starting Playback
PS - I copied the MediaType subkey from the WDM to the Decklink. It certianly changed the input details in JRVR, but still a black screen. The video pin was then showing as blank (so it was not set to something it had in it's list).
-
Got it working!
That copied MediaType puts the Decklink into UHD@50fps mode, and when I feed it that signal it now plays just like the WDM version.
-
Post of log of doing what?
- Trying to set the Pin,
- Starting Playback
PS - I copied the MediaType subkey from the WDM to the Decklink. It certianly changed the input details in JRVR, but still a black screen. The video pin was then showing as blank (so it was not set to something it had in it's list).
Log of trying to set format on Pin property page.
-
let's back step a little. Delete the MediaType subkey and try running the property page and setting the video format. Then post a log.
-
This is the registry with the copied WDM MediaType that works with UHD Output.
It is interesting you can set this format (and it works), but there are no UHD options listed in the drop down for the Video Pin (only up to 2K).
I'll grab the log trying to set the pin next.
-
let's back step a little. Delete the MediaType subkey and try running the property page and setting the video format. Then post a log.
One sec.
-
Here it is.
-
I can not find any entries with "DisplayVideoCapturePinPropPages". Did you use Configure dialog to set the properties?
-
This are my steps:
- "Television" (on the left main window)
- "TV Options..." button (main window)
- "... Manage Devices.." link
- Select "Decklink Video Capture" entry in the "Manage Television Devices" Dialg
- Press "Configure" button
- Double click on "Video Capture Filter..."
- From the "Properties" Window of slected a Video Format in the Drop Down --> Press Apply --> Press OK
- Then OK / OK /OK to get back to the Main MC UI.
-
Is this the correct sequence? If so I'll try again and grab another log.
-
Almost correct.
"Video Capture Filter..." should have been "Video Capture Pin..."
-
I see the following.
Unless, I need to delete and reset up the Device (it was added some time ago when we first looked at this)?
-
The WDM Version says "Video Capture Pin..."
-
I see. They don't have a property page for that. Hmm, the video output pin settings are expected to come from there :(
I will think of something tomorrow.
-
Thanks - I'm around :)
-
Thanks.
-
I see. They don't have a property page for that. Hmm, the video output pin settings are expected to come from there :(
I will think of something tomorrow.
...and it supports more than is what is exposed on that Filter Dialog anyway.
-
I did two things today:
1. Do not use any hard-coded format, if we have not already saved a format in the registry. I don't remember why we needed the hard-coded format, maybe for some devices. Now I disallow that for Blackmagic devices.
2. Save video format after user configured "Video Capture Filter..." when "Video Capture pin..." does not exist. I am guessing this devices uses the "Capture Filter" property pages, instead of a separate "Capture pin" property page.
To test the ideas, first wipe out the "MediaType" subkey from the registry, and try playing the device and see if it works. It it works, it means the previously hard-coded format is not supported and that is the reason for it not working. This tests the change #1 above. Hope it works.
Regardless of whether the above test succeeds, run Configure on the device and double-click "Video Capture Filter..." to bring up the capture filter property page. Make any changes you like, and click Apply/OK.
Send a log.
-
First test is just to pick and set some format on the filter (1080/50p 4:2:2 as there is no UHK option exposed). This seems to work... I've attached the:
- Log
- The MediaType Registry settings that got created.
Next to test playback.
-
...and here is the log with MC correctly setting the Ultrastudio to 1080p50 and then playing the 1080p stream (with audio) that I was feeding it.
Nice work.
-
As expected - I also tried sending a UHD stream and this "played" but with a black screen (as the UltraStudio was in 1080p mode).
-
To test the ideas, first wipe out the "MediaType" subkey from the registry, and try playing the device and see if it works. It it works, it means the previously hard-coded format is not supported and that is the reason for it not working. This tests the change #1 above. Hope it works.
Here is the log for this test. It did not work in that:
- Nothing was created in the Registry
- Ultra Studio was set to the default 525i
- It played with a blank screen
Log attached
-
Also testing the following to see if it helps (it does not):
- Play the WDM : Changed the Ultra Studio to 1080p mode and playback was correct in MC, then Stop and:
- Play the Decklink : Changed the Ultra Studio back to 525i and the input was not correct and a black screen in MC (with sound).
-
It appears that the device, when we do not set the video format, defaults to 720x486x16 bit '0x59565955'. We have to set the format (i.e. via Video Capture Filter configuration), in order to play. Well, as least we now know how to set it.
-
As expected - I also tried sending a UHD stream and this "played" but with a black screen (as the UltraStudio was in 1080p mode).
So you have to configure the device each time a stream with a different resolution is sent? And the device does not let you set it to UHD. They need to update this device driver.
-
It appears that the device, when we do not set the video format, defaults to 720x486x16 bit '0x59565955'. We have to set the format (i.e. via Video Capture Filter configuration), in order to play. Well, as least we now know how to set it.
Correct, but you can also set it programmatically.
So you have to configure the device each time a stream with a different resolution is sent? And the device does not let you set it to UHD. They need to update this device driver.
- Correct,
- Half Correct: There Filter's UI does not expose any UHD options, but you can set it programmatically to UHD (as I by copying the MediaType registry)
- Not sure: I think the Decklink driver is expecting to be programatically controlled (and not via the Filter's UI)
---------------------------------------------------------
I'm confused on what we are trying to achieve with these BlackMagic devices and the two different filters that are exposed, seem to offer different things:
Isn't their WDM filter the "auto everything" driver as?
- Requires nothing to be set,
- Auto configures the UltraStudio to match in incoming signal format,
- Passes through the video and audio to MC just fine.
Vs
The Decklink filter which seems to need you to programmatically control it as:
- Nothing is automatic,
- Setting it via the Filter does keep it between sessions, but you have to manually change it manually for different input specs
- Not all the capabilities are exposed in the filter's UI but it does support everything (as we can see in the log and in my manual testing).
I guess the bit I do not understand, and my Q's would be:
1) What is wrong with just using the WDM driver?
2) What is the advantage of getting the Decklink driver working?
3) Aren't you still going to need an encoding filter to get a useable H264/H265/AV1 file (or ffmpeg/avcodec or even some way of getting the WDM or the Decklink driver to trigger that with the GPU.... if that is even possible... no idea)?
-
Having a play using ffmpeg's dshow capture and encoding to MP4 (AVC in this example), I can confirm that both methods can capture a UHD input signal:
Decklink Filters: You needed to set the Video Size/Framerate (or else it "defaults" and you get a black video).
ffmpeg -f dshow -video_size 3840x2160 -framerate 50 -rtbufsize 702000k -i video="Decklink Video Capture":audio="Decklink Audio Capture" out.mp4
WDM Filters: You don't need to set anything.
ffmpeg -f dshow -rtbufsize 702000k -i video="Blackmagic WDM Capture":audio="Line In (Blackmagic UltraStudio 4K Mini Audio)" out.mp4
Apart from that, the rest is the same.
Note: If I was to use ffmpeg for real use I'd be setting a bunch of flags as part of the encoding for quality etc.
-
Thank you Nathan.
With your help we now have the following changes in the next build:
1. Changed: For video capturing (on Windows, using DirectShow), if the device does not offer "Video Capture Pin" property page, MC will save video output format data upon user exiting from "Video Capture Filter" property page. This solves the issue of MC never saving the output format that the user set on the property page.
2. Fixed: DirectShow device "DeckLink Video Capture" from Blackmagic Design did not work.
-
Good question regarding WDM filter vs. DeckLink filter. Indeed it appears that the latter requires the app to do more setup.
What I will do is to create a dialog window that will list all input lines (if the device has multiple) and input formats for users to choose from, and then with the chosen input format, list all compatible output formats for the users to choose from. Only after the users make such selections the device can work. So the dialog window might pop up every time the device is loaded (with the option to turn it off) and it will also be available on the configuration window.
-
Sounds good. It may be worth adding a "remember" or "make default".
I'll be very interested in see how the "output" format works. So far, all I've seen is it passes through the input. My unit certainly does not have any inbuit HW encoding capability, unless it just uses the PC's existing encoding capabilities (CPU/nvidia etc). Will you also be asking the user to set the Colour Space (709/HLG/PQ)?
-
Sounds good. It may be worth adding a "remember" or "make default".
Yes, I will let the settings persist, and let users to choose whether to run settings every time.
I'll be very interested in see how the "output" format works. So far, all I've seen is it passes through the input. My unit certainly does not have any inbuit HW encoding capability, unless it just uses the PC's existing encoding capabilities (CPU/nvidia etc).
This is not clear to me either. By reading their documentation, I get the impression that you set input format for recording, and output format for viewing. Since the DirectShow filters only expose "Capture" pin, not "Preview" pin, only the input format is used?
Will you also be asking the user to set the Colour Space (709/HLG/PQ)?
I am still in the process of understanding what is possible. I will add it if I figure out how. :)
-
Tested the changes to date rolled into v40. Works as expected! :)
I'll also do some digging on the other questions and report back.
-
I found this in their FAQ on "How to output HDR Metadata"
Before attempting to capture or output HDR Metadata, a DeckLink API application should verify support for this feature, by querying the BMDDeckLinkSupportsHDRMetadata [1] attribute via the IDeckLinkAttributes [2] interface:
IDeckLinkAttributes *deckLinkAttributes = NULL;
if (deckLink->QueryInterface(IID_IDeckLinkAttributes, (void **)&deckLinkAttributes) != S_OK) {
printf("Could not get the IDeckLinkAttributes interface\n");
deckLinkAttributes = NULL;
goto bail;
}
bool supportsHDR = false;
if (deckLinkAttributes->GetFlag(BMDDeckLinkSupportsHDRMetadata, &supportsHDR) == S_OK && supportsHDR) {
// HDR is supported.
}
The IDeckLinkVideoFrameMetadataExtensions [3] interface provides methods to query metadata associated with a video frame, the presence of HDR metadata may be determined by checking the frame flags[4] for the presence of the bmdFrameContainsHDRMetadata [5] flag.
"2.7.63 Frame Metadata ID" enumerates the metadata items which may be queried via the IDeckLinkVideoFrameMetadataExtensions interface. The available HDR metadata includes the RGB primaries, whitepoint, EOTF, etc.
In order to output HDR metadata, the application will need to provide a class that implements both IDeckLinkVideoFrame [6] and IDeckLinkVideoFrameMetadataExtensions (in a similar way as 3D support requires an application to implement IDeckLinkVideoFrame3DExtensions, as demonstrated in the SignalGenerator SDK sample).
The custom video frame type should indicate the presence of HDR metadata by ensuring the IDeckLinkVideoFrame::GetFlags() [7] implementation returns bmdFrameContainsHDRMetadata, and implement IUnknown::QueryInterface() [8] for IDeckLinkVideoFrameMetadataExtensions.
This video frame class which implements the IDeckLinkVideoFrameMetadataExtensions interface may implement additional methods to set the HDR metadata fields as needed by the upper layers of the application.
When scheduling instances of the custom IDeckLinkVideoFrame for playback, the DeckLink API will query the frame flags to determine if the bmdFrameContainsHDRMetadata flag is set, and if so, retrieve the IDeckLinkVideoFrameMetadataExtensions implementation (via IUnknown::QueryInterface()). Assuming IUnknown::QueryInterface() is successful, IDeckLinkVideoFrameMetadataExtensions::Get*() will be called by the DeckLink API to retrieve the HDR metadata for output.
-
Found this older quote from a Blackmagic Design staff member. As I suspected (though some of their models do have a HW encoder).
The DeckLinkAPI provides interfaces for the capture of uncompressed video and audio. It does not provide interfaces for capture to container formats such as .mp4.
You should consider using Media Express for capture or other 3rd party implementations such as FFmpeg to achieve this.
Edit - and this newer post:
The H265TestEncoder SDK sample provides code example for products that support capture with native H.265 hardware encoding in addition to uncompressed capture. The UltraStudio 4K Extreme will work with this sample, but not the DeckLink 8K Pro which supports only uncompressed capture.
Most BMD capture device don't have onboard HW encoding (and the ones that do only support H265)
In order to use H.264, your application will need to integrate code to interface the DeckLink SDK with an H.264 codec. You may find FileCapture/FilePlayback SDK samples useful as a reference.
He references the FileCapture/FilePlayback SDK samples which may be worth checking out (you can download the DesckLink SDK) from here - https://www.blackmagicdesign.com/developer/products/capture-and-playback/sdk-and-software
-
Thanks.
I installed the SDK a while back. The HDR stuff was logged in the previous log files:
0266890: 40448: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: BMDDeckLinkSupportsHDRMetadata is 1
0266890: 40448: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: BMDDeckLinkSupportedDynamicRange is 1610612736 (HDRStaticPQ, HDRStaticHLG)
0266890: 40448: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: Found IDeckLinkHDMIInputEDID interface
0266890: 40448: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: bmdDeckLinkHDMIInputEDIDDynamicRange is 536870912 (HDRStaticPQ)
0266890: 40448: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: Found IDeckLinkStatus interface
0266890: 40448: TV: BlackmagicWDMCapture::ExploreDecklinkAPI: bmdDeckLinkStatusDetectedVideoInputDynamicRange is 0 (SDR)
The interface that I have not tried is IDeckLinkVideoFrame for per-frame metadata. That seems to require us to move away from DirectShow entirely. Considering possible Mac and Linux support, moving away from DirectShow may be the good choice for these devices.
-
bmdDeckLinkStatusDetectedVideoInputDynamicRange is 0 (SDR)
Sorry - missed this part (which was correct for the feed I was sending it). I can test HLG / PQ if you want.
I also agree, that if you want to be cross platform then the Decklink API is the way to go. Otherwise the existing work down is fine for Windows and achieves the same thing.
What are your thoughts on the encoder?
-
I had one Q on this topic, hope it's ok to ask here as it's related to what you're doing (won't interrupt again with mention of another device)
can you state exactly what MC needs to see/use a capture card in terms of what it looks for in a directshow filter & how it puts the pins together into an output stream? in addition, in order to drive JRVR into HDR mode, what does it need? we know that https://github.com/defl/directshow_metadata_injector_filter/blob/main/cpp/directshow_metadata_injector_filter/lavfilters_side_data.h doesn't work as is so what else is required?
(context = I'm writing a filter for my own use that wraps the magewell sdk (https://www.magewell.com/sdk) into an implementation of directshow CSource & which can extract multichannel LPCM so it would be nice if I could get this working in MC too)
-
MC loads a WDM capture filter and associated filters and render the output pins. The filters are loaded via Windows WDM device list, of category CLSID_VideoInputDeviceCategory.
-
ok great, thanks. Does it support driver HDR metadata into JRVR yet or is this what you're working on as part of supporting the blackmagic devices?
-
We are working on HDR metadata. It is still not clear how we are approaching it.
-
OK, will be great if it can be done in an open manner that lets a user provided filter give the info required to drive it
-
Matt,
I think you know that we don't intend for JRVR to be used by other applications. I hope you understand.
-
You misunderstand as it's not another application
I'm talking about a directshow capture filter to use as channel within MC television. I can already use the microsoft provided one for the card but that only supports stereo audio and doesn't expose the colourspace in a way that lets a renderer understand it, you have to use the api provided by the card manufacturer to do all that. Hence write one and then be able to use MC to fully access the card capabilities.
Put simply, it's exactly what Yaobing is doing for the blackmagic cards (which I don't use because they have limited support for the resolution/frame rate output by my cable box. I can't imagine why you'd want to restrict support to a particular card but obviously it's your software so that's your choice.
-
We are working on HDR metadata. It is still not clear how we are approaching it.
regardless of whether you make it public api or not, I'm curious what are the downsides of the method of packing data into IMediaSideData (https://github.com/Nevcairiel/LAVFilters/blob/81c5676cb99d0acfb1457b8165a0becf5601cae3/include/IMediaSideData.h) are? it seems commonly used and pretty straightforward
-
FWIW I have my filter functional now and it seems to at least play in MC & I can see that JRVR is tonemapping without changing settings when fed with appropriate data so not sure you need to do anything other than simply integrate their API as a capture filter?
I haven't tackled attempting to handle changing format yet, e.g. my cable box (a virgin 360 aka LG horizon) will switch from sdr to hdr when I go from normal tv to something like apple+, atm I just plan to use its function to overlay an image as OSD to say "restart playback" but would JRVR cope with this? e.g. does it support https://learn.microsoft.com/en-us/windows/win32/directshow/dynamic-format-changes ?
-
JRVR is fine with dynamic format changes, if you need to change the allocator due to frame size or format changes, you may need to flush though (so all frames are returned to the allocator). Feel free to refer to LAV Videos format change logic https://github.com/Nevcairiel/LAVFilters/blob/master/decoder/LAVVideo/LAVVideo.cpp#L1500-L1589
-
thanks for the link, will try to adapt/copy
-
I still think an encoder is going to be needed if you want to pause, record etc. That uncompressed video stream bitrate is too high to write out to disc effectively and the resultant file is full of dropped frames.
-
What you are saying is that the hard disk is the limiting factor here. A compressor and a decompressor shift load to CPU. That is what I thought too, as time-shifting writes many files to disk and then reads them back for displaying.
-
Regarding HDR metadata, I posted the following a few days ago:
BMDDeckLinkSupportsHDRMetadata is 1
BMDDeckLinkSupportedDynamicRange is 1610612736 (HDRStaticPQ, HDRStaticHLG)
Found IDeckLinkHDMIInputEDID interface
bmdDeckLinkHDMIInputEDIDDynamicRange is 536870912 (HDRStaticPQ)
Found IDeckLinkStatus interface
bmdDeckLinkStatusDetectedVideoInputDynamicRange is 0 (SDR)
These are the static info that I found from API, and the result was for jmone's device. What I did not know was whether we need to deal with metadata for each frame. As far as I know, the WDM capture filter does not carry the metadata, so how do we pass the metadata? I suppose we need to synchronize the video frames that go to the renderer via DirectShow filters with what we find with the API? That is why I thought a complete re-writing of the system (not using their WDM capture filter, like mattkhan is doing) is necessay?
-
It is transmitted per frame though clearly it changes rarely so I guess you could write a transform filter to sit on top of the provided capture filter (though in my experience, dealing with the media type and the filter negotiation is where all the work actually is, capturing the frame is simple in comparison)
-
What you are saying is that the hard disk is the limiting factor here. A compressor and a decompressor shift load to CPU. That is what I thought too, as time-shifting writes many files to disk and then reads them back for displaying.
Kinda. We are capturing uncompressed Video (RGB) and the data rates (see table) will be in many cases well over 10 Gbps Vs playing "normal" compressed Video (HEVC, AVC, MPEG, AV1 compressed files, discs, streams) which is normally well under 1 Gbps. These uncompressed data rates:
- Can be too large to write out to a file in real time (eg dropped frames)
- Are too large to then be later played over a std 1Gbps network connection
- Takes up far too much disc space
My suggestion would be to write the uncompressed video stream via an encoder to a file (say MP4 using HEVC, AVC, whatever) and then play that as with any other "normal" compressed video file.
-
Hello.
Are you talking about DeckLink Mini Recorder 4K or DeckLink Quad HDMI Recorder ? Both ? Another BM product, in this case which one ?
Thanks.
-
I was testing with an UltraStudio 4K Mini, but it should work with any of their Capture cards/boxes that supports their SDK. Keep in mind that each devices has their own HW config and limitations, such as:
- DeckLink Mini Recorder 4K - Max is UHD @ 30fps
- UltraStudio 4K Mini - needs a thunderbolt connector
etc
Note: None of these devices "allow capture from copy protected HDMI sources".
-
I was testing with an UltraStudio 4K Mini, but it should work with any of their Capture cards/boxes that supports their SDK. Keep in mind that each devices has their own HW config and limitations, such as:
- DeckLink Mini Recorder 4K - Max is UHD @ 30fps
- UltraStudio 4K Mini - needs a thunderbolt connector
etc
Note: None of these devices "allow capture from copy protected HDMI sources".
Thank you :)
-
Hello
I m about to buy a Blackmagic DeckLink Quad HDMI Recorder. My understanding is it might work or not, but would jriver team be ready to integrate this capture board in jriver knowing that I can provide my feedback to help the development ? If yes I m ready to take the risk to buy it.
-
We are indeed working on improving the support of Blackmagic Design devices, including the device you are considering buying.
-
It is transmitted per frame though clearly it changes rarely so I guess you could write a transform filter to sit on top of the provided capture filter (though in my experience, dealing with the media type and the filter negotiation is where all the work actually is, capturing the frame is simple in comparison)
So, if the metadata changes at a random moment, we just pass the new data to the renderer. Does the renderer need to know which video frame this is for, or starting with which frame? That was what I meant by "synchronization".
-
If you were to implement this as a transform filter then you would see each frame and would update as and when it changes (and then have to renegotiate the media type with the renderer). Hendrik already confirmed it but I can see jrvr and madvr both support this on the fly changing of media type without issues.
As long as their API exposes this info without needing to read the entire frame then it seems doable to me (but as noted actually reading the frame is easy so might be simpler just to write your own source filter instead)
-
We are indeed working on improving the support of Blackmagic Design devices, including the device you are considering buying.
Hello, Thanks. I have ordered a Blackmagic DeckLink Quad HDMI Recorder. I’m willing to help if it makes any sense for jriver development, I will tell you once I’m ready.
-
Thanks.
-
fwiw anyone who wants same functionality using a magewell pro card can refer to https://yabb.jriver.com/interact/index.php/topic,140134.0.html
-
Nathan,
Please test this JRTelevision DLL (https://files.jriver-cdn.com/mediacenter/test/JRTelevision 2024-12-03.rar).
This is about setting video format before playing. You are going to get a pop-up dialog when starting up the device. I will move it to Configuration window later, after we confirm it works.
You get two combo boxes. The first one lets you choose a connection method, i.e. HDMI, Component, Composite, etc. The second one lets you choose display mode - a combination of pixel format (YUV, RGB etc.) and display (HD, 4k, progressive or not).
I only implemented the following pixel formats:
"8BitYUV"
"10BitYUV"
"8BitARGB"
"8BitBGRA"
"10BitRGB"
Selecting anything else likely will not work.
Known issue: the dialog window hides behind the main window after a second or so. You have to Alt-Tab it back. So in the end it probably will only appear on the Configure window.
-
Thanks Yaobing. Had a play, and kinda weird and I've attached a log that should how
- 1st Play: Using the BMD filter. The pop up boxs came up (which they should not as this one is all automatic and does not need manual config). You can select anything, then after OK, the UltraStudio changes to the correct format and I get Video and Audio just fine. On stop, it leaves the UltraStudio in that format.
- 2nd Play: Using the Decklink Driver. No matter what resolution I selected, the UltraStudio is put into 1080p mode. This of course only gives me an image if I'm sending 1080p and a black screen if I'm sending UHD.
PS - Windows freaked about the RAR file. Claimed it was a "severe" threat! :) Seems I lived.
-
Thanks Yaobing. Had a play, and kinda weird and I've attached a log that should how
- 1st Play: Using the BMD filter. The pop up boxs came up (which they should not as this one is all automatic and does not need manual config). You can select anything, then after OK, the UltraStudio changes to the correct format and I get Video and Audio just fine. On stop, it leaves the UltraStudio in that format.
I will refine it so it will not be done for WDM devices.
- 2nd Play: Using the Decklink Driver. No matter what resolution I selected, the UltraStudio is put into 1080p mode. This of course only gives me an image if I'm sending 1080p and a black screen if I'm sending UHD.
I hoped this would work. Will look at the logs.
PS - Windows freaked about the RAR file. Claimed it was a "severe" threat! :) Seems I lived.
Sorry about that. I will use ZIP next time.
-
NP on the compressed file.
Good news is that it does look like it is showing all the supported options of the UltraStudio and you are successfully setting the Ultrastudio to change to a particular format.
-
We are indeed working on improving the support of Blackmagic Design devices, including the device you are considering buying.
I too can help with development as I have a Decklink 4K Recorder mini
-
- 2nd Play: Using the Decklink Driver. No matter what resolution I selected, the UltraStudio is put into 1080p mode. This of course only gives me an image if I'm sending 1080p and a black screen if I'm sending UHD.
It turns out that the format was not set, because of a bug. Please try this new DLL. (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2024-12-05.zip)
-
;D - It Works! Well done. Let me know if
- you want a log
- test yet on SDR (709) vs HDR (HLG, PQ)
- etc
Thanks
Nathan
-
I too can help with development as I have a Decklink 4K Recorder mini
You should be able to add this as a Device under Television --> TV Options --> Manage Devices and they will be (if it is the same as what I see)
- Blackmagic WDM Driver : This "just works" but only under Windows. If you have a signal going into your Decklink then "play" this channel you should see and hear it in MC just fine.
- Decklink Video : This is an API driven approach that should work regardless of platform, but requires the user to select what the stream is. This is the bit that Yaobing is working on at present.
-
;D - It Works! Well done. Let me know if
- you want a log
- test yet on SDR (709) vs HDR (HLG, PQ)
- etc
Thanks
Nathan
Thanks Nathan.
Right now, HDR is not involved. You can just try setting format to different ones and see if they all work (those I listed a few days ago, YUV and RGB types). Yes please provide a log.
-
Here are a couple of Logs:
UHD (2160/50p) : This offered me the choice of
- 8BitYUV : Works
- 10BitYUV : Not expected to work as it is not on your list. Result is a black screen, and the UltraStudio is put into 1080p50 mode.
FHD (1920/50p) : This gave me all of your support formats plus a few more
- They all worked and I played them in this order in the log. 8 YUV, 8 ARGB, 8 BGRA, 10 RGB ... and then for "fun" 12 RGB (and even this one worked...but I've got the feeling it just did not switch any mode but it was hard to tell).
Also, in the JRVR it always showed that the Input was always 8-Bit RGB regardless of what I used above.
FWIW - As usual it also reports with unknown colour space info and still can't see in the OSD what the input FPS.
-
Hello.
I have installed a Blackmagic DeckLink Quad HDMI Recorder in my Windows 10pro PC computer.
I do my tests with a device allowing to output up to 4k hdr with LPCM stereo/multichannel or 5.1 bitstream
I get smooth video capture from BM software but it does not work for audio and there is no setting available.
In JRiver 33.0.47:
With Blackmagic WDM Driver:
-4k23 8 bits 444 is ok but I think there is an issue 16/235 vs 0/255
-I could not get audio working whatever the format set at the source
With Decklink Video driver:
-limited to 1080p, I could get 1080p23 10 bits 444 working and I think there is an issue 16/235 vs 0/255
-I could get audio working with stereo format but with a big sync lip issue.
How can I help you guys for improving all of this ?
Thanks.
-
:) Welcome and good timing (as I'm going to be away for a bit soon)!
Yaobing is the one developing it, and I've just been testing using my BMD UltraStudio 4K Mini and feeding it from a cinema camera.
If you want to test the latest work Yaobing has done, then you will need to copy the DLL from Yaobing's post (5 above) into the MC install directory (say C:\Program Files\J River\Media Center 33), then do testing and provide some logs. You will find in the MC logs what your device reports as being supported.... but these logs can get big quickly.
The logs would be useful for Yaobing to find out why you are not getting any audio on the WDM Driver (which just works for me but I've really only tested 2ch PCM). That said, the focus so far has been getting the Video side working with the Decklink API.
-
Hello.
I’m happy for helping. I live in France, time is GMT+1, so don’t be surprised if my answer seems delayed. I should able to provide my feedback in few hours about the dll above. First I need to understand how I can set jriver for creating a log file.
-
Hello,
Many things to report but without log file for the moment.
I’m still not able to get audio with BM WDM driver. If I go to audio pin I can get audio during les than 1s when I click on Ok button for leaving the Window audio pin configuration.
Now the cool thing with decklink video driver :
With a 1080p23 10bRGB I can get a smooth video and LPCM 2.0.
JRVR needs to have renderer queue deactivated otherwise there is a big issue for audio syncing and video rendering is not smooth.
Anyway, I had to increase the audio sync at 1500ms instead of 200ms that I use when watching a movie from my NAS server.
LPCM 2.0 is well played in 7.2 and audio goes to my VST plugin dirac as usual.
Finally, there is no issue with video level, it was my 3dlut which was not applied due to conditions not met for selecting the good profile, it’s now solved.
Otherwise I have tested the DLL, and I was only able to get 1080p23 10bits RGB working.
I think there is a lot of work to do both with video and audio.
Tell me how I could help. Thanks
-
Does WDM audio work with a web browser? It may not be set up correctly. If not, please read the wiki topic again.
-
Does WDM audio work with a web browser? It may not be set up correctly. If not, please read the wiki topic again.
Hello. Sorry but I don’t understand. How can I connect my HDMI capture device to a web browser ?
Edit : if you speak about this wiki page https://wiki.jriver.com/index.php/WDM_Driver
Yes it works fine.
Does it mean that I need to use JR wdm audio renderer as active renderer in Windows for testing the wdm driver of my hdmi capture device ?
Edit 2 : I think the answer is yes. The JRiver architecture is quite new for me I need to learn, I will retest in 3 hours
-
WDM, as I meant it, is our driver, not from another source. What are you referring to when you say WDM?
-
WDM, as I meant it, is our driver, not from another source. What are you referring to when you say WDM?
I’m referring to the WDM driver from Blackmagic. When I select my hdmi capture card through TV section in JRiver, I have 2 possibilities either to use blackmagic wdm video/audio capture or decklink video/audio capture.
So, when I’m referring to WDM in this thread it is about the blackmagic driver.
-
Sorry for being slow lately. I got bogged down with a different issue for the last few days.
Indeed, JRiver's WDM audio driver is not involved here. We are talking about Blackmagic WDM Capture device for video capturing.
-
With decklink video capture:
1080p23 capture works when I select 10BitRGB through DLL, LPCM 2.0 works fine
2160p23 capture works when I select 8BitYUV through DLL, LPCm 2.0 does not work, it is noisy.
I cannot test LPCM 5.1, the device upstream the capture card is not able to provide it.
Would it be possible to allow audio bitstream by sending the audio captured to the appropriate decoder ?
-
Here are a couple of Logs:
UHD (2160/50p) : This offered me the choice of
- 8BitYUV : Works
- 10BitYUV : Not expected to work as it is not on your list. Result is a black screen, and the UltraStudio is put into 1080p50 mode.
FHD (1920/50p) : This gave me all of your support formats plus a few more
- They all worked and I played them in this order in the log. 8 YUV, 8 ARGB, 8 BGRA, 10 RGB ... and then for "fun" 12 RGB (and even this one worked...but I've got the feeling it just did not switch any mode but it was hard to tell).
It turns out, only 8bitYUV worked. All other formats failed at setting the filter's video pin format. The pin continued to output 8bitYUV, giving you an illusion that it worked.
Not sure what the issue was. It could be that I wrote the media type structure incorrectly. There is a minor issue with the way I specified the media type (forgetting to initialzed the structure so the target rectangle had some random numbers. It does not seem to be the cause as the 8bitYUV worked. I will post a modifed DLL for you to test.
The second possibility is that the format is already set and the DeckLink Video Capture filter would not allow change after it is loaded. That is a bit of strange though.
Also, in the JRVR it always showed that the Input was always 8-Bit RGB regardless of what I used above.
This is because there is an AVIDecompressor filter involved. It converted the YUV format to RGB.
-
With decklink video capture:
1080p23 capture works when I select 10BitRGB through DLL, LPCM 2.0 works fine
2160p23 capture works when I select 8BitYUV through DLL, LPCm 2.0 does not work, it is noisy.
I cannot test LPCM 5.1, the device upstream the capture card is not able to provide it.
Would it be possible to allow audio bitstream by sending the audio captured to the appropriate decoder ?
Audio is decoded with LAV Audio Decoder, which handles almost any format.
-
Audio is decoded with LAV Audio Decoder, which handles almost any format.
Yes I know but I don’t see LAV audio decoder involved when I look at the filter list reachable through right click with the mouse. If I remember well the list is :
JR audio renderer (in grey color)
JR video rendere (in grey color)
AVI decompressor (in grey color but I’m not sure for the exact name)
Decklink audio capture (in black color)
Decklink video capture (in black color)
This list is different than the one I can see when I play a movie (rip blu-ray in mkv for example) from my NAS and in general LAV audio décoder is there.
-
Why do you need to choose a format as opposed to use whatever format is being sent by the source?
-
Why do you need to choose a format as opposed to use whatever format is being sent by the source?
My request is to make the support by JRiver of BM device better as this thread is claiming. Today we know LPCM 2.0 works, I’m trying to find a way for sending LPCM 5.1 and I know my source can send 5.1 bitstream natively.
For bitstream I believe the captured audio needs to be sent to LAV decoder but I can be wrong.
I’m just here to try helping but I think I have not well understood the purpose of this thread.
-
my Q was to yaobing really as I gathered the current implementation lets you choose the format, my Q is why would the user want to choose oppose to just read whatever is on the stream and then display it based on whatever your output settings say
-
Not wanting to put words in Yaobing's mouth but BlackMagic offer two different options with their capture cards:
- WDM Windows Direct Show Filter: All automatic (or it should be). Nothing to set (and nothing can be set). This has been working for a while now. Being Direct Show it will only work on Windows.
- Decklink API: They also have a full API that works on any platform. This is the part that Yaobing has been working on. Yaobing has so far got the code so MC will query the BlackMagic device to see what video formats it supports (as various devices have different capabilities) and a way of then letting the user selecting the format.
There is still a whole bunch to do.
- Look at the Audio side on what formats are supported, selectable etc
- Encoding the RGB output so it can be recorded etc without dropping frames (as most of these devices don't have a HW Encoder Option)
- Working out stuff like why alext77 is not getting audio with WDM
-
My question is why would you want something other than what the source provides?
Ie you have some source device, it will.have it's own configuration that controls what it outputs. Why would you want the capture to do anything other than pass that through to MC which deals with anything required to fit the output format?
It's all I did with the magewell SDK so just wondering what I am missing, if anything.
-
You don't. In fact it will not work if it is mismatched (you will only get a black screen). So, if you are using the SDK method, you have to set it to match.
-
Hello guys.
Tomorrow I should get an hdmi device allowing to force its output in a given resolution (let say 2160p23) and it should be also able to send LPCM up to 7.1. This should make my tests easier.
I know how to copy paste the directshow filter graph and start a log file.
It’s 23:00 in France, bye bye.
-
My question is why would you want something other than what the source provides?
Ie you have some source device, it will.have it's own configuration that controls what it outputs. Why would you want the capture to do anything other than pass that through to MC which deals with anything required to fit the output format?
It's all I did with the magewell SDK so just wondering what I am missing, if anything.
The source usually is configurable. With "Blackmagic WDM Capture" device, the user can run the filter property page and set the format. But with "DeckLink Video Capture", as Nathan discovered, the property page does not offer all formats.
I was thinking the same thing when I started, but I can not wrap my head around it when their API offers a list of possible formats, but does not tell which format the source sends. Or I did not find the right API function?
-
Please try this new DLL. (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2024-12-13.zip)
Nathan, for you there is not much change, as I only made sure I initialized the structure. So don't be surprised that it does not make any difference.
The dll should be used with the latest beta.
alext77, you can download and install this version first, before you copy the DLL:
MediaCenter For test (https://files.jriver-cdn.com/mediacenter/test/MediaCenter330051-x64.exe)
I added some code to insert LAV Audio Decoder during graph building.
-
Fwiw I decide that based on a few values coming in on the signal
https://github.com/3ll3d00d/mwcapture/blob/main/mwcapture/mwcapture.cpp#L1098
I guess this same info is mostly found somewhere in BMDDeckLinkStatusID by the looks of it
-
Nathan, for you there is not much change, as I only made sure I initialized the structure. So don't be surprised that it does not make any difference.
Did a quick test. Seemed the same.
-
Please try this new DLL. (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2024-12-13.zip)
Nathan, for you there is not much change, as I only made sure I initialized the structure. So don't be surprised that it does not make any difference.
The dll should be used with the latest beta.
alext77, you can download and install this version first, before you copy the DLL:
MediaCenter For test (https://files.jriver-cdn.com/mediacenter/test/MediaCenter330051-x64.exe)
I added some code to insert LAV Audio Decoder during graph building.
Hello,
Yaobing, have you received my private message ?
Installation of MC 51 is done but I still cannot see LAV audio decoder in the directshow filters :
below the copy/paste :
Filter Graph Info (TV graph):
Filter 'JRiver Audio Renderer'
CLSID: {A4002F8E-510F-442C-8AD3-F9C7B23FB394}
Host:
Input Pin 'In'
Connected to pin 'Capture' of filter 'Decklink Audio Capture'
Major type MEDIATYPE_Audio Sub type MEDIASUBTYPE_PCM, Format type FORMAT_WaveFormatEx
Filter 'JRVR'
CLSID: {555E6803-14EF-4946-8646-B6EF9E9121E2}
Host:
Input Pin ''
Connected to pin 'XForm Out' of filter 'AVIDecompressor'
Major type MEDIATYPE_Video Sub type MEDIASUBTYPE_RGB32, Format type FORMAT_VideoInfo
Filter 'Decklink Audio Capture'
CLSID: {AAA22F7E-5AA0-49D9-8C8D-B52B1AA92EB7}
Host: c:\program files\blackmagic design\blackmagic desktop video\decklink64.dll
Output Pin 'Capture'
Connected to pin 'In' of filter 'JRiver Audio Renderer'
Major type MEDIATYPE_Audio Sub type MEDIASUBTYPE_PCM, Format type FORMAT_WaveFormatEx
Filter 'AVIDecompressor'
CLSID: {CF49D4E0-1115-11CE-B03A-0020AF0BA770}
Host: c:\windows\system32\quartz.dll
Input Pin 'XForm In'
Connected to pin 'Capture' of filter 'Decklink Video Capture AFF3E920987F1D8D'
Major type MEDIATYPE_Video Sub type Unknown GUID Name: {43594448-0000-0010-8000-00AA00389B71}, Format type FORMAT_VideoInfo
Output Pin 'XForm Out'
Connected to pin '' of filter 'JRVR'
Major type MEDIATYPE_Video Sub type MEDIASUBTYPE_RGB32, Format type FORMAT_VideoInfo
Filter 'Decklink Video Capture AFF3E920987F1D8D'
CLSID: {44A8B5C7-13B6-4211-BD40-35B629D9E6DF}
Host: c:\program files\blackmagic design\blackmagic desktop video\decklink64.dll
Output Pin 'Capture'
Connected to pin 'XForm In' of filter 'AVIDecompressor'
Major type MEDIATYPE_Video Sub type Unknown GUID Name: {43594448-0000-0010-8000-00AA00389B71}, Format type FORMAT_VideoInfo
Output Pin '~VANC'
Output Pin '~Timecode'
-
Some news :
My source can send 2160p23 HDR, I can check it with my VERTEX that I have installed in between my source and the blackmagic board. I can see the metadata sent to the board. The issue is JR video renderer don’t see the meta data.
About audio : my source can send LPCM up to 7.1 but JR audio renderer can see only 2 channels. With LPCM 2.0 it is consistent but with moré Channel I can hear only the side or the rear channels.
-
Some news :
My source can send 2160p23 HDR, I can check it with my VERTEX that I have installed in between my source and the blackmagic board. I can see the metadata sent to the board. The issue is JR video renderer don’t see the meta data.
About audio : my source can send LPCM up to 7.1 but JR audio renderer can see only 2 channels. With LPCM 2.0 it is consistent but with moré Channel I can hear only the side or the rear channels.
Did you copy the JRTelevision.dll over after you installed the new version of MC?
You can email me a log if you prefer. yaobing at jriver
-
Yes I did. I will send you an email.
Have you reveived my private message ?
-
Did you copy the JRTelevision.dll over after you installed the new version of MC?
You can email me a log if you prefer. yaobing at jriver
Log sent by email. (alex_xxxxx at yahoo fr, check your spam)
-
Yes I got your PM.
-
Hello
If you want me to test anything, I’m ready :)
-
Hello
If you want me to test anything, I’m ready :)
I received the log by email.
The log shows that the audio was PCM. That is why LAV Audio decoder filter was not involved. I believe LAV decoder filters are designed to connect to only compressed media formats, not uncompressed ones.
Here is the sequence of what went on:
1. We try connecting LAV. It failed to connect because the audio is PCM.
2. We try connecting without an intermediate filter (from the capture filter to the renderer directly). That succeeded.
The video format is 'HDYC' which is not in our code. So somehow the filter's output already got that.
We are currently not messing with the audio output pin yet, so whatever format configured at the audio output pin must be the default, which would be plain PCM.
-
Are you sending pcm or compressed?
-
Hello.
The source sends LPCM multichannel or stereo but it can send DD 5.1 as well, I tested LPCM 2.0 and DD 5.1 and LAV audio decoder was not in the filter list in both cases, I will redo the test later on with a log file.
Thanks.
-
Hello.
The source sends LPCM multichannel or stereo but it can send DD 5.1 as well, I tested LPCM 2.0 and DD 5.1 and LAV audio decoder was not in the filter list in both cases, I will redo the test later on with a log file.
Thanks.
After you try this and produce a log, I would like you to try the following too:
Go to TV Options, select your Blackmagic device and click Configure button.
In Advanced section, there is a list of DirectShow property pages. Look for "Audio Capture Pin...", "Video Capture Pin...", and "Video Capture Filter...". You may or may not have all of them. If you find "Audio Capture Pin...", double click it to bring up the property page. If you don't find it, try "Video Capture Filter...". On the property page, do you see anything that allows you to select an audio format? If so, what are the choices?
-
After you try this and produce a log, I would like you to try the following too:
Go to TV Options, select your Blackmagic device and click Configure button.
In Advanced section, there is a list of DirectShow property pages. Look for "Audio Capture Pin...", "Video Capture Pin...", and "Video Capture Filter...". You may or may not have all of them. If you find "Audio Capture Pin...", double click it to bring up the property page. If you don't find it, try "Video Capture Filter...". On the property page, do you see anything that allows you to select an audio format? If so, what are the choices?
Hello, I will do/check in few days. Thanks for your support.
-
Hello everyone.
I’m still there and motivated for testing my black magic device. I was sick during almost a month, next week I should be able to play with JRiver again.
-
Hello everyone.
I’m still there and motivated for testing my black magic device. I was sick during almost a month, next week I should be able to play with JRiver again.
I am sorry about your illness. Hope you have recovered well. Welcome back!
Currently I don't have anything to test. I will let you know when I make some changes. Thanks.
-
I'm also ready to test anything to move this project forward.
-
am I right in thinking that these devices/cards only support 48kHz audio? the specs and sdk manual would say this is true but would be good to know for sure
-
I don't know.
-
A year and a half ago, I was somewhat active in this thread...
https://yabb.jriver.com/interact/index.php/topic,131791.0.html
At that time, I used the WDM device and was trying to get HDR10 metadata applied since the DeckLink cards do not pass metadata. I configured this metadata filter but it was only called for disk media playback and not for live input.
https://github.com/defl/directshow_metadata_injector_filter
That was when I halted my testing.
Has direction changed to use the Decklink device instead of WDM?
-
I realised recently that no capture card (that I can find) reliably supports 192kHz audio, they either support it but have implementation issues (magewell pro) or simply do not support it (everything else). Given this it must mean you're reliant on the source device to decode and produce LPCM audio or can only support AC3 (which seems unrealistic given how widespread eac3 is) hence I was wondering what source devices people are intending to use with this setup?
-
I think the typical use case for this capturing feature is for the capturing HTPC to render only the video, not decode the audio too. As is the case with VideoProcessor w/ MadVR that many users want to replace with JRiver w/ JRVR, the capture device only processes the video and the audio goes to the AVR for decoding and processing. So for my setup, for example:
Streamer > AVR > HTPC Capture card > Display
The most desirable outcome sought here is Dynamic Tone Mapping (and secondarily scaling) for streaming sources. I am only interested in JRVR capturing 4K HDR and rendering using JRVR.
-
Yeah I know people do that but I am interested in the pure htpc solution, I have no interest in needing to spend storm or trinnov money just to get enough channels and (barely enough) dsp capability
-
I realised recently that no capture card (that I can find) reliably supports 192kHz audio, they either support it but have implementation issues (magewell pro) or simply do not support it (everything else). Given this it must mean you're reliant on the source device to decode and produce LPCM audio or can only support AC3 (which seems unrealistic given how widespread eac3 is) hence I was wondering what source devices people are intending to use with this setup?
I too don't care about audio capabilities. I have an Atmos sound system that the AVR feeds. I won't give up Atmos for LPCM or less.
-
just to be clear, I know people want a videoprocessor replacement, I don't and my Q is not to those people. My Q is addressed to the people, if any exist, who also want audio put through here.
-
I'm one of them. Ready to test!
-
just to be clear, I know people want a videoprocessor replacement, I don't and my Q is not to those people. My Q is addressed to the people, if any exist, who also want audio put through here.
It might be helpful for your purposes and enable more qualified responses from others, if you outlined more about potential use cases for audio through these cards, including potential limitations, so responders would know whether it would fit their anticipated requirements. A 100 people saying they want something, only to turn into zero because of other limitations probably wouldn't help you.
To illustrate with my example. Your earlier post suggested a pure HTPC solution with Storm/Trinnov channel counts and greater processing. If such a solution also had a robust way to decode Atmos (i.e. not relying on getting access to Dolby Reference Player unless Dolby changes its position on this) then I would be interested in such a solution and hence would want audio through the card. I ran a pure HTPC solution with soundcard direct to a power amp for decade with no AVR needed for up to 5.1 playback of Blu-ray, music, and recorded over the air TV, so I'm not a stranger to this solution. However, what caused me to get an AVR was a desire for Atmos, so if that wasn't also part of the HTPC solution then I wouldn't be interested in audio through the card.
-
there's no known card that supports 192kHz audio reliably (the magewell supports it but, in my system at least, it can't do it reliably, have a ticket open with them to see if it's something they reproduce) so you have to route audio via an AVR if the source doesn't decode (as all modern codecs bitstream at 192kHz) hence I'm just curious what source devices people are using that happily decode everything to 48kHz multichannel lpcm
-
With an Apple TV 4K, if you set Audio Format to Auto and Dolby Atmos to OFF, it will output 24 bit 48kHz LPCM. Depending on the content, it can be from 2 channel up to 7.1 channel LPCM. Apple TV does not support anything higher than 48kHz.
Video and Audio format reported by HDfury VRROOM while playing a Netflix Atmos title:
VIDEO TX0:
4K59.941 593MHz 422 BT2020 12b HDR
AUDIO OUT:
L-PCM 48kHz 7.1ch 24bit
-
I have now got something on HDR metadata which I hope will work.
Please test this:
The new DLL (http://The new DLL) that should work with the latest MC (33.0.63)
Keep in mind:
1. Non-time-shifting only for now. So run in non-time-shifting mode.
2. You can try both "Blackmagic WDM Capture" and "DeckLink Video Capture" devices.
-
I fed the BD UltraStudio a UHD HDR signal and used the WDM Capture Filter:
- The Image and Audio capture worked but it was not in HDR (all washed out)
- JRVR reported the colour space as "Unkown" as usual.
- I still get that config box you have to click "OK" in for the capture to commence (it is not needed with the WDM Capture driver)
I've attached the log, so hopfully it shows something...
-
- I still get that config box you have to click "OK" in for the capture to commence (it is not needed with the WDM Capture driver)
My latest code was not reflected in the log you sent. Did you actually use the DLL?
Anyway, I get another one here:
Link removed due to crash (http://Link removed due to crash)
-
Mmmm, I may have sent the wrong log by mistake as I was having MC crashing issues (so was swapping the new DLL with the stock back and forward). Anyway, just tried the newest DLL and here is the log file with the crash.
**Log Deleted**
-
The crash was caused by me forgetting to set a proper value for Frames Per Second :(
-
No probs!
-
Let's try again:
Fixed crash in DLL (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2025-02-06.zip)
-
Crash is fixed! ... though,
- Picture is now upside down (see pic)
- No HDR
I've attached the log, just want to make sure it is the "correct dll" as I see Windows Defender scanning the file when I save it the MC folder.
Thanks
Nathan
FWIW - I also get the "no tuner is available" though a reboot fixed it.
-
Reminds me of discovering https://github.com/3ll3d00d/mwcapture/blob/main/mwcapture/mwcapture.cpp#L1492 when I tested with my pc as a source rather than a stb :)
-
Well it's a first for us on this one! :)
-
...and thanks, Yaboing for getting rid of that selection box!
It still would be great to have the JRVR show the FPS in the "Input" part of the OSD.
-
new DLL (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2025-02-07.zip)
Hopefully this will do something for HDR.
Regarding the upside-down video, I might have specified the media type wrong. I will need to figure out something else.
-
Here is the latest log and pic:
- No change on HDR
- The good news on the Upside-down, is it is it goes away if I do a Pause/Play on the receiving end (see pic)
-
Here is the latest log and pic:
- No change on HDR
- The good news on the Upside-down, is it is it goes away if I do a Pause/Play on the receiving end (see pic)
I use the DeckLink API and set up a callback interface. But the log does not catch any callback event saying "video package arrived". Thus no HDR event either.
I will do some more investigation. I will not be able to do much today as I will start a vacation tomorrow. If I don't post today, I will not post anything until near the end of the month.
-
No probs! Have a good Holiday!
-
Thanks!
-
After you try this and produce a log, I would like you to try the following too:
Go to TV Options, select your Blackmagic device and click Configure button.
In Advanced section, there is a list of DirectShow property pages. Look for "Audio Capture Pin...", "Video Capture Pin...", and "Video Capture Filter...". You may or may not have all of them. If you find "Audio Capture Pin...", double click it to bring up the property page. If you don't find it, try "Video Capture Filter...". On the property page, do you see anything that allows you to select an audio format? If so, what are the choices?
I have 2 bugs to report, one which blocks me from using MediaCenter with Decklink.
The filter option Window you described cannot change channels, only allows for OK/Apply if 2 channel selected, but if I select the needed 8, window stays open even if OK is pressed.
Official API term to capture all audio channels for DeckLink is "EmbeddedAllChannels", if that helps.
And the second one is not a deal breaker, but is a bit annoying.
Each time it initiates the interface, it reasks the input option for the capture card.
Screenshots of both cases attached, let me know if you need anything.
-
The filter option Window you described cannot change channels, only allows for OK/Apply if 2 channel selected, but if I select the needed 8, window stays open even if OK is pressed.
Official API term to capture all audio channels for DeckLink is "EmbeddedAllChannels", if that helps.
I can't find that term in the SDK docs, where do you get that info from? google suggests that term is something to do with https://www.vmix.com/
-
I can't find that term in the SDK docs, where do you get that info from? google suggests that term is something to do with https://www.vmix.com/
You are correct, I mixed it up, I am currently playing it with vmix and only that option gives all channels.
Not that you need it, but here is the DeckLink SDK manual:
https://documents.blackmagicdesign.com/UserManuals/DeckLinkSDKManual.pdf?_v=1734595211000
vmix doesn't have flexibility of Rendering and filters, that is why I would like to go back to MediaCenter.
Good news is that 2 channels it captures are L/R, not a downmix, which means others are just offset to it.
-
Also, make sure you are using Yaobing's latest DLL for this. You will need to manually copy it into your MC Program directory (eg C:\Program Files\J River\Media Center 33).
new DLL (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2025-02-07.zip)
Hopefully this will do something for HDR.
Regarding the upside-down video, I might have specified the media type wrong. I will need to figure out something else.
-
I have 2 bugs to report, one which blocks me from using MediaCenter with Decklink.
The filter option Window you described cannot change channels, only allows for OK/Apply if 2 channel selected, but if I select the needed 8, window stays open even if OK is pressed.
Official API term to capture all audio channels for DeckLink is "EmbeddedAllChannels", if that helps.
It looks like you brought up the audio configuration dialog by double-clicking an item in Advanced section. Those property pages are provided by the manifacturerer, so we have no control over them.
I will figure out a way to replace those property pages with our own dialog windows. When that is done, hopefully we will have no issue setting up 8 channel audion. Stay tuned.
And the second one is not a deal breaker, but is a bit annoying.
Each time it initiates the interface, it reasks the input option for the capture card.
Screenshots of both cases attached, let me know if you need anything.
That will eventually be moved to the configuration dialog window. Right now I am still exploring the DeckLink API.
-
Please test this new DLL (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2025-02-27.zip) and give me a log file. Please note this DLL will not provide any new behavior. I just added a few more logging lines that were missing.
-
Here you go! Hope you had a good holiday.
-
Please test this new JRTelevision DLL (https://files.jriver-cdn.com/mediacenter/test/JRTelevision2025-03-04.zip) and give me a log file.
Thanks.
-
Similar results, except that the image is now a blank screen instead of upside down till you do a Pause / Play.
-
Similar results, except that the image is now a blank screen instead of upside down till you do a Pause / Play.
I try to set capture filter's output pin format according to the current format reported by the device. In this latest test, the format was "4K2160p60, 8BitYUV", while two days ago it was "4K2160p2398, 10BitRGB". In both cases the attempts failed. In both cases the capture filter output video pin ended up with some unknown formats.
Also, the attempt to start stream using DeckLink API failed, possibly because the DirectShow filter already started the device, and in retrospect, the device can not be controlled separately. That would explain why I am not seeing any "package arrived" notifications. So maybe it is time to abandon this approach and try getting the streams without using DirectShow.
-
It may be a lot quicker if you had (buy,rent,borrow?) one of these devices for dev/test? Who know, BMD may loan you one for testing. I'd lend you mine, but Oz is a long way from the US. You would need a PC with Thunderbolt 3 for the standalone unit, or PCI-E slots for a card.
Plus you would not be reliant on me (I'll be away for a few days now).
-
I tried today with
DeckLink 4K Mini Recorder
Blackmagic Desktop Video 14.4.1
JRiver 33.0.71 configured to JRVR
Television configured for BM WDM Capture
TV DLL from March 3
Windows 10
RTX-3080 Ti
Source is Apple TV 4K sending 4K23 BT2020 12-bit HDR10
I get a black screen. If I click the black screen with the mouse, it returns Paused. A picture then appears but stutters horribly.
If I change JRiver options to use MadVR or Standard, I get a smooth picture. But BT2020 input is converted to BT709 output and no HDR, which could be expected since HDR10 metadata is not forwarded from the DeckLink.
Log file attached.
-
I'm back but will be away again in a few days. I forgot to mention, that you could see different formats in the logs as I've tried a few different bits of HW and at different refresh rates etc (though all HDR).