vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Sep 10 00:12:34 2012 +0300| [70b74020f979b451ec998289f5b0360d8a833bd7] | committer: Rémi Denis-Courmont
v4l2 access: use --v4l2-chroma if specified > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=70b74020f979b451ec998289f5b0360d8a833bd7 --- modules/access/v4l2/access.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/modules/access/v4l2/access.c b/modules/access/v4l2/access.c index 7e98786..df5add0 100644 --- a/modules/access/v4l2/access.c +++ b/modules/access/v4l2/access.c @@ -106,16 +106,32 @@ int InitVideo (access_t *access, int fd, uint32_t caps) if (SetupInput (VLC_OBJECT(access), fd)) return -1; - /* Try and find default resolution if not specified */ - struct v4l2_format fmt = { .type = V4L2_BUF_TYPE_VIDEO_CAPTURE }; - if (v4l2_ioctl (fd, VIDIOC_G_FMT, &fmt) < 0) + /* NOTE: The V4L access_demux expects a VLC FOURCC as "chroma". It is used to set the + * es_format_t structure correctly. However, the V4L access (*here*) has no use for a + * VLC FOURCC and expects a V4L2 format directly instead. That is confusing :-( */ + uint32_t pixfmt = 0; + char *fmtstr = var_InheritString (access, CFG_PREFIX"chroma"); + if (fmtstr != NULL && strlen (fmtstr) <= 4) { - msg_Err (access, "cannot get default format: %m"); - return -1; + memcpy (&pixfmt, fmtstr, strlen (fmtstr)); + free (fmtstr); + } + else + /* Use the default^Wprevious format if none specified */ + { + struct v4l2_format fmt = { .type = V4L2_BUF_TYPE_VIDEO_CAPTURE }; + if (v4l2_ioctl (fd, VIDIOC_G_FMT, &fmt) < 0) + { + msg_Err (access, "cannot get default format: %m"); + return -1; + } + pixfmt = fmt.fmt.pix.pixelformat; } + msg_Dbg (access, "selected format %4.4s", (const char *)&pixfmt); + struct v4l2_format fmt; struct v4l2_streamparm parm; - if (SetupFormat (access, fd, fmt.fmt.pix.pixelformat, &fmt, &parm)) + if (SetupFormat (access, fd, pixfmt, &fmt, &parm)) return -1; msg_Dbg (access, "%"PRIu32" bytes for complete image", fmt.fmt.pix.sizeimage); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
