Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected Behavior with QT Screen Capture Multi Monitor Capture & LED Frame Position Limitation #1320

Closed
1 task done
ImAvix opened this issue Sep 3, 2021 · 8 comments
Closed
1 task done
Assignees
Labels

Comments

@ImAvix
Copy link

ImAvix commented Sep 3, 2021

  • I confirm that this is an issue rather than a question.

For a bit of context, my setup is probably a bit unusual, but I see no reason why it shouldn't work. I have 2 stacked monitors, a 3440x1440 ultrawide, and a 2560x1440 monitor on top, both centered horizonally. Image attached for reference.

image

Bug report

I have the QT capture selected, Device Resolution is correct, but in the live video the bottom half is completely black, and the top half is the bottom monitor. This is when the ultrawide is the "main display" in the windows settings, which is how I normally have it and would like to keep it. Setting is shown here:

image
Setting is found in System -> Display -> Multiple displays -> "Make this my main display" Checkbox.

Screenshot of LED Visualization "Live Video" Window shown here:

image

When I change the main display to the top monitor though the capture almost correctly captures both monitors, there's black padding on the right hand side that extends to a resolution about 450 pixels to the right, which when you work out horizontal resolution difference between the two monitors (3440-2560) and center it (divide by 2) you get 440px. So again shown below:

image

Finally, since the vertical resolution of my monitors is the same, I cannot vertically align the top LED frame line with the top of the monitor since the max allowed is a 40% vertical crop (found in the advanced settings), seen below.

image

I'm no expert, but my guess for the "bottom half black video output" bug mentioned is that the "origin" point where capture on the main display starts is based off the main displays top left pixel, which doesn't allow for monitors above or to the left of it, because of the limitation to positive integers on the crop. I've visualised both scenarios, where the red box is the combined resolution of the two monitors, but the misconfiguration of the "origin" point causes these errors.

Scenario 1: Bottom Half Black Screen

image

Here you can see the origin point is in the top left of the ultrawide display, and the combined desktop resolution is correct, but the capture region is wrong.

Scenario 2: Both Screens Incorrectly Captured

image

Again here the origin point is in the top left of the top monitor, and the combined desktop resolution is still correct, but the capture region is still wrong.

Finally, removing the 40% limit on the LED frame vertical offset should hopefully be an easy fix 🤞

Steps to reproduce

  1. Have a weird monitor resolution combination where vertical resolution is the same between monitors but horizontal resolution is different, and main monitor is below
  2. Enable QT Capture of All Displays in Hyperion
  3. View Live Video
  4. Change Settings level to "Advanced" or "Expert"
  5. Configure LED Frame for first wider monitor Instance
  6. Open Advanced Settings on Classic Layout (LED Frame)
  7. Set Point Top Left to 50% (Fails)
  8. Set Point Top Right to 50% (Fails)
  9. Repeat Steps 5 & 6 for second monitor instance
  10. Set Point Bottom Left to 50% (Fails)
  11. Set Point Bottom Right to 50% (Fails)

What is expected?

  • Main display setting should having no impact on capture settings.
  • Advanced/Expert settings having no constraints on position locations, or should be at most warned about the changes they are making.

What is actually happening?

  • QT Capture is capturing only one of the two screens when the main monitor is set to the bottom monitor.
  • QT Capture is incorrectly capturing both monitors even when capturing both, showing 440 pixels of black to the right of the desktop captures and cutting off the left 440 pixels.
  • LED Frame position is being artificially(?) limited, not allowing me to set the correct LED Layout in Hyperion for my monitor configuration.

System

Hyperion Server:

Hyperion Server OS:

  • Distribution: Windows 10 Version 2009
  • Architecture: x86_64
  • Kernel: winnt (10.0.19042 (WS: 64))
  • Qt Version: 5.15.0
  • Python Version: 3.9.6
  • Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36

Debug Logs

Just in case they are useful.

https://pastebin.com/vQELk501

@Lord-Grey
Copy link
Collaborator

@ImAvix I had a go to fix this.
Would you mind testing the fix, please?

A development build can be downloaded from here
Just look at the artifact section.

@ImAvix
Copy link
Author

ImAvix commented Feb 9, 2022

OK I've tested with the development build, looks like the region capture with QT issue is fixed in my use case, which is great news, thank you @Lord-Grey. I've attached an image of the new builds LED Visualization window.

image

However, the second (more minor) issue I mentioned in the initial post is still present, where I cannot set the vertical offset to more than 40% from the top or less than 60% from the bottom, this seems like an arbitrary limit, especially after hiding these configuration options in the context of "Advanced Settings", to me it would make sense to not impose limits on "advanced" users, and present at the most a warning dialogue, that can be ignored would be ideal. I'd appreciate this fix to allow the software to support stacked monitor configurations of the same vertical resolution.

@Lord-Grey
Copy link
Collaborator

Lord-Grey commented Feb 10, 2022

@ImAvix Thanks for testing and feedback. Seems I have missed the % issue before.

I guess you finally would like to get something like the following, correct?

image

I have a look on the percentages to see what makes sense in cross field validations....
To create the layout as depicted, you would need to create two individual configs (one for top screen, one for bottom screen) and then stich them together via the "Generated/Current LED Configuration" section.
This is how I achieved the above (including removing the 40/60% limitations).

@Lord-Grey
Copy link
Collaborator

@ImAvix May I ask you doing another round of testing, please?
There are no indention limitations any longer. Of course left cannot be greater than right, as top not greater than bottom.

Artifact for download is here

@ImAvix
Copy link
Author

ImAvix commented Feb 10, 2022

I've been setting my options with the "Classic Layout (LED Frame)" option in the LED Layout tab, there I am presented with a limit of 40% (even in expert settings mode), I can manually overwrite that in the "Generated/Current LED Configuration" JSON editing panel, where I can lower the top edge to 0,5 or 50%, however the top of the left and right sides are still at the old limit, which generates an LED frame that looks like this:

image

Then I encounter the issue of setting a uniform height for the left and right side pixels, which requires some arithmetic ("% vert" divided by "vertical LED count" = proportional pixel row height) and then more importantly manually editing the JSON file, again in my opinion, this should be done through the software, ideally through the GUI.

I could get the result I want by manually adjusting the JSON file, but I have a vertical LED resolution of 22, across both monitors, I'd have to edit 88 values, adjusting in increments of 0.0227... Not my ideal weekend. The solutions I see here are either:

  1. Remove the 40/60% limit in the GUI for advanced/expert users.
  2. A simpler object mode where a user defines constraints outside typical configurations (like mine, 50% vertical offset) and then using the existing program logic to do this proprotional JSON editing.

There is already a JSON viewer, which is handy, and while this is fine for editing setups with fewer LEDs, when the number of LEDs starts to get higher, this becomes tedious quickly.

I have no problem with combining the two JSON configs for weird shapes (again like my monitor configuration), but manually adjusting these proportional arguments is not the best user experience.

@Lord-Grey
Copy link
Collaborator

Lord-Grey commented Feb 11, 2022

@ImAvix Maybe I was not clear with my last post. I removed the vertical and horizontal limitations and provided a link to the updated build for you to test.

Edit

I could get the result I want by manually adjusting the JSON file,...I'd have to edit 88 values, adjusting in increments of 0.0227...

I did the "stiched" ayout completely via the UI. No manual number editing.
You just need to do it in a two step approach which I tried to outline to you.

You just do two configuration steps.
First do the top monitor. Go to the "Generated/Current LED Configuration" section and copy the auto-created JSON to the clipboard. Now create a configuration of the 2nd monitor. Go to the ""Generated/Current LED Configuration" section and insert the clipboard JSON before the 2nd one.
Now do an "Update Preview" and voila you can save your complete layout without manual calculating and capturing digits.

Note: remove the [] from the clipboard config and put a comma between the two configs to get a valid JSON.

@ImAvix
Copy link
Author

ImAvix commented Feb 11, 2022

Success!

image

@Lord-Grey Sorry for the confusion, I didn't see your second comment with the newer build version before posting my comment. You can ignore my comments about manually creating JSON files. That second build addresses both my issues with the software.

Following those two configuration steps you outlined was the most ideal process for creating the LED layout I desire, I appreciate you taking a look at this issue, and I'm glad we could reach a resolution.

@ImAvix ImAvix closed this as completed Feb 11, 2022
@Lord-Grey
Copy link
Collaborator

Fixed via #1421

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants