columbarius
50cb55ed1d
screencast: add logging to pwr_handle_stream_param_changed in pipewire_sreencast.c
2021-07-02 09:45:46 +02:00
columbarius
ab8e3bea00
pipewire: stop announcing a range as the video size
...
We can only serve a video with a size as send from the compositor,
so no need to announce any range.
2021-07-02 08:58:13 +02:00
columbarius
dee06d015d
pipewire: add the striped format inside of build_format
2021-07-02 08:58:13 +02:00
columbarius
773186d2ed
pipewire: move enumformat creation into seperate function
2021-07-02 08:58:13 +02:00
GermainZ
668509e317
Fix potential memory corruption when reading bools
...
As per `man sd_bus_message_read`, boolean items should be read into an
int rather than a bool as the latter can cause memory corruption.
2021-07-01 13:49:31 +02:00
columbarius
96d2789d8f
screencast: don't rely on the structure of xdpw_screencast_instance to convert formats
2021-06-29 15:08:02 +02:00
columbarius
bb24b226e4
screencast: respect the maximal framerate negotiated by pipewire
2021-06-23 09:32:08 +02:00
columbarius
976fa8374d
screencast: limit screencast framerate by output framerate
2021-06-23 09:32:08 +02:00
Tobias Jakobi
0d23a5ea15
screencast: move xdpw_pwr_stream_destroy() up
...
- keep the order of functions in-sync with the header
2021-05-24 10:03:40 +02:00
Tobias Jakobi
f60bdcef71
screencast: improve cleanup on error in xdpw_screencast_init()
...
- currently the cleanup can segfault due to uninitialized
list objects
- introduce xdpw_pwr_context_destroy() and fixup goto logic
2021-05-24 10:03:40 +02:00
Tobias Jakobi
d2fa4aa5e7
screencast: protect against NULL stream in xdpw_pwr_stream_destroy()
...
- this allows repeated calls of xdpw_pwr_stream_destroy() on a
single screencast instance
2021-05-24 10:03:40 +02:00
Tobias Jakobi
dbe71a66c7
screencast: bring function names in line with the wlroots guidelines
...
- no functional changes
2021-05-24 10:03:40 +02:00
columbarius
47635b94eb
screencast: add prompt to dmenu style default choosers
2021-05-03 15:58:40 +02:00
Simon Ser
7f6b4090e0
Add -r flag to slurp
...
This prevents the user from selecting a custom region, and forces
them to select a full output.
2021-05-03 11:57:11 +02:00
columbarius
f978a6eb77
Revert "screencast: workaround corrupted output_list"
...
This reverts commit 94f1f5d0a8
.
2021-04-19 15:42:50 +02:00
columbarius
e89c58c731
wlr_screencopy: make sure xdg_output_manager is supported
2021-04-19 15:42:50 +02:00
Stefano Ragni
ebb50839a5
wlr_screencast: fix return value on cmd failure
2021-04-18 19:56:54 +02:00
columbarius
5e4edae701
wlr_screencast: remove wl_display_dispatch
...
wl_display_dispatch is unnecessary and can cause hangs, if no new requests are queued
2021-04-17 16:25:54 +02:00
columbarius
ca46a98b86
wlr_screencast: add xdg_output_listener after output registration if possible
2021-04-17 11:33:48 +02:00
columbarius
3ca286b0b4
wlr_screencast: call wlr_remove_output only if global is an output
2021-04-17 11:33:48 +02:00
columbarius
d83431335d
wlr_screencast: create clean xdpw_wlr_output and free on remove
2021-04-17 11:33:48 +02:00
columbarius
94f1f5d0a8
screencast: workaround corrupted output_list
2021-04-02 15:07:38 +02:00
columbarius
9d78b21695
screencast: add outputchooser with config option
...
Supports "dmenu" chooser type, which is called with a dmenu type list
piped to stdin, "simple" type, which recieves nothing on stdin and
default, which tries the hardcoded choosers.
Choosers are required to return the name of the choosen output as given
by the xdg-output protocol.
Thanks to piater for closing overlooked pipes.
Thanks to ericonr for suggestions regarding fork and pipes.
2021-04-02 15:07:38 +02:00
David96
4c2d8fc808
Add exec_before and exec_after
...
Adds an option to execute some program before and after screencast (e.g.
for disabling notifications during a cast)
2021-03-16 23:44:08 +01:00
Stefano Ragni
6c8f6ca78e
pipewire: Fix building EnumFormat spa object
...
Make sure that in SPA_POD_CHOICE_ENUM_Id(n_vals, ...) we always pass
exactly n_vals arguments. For this we build the object with separate
spa_pod_builder_add calls, since n_vals is known at runtime.
Fix #102
2021-03-16 15:43:47 -04:00
Zsolt Donca
ab8ff54f4c
Control how many frames are captured per second
...
The goal is to control the rate of capture while in screencast, as it
can represent a performance issue and can cause input lag and the
feeling of having a laggy mouse.
This commit addresses the issue reported in #66 .
The code measures the time elapsed to make a single screen capture, and
calculates how much to wait for the next capture to achieve the targeted
frame rate. To delay the capturing of the next frame, the code
introduces timers into the event loop based on the event loop in
https://github.com/emersion/mako
Added a command-line argument and an entry in the config file as well
for the max FPS. The default value is 0, meaning no rate control.
Added code to measure the average FPS every 5 seconds and print it with
DEBUG level.
2021-03-08 16:59:17 +01:00
columbarius
07154bb1e3
Add support for config file
...
Closes: https://github.com/emersion/xdg-desktop-portal-wlr/issues/60
2021-03-03 10:29:56 +01:00
Simon Ser
c6d52b4412
Remove extraneous whitespace
2021-02-11 18:55:48 +01:00
Simon Ser
9f72a6d874
Fix freeze on skipped frame
...
When a frame is skipped, we weren't destroying the wlr frame. Since
this function kicks off the next frame capture, the stream was getting
stuck.
Closes: https://github.com/emersion/xdg-desktop-portal-wlr/issues/81
2021-02-11 18:55:48 +01:00
Jan Beich
a3e203584a
screencast: prefix macros to avoid conflict with system definitions
...
In file included from ../src/screencast/wlr_screencast.c:18:
../include/pipewire_screencast.h:7:9: error: 'ALIGN' macro redefined [-Werror,-Wmacro-redefined]
#define ALIGN 16
^
/usr/include/machine/param.h:79:9: note: previous definition is here
#define ALIGN(p) _ALIGN(p)
^
2021-01-09 12:21:13 +01:00
columbarius
f0e1de02f4
Fix cursor_mode checks in screencast.c
2020-11-06 13:44:58 +01:00
columbarius
24bc68f0f2
Remove SPA_PARAM_BUFFERS_dataType
...
Don't announce a SPA_PARAM_BUFFERS_dataType. This is reserved for consumer
2020-11-04 11:09:09 -05:00
columbarius
dafb25fdb1
Update to wlr-screencopy-unstable-v1 version 3
2020-10-19 23:40:30 +02:00
columbarius
c2883a4e43
Add pipewire buffers_dataType parameter in pipwire_screencast.c
2020-09-19 10:22:44 +02:00
Manuel Romei
25e7719d18
Revert "Remove unnecessary check from wlr_screencast.c" ( #54 )
...
* Revert "Remove unnecessary check from wlr_screencast.c"
This reverts commit cc59abb124
.
Fixes emersion/xdg-desktop-portal-wlr#50
* Clarify why the check in wlr_screencast is needed
2020-09-11 10:38:04 -04:00
columbarius
61db8968f9
Fix linewidth in wlr_screencast.c
2020-08-23 20:06:47 +02:00
columbarius
cc59abb124
Remove unnecessary check from wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
5ea10ef253
Remove TODO from wlr_sreencast.c
2020-08-18 15:47:44 +02:00
columbarius
a8d12c6163
Rename wlr_frame_buffer_clear to wlr_frame_buffer_destroy in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
24a793135c
Add comments to wlr_frame_buffer_clear in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
06aa0a0bda
Change loglevel for existing buffer in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
15e30ed35d
Remove unecessary checks in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
c6253415c0
Add functions to clean simple_buffer.{data,buffer} in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
f23e9e4921
Change refresh logic and add tests in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
9d4193e5b2
Refresh buffer on change in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
9c353d6cfb
Fix log messages in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
1245e9c353
munmap simple_frame.data only if needed in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
4c20660f74
Only recreate simple_frame on change in wlr_screencast.c
2020-08-18 15:47:44 +02:00
columbarius
e57beee43d
Destroy wlr_buffer only on quit or error in wlr_screencast.c
2020-08-18 15:47:44 +02:00
Simon Ser
f5bfe9fe12
Replace void * with correct type in start_screencast
2020-05-05 10:00:10 -04:00
Simon Ser
a7ea407e2f
Remove --pixelformat flag
...
This hack is not needed anymore.
2020-05-05 10:00:10 -04:00
Simon Ser
26b6bf69aa
Advertise format with alpha channel stripped
2020-05-05 10:00:10 -04:00
Dan Shick
229a34a9fe
Globally define _POSIX_C_SOURCE in meson.build
...
Fix musl issue with time.h
2020-04-23 09:53:34 +02:00
Dan Shick
f6d14d9206
Check cast instance refcount before attaching
2020-04-21 14:45:55 +02:00
danshick
55f873dac4
Screencast session support ( #22 )
...
* Initial session support WIP
Remove libdrm dependency
Remove display from context, add dbus properties
Use random names for shm and pw_stream, init the stream only for new cast instances
Separate cast initialized flag from refcount, cleanup names and comments
* Refactor and stability improvements
Properly report xdp screencast implementation version
2020-04-16 10:21:55 +02:00
Dan Shick
bba347be4c
Add pipewire 0.3 support. Workaround pipewire bugs.
2020-03-16 22:43:45 +01:00
Dan Shick
45699637d1
Fix CI with libpipewire02, libdrm. Remove png.h unused import. Cleanup style.
2020-03-13 21:01:32 +01:00
Dan Shick
c0da39f022
Add proper event loop. Remove last threads. Update CI with pipewire.
2020-03-13 21:01:32 +01:00
Dan Shick
eb229b708e
Remove thread for pipewire and all locking. Add support for elogind in meson.
2020-03-13 21:01:32 +01:00
Dan Shick
b0c50ff911
Add proper logging
2020-03-13 21:01:32 +01:00
Dan Shick
080d519a0d
Add xdg_output protocol for output selection
2020-03-13 21:01:32 +01:00
Dan Shick
7b699f3344
Use variable framerate, add CLI option to override pixelformat metadata
2020-03-13 21:01:32 +01:00
Dan Shick
2a31d2d922
Add thread for wlr screensharing
2020-03-13 21:01:32 +01:00