clients/simple-dmabuf-v4l: Add Y_INVERT option flag
Allow clients to pass Y_INVERT, not only when v4l reports it so. Document it briefly and add a note about this Y_INVERT flag is passed if the camera sensors is detected as being y-flipped. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
This commit is contained in:
committed by
Pekka Paalanen
parent
3345452c1b
commit
b6d1509d63
@@ -856,7 +856,7 @@ static const struct wl_registry_listener registry_listener = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct display *
|
static struct display *
|
||||||
create_display(uint32_t requested_format)
|
create_display(uint32_t requested_format, uint32_t opt_flags)
|
||||||
{
|
{
|
||||||
struct display *display;
|
struct display *display;
|
||||||
|
|
||||||
@@ -887,6 +887,8 @@ create_display(uint32_t requested_format)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opt_flags)
|
||||||
|
display->opts = opt_flags;
|
||||||
return display;
|
return display;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -914,7 +916,7 @@ destroy_display(struct display *display)
|
|||||||
static void
|
static void
|
||||||
usage(const char *argv0)
|
usage(const char *argv0)
|
||||||
{
|
{
|
||||||
printf("Usage: %s [-v v4l2_device] [-f v4l2_format] [-d drm_format]\n"
|
printf("Usage: %s [-v v4l2_device] [-f v4l2_format] [-d drm_format] [-i|--y-invert]\n"
|
||||||
"\n"
|
"\n"
|
||||||
"The default V4L2 device is /dev/video0\n"
|
"The default V4L2 device is /dev/video0\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -923,7 +925,11 @@ usage(const char *argv0)
|
|||||||
"DRM formats are defined in <libdrm/drm_fourcc.h>\n"
|
"DRM formats are defined in <libdrm/drm_fourcc.h>\n"
|
||||||
"The default for both formats is YUYV.\n"
|
"The default for both formats is YUYV.\n"
|
||||||
"If the V4L2 and DRM formats differ, the data is simply "
|
"If the V4L2 and DRM formats differ, the data is simply "
|
||||||
"reinterpreted rather than converted.\n", argv0);
|
"reinterpreted rather than converted.\n\n"
|
||||||
|
"Flags:\n"
|
||||||
|
"- y-invert force the image to be y-flipped;\n note will be "
|
||||||
|
"automatically added if we detect if the camera sensor is "
|
||||||
|
"y-flipped\n", argv0);
|
||||||
|
|
||||||
printf("\n"
|
printf("\n"
|
||||||
"How to set up Vivid the virtual video driver for testing:\n"
|
"How to set up Vivid the virtual video driver for testing:\n"
|
||||||
@@ -959,17 +965,19 @@ main(int argc, char **argv)
|
|||||||
const char *v4l_device = NULL;
|
const char *v4l_device = NULL;
|
||||||
uint32_t v4l_format = 0x0;
|
uint32_t v4l_format = 0x0;
|
||||||
uint32_t drm_format = 0x0;
|
uint32_t drm_format = 0x0;
|
||||||
|
uint32_t opts_flags = 0x0;
|
||||||
int c, opt_index, ret = 0;
|
int c, opt_index, ret = 0;
|
||||||
|
|
||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
{ "v4l2-device", required_argument, NULL, 'v' },
|
{ "v4l2-device", required_argument, NULL, 'v' },
|
||||||
{ "v4l2-format", required_argument, NULL, 'f' },
|
{ "v4l2-format", required_argument, NULL, 'f' },
|
||||||
{ "drm-format", required_argument, NULL, 'd' },
|
{ "drm-format", required_argument, NULL, 'd' },
|
||||||
|
{ "y-invert", no_argument, NULL, 'i' },
|
||||||
{ "help", no_argument, NULL, 'h' },
|
{ "help", no_argument, NULL, 'h' },
|
||||||
{ 0, 0, NULL, 0 }
|
{ 0, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
while ((c = getopt_long(argc, argv, "hv:d:f:", long_options,
|
while ((c = getopt_long(argc, argv, "hiv:d:f:", long_options,
|
||||||
&opt_index)) != -1) {
|
&opt_index)) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'v':
|
case 'v':
|
||||||
@@ -981,6 +989,9 @@ main(int argc, char **argv)
|
|||||||
case 'd':
|
case 'd':
|
||||||
drm_format = parse_format(optarg);
|
drm_format = parse_format(optarg);
|
||||||
break;
|
break;
|
||||||
|
case 'i':
|
||||||
|
opts_flags |= OPT_FLAG_INVERT;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
case 'h':
|
case 'h':
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
@@ -997,7 +1008,7 @@ main(int argc, char **argv)
|
|||||||
if (drm_format == 0x0)
|
if (drm_format == 0x0)
|
||||||
drm_format = v4l_format;
|
drm_format = v4l_format;
|
||||||
|
|
||||||
display = create_display(drm_format);
|
display = create_display(drm_format, opts_flags);
|
||||||
display->format.format = v4l_format;
|
display->format.format = v4l_format;
|
||||||
|
|
||||||
window = create_window(display);
|
window = create_window(display);
|
||||||
|
|||||||
Reference in New Issue
Block a user