wwmm / easyeffects

Limiter, compressor, convolver, equalizer and auto volume and many other plugins for PipeWire applications
GNU General Public License v3.0
6.44k stars 269 forks source link

Suggestion: Video effects #2882

Open brunofin opened 8 months ago

brunofin commented 8 months ago

Sorry if this is not the proper place to post this kind of thing, the last thing I want is to clutter a busy project's issues page with unrelated stuff, but....

I do think this application is one of the most powerful things in Linux at the moment, backed by the PipeWire stack to allow all of that to happen of course.

With my minimal knowledge of PipeWire, I understand it also can and does process video, and applying effects to video inputs and outputs is as easy as it is to audio, and with the lack of a similar app that can do the same Easy Effects does to audio but to video instead, I believe it would be a very cool and useful feature to have Easy Effects be able to also handle video effects.

Thank you.

wwmm commented 8 months ago

Sorry if this is not the proper place to post this kind of thing, the last thing I want is to clutter a busy project's issues page with unrelated stuff, but....

It is fine :-)

With my minimal knowledge of PipeWire, I understand it also can and does process video, and applying effects to video inputs and outputs is as easy as it is to audio

I am not sure if it is "just as easy" but PipeWire can handle video processing. But although I have done video processing in opencv and gstreamer a few times I never tried to use PipeWire process video.

I wonder if it is even possible to redirect video clients to a different device like we do for audio clients. I would expect the workflow to be a lot less automated with video. Nowadays audio clients do not use ALSA directly but Pulseaudio or PipeWire instead. But video clients usually access the camera directly.

brunofin commented 8 months ago

Unfortunately it seems you are right about apps connecting directly to the webcam instead of through PipeWire, at least through Slack I tested this to be true. I opened qpwgraph while having Slack's (flatpak) Audio & video settings page open, and it seems it only connects to the audio parts. The webcam capture outputs are not connected to anything even though I had my webcam view open in Slack.

Not sure though if this is evidence pipewire couldn't be used for this purpose. I wonder how OBS does that with it's virtual camera.

image

Although "Easy Effects Source" also doesn't seem to be connected to an app specifically here, only to my hardware output, still, it's what's Slack is using as an input device.

wwmm commented 8 months ago

Not sure though if this is evidence pipewire couldn't be used for this purpose.

It probably can but not with the same workflow as the one available for audio devices. The user would probably need to manually force the video client to use a virtual device created on our side. The automatic moving of streams we do for audio probably can not be done until all these video clients start to use PipeWire to handle video.

The other problem with the current situation is conflict when trying to use the camera. If an app access it directly other clients won't be able to use until the app release the camera. The same thing can happen to audio if something takes the soundcard before the audio server.