From 37bb6004059c15f6a17f38b4ab5c5f5d2f61c087 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 9 Jun 2016 05:01:26 +0200 Subject: [PATCH] avutil/opt: Fix max/min checking in av_opt_set() for AV_OPT_TYPE_VIDEO_RATE Fixes Ticket5618 Signed-off-by: Michael Niedermayer --- libavutil/opt-test.c | 2 +- libavutil/opt.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libavutil/opt-test.c b/libavutil/opt-test.c index 1f813d69a5..e41782bacf 100644 --- a/libavutil/opt-test.c +++ b/libavutil/opt-test.c @@ -76,7 +76,7 @@ static const AVOption test_options[]= { {"size", "set size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE, { .str="200x300" }, 0, 0, 1 }, {"pix_fmt", "set pixfmt", OFFSET(pix_fmt), AV_OPT_TYPE_PIXEL_FMT, { .i64 = AV_PIX_FMT_0BGR }, -1, INT_MAX, 1 }, {"sample_fmt", "set samplefmt", OFFSET(sample_fmt), AV_OPT_TYPE_SAMPLE_FMT, { .i64 = AV_SAMPLE_FMT_S16 }, -1, INT_MAX, 1 }, - {"video_rate", "set videorate", OFFSET(video_rate), AV_OPT_TYPE_VIDEO_RATE, { .str = "25" }, 0, 0, 1 }, + {"video_rate", "set videorate", OFFSET(video_rate), AV_OPT_TYPE_VIDEO_RATE, { .str = "25" }, 0, INT_MAX, 1 }, {"duration", "set duration", OFFSET(duration), AV_OPT_TYPE_DURATION, { .i64 = 1000 }, 0, INT64_MAX, 1 }, {"color", "set color", OFFSET(color), AV_OPT_TYPE_COLOR, { .str = "pink" }, 0, 0, 1 }, {"cl", "set channel layout", OFFSET(channel_layout), AV_OPT_TYPE_CHANNEL_LAYOUT, { .i64 = AV_CH_LAYOUT_HEXAGONAL }, 0, INT64_MAX, 1 }, diff --git a/libavutil/opt.c b/libavutil/opt.c index 7e9ad8f4b2..cd16bd1d3f 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -462,8 +462,13 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags) return set_string_number(obj, target_obj, o, val, dst); case AV_OPT_TYPE_IMAGE_SIZE: return set_string_image_size(obj, o, val, dst); - case AV_OPT_TYPE_VIDEO_RATE: - return set_string_video_rate(obj, o, val, dst); + case AV_OPT_TYPE_VIDEO_RATE: { + AVRational tmp; + ret = set_string_video_rate(obj, o, val, &tmp); + if (ret < 0) + return ret; + return write_number(obj, o, dst, 1, tmp.den, tmp.num); + } case AV_OPT_TYPE_PIXEL_FMT: return set_string_pixel_fmt(obj, o, val, dst); case AV_OPT_TYPE_SAMPLE_FMT: