weston/src
Ander Conselvan de Oliveira 6aae4d39d5 compositor-drm: Add hardware accelerated capture of screen using libva
This patch adds a feature to the DRM backend that uses libva for
encoding the screen contents in H.264. Screen recording can be
activated by pressing mod-shift-space q. A file named capture.h264
will be created in the current directory, which can be muxed into
an MP4 file with gstreamer using

gst-launch filesrc location=capture.h264 ! h264parse ! mp4mux ! \
           filesink location=file.mp4

This is limitted to the DRM compositor in order to avoid a copy when
submitting the front buffer to libva. The code in vaapi-recorder.c
takes a dma_buf fd referencing it, does a colorspace conversion using
the video post processing pipeline and then uses that as input to the
encoder.

I'm sending this now so I get comments, but this is not ready for
prime time yet. I have a somewhat consistent GPU hang when using
i915 with SandyBridge. Sometimes a page flip never completes. If you
want to try this anyway and your system get stuck, you might need to
run the following:

  # echo 1 > /sys/kernel/debug/dri/0/i915_wedged

After that, alt-sysrq [rv] should work.

Once that's fixed it would also be good to make the parameters used by
the encoder more flexible. For now the QP parameter is hardcoded to 0
and we have only I and P frames (no B frames), which causes the
resulting files to be very large.
2013-08-30 13:44:40 -07:00
..
xwayland Add more missing config.h #includes 2013-08-26 14:59:14 -07:00
.gitignore protocol: add sub-surfaces 2013-05-10 14:05:59 -04:00
animation.c shell: Tweak spring animation for zoom animation type 2013-06-17 11:08:11 -04:00
bindings.c input: For serial generation get the display from the compositor 2013-08-12 16:54:10 -07:00
clipboard.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
cms-colord.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
cms-helper.c configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
cms-helper.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
cms-static.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
compositor-drm.c compositor-drm: Add hardware accelerated capture of screen using libva 2013-08-30 13:44:40 -07:00
compositor-fbdev.c compositor: Setup weston-launch sock in fbdev 2013-08-08 22:01:42 -07:00
compositor-headless.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
compositor-rdp.c set RDP output enabled by default (stable 1.2) 2013-08-19 15:44:36 -07:00
compositor-rpi.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
compositor-wayland.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
compositor-x11.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
compositor.c Add a --shell option to override the default desktop-shell 2013-08-26 22:07:03 -07:00
compositor.h compositor.h: Don't include config.h 2013-08-26 15:22:42 -07:00
data-device.c data-device: Only bail out if we failed to allocate offer 2013-08-20 15:58:25 -07:00
evdev-touchpad.c evdev: Don't parse config file again, use compositor->config 2013-08-29 13:49:35 -07:00
evdev.c evdev: Don't transform device->abs.x/y in place 2013-08-28 22:12:24 -07:00
evdev.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
filter.c configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
filter.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
gl-renderer.c gl-renderer: Use GL_UNSIGNED_SHORT for index array type 2013-08-28 23:05:31 -07:00
gl-renderer.h configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
input.c Add more missing config.h includes 2013-08-16 10:56:00 -07:00
launcher-util.c configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
launcher-util.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
libbacklight.c configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
libbacklight.h Fix a few -pedantic warnings 2012-05-10 14:11:44 -04:00
log.c Use #define WL_HIDE_DEPRECATED to avoid deprecated warnings for wl_buffer 2013-08-06 19:27:04 -07:00
Makefile.am compositor-drm: Add hardware accelerated capture of screen using libva 2013-08-30 13:44:40 -07:00
noop-renderer.c Add a weston_buffer structure to replace wl_buffer 2013-06-21 23:22:30 -04:00
pixman-renderer.c pixman-renderer: Add support for SHM buffers in RGB565 format 2013-08-06 16:50:59 -07:00
pixman-renderer.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
rpi-bcm-stubs.h rpi: Add support for SHM buffers in RGB565 format 2013-08-06 16:51:14 -07:00
rpi-renderer.c rpi: Add support for SHM buffers in RGB565 format 2013-08-06 16:51:14 -07:00
rpi-renderer.h rpi: add a Dispmanx renderer 2013-05-22 17:05:45 -04:00
screenshooter.c compositor: Handle OOM in weston_buffer_from_resource() 2013-08-15 12:26:42 -07:00
shell.c shell: Make sure we have seat->pointer and seat->touch before dereferencing 2013-08-28 23:17:09 -07:00
spring-tool.c Add more missing config.h includes 2013-08-16 10:56:00 -07:00
tablet-shell.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
text-backend.c text-backend: remove the weston_seat destruction listener on destroy 2013-07-29 16:36:58 -07:00
tty.c tty: fix typo in error message 2013-08-08 13:46:14 -07:00
udev-seat.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
udev-seat.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
vaapi-recorder.c compositor-drm: Add hardware accelerated capture of screen using libva 2013-08-30 13:44:40 -07:00
vaapi-recorder.h compositor-drm: Add hardware accelerated capture of screen using libva 2013-08-30 13:44:40 -07:00
version.h.in Install header files and pkg-config file for external modules 2013-02-18 15:29:35 -05:00
weston-egl-ext.h Add workaround for broken GL_EXT_unpack_subimage tokens 2013-08-07 12:05:08 -07:00
weston-launch.c weston-launch: Only pass non-NULL value into setenv() 2013-08-12 22:24:44 -07:00
weston-launch.h Introduce weston-launch 2012-04-06 14:01:19 +02:00
weston.pc.in weston.pc: Added libexecdir and pkglibexecdir variables 2013-06-04 00:14:04 -04:00
zoom.c Convert to wl_global_create/destroy() 2013-07-09 02:02:11 -04:00