Revert "clients: teach simple-dmabuf-v4l to deal with flipped input"
This reverts commit 0fee977c46423e496a6eda6418c31bfe09a1f27b. This commit introduces a requirement on v4l2_query_ext_ctrl and VIDIOC_QUERY_EXT_CTRL, which were introduced in kernel 3.17. Some Ubuntu LTS releases ship with much older kernels (and, significantly, UAPI), which don't have these. Signed-off-by: Daniel Stone <daniels@collabora.com> Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com> Acked-by: Derek Foreman <derekf@osg.samsung.com>
This commit is contained in:
parent
a32986ecf5
commit
d5fa090904
@ -351,67 +351,21 @@ static const struct zwp_linux_buffer_params_v1_listener params_listener = {
|
|||||||
create_failed
|
create_failed
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool
|
|
||||||
check_v4l2_control_bool(const int fd,
|
|
||||||
const struct v4l2_query_ext_ctrl *qectrl,
|
|
||||||
const char *control_name,
|
|
||||||
const int expected_value)
|
|
||||||
{
|
|
||||||
struct v4l2_control ctrl;
|
|
||||||
|
|
||||||
memset(&ctrl, 0, sizeof(ctrl));
|
|
||||||
ctrl.id = qectrl->id;
|
|
||||||
|
|
||||||
if (qectrl->flags & V4L2_CTRL_FLAG_DISABLED)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!(qectrl->type == V4L2_CTRL_TYPE_BOOLEAN))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (strcmp(qectrl->name, control_name))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/* with the early-outs out of the way, do the actual check */
|
|
||||||
if (xioctl(fd, VIDIOC_G_CTRL, &ctrl))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (ctrl.value != expected_value)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
create_dmabuf_buffer(struct display *display, struct buffer *buffer)
|
create_dmabuf_buffer(struct display *display, struct buffer *buffer)
|
||||||
{
|
{
|
||||||
struct zwp_linux_buffer_params_v1 *params;
|
struct zwp_linux_buffer_params_v1 *params;
|
||||||
uint64_t modifier;
|
uint64_t modifier;
|
||||||
uint32_t lbp_flags;
|
uint32_t flags;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
struct v4l2_query_ext_ctrl qectrl;
|
|
||||||
const unsigned int v4l2_qec_flags =
|
|
||||||
V4L2_CTRL_FLAG_NEXT_CTRL | V4L2_CTRL_FLAG_NEXT_COMPOUND;
|
|
||||||
const char *vflip_ctrl = "Vertical Flip";
|
|
||||||
const char *hflip_ctrl = "Horizontal Flip";
|
|
||||||
|
|
||||||
modifier = 0;
|
modifier = 0;
|
||||||
lbp_flags = 0;
|
flags = 0;
|
||||||
|
|
||||||
/* handle relevant v4l2 controls */
|
/* XXX: apparently some webcams may actually provide y-inverted images,
|
||||||
memset(&qectrl, 0, sizeof(qectrl));
|
* in which case we should set
|
||||||
qectrl.id |= v4l2_qec_flags;
|
* flags = ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT
|
||||||
while (!xioctl(display->v4l_fd, VIDIOC_QUERY_EXT_CTRL, &qectrl)) {
|
*/
|
||||||
if (check_v4l2_control_bool(display->v4l_fd, &qectrl,
|
|
||||||
vflip_ctrl, 0x1)) {
|
|
||||||
lbp_flags = ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT;
|
|
||||||
printf ("\"%s\" control is set, inverting Y\n", vflip_ctrl);
|
|
||||||
} else if (check_v4l2_control_bool(display->v4l_fd, &qectrl,
|
|
||||||
hflip_ctrl, 0x1)) {
|
|
||||||
printf ("\"%s\" control is set, but dmabuf output cannot"
|
|
||||||
"be flipped horizontally\n", hflip_ctrl);
|
|
||||||
}
|
|
||||||
qectrl.id |= v4l2_qec_flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
params = zwp_linux_dmabuf_v1_create_params(display->dmabuf);
|
params = zwp_linux_dmabuf_v1_create_params(display->dmabuf);
|
||||||
for (i = 0; i < display->format.num_planes; ++i)
|
for (i = 0; i < display->format.num_planes; ++i)
|
||||||
@ -428,7 +382,7 @@ create_dmabuf_buffer(struct display *display, struct buffer *buffer)
|
|||||||
display->format.width,
|
display->format.width,
|
||||||
display->format.height,
|
display->format.height,
|
||||||
display->drm_format,
|
display->drm_format,
|
||||||
lbp_flags);
|
flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
x
Reference in New Issue
Block a user