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

Screencast: Clarify which PipeWire features are mandatory #869

Open
columbarius opened this issue Aug 23, 2022 · 3 comments
Open

Screencast: Clarify which PipeWire features are mandatory #869

columbarius opened this issue Aug 23, 2022 · 3 comments
Labels
documentation help wanted pipewire Issues and feature requests related to PipeWire usage in xdg-desktop-portal

Comments

@columbarius
Copy link

Some weeks after implementing screenrecording via the portal API the zoom client broke again with the wlroots implementation. It showed that it treats every buffer without cropping information as invalid (emersion/xdg-desktop-portal-wlr#226).
Since PipeWire has a very broad scope and doesn't force the usage of specific meta-data, we should document which features a portal has to use and which are optional.

My proposal would be

From spa/buffer/meta.h:

  • SPA_META_Header: mandatory
    Describes essential buffer header metadata such as flags (buffer corrupt: mandatory) and timestamps (optional).
  • SPA_META_VideoCrop: optional
    Describes a region to which the buffer should be cropped
  • SPA_META_VideoDamage: optional
    Array of regions describing what part of the buffer was damaged wrt. to the previous one
  • SPA_META_Cursor: mandatory with cursor mode Metadata
    Metadata to describe the position and appearance of a pointing device.

CC: @GeorgesStavracas @aleixpol @grulja

@aleixpol
Copy link
Contributor

I guess you meant Screenshare?

Specifying which as necessary, that's a good idea. Specifying the optional ones is a bit weird, since it would mean that there would be some that are not permitted (?), but it can be useful for documentation otherwise.

As for us, we're supporting most of these already (except for SPA_META_VideoCrop, that is).

@columbarius columbarius changed the title Screenshot: Clarify which PipeWire features are mandatory Screencast: Clarify which PipeWire features are mandatory Aug 23, 2022
@columbarius
Copy link
Author

I guess you meant Screenshare?

Yeah, I've worked on screenshot things before and it was late ^^'.

Specifying which as necessary, that's a good idea. Specifying the optional ones is a bit weird, since it would mean that there would be some that are not permitted (?), but it can be useful for documentation otherwise.

I used optional as the opposite of mandatory meaning that a client can handle that, but it should not expect the impl to always use it (especially if it is not necessary, like setting the cropping region to the whole buffer). Maybe there is a technical more specific word pair for this.

As for us, we're supporting most of these already (except for SPA_META_VideoCrop, that is).

Didn't kwin use SPA_META_VideoCrop for window sharing at some time?

@aleixpol
Copy link
Contributor

Maybe there is a technical more specific word pair for this.

Or maybe we can link to pipewire documentation where they describe these and just say "and $these are mandayory";

Didn't kwin use SPA_META_VideoCrop for window sharing at some time?

No, I don't think so.

@GeorgesStavracas GeorgesStavracas moved this to Needs Triage in Triage Oct 2, 2023
@GeorgesStavracas GeorgesStavracas moved this from Needs Triage to Triaged in Triage Oct 3, 2023
@GeorgesStavracas GeorgesStavracas added the pipewire Issues and feature requests related to PipeWire usage in xdg-desktop-portal label Oct 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation help wanted pipewire Issues and feature requests related to PipeWire usage in xdg-desktop-portal
Projects
No open projects
Status: Triaged
Development

No branches or pull requests

3 participants