diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2012-05-25 17:45:39 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-05-25 17:45:39 -0400 |
commit | 3b969608cb69935ef6b3193260d2c4f6fb73e37c (patch) | |
tree | 55694d4c78de4581ff30be7c4ef94eeff5e9412b | |
parent | ee85ae9c138ac822ec72d0d37cc59e96451a1419 (diff) |
wcap: Add a file format magic number and add the pixel format to the header
-rw-r--r-- | src/screenshooter.c | 19 | ||||
-rw-r--r-- | src/wcap-decode.c | 9 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/screenshooter.c b/src/screenshooter.c index 77d34ea0..d368cfde 100644 --- a/src/screenshooter.c +++ b/src/screenshooter.c @@ -318,12 +318,18 @@ weston_recorder_frame_notify(struct wl_listener *listener, void *data) pixman_region32_fini(&damage); } +#define WCAP_HEADER_MAGIC 0x57434150 +#define WCAP_FORMAT_XRGB8888 0x34325258 +#define WCAP_FORMAT_XBGR8888 0x34324258 +#define WCAP_FORMAT_RGBX8888 0x34325852 +#define WCAP_FORMAT_BGRX8888 0x34325842 + static void weston_recorder_create(struct weston_output *output, const char *filename) { struct weston_recorder *recorder; int stride, size; - struct { uint32_t width, height; } header; + struct { uint32_t magic, format, width, height; } header; recorder = malloc(sizeof *recorder); recorder->output = output; @@ -338,6 +344,17 @@ weston_recorder_create(struct weston_output *output, const char *filename) recorder->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0644); + header.magic = WCAP_HEADER_MAGIC; + + switch (output->compositor->read_format) { + case GL_BGRA_EXT: + header.format = WCAP_FORMAT_XRGB8888; + break; + case GL_RGBA: + header.format = WCAP_FORMAT_XBGR8888; + break; + } + header.width = output->current->width; header.height = output->current->height; recorder->total += write(recorder->fd, &header, sizeof header); diff --git a/src/wcap-decode.c b/src/wcap-decode.c index 9ff7ddb8..8382bfb9 100644 --- a/src/wcap-decode.c +++ b/src/wcap-decode.c @@ -33,7 +33,16 @@ #include <cairo.h> +#define WCAP_HEADER_MAGIC 0x57434150 + +#define WCAP_FORMAT_XRGB8888 0x34325258 +#define WCAP_FORMAT_XBGR8888 0x34324258 +#define WCAP_FORMAT_RGBX8888 0x34325852 +#define WCAP_FORMAT_BGRX8888 0x34325842 + struct wcap_header { + uint32_t magic; + uint32_t format; uint32_t width, height; }; |