mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
v4l2: return a default format from G_FMT
This commit is contained in:
parent
73ad5d9057
commit
5a262b4bd3
1 changed files with 31 additions and 2 deletions
|
|
@ -1466,11 +1466,40 @@ static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *arg)
|
|||
|
||||
static int vidioc_g_fmt(struct file *file, struct v4l2_format *arg)
|
||||
{
|
||||
struct param *p;
|
||||
struct global *g = file->node;
|
||||
int res;
|
||||
|
||||
if (arg->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
|
||||
return -EINVAL;
|
||||
|
||||
*arg = file->v4l2_format;
|
||||
return 0;
|
||||
pw_thread_loop_lock(file->loop);
|
||||
if (file->v4l2_format.fmt.pix.pixelformat != 0) {
|
||||
*arg = file->v4l2_format;
|
||||
} else {
|
||||
struct v4l2_format tmp;
|
||||
bool found = false;
|
||||
|
||||
spa_list_for_each(p, &g->param_list, link) {
|
||||
if (p->id != SPA_PARAM_EnumFormat || p->param == NULL)
|
||||
continue;
|
||||
|
||||
if (param_to_fmt(p->param, &tmp) < 0)
|
||||
continue;
|
||||
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
if (!found) {
|
||||
res = -EINVAL;
|
||||
goto exit_unlock;
|
||||
}
|
||||
*arg = file->v4l2_format = tmp;
|
||||
}
|
||||
res = 0;
|
||||
exit_unlock:
|
||||
pw_thread_loop_unlock(file->loop);
|
||||
return res;
|
||||
}
|
||||
|
||||
static int score_diff(struct v4l2_format *fmt, struct v4l2_format *tmp)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue