summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2010-01-22 00:46:53 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2010-01-22 00:46:53 +0000
commit83bdb6a494f25c8e812fa84611076d8a60eabd01 (patch)
tree7c61a6444d6d5e95a634b1627a38abbfe9b1f9d4
parentcc1a46cebce07d4f0d3417b3354fe367fa3c984b (diff)
downloadxine-lib-83bdb6a494f25c8e812fa84611076d8a60eabd01.tar.gz
xine-lib-83bdb6a494f25c8e812fa84611076d8a60eabd01.tar.bz2
v4l2: set stream audio/video flags; check for VIDIOC_S_FMT failure.
--HG-- branch : v4l
-rw-r--r--src/input/input_v4l2.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/input/input_v4l2.c b/src/input/input_v4l2.c
index 295e991eb..43b28b8d5 100644
--- a/src/input/input_v4l2.c
+++ b/src/input/input_v4l2.c
@@ -186,16 +186,24 @@ static int v4l2_input_setup_video_streaming(v4l2_input_plugin_t *this) {
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
/* TODO: Other formats? MPEG support? */
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
- v4l2_ioctl(this->fd, VIDIOC_S_FMT, &fmt);
+ if (-1 == v4l2_ioctl(this->fd, VIDIOC_S_FMT, &fmt))
+ goto fail;
this->video->resolution.width = fmt.fmt.pix.width;
this->video->resolution.height = fmt.fmt.pix.height;
- if (-1 == v4l2_ioctl(this->fd, VIDIOC_STREAMON, &reqbuf.type)) {
- lprintf("Couldn't start streaming: %s\n", strerror(errno));
- return 0;
- }
+ if (-1 == v4l2_ioctl(this->fd, VIDIOC_STREAMON, &reqbuf.type))
+ goto fail;
+
+ _x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_AUDIO, 1);
+ _x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_VIDEO, 0);
+
return 1;
+
+ fail:
+ lprintf("Couldn't start streaming: %s\n", strerror(errno));
+ return 0;
}
+
static buf_element_t* v4l2_input_read_block(input_plugin_t *this_gen, fifo_buffer_t *fifo, off_t len) {
lprintf("Reading block\n");
v4l2_input_plugin_t *this = (v4l2_input_plugin_t*)this_gen;