bitfocus / companion

Bitfocus Companion enables the reasonably priced Elgato Stream Deck and other controllers to be a professional shotbox surface for an increasing amount of different presentation switchers, video playback software and broadcast equipment.
http://bitfocus.io/companion
Other
1.6k stars 503 forks source link

Feature Request: Rework button graphics generation #262

Open dnmeid opened 6 years ago

dnmeid commented 6 years ago
  1. Let's unify the button styles further. In my opinion a button should have layers, a color background layer, a png layer and a text layer. So we don't need two different button styles anymore. And we could combine background colors with transparent pngs. And maybe for the future we can offer the ability to let the user add more layers or give more options to layers or more types of layers.
  2. There should be an option to resize pngs and alignment control option. Resizing should not be done during upload, but during presentation.
  3. Feedbacks could also use one or more layers, let's say a feedback is writing some text into a text layer and the user can have another textlayer writing his own text.
  4. Button states. Let's give each button the ability to have more than one design. This would make much things much easier. Each state has all the options of the button design in it, so a module or the user can prepare many states and switch between them only with changing the state. Great for toggle with state 0 and state 1. But there could be more states, feedback can also be used to switch states, so it is easy to implement feedback and at the same time it is comprehensible to the user and easy adjustable.
haakonnessjoen commented 6 years ago

I also want to add support for uploading gifs. But with some limitations. They will always loop, and a fixed delay between each frame. So a gobal timer for all gifs.

It should actually be very simple to implement, with js-only modules, so I might, some day ;P

edifyyo commented 5 years ago

I'd very much like GIF support, as well!

RobbieBott commented 4 years ago

+1 for looping gif support.

Julusian commented 3 years ago

I think that supporting animated gifs will require some technical thought about how to avoid it becoming a performance hog.

barnes2000 commented 3 years ago

I would very much like to see animated gifs added to companion for stream deck. I am not an engineer, but if there are donations needed to help expedite this, please let me know. Thank you.

barnes2000 commented 2 years ago

It's 2022 now and I'd like to bump this request again. I am willing to donate $$$ to help expedite this feature, if there's someone that thinks they can achieve it. Thank you.

ukiews commented 2 months ago

Is there a reason something simple like this cannot be implemented? Currently this is the only drawback that requires us to create buttons within streamdeck software and run companion as a plugin. For example, when OBS is livestreaming, we want to be able to have the button blink "LIVE"

thedist commented 2 months ago

Is there a reason something simple like this cannot be implemented? Currently this is the only drawback that requires us to create buttons within streamdeck software and run companion as a plugin. For example, when OBS is livestreaming, we want to be able to have the button blink "LIVE"

Blinking text/colours is all already possible in Companion.

ukiews commented 1 month ago

Is there a reason something simple like this cannot be implemented? Currently this is the only drawback that requires us to create buttons within streamdeck software and run companion as a plugin. For example, when OBS is livestreaming, we want to be able to have the button blink "LIVE"

Blinking text/colours is all already possible in Companion.

I suppose this could be accomplished by using variables and delays, but this would be unnecessarily involved, and I imagine prone to issues that would hug up resources.

Could we not get a simple option to add a GIF like streamdeck already allows?

thedist commented 1 month ago

I suppose this could be accomplished by using variables and delays, but this would be unnecessarily involved, and I imagine prone to issues that would hug up resources.

Or just use the generic-blink module.

Julusian commented 1 month ago

The generic blink module isn't going to be much better (for performance) than doing something with variables/triggers.

It definitely doesn't solve the biggest cost of rendering and piping the rendered images around.

Which is the key challenge of why this hasn't been done. It requires changes to the renderer, to generate a sequence of renders to be displayed. And ideally to the streamdeck and similar libraries to avoid reencoding the images each time they are shown. And for things like satellite and the plugin, it requires changing those to support this, to avoid continually resending the renders across.

This is assuming just blinking. For a gif, it needs some investigation into how hard decoding gifs are. Do we draw all the frames at once sending them out in one go (slowing down the time for the first frame to be shown) or render them slowly and stream the results (adding complexity to the display phase, and risk of skipping frames)

So there's a lot of parts to this that need addressing for a good solution, and simply no-one has offered to put in the time to do it yet. (I did start thinking about this yesterday, but only going as far as blinking, not sure if I will actually do it)