From patchwork Tue Feb 27 20:30:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 46588 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c51b:b0:19e:cdac:8cce with SMTP id gm27csp2238530pzb; Tue, 27 Feb 2024 12:32:34 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXXotUtcfGnvrYHGBFurOPtgSuTLlfWTMJLJvW3TPR1pe2aBhZ/19imtCw7jdslTfWr+ztrKKuZhmBGnO0lwMToPU+xHB5Lvd0gsQ== X-Google-Smtp-Source: AGHT+IEgslVfUZEy0YXZHtjYLDX4GQ41yxWzBw0u32aCNoXiAAU5oIpcDqyhx6+3oQ0Usar+KzOF X-Received: by 2002:a17:906:3398:b0:a43:e593:7813 with SMTP id v24-20020a170906339800b00a43e5937813mr412069eja.57.1709065953756; Tue, 27 Feb 2024 12:32:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709065953; cv=none; d=google.com; s=arc-20160816; b=wARdK6BnT78jrI7kxRieoLRaGAaKfBrXYRs5BXQPMZMgBuaADgjgQB0QL0ZSbyxsDV 1o19EfkphFxp3cQxNlqKeuWWCDQv1oWHP98+qc6oAs8g+9Jqe/IWbP5PeBw/WmUkZaZo OtqFOUZ/SnbP+T3hcZKW4n0TR1KDLbZeHYiwGy5jWMpXWb/8MRoNIiKu4hapTIBtWe7c 1JjJpqNlJIwXBGivvTr/o9rxNxHrkaZejcQMnda8dByAQLhsSDOKWWJCENc0LtYnOnqX vaS8g+ScFdDm+KF1JRtxnpCihu/60tj0rR7Kc6Wmsm2D6HAxIN76zNdfL9snaaW40s89 jMtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=aK4gYM3kRLy4ClkUsPKzbOQR8td1l0Q9xkuMFNxLBSM=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=ntg2uvdaD/qntNCfY/HuECWAdgymDmm9SlgOkqxhXEhyOIKC0ceMtpYw12pGidoKVU aq1muG7oND+2hwb7yadwjBAFtvnmC5UM+bGBHGQDGRqS26CIFv3j28mgUESpuGNjigPC P1daZMjlPEqJJZAsN5lERqoqc3bemo7csdD7kJYvxFR4HBShFx6G/zRG37VR3GTrnkr7 yJN7LskRyMVoDrM2hNxXY8RIM13fomx26YSuHDNv7Y/Xbif0wpQfOw4Cn2tkaWH2/mYq LsDT/Qdto8tnca4KrOgEPFS2/c+Gk5QvGmTFvLduhvW0lRBhUhz4EpaIVbyF0XVKB0kH JPQw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="Ej/4m4kW"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y23-20020a1709063a9700b00a4301d0de14si994204ejd.901.2024.02.27.12.32.33; Tue, 27 Feb 2024 12:32:33 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="Ej/4m4kW"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8C71F68CE16; Tue, 27 Feb 2024 22:32:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0F17768CCB2 for ; Tue, 27 Feb 2024 22:32:23 +0200 (EET) Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-6e459b39e2cso132184b3a.1 for ; Tue, 27 Feb 2024 12:32:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709065940; x=1709670740; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=Ej9fVeStnHYibLgD72cmYY+/MYGg+b0+0lPuPGpeAWk=; b=Ej/4m4kWXgM3VMjeuSAnwaPjn9eFPmqezAHE/amvyMA2WT93wZiaVU6na2GeFgbEww +pb6rvHNxqKdM2c6QQeOeyiA9wsTuLNDElHlFdrx8+2alr4vRXUgRIHKC6YAKNGP1xP2 n0yaHod4p+bc10eC9Qu5a1/RjpdXRL7OCdztcC/1aeaYRWssPrmb7OSzSF5Wr7mvnUn1 na5e50XV7m2sZlDYRekrFRwDEb/givq+wGoKE8MEqRsicuzrZugAQMRT8MpZeaeB0d+r 8iqCTtKyq+KurHnT9dfkdXBKEV3mIakBPAt0XJxGcKJkoO7DZChOHjLhbsb7qPPAvCMh YsnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709065940; x=1709670740; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Ej9fVeStnHYibLgD72cmYY+/MYGg+b0+0lPuPGpeAWk=; b=GZ5r1WXOi3LHkkcLWDGNXG1Vq4mXr77jLLOZPsHRm19iUuMiE4nGXfliTU73lLYyOv foV3Xl4JHkq1PvCnanC89fw+a3N+CQOTR6WRUNSpUuKf81w9I5YT50HmC+rMQ2qQUNih cwtTUa7U9S3YQRizjtcoXbSsAusmyRLRvSGkqdWbaya6+EojqOCFzbSfCs18n3KbAyyi xU4uJqTFNBLPdQiDgcAtbEL/RRJJgijjNlmfuTZepisZlaW0t1mBajSIKYc8/m5xpX1F xa7xcfjo4BwGmcNaqeuKLIbAJQox5oaWxkSY65Oe1azSoHQPMMzf1EONuyUZT95zC6P8 M0gA== X-Gm-Message-State: AOJu0Ywt34427D48oD9UUvwUaXGo7+Xo/q4ZZyddflOwpzRXH+9xwHyF UCh5k7DfrmjKryTm5QXUwbPGp2kVLmuYhQz4t7GFkwQTHfqR1KDH3qF8UrVg X-Received: by 2002:a05:6a20:9e47:b0:1a0:f616:32be with SMTP id mt7-20020a056a209e4700b001a0f61632bemr513279pzb.10.1709065939961; Tue, 27 Feb 2024 12:32:19 -0800 (PST) Received: from localhost.localdomain ([190.194.169.124]) by smtp.gmail.com with ESMTPSA id m22-20020a637116000000b005d880b41598sm6294325pgc.94.2024.02.27.12.32.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 12:32:19 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Feb 2024 17:30:38 -0300 Message-ID: <20240227203040.1989-1-jamrial@gmail.com> X-Mailer: git-send-email 2.43.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3 v2] avutil/tests/opt: test negative values for INT and INT64 types X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: D9LtXGbBnnV0 Signed-off-by: James Almer --- libavutil/tests/opt.c | 11 +++++++++-- tests/ref/fate/opt | 35 ++++++++++++++++++++++++++++++----- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/libavutil/tests/opt.c b/libavutil/tests/opt.c index e2582cc93d..a914d0359a 100644 --- a/libavutil/tests/opt.c +++ b/libavutil/tests/opt.c @@ -66,7 +66,7 @@ typedef struct TestContext { #define TEST_FLAG_MU 04 static const AVOption test_options[]= { - {"num", "set num", OFFSET(num), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 100, 1 }, + {"num", "set num", OFFSET(num), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, 100, 1 }, {"toggle", "set toggle", OFFSET(toggle), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, 1 }, {"rational", "set rational", OFFSET(rational), AV_OPT_TYPE_RATIONAL, { .dbl = 1 }, 0, 10, 1 }, {"string", "set string", OFFSET(string), AV_OPT_TYPE_STRING, { .str = "default" }, CHAR_MIN, CHAR_MAX, 1 }, @@ -85,7 +85,7 @@ static const AVOption test_options[]= { {"bin", "set binary value", OFFSET(binary), AV_OPT_TYPE_BINARY, { .str="62696e00" }, 0, 0, 1 }, {"bin1", "set binary value", OFFSET(binary1), AV_OPT_TYPE_BINARY, { .str=NULL }, 0, 0, 1 }, {"bin2", "set binary value", OFFSET(binary2), AV_OPT_TYPE_BINARY, { .str="" }, 0, 0, 1 }, - {"num64", "set num 64bit", OFFSET(num64), AV_OPT_TYPE_INT64, { .i64 = 1 }, 0, 100, 1 }, + {"num64", "set num 64bit", OFFSET(num64), AV_OPT_TYPE_INT64, { .i64 = 1 }, -1, 100, 1 }, {"flt", "set float", OFFSET(flt), AV_OPT_TYPE_FLOAT, { .dbl = 1.0 / 3 }, 0, 100, 1 }, {"dbl", "set double", OFFSET(dbl), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 / 3 }, 0, 100, 1 }, {"bool1", "set boolean value", OFFSET(bool1), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, 1 }, @@ -285,10 +285,17 @@ int main(void) "bin=boguss", "bin=111", "bin=ffff", + "num=bogus", + "num=44", + "num=44.4", + "num=-1", + "num=-2", + "num=101", "num64=bogus", "num64=44", "num64=44.4", "num64=-1", + "num64=-2", "num64=101", "flt=bogus", "flt=2", diff --git a/tests/ref/fate/opt b/tests/ref/fate/opt index 832f9cc8a9..2da155aa2b 100644 --- a/tests/ref/fate/opt +++ b/tests/ref/fate/opt @@ -18,7 +18,7 @@ num64=1 flt=0.333333 dbl=0.333333 TestContext AVOptions: - -num E.......... set num (from 0 to 100) (default 0) + -num E.......... set num (from -1 to 100) (default 0) -toggle E.......... set toggle (from 0 to 1) (default 1) -rational E.......... set rational (from 0 to 10) (default 1/1) -string E.......... set string (default "default") @@ -37,7 +37,7 @@ TestContext AVOptions: -bin E.......... set binary value -bin1 E.......... set binary value -bin2 E.......... set binary value - -num64 E.......... set num 64bit (from 0 to 100) (default 1) + -num64 E.......... set num 64bit (from -1 to 100) (default 1) -flt E.......... set float (from 0 to 100) (default 0.333333) -dbl E.......... set double (from 0 to 100) (default 0.333333) -bool1 E.......... set boolean value (default auto) @@ -312,6 +312,28 @@ Error 'bin=111' Setting options string 'bin=ffff' Setting entry with key 'bin' to value 'ffff' OK 'bin=ffff' +Setting options string 'num=bogus' +Setting entry with key 'num' to value 'bogus' +Undefined constant or missing '(' in 'bogus' +Unable to parse option value "bogus" +Error 'num=bogus' +Setting options string 'num=44' +Setting entry with key 'num' to value '44' +OK 'num=44' +Setting options string 'num=44.4' +Setting entry with key 'num' to value '44.4' +OK 'num=44.4' +Setting options string 'num=-1' +Setting entry with key 'num' to value '-1' +OK 'num=-1' +Setting options string 'num=-2' +Setting entry with key 'num' to value '-2' +Value -2.000000 for parameter 'num' out of range [-1 - 100] +Error 'num=-2' +Setting options string 'num=101' +Setting entry with key 'num' to value '101' +Value 101.000000 for parameter 'num' out of range [-1 - 100] +Error 'num=101' Setting options string 'num64=bogus' Setting entry with key 'num64' to value 'bogus' Undefined constant or missing '(' in 'bogus' @@ -325,11 +347,14 @@ Setting entry with key 'num64' to value '44.4' OK 'num64=44.4' Setting options string 'num64=-1' Setting entry with key 'num64' to value '-1' -Value -1.000000 for parameter 'num64' out of range [0 - 100] -Error 'num64=-1' +OK 'num64=-1' +Setting options string 'num64=-2' +Setting entry with key 'num64' to value '-2' +Value -2.000000 for parameter 'num64' out of range [-1 - 100] +Error 'num64=-2' Setting options string 'num64=101' Setting entry with key 'num64' to value '101' -Value 101.000000 for parameter 'num64' out of range [0 - 100] +Value 101.000000 for parameter 'num64' out of range [-1 - 100] Error 'num64=101' Setting options string 'flt=bogus' Setting entry with key 'flt' to value 'bogus' From patchwork Tue Feb 27 20:30:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 46590 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c51b:b0:19e:cdac:8cce with SMTP id gm27csp2238593pzb; Tue, 27 Feb 2024 12:32:42 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCViphpFDP01XhYFzp0UdMyZ8pJMWRghHsdlR3xsezI63HFU2qPp4A7upaNI8P05zS3Zjam87WFu/IbaCNhTLVE0j1JlO64ryOb9Ng== X-Google-Smtp-Source: AGHT+IG8yjJctgplQqz0POxpaZtiC5F59LnOs+HNzLM7NmXjZmCgAhVihXpBVwRf0ekR6UYxxmbj X-Received: by 2002:a05:6402:1801:b0:565:b456:435d with SMTP id g1-20020a056402180100b00565b456435dmr6414463edy.17.1709065962682; Tue, 27 Feb 2024 12:32:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709065962; cv=none; d=google.com; s=arc-20160816; b=jCXwOTitYqhh1d7wI0hnreuqmS0UxWynS3T2XPvI29WNpYQLHXUoMfSo77yr2OM1fc +ql0fHDL/v/Xe2qW+U0yMFHBHawkLOCeoxg4aejsnSVejLvboYZ4ns46njzxfG6Oq4hy gINzZNTMkNMyp0+WQLdwzdu8hn0TBpEO4rSHNP5SSchyJeMWzycWTYHe14HGnnTRKaEY osvGLOaOsqqUpHfwxcDstQ/fh4Phh7O5P+cBATnMsItN4Y3bJdX4AlVqmuA2lvlU2uDR ExInN4EBbX3pHVswr14Yg8p+NNAmdkpzn2+SzwF1ZOWILvBvmpc5HukPKR9C7ChQRXeP pzWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=GILI7zG3e+P2kXWakKjYwReDnN9+/XjkqSMDNQb0PgA=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=h25ovks4MhROpeY4/b9T3uV1HetGnYO5afc0S1WZBeCrtO4/tOrbrKHgoHhx90297t r/Mp1hRT+fYW5/QKt21qgEeUk3J13q+qmU2uecnKYHSfUVjiys+kdZgnsvUcVJBzTupe 6eIF0RYTapCZsm6KvE9NWjncS8uLQGrSBno32/c2fLJa/vSHPp3zZ+FP4afpFsRwFwe7 VnrYkftXE5xF/LoUAaEOAZh5UpONkb3Phlk5jYWMY8kU5C4gwGb0uUperPHWRldwQmCq ubg3twXWWRnEWCWSHNGksXCHZsOneVRr3NT/x+11TTNsODccp/5TViDzKXbFm3U5HIRa semw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=RrLDLuUa; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id x12-20020aa7d38c000000b00563fb0a4335si984138edq.181.2024.02.27.12.32.42; Tue, 27 Feb 2024 12:32:42 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=RrLDLuUa; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D24B468CE33; Tue, 27 Feb 2024 22:32:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7405668CE0F for ; Tue, 27 Feb 2024 22:32:24 +0200 (EET) Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-6e4ca46ab04so2954240b3a.3 for ; Tue, 27 Feb 2024 12:32:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709065942; x=1709670742; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=kRpst+ClFnIn1EKqsWZM7VUOFp0HrErvaSXQ/4trobw=; b=RrLDLuUaWjOY193AQz2s3GfdiHU5W7tUOuR2VRqymas/ZXRvfv8vws1WYflsdwc2qD EuqD/lTHgy+qr1eN9LToDdAn0scsAUgxTUdCFK9fyMld/MU/PMFQ2IIYX282V8pEQ8qy 9/TKqgvEMYeS0kJpR1DB5nW1CD3nywwvcTiycMUEuMhnchGV1qvNyxBvUUlKyOgaakz4 FTmMPymw50PumZDGvMGvUjVyCZLx1EHh+y2qR962CG9CqedSaR5N1oSPBa2icfbm2dKk 4JYhFj1n6zaKiAX2KthY4hxzQB6V2wj7joPqw5ZnlpsjoweoVQskxHyQzuRi5LcFK2oV 8Zzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709065942; x=1709670742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kRpst+ClFnIn1EKqsWZM7VUOFp0HrErvaSXQ/4trobw=; b=VEO20LBBmSyjRq/rzQQcs9BU+Ghzulb+LmYCsV9qRILH8H94M4mTOCCR//hCYaqMzk 6i5/WjrttOWLXPkA8Gc90NOi79hWWtr5D70p84TMNe4OLZs/224KyIPkOx6vvN4Qa3yX YUDo4AaUgkTH7T8ichhiNb4U3P5BPnMZ/xooUKDcfT2c+3yqi47nARp4jpudz1VhEgtm aAfG513Wr36J2z4pTOIAE2DHVdrPBZb//t9iW3h2S5nvUQgKy2Rfmg0Kp+BNoXS+B5Sz n07LjbQSLPJOqzMuop0bzyblLpcI2qIkcxxbyZxM+Kz8Po6aIp2VA5k8i22qSCg6D+xl LUnw== X-Gm-Message-State: AOJu0Yw+prKrtDujfva1xpXdJBfGDpntIUMbU0whSTQ8qx2rjd1zN1Gr NP01wE97C6ts/1JgTVQt2FOukxRxC/JYRXgmqM083JstRL93EsT37dJP0CXA X-Received: by 2002:a05:6a00:9386:b0:6e5:4f1e:7209 with SMTP id ka6-20020a056a00938600b006e54f1e7209mr2605995pfb.15.1709065941683; Tue, 27 Feb 2024 12:32:21 -0800 (PST) Received: from localhost.localdomain ([190.194.169.124]) by smtp.gmail.com with ESMTPSA id m22-20020a637116000000b005d880b41598sm6294325pgc.94.2024.02.27.12.32.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 12:32:20 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Feb 2024 17:30:39 -0300 Message-ID: <20240227203040.1989-2-jamrial@gmail.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240227203040.1989-1-jamrial@gmail.com> References: <20240227203040.1989-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avutil/tests/opt: test values > INT_MAX for INT64 type X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3mwESb90Pc8t Signed-off-by: James Almer --- libavutil/tests/opt.c | 5 +++-- tests/ref/fate/opt | 25 ++++++++++++++----------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/libavutil/tests/opt.c b/libavutil/tests/opt.c index a914d0359a..11f29468fb 100644 --- a/libavutil/tests/opt.c +++ b/libavutil/tests/opt.c @@ -85,7 +85,7 @@ static const AVOption test_options[]= { {"bin", "set binary value", OFFSET(binary), AV_OPT_TYPE_BINARY, { .str="62696e00" }, 0, 0, 1 }, {"bin1", "set binary value", OFFSET(binary1), AV_OPT_TYPE_BINARY, { .str=NULL }, 0, 0, 1 }, {"bin2", "set binary value", OFFSET(binary2), AV_OPT_TYPE_BINARY, { .str="" }, 0, 0, 1 }, - {"num64", "set num 64bit", OFFSET(num64), AV_OPT_TYPE_INT64, { .i64 = 1 }, -1, 100, 1 }, + {"num64", "set num 64bit", OFFSET(num64), AV_OPT_TYPE_INT64, { .i64 = 1LL << 32 }, -1, 1LL << 32, 1 }, {"flt", "set float", OFFSET(flt), AV_OPT_TYPE_FLOAT, { .dbl = 1.0 / 3 }, 0, 100, 1 }, {"dbl", "set double", OFFSET(dbl), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 / 3 }, 0, 100, 1 }, {"bool1", "set boolean value", OFFSET(bool1), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, 1 }, @@ -296,7 +296,8 @@ int main(void) "num64=44.4", "num64=-1", "num64=-2", - "num64=101", + "num64=4294967296", + "num64=4294967297", "flt=bogus", "flt=2", "flt=2.2", diff --git a/tests/ref/fate/opt b/tests/ref/fate/opt index 2da155aa2b..d164b9eb0c 100644 --- a/tests/ref/fate/opt +++ b/tests/ref/fate/opt @@ -14,7 +14,7 @@ color=255 192 203 255 channel_layout=311=311 binary=62 69 6e 0 binary_size=4 -num64=1 +num64=4294967296 flt=0.333333 dbl=0.333333 TestContext AVOptions: @@ -37,7 +37,7 @@ TestContext AVOptions: -bin E.......... set binary value -bin1 E.......... set binary value -bin2 E.......... set binary value - -num64 E.......... set num 64bit (from -1 to 100) (default 1) + -num64 E.......... set num 64bit (from -1 to 4.29497e+09) (default 4294967296) -flt E.......... set float (from 0 to 100) (default 0.333333) -dbl E.......... set double (from 0 to 100) (default 0.333333) -bool1 E.......... set boolean value (default auto) @@ -119,7 +119,7 @@ name: cl get: hexagonal set: OK get: hexagonal name: bin get: 62696E00 set: OK get: 62696E00 OK name: bin1 get: set: OK get: OK name: bin2 get: set: OK get: OK -name: num64 get: 1 set: OK get: 1 OK +name: num64 get: 4294967296 set: OK get: 4294967296 OK name: flt get: 0.333333 set: OK get: 0.333333 OK name: dbl get: 0.333333 set: OK get: 0.333333 OK name: bool1 get: auto set: OK get: auto OK @@ -129,7 +129,7 @@ name: dict1 get: set: OK get: name: dict2 get: happy=\:-) set: OK get: happy=\:-) OK Test av_opt_serialize() -num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=1,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) +num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=4294967296,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) Setting entry with key 'num' to value '0' Setting entry with key 'toggle' to value '1' Setting entry with key 'rational' to value '1/1' @@ -146,7 +146,7 @@ Setting entry with key 'cl' to value 'hexagonal' Setting entry with key 'bin' to value '62696E00' Setting entry with key 'bin1' to value '' Setting entry with key 'bin2' to value '' -Setting entry with key 'num64' to value '1' +Setting entry with key 'num64' to value '4294967296' Setting entry with key 'flt' to value '0.333333' Setting entry with key 'dbl' to value '0.333333' Setting entry with key 'bool1' to value 'auto' @@ -154,7 +154,7 @@ Setting entry with key 'bool2' to value 'true' Setting entry with key 'bool3' to value 'false' Setting entry with key 'dict1' to value '' Setting entry with key 'dict2' to value 'happy=\:-)' -num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=1,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) +num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=4294967296,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) Testing av_set_options_string() Setting options string '' @@ -350,12 +350,15 @@ Setting entry with key 'num64' to value '-1' OK 'num64=-1' Setting options string 'num64=-2' Setting entry with key 'num64' to value '-2' -Value -2.000000 for parameter 'num64' out of range [-1 - 100] +Value -2.000000 for parameter 'num64' out of range [-1 - 4.29497e+09] Error 'num64=-2' -Setting options string 'num64=101' -Setting entry with key 'num64' to value '101' -Value 101.000000 for parameter 'num64' out of range [-1 - 100] -Error 'num64=101' +Setting options string 'num64=4294967296' +Setting entry with key 'num64' to value '4294967296' +OK 'num64=4294967296' +Setting options string 'num64=4294967297' +Setting entry with key 'num64' to value '4294967297' +Value 4294967297.000000 for parameter 'num64' out of range [-1 - 4.29497e+09] +Error 'num64=4294967297' Setting options string 'flt=bogus' Setting entry with key 'flt' to value 'bogus' Undefined constant or missing '(' in 'bogus' From patchwork Tue Feb 27 20:30:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 46591 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c51b:b0:19e:cdac:8cce with SMTP id gm27csp2238650pzb; Tue, 27 Feb 2024 12:32:51 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUu5+DCZapG4ydWkSkgbjncMgppgaFiHudhnV/wjOt5hc/EdaplzuwzCnpJNRijxTmknY6xdnREjRIV48z68M+eJrcsrJGqWQBlrw== X-Google-Smtp-Source: AGHT+IFSropq0aYVHJB1FDeT76pFBm9EAVMKcVoX2WnJ146VnTr6sqlWw1Gh92jDXKr/0qoYUt8H X-Received: by 2002:aa7:d954:0:b0:566:4624:b121 with SMTP id l20-20020aa7d954000000b005664624b121mr1540284eds.35.1709065971212; Tue, 27 Feb 2024 12:32:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1709065971; cv=none; d=google.com; s=arc-20160816; b=vDiuJqyGva/lmflwDMClP0JpP79cKX8sZn+qCSDH9y10otS+8a6isb85TycjHqtIJT dK9tuxORmblSBa51tLDdyOs5xE7ltcyq2DpZUmLTvqHPDgr68Dp+spfmmGcDu4DBW2yk Uc6mEGPbkEhx33ojgKHXtu9jVs7dud7e4qELD2/nXlBWIKwt0F3iI+yBF7fM3gm6PO7M cF4/MYtFkEeoTqVvyPxxgWczY5w+CbCHKNdvaJvQDHED59xEAr1BzeIZPW8DZPuGB25Y 1zbFxLw6ZtaUEp+73wbWjx/W2JJ75FlPBfk5MX4XHWvddERfVW9FrGf2EG7mGg43ERDX n+5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=TgDxnWTeW7WuL8+pBDbUwUw6M1y/iIKvb6F9lez46dQ=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=yvt63BaTAt3u2Ch8+OgdmBJQgMRDy1WZsa140tzZgRphaLhPzqXu00ajcI4nc9t+Em VrKYqH1eBoxznfReCPQpsBuxxKugtPqls5bPXPAhyLJ/YeU5mfCrgiSarLYpGEc8VKZk HgjBX4RFdN+kYdCLUkU6beS7IJyFiDlE6HJ0qisZuRtQXosZWYWi90juNGxI1j71RML5 LTK1YdLw/jOT+d7HNzMigk5x7XE5Z7R5rzfdDgT7NR7n0bttRiTM8gcOk7ZZRM0zli5B SYLCzHRsOAePVRoAZE9jPRS4o6UeBqL5sZQYaIYywmlghFRxqLmU1KTcB+FN9FvrUEsL r+6g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=jBxYQ+eM; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w4-20020aa7da44000000b00566358e2376si915392eds.72.2024.02.27.12.32.50; Tue, 27 Feb 2024 12:32:51 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=jBxYQ+eM; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0D39268CEBF; Tue, 27 Feb 2024 22:32:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8101768CE33 for ; Tue, 27 Feb 2024 22:32:26 +0200 (EET) Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-6e55bb75c9eso178553b3a.3 for ; Tue, 27 Feb 2024 12:32:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709065944; x=1709670744; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LjPY6/m70qj6e0weAkco2OwyTXz6I7ILnLHKxMZL088=; b=jBxYQ+eMes9hhIsyAVZrmx1btrq3O9CweYrHwfplF3aZSnsN11WFtdgQa0BJhDSthI 4pB/7kR96IVOC7nIKOHRQ0tEmUyHWnLRo+JhQSK/1rOIPmWP1J+n4BbEVmDqvMZCAaXe KrrdaYwQX+orU54Jnj6zicg8nGUbH/NPG0Gry5LXwbqYwQGhNcHBgwilbsS80ZDUwxBh OnwrznNFnfOcPcze54NLodBjehc7zy+Q0RvuP3JrWLK95TtzmNx+Qvnjnj1sltpqDf9c 7FvynGa5lJ2dfpl5AocRuNHp9+tgs/xOLHL4k6cMPX5gHYYwT3xGv2BLWsmMuBa7WYDY cCDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709065944; x=1709670744; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LjPY6/m70qj6e0weAkco2OwyTXz6I7ILnLHKxMZL088=; b=Q0EJCROvBRXv3J4Vs9U8ExThOyykqdBV5rlRPhKWJC+PIKl79o2iTY736B77PU0GvK BKaPhyHghGeVscOzZZok6WaxOJ1f2WBtwdctqvD6Hq0suM1IhFPPyZy+gCrI9DzG8oPU hVOVWt7lz5AJmimqAvYT/LJ6WCkm0Lp/NkiWOwLuDsP9WsBNklsgGv6JKOW8UiWru59h aXdsi+lQ6fDsdTuTlZ016g+TNX6GSxEXQ1NOspC9ij7sFnnYIWIW6SOwRhksqwmC8iyo 7sCu4QFmJ3SgF0yK1bNxDQ1JVIyqqPAvs4isI8JRlYOZ+odvTDL+ySAMBKIFzhOuUMlf lOzw== X-Gm-Message-State: AOJu0YzPtfW4jy9KDw1uY/VTCtbhLxl6dnlUQ5Qiaji92nY3wDRzPPUh 4CqGhvu/Zh/F6S9kzh6Z0DqePdOnUCeygEzltDZPCsXnbxA+sYAwYqaa4rXh X-Received: by 2002:a05:6a21:920b:b0:1a0:adbc:7a96 with SMTP id tl11-20020a056a21920b00b001a0adbc7a96mr3373233pzb.36.1709065943689; Tue, 27 Feb 2024 12:32:23 -0800 (PST) Received: from localhost.localdomain ([190.194.169.124]) by smtp.gmail.com with ESMTPSA id m22-20020a637116000000b005d880b41598sm6294325pgc.94.2024.02.27.12.32.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 12:32:22 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Feb 2024 17:30:40 -0300 Message-ID: <20240227203040.1989-3-jamrial@gmail.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240227203040.1989-1-jamrial@gmail.com> References: <20240227203040.1989-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3 v2] avutil/opt: add an unsigned option type X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: jsZYFx3nrV5F Signed-off-by: James Almer --- libavutil/opt.c | 19 +++++++++++++++++++ libavutil/opt.h | 2 ++ libavutil/tests/opt.c | 9 +++++++++ tests/ref/fate/opt | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 60 insertions(+), 2 deletions(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index 0681b19896..d37f0dda69 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -72,6 +72,9 @@ static int read_number(const AVOption *o, const void *dst, double *num, int *den case AV_OPT_TYPE_INT: *intnum = *(int *)dst; return 0; + case AV_OPT_TYPE_UINT: + *intnum = *(unsigned int *)dst; + return 0; #if FF_API_OLD_CHANNEL_LAYOUT FF_DISABLE_DEPRECATION_WARNINGS case AV_OPT_TYPE_CHANNEL_LAYOUT: @@ -128,6 +131,7 @@ static int write_number(void *obj, const AVOption *o, void *dst, double num, int case AV_OPT_TYPE_BOOL: case AV_OPT_TYPE_FLAGS: case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_UINT: *(int *)dst = llrint(num / den) * intnum; break; case AV_OPT_TYPE_DURATION: @@ -231,6 +235,7 @@ static int set_string(void *obj, const AVOption *o, const char *val, uint8_t **d opt->type == AV_OPT_TYPE_UINT64 || \ opt->type == AV_OPT_TYPE_CONST || \ opt->type == AV_OPT_TYPE_FLAGS || \ + opt->type == AV_OPT_TYPE_UINT || \ opt->type == AV_OPT_TYPE_INT) \ ? opt->default_val.i64 \ : opt->default_val.dbl) @@ -529,6 +534,7 @@ FF_ENABLE_DEPRECATION_WARNINGS return set_string_binary(obj, o, val, dst); case AV_OPT_TYPE_FLAGS: case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_UINT: case AV_OPT_TYPE_INT64: case AV_OPT_TYPE_UINT64: case AV_OPT_TYPE_FLOAT: @@ -610,6 +616,7 @@ int av_opt_eval_ ## name(void *obj, const AVOption *o, \ OPT_EVAL_NUMBER(flags, AV_OPT_TYPE_FLAGS, int) OPT_EVAL_NUMBER(int, AV_OPT_TYPE_INT, int) +OPT_EVAL_NUMBER(uint, AV_OPT_TYPE_UINT, unsigned int) OPT_EVAL_NUMBER(int64, AV_OPT_TYPE_INT64, int64_t) OPT_EVAL_NUMBER(float, AV_OPT_TYPE_FLOAT, float) OPT_EVAL_NUMBER(double, AV_OPT_TYPE_DOUBLE, double) @@ -871,6 +878,9 @@ int av_opt_get(void *obj, const char *name, int search_flags, uint8_t **out_val) case AV_OPT_TYPE_INT: ret = snprintf(buf, sizeof(buf), "%d", *(int *)dst); break; + case AV_OPT_TYPE_UINT: + ret = snprintf(buf, sizeof(buf), "%u", *(unsigned int *)dst); + break; case AV_OPT_TYPE_INT64: ret = snprintf(buf, sizeof(buf), "%"PRId64, *(int64_t *)dst); break; @@ -1276,6 +1286,9 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit, case AV_OPT_TYPE_INT: av_log(av_log_obj, AV_LOG_INFO, "%-12s ", ""); break; + case AV_OPT_TYPE_UINT: + av_log(av_log_obj, AV_LOG_INFO, "%-12s ", ""); + break; case AV_OPT_TYPE_INT64: av_log(av_log_obj, AV_LOG_INFO, "%-12s ", ""); break; @@ -1358,6 +1371,7 @@ FF_ENABLE_DEPRECATION_WARNINGS if (av_opt_query_ranges(&r, obj, opt->name, AV_OPT_SEARCH_FAKE_OBJ) >= 0) { switch (opt->type) { case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_UINT: case AV_OPT_TYPE_INT64: case AV_OPT_TYPE_UINT64: case AV_OPT_TYPE_DOUBLE: @@ -1405,6 +1419,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_log(av_log_obj, AV_LOG_INFO, "%s", buf); break; } + case AV_OPT_TYPE_UINT: case AV_OPT_TYPE_INT: case AV_OPT_TYPE_UINT64: case AV_OPT_TYPE_INT64: { @@ -1490,6 +1505,7 @@ void av_opt_set_defaults2(void *s, int mask, int flags) case AV_OPT_TYPE_BOOL: case AV_OPT_TYPE_FLAGS: case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_UINT: case AV_OPT_TYPE_INT64: case AV_OPT_TYPE_UINT64: case AV_OPT_TYPE_DURATION: @@ -1858,6 +1874,7 @@ static int opt_size(enum AVOptionType type) switch(type) { case AV_OPT_TYPE_BOOL: case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_UINT: case AV_OPT_TYPE_FLAGS: return sizeof(int); case AV_OPT_TYPE_DURATION: @@ -1997,6 +2014,7 @@ int av_opt_query_ranges_default(AVOptionRanges **ranges_arg, void *obj, const ch switch (field->type) { case AV_OPT_TYPE_BOOL: case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_UINT: case AV_OPT_TYPE_INT64: case AV_OPT_TYPE_UINT64: case AV_OPT_TYPE_PIXEL_FMT: @@ -2089,6 +2107,7 @@ int av_opt_is_set_to_default(void *obj, const AVOption *o) case AV_OPT_TYPE_PIXEL_FMT: case AV_OPT_TYPE_SAMPLE_FMT: case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_UINT: #if FF_API_OLD_CHANNEL_LAYOUT FF_DISABLE_DEPRECATION_WARNINGS case AV_OPT_TYPE_CHANNEL_LAYOUT: diff --git a/libavutil/opt.h b/libavutil/opt.h index 461b5d3b6b..ba494f0fcf 100644 --- a/libavutil/opt.h +++ b/libavutil/opt.h @@ -243,6 +243,7 @@ enum AVOptionType{ #endif AV_OPT_TYPE_BOOL, AV_OPT_TYPE_CHLAYOUT, + AV_OPT_TYPE_UINT, }; /** @@ -552,6 +553,7 @@ enum { */ int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out); int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out); +int av_opt_eval_uint (void *obj, const AVOption *o, const char *val, unsigned *uint_out); int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out); int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out); int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out); diff --git a/libavutil/tests/opt.c b/libavutil/tests/opt.c index 11f29468fb..faeaa00f30 100644 --- a/libavutil/tests/opt.c +++ b/libavutil/tests/opt.c @@ -31,6 +31,7 @@ typedef struct TestContext { const AVClass *class; int num; + unsigned unum; int toggle; char *string; int flags; @@ -67,6 +68,7 @@ typedef struct TestContext { static const AVOption test_options[]= { {"num", "set num", OFFSET(num), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, 100, 1 }, + {"unum", "set unum", OFFSET(unum), AV_OPT_TYPE_UINT, { .i64 = 1U << 31 }, 0, 1U << 31, 1 }, {"toggle", "set toggle", OFFSET(toggle), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, 1 }, {"rational", "set rational", OFFSET(rational), AV_OPT_TYPE_RATIONAL, { .dbl = 1 }, 0, 10, 1 }, {"string", "set string", OFFSET(string), AV_OPT_TYPE_STRING, { .str = "default" }, CHAR_MIN, CHAR_MAX, 1 }, @@ -127,6 +129,7 @@ int main(void) av_opt_set_defaults(&test_ctx); printf("num=%d\n", test_ctx.num); + printf("unum=%u\n", test_ctx.unum); printf("toggle=%d\n", test_ctx.toggle); printf("string=%s\n", test_ctx.string); printf("escape=%s\n", test_ctx.escape); @@ -291,6 +294,12 @@ int main(void) "num=-1", "num=-2", "num=101", + "unum=bogus", + "unum=44", + "unum=44.4", + "unum=-1", + "unum=2147483648", + "unum=2147483649", "num64=bogus", "num64=44", "num64=44.4", diff --git a/tests/ref/fate/opt b/tests/ref/fate/opt index d164b9eb0c..408467e77c 100644 --- a/tests/ref/fate/opt +++ b/tests/ref/fate/opt @@ -1,5 +1,6 @@ Testing default values num=0 +unum=2147483648 toggle=1 string=default escape=\=, @@ -19,6 +20,7 @@ flt=0.333333 dbl=0.333333 TestContext AVOptions: -num E.......... set num (from -1 to 100) (default 0) + -unum E.......... set unum (from 0 to 2.14748e+09) (default 2147483648) -toggle E.......... set toggle (from 0 to 1) (default 1) -rational E.......... set rational (from 0 to 10) (default 1/1) -string E.......... set string (default "default") @@ -48,6 +50,7 @@ TestContext AVOptions: Testing av_opt_is_set_to_default() name: num default:1 error: +name: unum default:0 error: name: toggle default:0 error: name: rational default:0 error: name: string default:0 error: @@ -75,6 +78,7 @@ name: bool3 default:1 error: name: dict1 default:1 error: name: dict2 default:0 error: name: num default:1 error: +name: unum default:1 error: name: toggle default:1 error: name: rational default:1 error: name: string default:1 error: @@ -104,6 +108,7 @@ name: dict2 default:1 error: Testing av_opt_get/av_opt_set() name: num get: 0 set: OK get: 0 OK +name: unum get: 2147483648 set: OK get: 2147483648 OK name: toggle get: 1 set: OK get: 1 OK name: rational get: 1/1 set: OK get: 1/1 OK name: string get: default set: OK get: default OK @@ -129,8 +134,9 @@ name: dict1 get: set: OK get: name: dict2 get: happy=\:-) set: OK get: happy=\:-) OK Test av_opt_serialize() -num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=4294967296,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) +num=0,unum=2147483648,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=4294967296,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) Setting entry with key 'num' to value '0' +Setting entry with key 'unum' to value '2147483648' Setting entry with key 'toggle' to value '1' Setting entry with key 'rational' to value '1/1' Setting entry with key 'string' to value 'default' @@ -154,7 +160,7 @@ Setting entry with key 'bool2' to value 'true' Setting entry with key 'bool3' to value 'false' Setting entry with key 'dict1' to value '' Setting entry with key 'dict2' to value 'happy=\:-)' -num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=4294967296,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) +num=0,unum=2147483648,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=4294967296,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-) Testing av_set_options_string() Setting options string '' @@ -334,6 +340,28 @@ Setting options string 'num=101' Setting entry with key 'num' to value '101' Value 101.000000 for parameter 'num' out of range [-1 - 100] Error 'num=101' +Setting options string 'unum=bogus' +Setting entry with key 'unum' to value 'bogus' +Undefined constant or missing '(' in 'bogus' +Unable to parse option value "bogus" +Error 'unum=bogus' +Setting options string 'unum=44' +Setting entry with key 'unum' to value '44' +OK 'unum=44' +Setting options string 'unum=44.4' +Setting entry with key 'unum' to value '44.4' +OK 'unum=44.4' +Setting options string 'unum=-1' +Setting entry with key 'unum' to value '-1' +Value -1.000000 for parameter 'unum' out of range [0 - 2.14748e+09] +Error 'unum=-1' +Setting options string 'unum=2147483648' +Setting entry with key 'unum' to value '2147483648' +OK 'unum=2147483648' +Setting options string 'unum=2147483649' +Setting entry with key 'unum' to value '2147483649' +Value 2147483649.000000 for parameter 'unum' out of range [0 - 2.14748e+09] +Error 'unum=2147483649' Setting options string 'num64=bogus' Setting entry with key 'num64' to value 'bogus' Undefined constant or missing '(' in 'bogus'