avdevice/v4l2: Remove av_assert0 when format not supported
authorAndriy Gelman <andriy.gelman@gmail.com>
Tue, 5 Nov 2019 03:32:59 +0000 (22:32 -0500)
committerMichael Niedermayer <michael@niedermayer.cc>
Wed, 6 Nov 2019 19:38:03 +0000 (20:38 +0100)
Before this commit an av_assert0 would fail if a v4l2 device did not
support a target format.
For example,
./ffmpeg -f v4l2 -codec:v h264 -i /dev/video0 -f mpegts -
would signal an abort if /dev/video0 did not support h264.

The new behaviour is to return an AVERROR(EINVAL) error code. An
av_assert0 has been added to verify this return.

Fixes #6629

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavdevice/v4l2.c

index 446a243..365bacd 100644 (file)
@@ -811,7 +811,8 @@ static int device_try_init(AVFormatContext *ctx,
     }
 
     *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;
 }