From f4cdbb9c503265102dddcdbba5b16f82e2945e9b Mon Sep 17 00:00:00 2001 From: Wang Hangjie Date: Wed, 28 Aug 2024 23:43:34 -0700 Subject: [PATCH] [ffmpeg-qsv] add vp9e playback_seek test case Signed-off-by: Wang Hangjie --- lib/parameters.py | 50 +++++++++++++++++++++++++++++++++++ test/ffmpeg-qsv/encode/vp9.py | 35 ++++++++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/lib/parameters.py b/lib/parameters.py index eb5144a7..d7bd0460 100755 --- a/lib/parameters.py +++ b/lib/parameters.py @@ -801,6 +801,31 @@ def gen_vp9_vbr_parameters(spec): params = gen_vp9_vbr_variants(spec) return keys, params +def gen_vp9_seek_variants(spec): + for case, params in spec.items(): + variants = params.get("variants", dict()).get("seek", []) + for variant in variants: + rcmode = variant["rcmode"] + bitrate = variant["bitrate"] + + # Update maxrate according to rcmode + if "cbr" == rcmode: + variant.update(maxrate = bitrate) + elif "vbr" == rcmode: + variant.update(maxrate = bitrate * 2) + else: + variant.update(maxrate = None) + + yield [ + case, rcmode, bitrate, variant.get("maxrate", None), + variant.get("fps", 25), variant.get("seek", 1) + ] + +def gen_vp9_seek_parameters(spec): + keys = ("case", "rcmode", "bitrate", "maxrate", "fps", "seek") + params = gen_vp9_seek_variants(spec) + return keys, params + def gen_vp9_cqp_lp_variants(spec): for case, params in spec.items(): variants = params.get("variants", dict()).get("cqp_lp", []) @@ -846,6 +871,31 @@ def gen_vp9_vbr_lp_parameters(spec): params = gen_vp9_vbr_lp_variants(spec) return keys, params +def gen_vp9_seek_lp_variants(spec): + for case, params in spec.items(): + variants = params.get("variants", dict()).get("seek_lp", []) + for variant in variants: + rcmode = variant["rcmode"] + bitrate = variant["bitrate"] + + # Update maxrate according to rcmode + if "cbr" == rcmode: + variant.update(maxrate = bitrate) + elif "vbr" == rcmode: + variant.update(maxrate = bitrate * 2) + else: + variant.update(maxrate = None) + + yield [ + case, rcmode, bitrate, variant.get("maxrate", None), + variant.get("fps", 25), variant.get("seek", 1) + ] + +def gen_vp9_seek_lp_parameters(spec): + keys = ("case", "rcmode", "bitrate", "maxrate", "fps", "seek") + params = gen_vp9_seek_lp_variants(spec) + return keys, params + def gen_av1_cqp_variants(spec, strapi=False): for case, params in spec.items(): if strapi: diff --git a/test/ffmpeg-qsv/encode/vp9.py b/test/ffmpeg-qsv/encode/vp9.py index efbd1874..86e4be3d 100644 --- a/test/ffmpeg-qsv/encode/vp9.py +++ b/test/ffmpeg-qsv/encode/vp9.py @@ -125,3 +125,38 @@ def test(self, case, gop, bitrate, fps, slices, refmode, quality, looplvl, loops self.init(spec, case, gop, bitrate, fps, slices, quality) self.encode() +class seek(VP9_8EncoderTest): + def init(self, tspec, case, rcmode, bitrate, maxrate, fps, seek): + vars(self).update(tspec[case].copy()) + vars(self).update( + case = case, + bitrate = bitrate, + maxrate = maxrate, + minrate = bitrate, + rcmode = rcmode, + fps = fps, + seek = seek, + ) + + @slash.parametrize(*gen_vp9_seek_parameters(spec)) + def test(self, case, rcmode, bitrate, maxrate, fps, seek): + self.init(spec, case, rcmode, bitrate, maxrate, fps, seek) + self.encode() + +class seek_lp(VP9_8EncoderLPTest): + def init(self, tspec, case, rcmode, bitrate, maxrate, fps, seek): + vars(self).update(tspec[case].copy()) + vars(self).update( + case = case, + bitrate = bitrate, + maxrate = maxrate, + minrate = bitrate, + rcmode = rcmode, + fps = fps, + seek = seek, + ) + + @slash.parametrize(*gen_vp9_seek_parameters(spec)) + def test(self, case, rcmode, bitrate, maxrate, fps, seek): + self.init(spec, case, rcmode, bitrate, maxrate, fps, seek) + self.encode()