Skip to content

Commit

Permalink
Merge branch 'master' into seek_avce
Browse files Browse the repository at this point in the history
  • Loading branch information
uartie authored Sep 6, 2024
2 parents 3edb84c + 4e88010 commit 54ff1e9
Show file tree
Hide file tree
Showing 3 changed files with 129 additions and 0 deletions.
52 changes: 52 additions & 0 deletions lib/parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -744,6 +744,8 @@ def gen_hevc_seek_lp_parameters(spec, profiles):
gen_hevc_cqp_parameters = gen_avc_cqp_parameters
gen_hevc_cbr_parameters = gen_avc_cbr_parameters
gen_hevc_vbr_parameters = gen_avc_vbr_parameters
gen_hevc_bdepth_parameters = gen_avc_bdepth_parameters
gen_hevc_bdepth_lp_parameters = gen_avc_bdepth_lp_parameters
gen_hevc_roi_parameters = gen_avc_roi_parameters
gen_hevc_roi_lp_parameters = gen_avc_roi_lp_parameters
gen_hevc_forced_idr_parameters = gen_avc_forced_idr_parameters
Expand Down Expand Up @@ -901,6 +903,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", [])
Expand Down Expand Up @@ -946,6 +973,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:
Expand Down
35 changes: 35 additions & 0 deletions test/ffmpeg-qsv/encode/vp9.py
Original file line number Diff line number Diff line change
Expand Up @@ -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_lp_parameters(spec))
def test(self, case, rcmode, bitrate, maxrate, fps, seek):
self.init(spec, case, rcmode, bitrate, maxrate, fps, seek)
self.encode()
42 changes: 42 additions & 0 deletions test/ffmpeg-vaapi/encode/hevc.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,3 +273,45 @@ def init(self, tspec, case, gop, bframes, bitrate, maxrate, profile, rcmode):
def test(self, case, gop, bframes, bitrate, maxrate, profile, rcmode):
self.init(spec, case, gop, bframes, bitrate, maxrate, profile, rcmode)
self.encode()

class bdepth(HEVC8EncoderTest):
def init(self, tspec, case, gop, bframes, bitrate, qp, maxrate, profile, rcmode, bdepth):
vars(self).update(tspec[case].copy())
vars(self).update(
rcmode = rcmode,
bframes = bframes,
bitrate = bitrate,
qp = qp,
case = case,
maxrate = maxrate,
minrate = bitrate,
gop = gop,
profile = profile,
bdepth = bdepth,
)

@slash.parametrize(*gen_hevc_bdepth_parameters(spec, ['high', 'main']))
def test(self, case, gop, bframes, bitrate, qp, maxrate, profile, rcmode, bdepth):
self.init(spec, case, gop, bframes, bitrate, qp, maxrate, profile, rcmode, bdepth)
self.encode()

class bdepth_lp(HEVC8EncoderLPTest):
def init(self, tspec, case, gop, bframes, bitrate, qp, maxrate, profile, rcmode, bdepth):
vars(self).update(tspec[case].copy())
vars(self).update(
rcmode = rcmode,
bframes = bframes,
bitrate = bitrate,
qp = qp,
case = case,
maxrate = maxrate,
minrate = bitrate,
gop = gop,
profile = profile,
bdepth = bdepth,
)

@slash.parametrize(*gen_hevc_bdepth_lp_parameters(spec, ['high', 'main']))
def test(self, case, gop, bframes, bitrate, qp, maxrate, profile, rcmode, bdepth):
self.init(spec, case, gop, bframes, bitrate, qp, maxrate, profile, rcmode, bdepth)
self.encode()

0 comments on commit 54ff1e9

Please sign in to comment.