voc / voctomix

Full-HD Software Live-Video-Mixer in python
https://c3voc.de/
MIT License
580 stars 110 forks source link

GUI-Controlled Slides scaling and cropping #31

Open MaZderMind opened 8 years ago

MaZderMind commented 8 years ago

The GUI could have Buttons to help with correcting broken Slide-Stream inputs. It could have an assistant that helps detect the Problem:

Which option describes the Problem with the Slides best?
a) The Slides are compressed
b) The Slides are stretched
c) The Slides are cropped

This could be implemented using Messages, brokered by the core to running input-scripts, which would allow to keep the separation between core and sources. See #25, especially https://github.com/voc/voctomix/issues/25#issuecomment-158857822

CarlFK commented 8 years ago

I would like to be able to crop the input in an arbitrary size. If the region is a different aspect ratio, I would like options to either stretch or position the result in one of the corners.

For instance, if slides are 4:3 with black bars, I want to use the 4:3 area but instead of being centred put it to the left side so that the PnP doesn't obstruct the slide.

I would also like to be able to zoom in on a region. For instance, if the camera is far back, zoomed all the way in, I want to zoom in more. (Yes, I will lose resolution. that is fine.)

CarlFK commented 8 years ago

There seem to be a few issues that all talk about the similar things

31 (this one)

36

60

with different solutions:

  1. client/source does the transform 1a (maybe based on a signal sent from the gui though core)
  2. core does the transform

I understand the benefit of manipulating the stream at the source, but I think it will be better for it to happen in core. I think that will result in more uses.

I really like the simplicity of the clients. I like that anyone can look at them and understand them and hack on them quickly. They are robust and don't fall over or need much debugging.

I suspect that the code that puts the PnP pic on the canvas could be generalized as such: Both A and B use the same code to place both sources on a blank canvas.
This code would also take a region of the source as a parameter.

If the slides are letterboxed 4:3, the region is the 4:3 area. And that is the only bit of the image that gets read and placed on the canvas. Or if a presenter is not moving much, a 16:9 box is not a good use of space.

MaZderMind commented 8 years ago

As a first Step we will implement the following options:

Additionally the Scene-Buttons ( #29 ) should add an option to specify a different placement for 4:3 slides.

CarlFK commented 8 years ago

As a first Step we will implement...

Will this be implemented in core? (I hope so.)

How dynamic is expected? If the presenter switches from 4:3 slides to 16:9 desktop full of terminal windows, what happens?

Instead of more UI to specify placement, how about expanding the existing config defined layout to handle the additional parameters? example, the current Side-by-Side layout could be defined as: split the canvas in half vertically, center the content, expand to fill the area, maintain aspect ratio. Which is what we currently have.

It might (or not...) be a good idea to use CSS to define the layout.

saerdnaer commented 6 years ago

What's the current state of this issue? Can https://github.com/voc/voctomix/pull/179 be reused?

MaZderMind commented 6 years ago

@saerdnaer did you see any progress documemented here? I did not. So this answers the Question of the state, I think.

The crop in #179 is a static configuration that can not be changed via the GUI.

fightling commented 5 years ago

I think the ability to draw a cropping rectangle (with fixed aspect ratio because the composite is defining that) in all the source previews and for each a checkbox beside to activate that cropping at the core side would be a good and not so hard thing to do.

saerdnaer commented 2 years ago

voc2mix has a static 4:3 crop option for presention view, should we let this issue open till full free-form-cropping is implemented?