Not getting full 4k signal from Elgato Camlink Pro source.

I am having some issues with using a 4k source on a 1080p OBS "canvas". My setup is as follows- For streaming OBS is set up for 1080p. I have a Camlink 4k Pro PCIe card, with 2 1080p inputs (face cam and secondary cam), and a 4k input (MacbookPro outputting 3840x2160p). I have confirmed that I am getting a full 4k signal from the Camlink Pro in a few ways- both when using Elgato's capture tool and Windows Camera app, I get full resolution of the source on my 4k monitor. Additionally, when clicking the "Configure Video" button in my source properties, the video resolution is listed as 3840x2160p. What I want to do- keep the 4k source at 4k, and only show the upper left 1080p sized frame of the 4k source, as full-screen in OBS, like this:

frame-example.jpg


The problem is is this- when I add the source, it seems to be scaling the 4k down to fit my 1080p OBS canvas. In the log files I see this (full log attached below):

Code:
06:44:42.089: [DShow Device: 'Mac'] settings updated:
06:44:42.089:     video device: Cam Link Pro HDMI-3
06:44:42.089:     video path: \\?\pci#ven_12ab&dev_0710&subsys_00111cfa&rev_00#6&3334b688&0&0010000a#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{6f814be9-9af6-43cf-9249-c03403000226}
06:44:42.089:     resolution: 1920x1080
06:44:42.089:     flip: 0
06:44:42.089:     fps: 30.00 (interval: 333333)
06:44:42.089:     format: YUY2

Any thoughts on how/why this might be happening? (Attached my source properties and "configure video" window below)
 

Attachments

  • device-properties.jpg
    device-properties.jpg
    59.1 KB · Views: 184
  • properties.jpg
    properties.jpg
    54.1 KB · Views: 189
  • 2021-12-07 06-44-40.txt
    80.5 KB · Views: 39
Crop source size.

Could you expand on that a bit? I am aware I can crop a source, and have done it quite a bit. My problem is that my 4k input is being downscaled (apparently by OBS) to 1080p, so I've got nothing to crop, as I'd have to stretch a (now) 1080p signal up to 4k, then crop, resulting in horrible quality. Unless I am misinterpreting what you're getting at?
 
Simple, set source as 3840x2160 and now crop size, this all you found in transform menu.

Herein lies the problem- the source IS set to 3840x2160 (see the properties.jpg file attached to my first message), and somehow it seems to be getting set to 1080p elsewhere by OSS. I am seeing 1) 3840x2160 as the resolution in the OBS source properties, 2) 3840x2160 as the video resolution in the camlink device properties, and 3) I am definitely getting a 3840x2160 output everywhere other than OBS, but 4) the logs from OBS are showing the source as 1920x1080 (even though the properties menu shows 4k).
 

Tomasz Góral

Active Member
This card receive 2160p30 only 30fps max.
I don’t remember macbook can set fps ?
Because i think macbook lower resolution because card send info about hdmi resolution and system set max resolution at 60fps.
 
This card receive 2160p30 only 30fps max.
I don’t remember macbook can set fps ?
Because i think macbook lower resolution because card send info about hdmi resolution and system set max resolution at 60fps.

As I mentioned in my last post, " 3) I am definitely getting a 3840x2160 output everywhere other than OBS." I can use the Elgato capture software, and get a full 4k30 signal, and the windows camera app shows a full 4k30 (and yes, I can specify 30hz as the output for my MBP). Finally, as shown in the attached image of the Camlink Pro Device Properties in my first post, its video is "3840x2160p" with a refresh rate of "30fps" This is why I believe it is something in OBS.

1. MBP Is outputting 3840x2160p 30hz.
2. Windows Camera app, and Elgato Capture Utility both capture a perfect 3840x2160p 30hz video from that source.
3. In OBS, the source properties show the video is 3840x2160p, 30hz (again, see attached picture in my first post)
4. The actual output in OBS the entire 4k image, SCALED DOWN to 1920x1080p.
5. The OBS log file shows the source as 1920x1080p, which doesnt match what anything in the UI says about the source.

Here is a sample of what I'm seeing- this is the same machine, same card, same source, just captured either through Elgato Capture Utility, or through OBS:
Elgato Capture Utility (this is a tiny bit soft due to jpeg compression, it is crystal clear/absolutely 4k)-
elgato-cap.jpg


OBS- 1920x1080 being scaled back up to 4k-
obs-cap.jpg
 

konsolenritter

Active Member
To handle the full 3840x2160 you should set your OBS Base resolution to that, and the scaled output size to 1080p then.

The rest is like Tomasz told: crop and resize to fullscreen the 1080p upper left part of the Ultra-HD source as you wished.
Remind that your machine must be capable to handle all stuff including two times of rescaling (upscaling the cropped part, then downscaling all to output size). Thats hardware demanding at all. Hopefully it works at 30fps well for you.
 
To handle the full 3840x2160 you should set your OBS Base resolution to that, and the scaled output size to 1080p then.

The rest is like Tomasz told: crop and resize to fullscreen the 1080p upper left part of the Ultra-HD source as you wished.
Remind that your machine must be capable to handle all stuff including two times of rescaling (upscaling the cropped part, then downscaling all to output size). Thats hardware demanding at all. Hopefully it works at 30fps well for you.

In my case I do educational/live-code streaming, so the FPS really isn't an issue. So if I'm interpreting this properly- OBS will enforce auto-scaling a 4k Video Capture Device source down to whatever the base resolution is set to? Is there any reason it doesn't do the same for other source types (like a Display Capture source, or a Window capture source)? I currently bring a full 4k Display source (the size of my monitor) into OBS. The source is much larger than my base resolution, and goes off the sides of the "canvas," which is exactly what I'm looking to do with a video capture source.

The problem with using a larger base resolution then rescaling, is if I set the base resolution to 4k, and bring in my 4k source, all 4k will take up the entire base-resolution (what I've been calling a "canvas"). Then when I rescale it all back down to 1080p, I am right back where I am now, with my 4k source scaled to take up the entire base resolution. What I want is for only the top-left 1920x1080 pixels of the 4k source to take up the entire canvas. But it sounds like this is simply not possible (unlike with other source types).
 

Tomasz Góral

Active Member
OK once again i look on log file.
Card say : 1920x1080 60 fps - this card can't change resolution in the fly, many card can't change up from received 30 fps to 60 fps in lower resolution. Little more card can change resolution from higher to lower but not FPS or interpolation to progressive mode.
Please add any screen shot from source with information about resolution and Hz.

Your base resolution is 1920x1080, if you need not rescale source, set correct menu Transform (position: Size: 3840x2160) (Ctrl+E).
 

koala

Active Member
According to your log, you're using a canvas size of 1920x1080. Perhaps OBS will limit the resolution of capture devices to the canvas resolution.
Try to set the canvas resolution to 3840x2160 and see if OBS will use the higher resolution for the capture device as well. Just to see if this is the case. I understand you want to use only part of your captured image, so your choice of the smaller canvas. But just try it to see if OBS limits the capture device resolution to the canvas resolution or if your issue is caused by other things.

And also try to delete the video capture source, then restart OBS, then add it again. May be some issue with initializing.
 

dcmouser

Member
I'm having the exact same problem. Cam Link Pro with 4k (30fps) source; records at 4k in other apps. In OBS even if I have canvas and output set to 3840x2160, and add the source capture video configuration at 3840x2160, OBS seems to see it as a 1920x1080 device.

I can of course RESCALE the source to 3840x2160, but it's obvious that OBS is still seeing it as a (now-enlarged) 1920x1080 source, as evidenced by a right-click "Screenshot (Source)" which produced a 1920x1080 image no matter how it is rescaled.

The problem seems to be that when OBS connects to the Cam Link Pro, no matter how the "Configure Video" options are set, and no matter how the custom resolution is set (3840x2160 in my case), OBS still connects to it at 1920x1080...

I've tried restarting OBS, doesn't have any effect.

Any ideas?
 

Tomasz Góral

Active Member
Grabber (like Cam Link Pro) is passive device, your source must correct introduce list of resolution.
Run original software for this grabber and check value on sender and receiver, now run OBS and check.
Of course is possible OBS send command who lower resolution in negotiation process.
 

dcmouser

Member
I have a theory.

I wonder if the problem is that OBS is trying to connect to the source at a higher FPS then it should be.
The log shows:
06:47:28.932: resolution: 1920x1080
06:47:28.932: fps: 50.00 (interval: 200000)

I think the idea is that this card (Elgato Cam Link Pro) can do 4k but only at max of 30fps.

Now I've set OBS setting on the video tab to a FPS of 30 (or 24).
In the video source for custom FPS we only have 2 choices: "Highest FPS" or "Match Output FPS (autoselect: Highest FPS)"

I've tried both settings with no change in log file output or behavior.

So my theory is that even when you set OBS FPS to a low value (24 or 30), it's still trying to connect to the source video capture device at a HIGHER FPS, and that is kicking the Elgato Cam Link Pro into a lower resolution capture.

Thoughts?
 

Tomasz Góral

Active Member
This is low HDMI settings.
Check with video (camera or computer) source with correct values.
Some device accept pass through mode, e.g. accept 2160p60 but to computer send only 2160p30.

Cam Link Pro after connect cable, send list of resolution to sender (source of video), then decided which resolution send, if you block on sender resolution - receiver show black screen or communique 'You are after range' if resolution is not supported or show picture if supported.

And going back to beginning if you see in OBS (logs) this resolution 1920x1080 and FPS 60 - your source send 1920x1080p60.
 
This is low HDMI settings.
Check with video (camera or computer) source with correct values.
Some device accept pass through mode, e.g. accept 2160p60 but to computer send only 2160p30.

Cam Link Pro after connect cable, send list of resolution to sender (source of video), then decided which resolution send, if you block on sender resolution - receiver show black screen or communique 'You are after range' if resolution is not supported or show picture if supported.

And going back to beginning if you see in OBS (logs) this resolution 1920x1080 and FPS 60 - your source send 1920x1080p60.

You keep going back to "your source sends 1920x1080p60" completely ignoring the fact that both dcmouser and myself have CONFIRMED (and in my case I have shown evidence here) that 1) our video source is sending 4k30, and 2) that in every other windows capture software (at least that I have access to), using the exact same video source, and exact same Camlink Pro PCIe card, yield a 4k30 capture. Are you implying that my 4k video source is somehow listening to what I am doing, and changes what it sends when it realizes I am running OBS?

