1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-13 21:28:01 +02:00

Merge commit '09f25533a564eab743f258d168697a11122914c4'

* commit '09f25533a564eab743f258d168697a11122914c4':
  v4l2: Preserve errno values

Conflicts:
	libavdevice/v4l2.c

See: 60950adc18
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-11-10 01:36:39 +01:00
commit 715ccc2bc4

View File

@ -108,7 +108,7 @@ static int device_open(AVFormatContext *ctx)
struct video_data *s = ctx->priv_data; struct video_data *s = ctx->priv_data;
struct v4l2_capability cap; struct v4l2_capability cap;
int fd; int fd;
int ret; int err;
int flags = O_RDWR; int flags = O_RDWR;
#define SET_WRAPPERS(prefix) do { \ #define SET_WRAPPERS(prefix) do { \
@ -146,16 +146,16 @@ static int device_open(AVFormatContext *ctx)
fd = v4l2_open(ctx->filename, flags, 0); fd = v4l2_open(ctx->filename, flags, 0);
if (fd < 0) { if (fd < 0) {
ret = AVERROR(errno); err = AVERROR(errno);
av_log(ctx, AV_LOG_ERROR, "Cannot open video device %s: %s\n", av_log(ctx, AV_LOG_ERROR, "Cannot open video device %s: %s\n",
ctx->filename, av_err2str(ret)); ctx->filename, av_err2str(err));
return ret; return err;
} }
if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0) { if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0) {
ret = AVERROR(errno); err = AVERROR(errno);
av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_QUERYCAP): %s\n", av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_QUERYCAP): %s\n",
av_err2str(ret)); av_err2str(err));
goto fail; goto fail;
} }
@ -164,14 +164,14 @@ static int device_open(AVFormatContext *ctx)
if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) { if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
av_log(ctx, AV_LOG_ERROR, "Not a video capture device.\n"); av_log(ctx, AV_LOG_ERROR, "Not a video capture device.\n");
ret = AVERROR(ENODEV); err = AVERROR(ENODEV);
goto fail; goto fail;
} }
if (!(cap.capabilities & V4L2_CAP_STREAMING)) { if (!(cap.capabilities & V4L2_CAP_STREAMING)) {
av_log(ctx, AV_LOG_ERROR, av_log(ctx, AV_LOG_ERROR,
"The device does not support the streaming I/O method.\n"); "The device does not support the streaming I/O method.\n");
ret = AVERROR(ENOSYS); err = AVERROR(ENOSYS);
goto fail; goto fail;
} }
@ -179,7 +179,7 @@ static int device_open(AVFormatContext *ctx)
fail: fail:
v4l2_close(fd); v4l2_close(fd);
return ret; return err;
} }
static int device_init(AVFormatContext *ctx, int *width, int *height, static int device_init(AVFormatContext *ctx, int *width, int *height,
@ -909,7 +909,8 @@ static int v4l2_read_header(AVFormatContext *ctx)
"Querying the device for the current frame size\n"); "Querying the device for the current frame size\n");
if (v4l2_ioctl(s->fd, VIDIOC_G_FMT, &fmt) < 0) { if (v4l2_ioctl(s->fd, VIDIOC_G_FMT, &fmt) < 0) {
res = AVERROR(errno); res = AVERROR(errno);
av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_G_FMT): %s\n", av_err2str(res)); av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_G_FMT): %s\n",
av_err2str(res));
goto fail; goto fail;
} }