mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2026-01-24 02:21:11 +01:00
avdevice/v4l2: add option to ignore input error (-ignore_input_error).
Some device returns error with VIDIOC_S_INPUT, VIDIOC_G_INPUT.
This commit is contained in:
parent
cab552d7e1
commit
b067f43df6
1 changed files with 7 additions and 3 deletions
|
|
@ -89,6 +89,7 @@ struct video_data {
|
|||
int top_field_first;
|
||||
int multi_planer;
|
||||
int ts_mode;
|
||||
int ignore_input_error;
|
||||
TimeFilter *timefilter;
|
||||
int64_t last_time_m;
|
||||
|
||||
|
|
@ -810,7 +811,7 @@ static int v4l2_set_parameters(AVFormatContext *ctx)
|
|||
streamparm.type = (s->multi_planer) ? V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE : V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
if (v4l2_ioctl(s->fd, VIDIOC_G_PARM, &streamparm) < 0) {
|
||||
ret = AVERROR(errno);
|
||||
av_log(ctx, AV_LOG_WARNING, "ioctl(VIDIOC_G_PARM): %s\n", av_err2str(ret));
|
||||
av_log(ctx, AV_LOG_WARNING, "ioctl(VIDIOC_G_PARM): %s\n", av_err2str(ret));
|
||||
} else if (framerate_q.num && framerate_q.den) {
|
||||
if (streamparm.parm.capture.capability & V4L2_CAP_TIMEPERFRAME) {
|
||||
tpf = &streamparm.parm.capture.timeperframe;
|
||||
|
|
@ -940,8 +941,10 @@ static int v4l2_read_header(AVFormatContext *ctx)
|
|||
av_log(ctx, AV_LOG_DEBUG, "Selecting input_channel: %d\n", s->channel);
|
||||
if (v4l2_ioctl(s->fd, VIDIOC_S_INPUT, &s->channel) < 0) {
|
||||
res = AVERROR(errno);
|
||||
av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_S_INPUT): %s\n", av_err2str(res));
|
||||
goto fail;
|
||||
av_log(ctx, (s->ignore_input_error) ? AV_LOG_WARNING : AV_LOG_ERROR, "ioctl(VIDIOC_S_INPUT): %s\n", av_err2str(res));
|
||||
if (!s->ignore_input_error) {
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* get current video input */
|
||||
|
|
@ -1183,6 +1186,7 @@ static const AVOption options[] = {
|
|||
{ "pixel_format", "set preferred pixel format", OFFSET(pixel_format), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC },
|
||||
{ "input_format", "set preferred pixel format (for raw video) or codec name", OFFSET(pixel_format), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC },
|
||||
{ "framerate", "set frame rate", OFFSET(framerate), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC },
|
||||
{ "ignore_input_error", "ignore input error", OFFSET(ignore_input_error), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, DEC },
|
||||
|
||||
{ "list_formats", "list available formats and exit", OFFSET(list_format), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, DEC, "list_formats" },
|
||||
{ "all", "show all available formats", OFFSET(list_format), AV_OPT_TYPE_CONST, {.i64 = V4L_ALLFORMATS }, 0, INT_MAX, DEC, "list_formats" },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue