int (*open_f)(const char *file, int oflag, ...);
int (*close_f)(int fd);
int (*dup_f)(int fd);
+#ifdef __GLIBC__
int (*ioctl_f)(int fd, unsigned long int request, ...);
+#else
+ int (*ioctl_f)(int fd, int request, ...);
+#endif
ssize_t (*read_f)(int fd, void *buffer, size_t n);
void *(*mmap_f)(void *start, size_t length, int prot, int flags, int fd, int64_t offset);
int (*munmap_f)(void *_start, size_t length);
s->frame_size = buf.bytesused;
if (s->frame_size > 0 && buf.bytesused != s->frame_size) {
- av_log(ctx, AV_LOG_ERROR,
+ av_log(ctx, AV_LOG_WARNING,
"Dequeued v4l2 buffer contains %d bytes, but %d were expected. Flags: 0x%08X.\n",
buf.bytesused, s->frame_size, buf.flags);
- enqueue_buffer(s, &buf);
- return AVERROR_INVALIDDATA;
+ buf.bytesused = 0;
}
}
}
*codec_id = ff_fmt_v4l2codec(*desired_format);
- av_assert0(*codec_id != AV_CODEC_ID_NONE);
+ if (*codec_id == AV_CODEC_ID_NONE)
+ av_assert0(ret == AVERROR(EINVAL));
return ret;
}
-static int v4l2_read_probe(AVProbeData *p)
+static int v4l2_read_probe(const AVProbeData *p)
{
if (av_strstart(p->filename, "/dev/video", NULL))
return AVPROBE_SCORE_MAX - 1;
static int v4l2_read_packet(AVFormatContext *ctx, AVPacket *pkt)
{
-#if FF_API_CODED_FRAME && FF_API_LAVF_AVCTX
-FF_DISABLE_DEPRECATION_WARNINGS
- struct video_data *s = ctx->priv_data;
- AVFrame *frame = ctx->streams[0]->codec->coded_frame;
-FF_ENABLE_DEPRECATION_WARNINGS
-#endif
int res;
if ((res = mmap_read_frame(ctx, pkt)) < 0) {
return res;
}
-#if FF_API_CODED_FRAME && FF_API_LAVF_AVCTX
-FF_DISABLE_DEPRECATION_WARNINGS
- if (frame && s->interlaced) {
- frame->interlaced_frame = 1;
- frame->top_field_first = s->top_field_first;
- }
-FF_ENABLE_DEPRECATION_WARNINGS
-#endif
-
return pkt->size;
}
.category = AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
};
-AVInputFormat ff_v4l2_demuxer = {
+const AVInputFormat ff_v4l2_demuxer = {
.name = "video4linux2,v4l2",
.long_name = NULL_IF_CONFIG_SMALL("Video4Linux2 device grab"),
.priv_data_size = sizeof(struct video_data),