Revert "v4l2: poll the file descriptor"
This reverts commit 0efd48dfd15273a5ac85f2fd42f19d419fafe90d. Reason for the revert is that the code seems based on some misunderstanding on how the code works. Conflicts: libavdevice/v4l2.c Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
98dfdfdd8e
commit
106f714d30
@ -38,7 +38,6 @@
|
|||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <poll.h>
|
|
||||||
#if HAVE_SYS_VIDEOIO_H
|
#if HAVE_SYS_VIDEOIO_H
|
||||||
#include <sys/videoio.h>
|
#include <sys/videoio.h>
|
||||||
#else
|
#else
|
||||||
@ -55,7 +54,6 @@
|
|||||||
#include "libavutil/parseutils.h"
|
#include "libavutil/parseutils.h"
|
||||||
#include "libavutil/pixdesc.h"
|
#include "libavutil/pixdesc.h"
|
||||||
#include "libavutil/avstring.h"
|
#include "libavutil/avstring.h"
|
||||||
#include "libavutil/mathematics.h"
|
|
||||||
|
|
||||||
#if CONFIG_LIBV4L2
|
#if CONFIG_LIBV4L2
|
||||||
#include <libv4l2.h>
|
#include <libv4l2.h>
|
||||||
@ -81,7 +79,6 @@ struct video_data {
|
|||||||
int frame_format; /* V4L2_PIX_FMT_* */
|
int frame_format; /* V4L2_PIX_FMT_* */
|
||||||
int width, height;
|
int width, height;
|
||||||
int frame_size;
|
int frame_size;
|
||||||
int timeout;
|
|
||||||
int interlaced;
|
int interlaced;
|
||||||
int top_field_first;
|
int top_field_first;
|
||||||
|
|
||||||
@ -462,16 +459,8 @@ static int mmap_read_frame(AVFormatContext *ctx, AVPacket *pkt)
|
|||||||
.memory = V4L2_MEMORY_MMAP
|
.memory = V4L2_MEMORY_MMAP
|
||||||
};
|
};
|
||||||
struct buff_data *buf_descriptor;
|
struct buff_data *buf_descriptor;
|
||||||
struct pollfd p = { .fd = s->fd, .events = POLLIN };
|
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
res = poll(&p, 1, s->timeout);
|
|
||||||
if (res < 0)
|
|
||||||
return AVERROR(errno);
|
|
||||||
|
|
||||||
if (!(p.revents & (POLLIN | POLLERR | POLLHUP)))
|
|
||||||
return AVERROR(EAGAIN);
|
|
||||||
|
|
||||||
/* FIXME: Some special treatment might be needed in case of loss of signal... */
|
/* FIXME: Some special treatment might be needed in case of loss of signal... */
|
||||||
while ((res = v4l2_ioctl(s->fd, VIDIOC_DQBUF, &buf)) < 0 && (errno == EINTR));
|
while ((res = v4l2_ioctl(s->fd, VIDIOC_DQBUF, &buf)) < 0 && (errno == EINTR));
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
@ -658,10 +647,6 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
|
|||||||
s1->streams[0]->codec->time_base.den = tpf->denominator;
|
s1->streams[0]->codec->time_base.den = tpf->denominator;
|
||||||
s1->streams[0]->codec->time_base.num = tpf->numerator;
|
s1->streams[0]->codec->time_base.num = tpf->numerator;
|
||||||
|
|
||||||
s->timeout = 100 +
|
|
||||||
av_rescale_q(1, s1->streams[0]->codec->time_base,
|
|
||||||
(AVRational){1, 1000});
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user