I've right now, at this very moment, got OBS, and the Camlink capture utility both running. Here is what the Camlink capture utility shows:

4k30.png


Source: 2160p30, Capture 2160p30. Guess what the resolution of this exact same source being captured in OBS is, at the exact same time? 1080p. Something is happening in OBS to change this resolution.
 
According to your log, you're using a canvas size of 1920x1080. Perhaps OBS will limit the resolution of capture devices to the canvas resolution.
Try to set the canvas resolution to 3840x2160 and see if OBS will use the higher resolution for the capture device as well. Just to see if this is the case. I understand you want to use only part of your captured image, so your choice of the smaller canvas. But just try it to see if OBS limits the capture device resolution to the canvas resolution or if your issue is caused by other things.

And also try to delete the video capture source, then restart OBS, then add it again. May be some issue with initializing.

Hi Koala-

Thank you for the suggested troubleshooting steps. I've tried deleting and recreating the video source several times (with and without restarting OBS inbetween) and unfortunately, that didn't seem to help.

Regarding a base canvas of 3840x2160, I was a bit reluctant to do so, as my scenes are... pretty complicated, and I didn't want that to possibly mess up positions... but decided to YOLO and give it a try. The good news is, when I switched back my scenes were all still good (yay!). The strange news is- even at 3840x2160, the Camlink Pro was coming in at a 1080p resolution. So it isn't tied to the base resolution. This one really has me scratching my head.
 

Tomasz Góral

Active Member
You keep going back to "your source sends 1920x1080p60" completely ignoring the fact that both dcmouser and myself have CONFIRMED (and in my case I have shown evidence here) that 1) our video source is sending 4k30, and 2) that in every other windows capture software (at least that I have access to), using the exact same video source, and exact same Camlink Pro PCIe card, yield a 4k30 capture. Are you implying that my 4k video source is somehow listening to what I am doing, and changes what it sends when it realizes I am running OBS?

No no no - you don't upload screenshot with configuration of video source with information about resolution. Screenshot from your Mac.
I can't find any intel about rescale input source in Cam Link Pro. I think this card show video data as it is, if you got 1080p60 you sender device send 1080p60. Once again please check source when connect to OBS.
I don't say that OBS does not affect the settings of the card.
 

Unfortunately, that doesnt seem to be the case here. I've gone through and tried every port, and none of them seem to do 4Kp30 to OBS (again, they ALL do 4Kp30 to every other capture software I have).

No no no - you don't upload screenshot with configuration of video source with information about resolution. Screenshot from your Mac.
I can't find any intel about rescale input source in Cam Link Pro. I think this card show video data as it is, if you got 1080p60 you sender device send 1080p60. Once again please check source when connect to OBS.
I don't say that OBS does not affect the settings of the card.

This feels a bit like being told to unplug and re-plug my cable modem after stating that I have already done so, 14 times. But here, to take away any doubt that I am outputting and receiving 4k30, see the attached image. The upper left side is Elgato capture utility, and I've conveniently circled where it states that it is RECEIVING A 4k30 signal. What it is receiving is my Macbook Pro's screen, which I have also brought up the resolution being output- 4k30. To the right, the smaller version, is the FULL SCALE source I am getting in OBS, at the exact same time, with the exact same 4k30 output. If you look VERY closely, you will notice that this image, is 1/4 the resolution of the Elgato Capture Utility image, i.e.- a 1080p image). For good measure, I've also opened up the video source properties window (same as the screen shot in my original post) that shows a resolution of 4k30 (circled for convenience), as well as the camlink pro input device properties (same as in my first post), which once again shows that the input is receiving a 4k30 signal. The ONLY thing that doesnt seem to think "4k30" is the actual source being shown in OBS, which is only 1920x1080 pixels worth of data (If I stretch the bounds to 3840x2160, it is extremely blurry/pixelated).
unplugged-router.png
 
Top