]> git.sesse.net Git - ffmpeg/blobdiff - libavdevice/v4l2.c
lavfi/showwaves: do not set on outlink->out_buf the sent video frame
[ffmpeg] / libavdevice / v4l2.c
index cecc18dfda612547b82fcc27bc68c999c5b7a863..2808e13ac3fa143a41f8a56877aaffc82344a0b5 100644 (file)
@@ -46,7 +46,7 @@
 #endif
 #include <linux/videodev2.h>
 #endif
-#include <time.h>
+#include "libavutil/avassert.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/log.h"
 #include "libavutil/opt.h"
@@ -113,8 +113,6 @@ struct video_data {
     unsigned int *buf_len;
     char *standard;
     int channel;
-    char *video_size;   /**< String describing video size,
-                             set by a private option. */
     char *pixel_format; /**< Set by a private option. */
     int list_format;    /**< Set by a private option. */
     char *framerate;    /**< Set by a private option. */
@@ -158,9 +156,6 @@ static int device_open(AVFormatContext *ctx)
 {
     struct v4l2_capability cap;
     int fd;
-#if CONFIG_LIBV4L2
-    int fd_libv4l;
-#endif
     int res, err;
     int flags = O_RDWR;
 
@@ -177,16 +172,6 @@ static int device_open(AVFormatContext *ctx)
 
         return AVERROR(err);
     }
-#if CONFIG_LIBV4L2
-    fd_libv4l = v4l2_fd_open(fd, 0);
-    if (fd < 0) {
-        err = AVERROR(errno);
-        av_log(ctx, AV_LOG_ERROR, "Cannot open video device with libv4l neither %s : %s\n",
-               ctx->filename, strerror(errno));
-        return err;
-    }
-    fd = fd_libv4l;
-#endif
 
     res = v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap);
     if (res < 0) {
@@ -563,7 +548,7 @@ static int mmap_read_frame(AVFormatContext *ctx, AVPacket *pkt)
 
         return AVERROR(errno);
     }
-    assert(buf.index < s->buffers);
+    av_assert0(buf.index < s->buffers);
     if (s->frame_size > 0 && buf.bytesused != s->frame_size) {
         av_log(ctx, AV_LOG_ERROR,
                "The v4l2 frame is %d bytes, but %d bytes are expected\n",
@@ -770,7 +755,7 @@ static uint32_t device_try_init(AVFormatContext *s1,
 
     if (desired_format != 0) {
         *codec_id = fmt_v4l2codec(desired_format);
-        assert(*codec_id != CODEC_ID_NONE);
+        av_assert0(*codec_id != CODEC_ID_NONE);
     }
 
     return desired_format;
@@ -805,13 +790,6 @@ static int v4l2_read_header(AVFormatContext *s1)
 
     avpriv_set_pts_info(st, 64, 1, 1000000); /* 64 bits pts in us */
 
-    if (s->video_size &&
-        (res = av_parse_video_size(&s->width, &s->height, s->video_size)) < 0) {
-        av_log(s1, AV_LOG_ERROR, "Could not parse video size '%s'.\n",
-               s->video_size);
-        goto out;
-    }
-
     if (s->pixel_format) {
         AVCodec *codec = avcodec_find_decoder_by_name(s->pixel_format);
 
@@ -928,7 +906,7 @@ static int v4l2_read_close(AVFormatContext *s1)
 static const AVOption options[] = {
     { "standard",     "TV standard, used only by analog frame grabber",            OFFSET(standard),     AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0,       DEC },
     { "channel",      "TV channel, used only by frame grabber",                    OFFSET(channel),      AV_OPT_TYPE_INT,    {.dbl = 0 },    0, INT_MAX, DEC },
-    { "video_size",   "A string describing frame size, such as 640x480 or hd720.", OFFSET(video_size),   AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       DEC },
+    { "video_size",   "A string describing frame size, such as 640x480 or hd720.", OFFSET(width),        AV_OPT_TYPE_IMAGE_SIZE, {.str = NULL},  0, 0,       DEC },
     { "pixel_format", "Preferred pixel format",                                    OFFSET(pixel_format), AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       DEC },
     { "input_format", "Preferred pixel format (for raw video) or codec name",      OFFSET(pixel_format), AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       DEC },
     { "framerate",    "",                                                          OFFSET(framerate),    AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       DEC },