From 9c4b973cfedc75f30d5a3af68b036c64621b04af Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 11 Feb 2021 11:41:31 +0100 Subject: use Bjornsgaard Metric as cross-codec factor --- localvideowebencode | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/localvideowebencode b/localvideowebencode index 8bccd0b..86a753c 100755 --- a/localvideowebencode +++ b/localvideowebencode @@ -209,38 +209,41 @@ compression=normal # currently used: VMAF 93 of x264 for 360p30 (equiv. crf 23 at medium) # 2) pick reference codec (incl. normal settings) # 3) render reference frame format with --compression=quality -# * check that bpp is near "refbpp" of 0.12 -# (otherwise adapt settings or do research and update refbpp) +# * establish "Bits Per Pixel" and define as refbpp +# currently used: 0.12 (TODO: seems too high - ancient reference) # 4) render misc. frame formats (esp. modulus 16) with --compression=quality -# * check that bpp derives from refbpp by "rule of .75" -# (otherwise adapt settings and/or do research and update rule) +# * establish and define curve formula +# currently used: "rule of .75" (TODO: seems slightly too high) # 5) render misc. frame formats with --compression=normal -# * check that bpp derives from refbpp by "rule of .75" +# * verify that bpp derives from refbpp as expected # 6) optionally pick dirty/hq settings # * check that --compression=quality has filesize similar as normal # establish/verify rendering settings for non-reference codec # # 1) pick normal settings -# 2) render reference frame format with --compression=quality -# * check that this "codec-bpp" deviates reasonably from refbpp +# 2) render reference frame format with --compression=quality at misc --quality +# * establish quality similar to reference encoding, and define as q # 3) render misc. frame formats (esp. modulus 16) with --compression=quality -# * check that bpp derives from codec-bpp by "rule of .75" -# (otherwise adapt settings and/or extend rule) +# * establish the "Bjontegaard" bitrate distance, and define as b_dbr +# +# * establish and define bpp curve # 4) render misc. frame formats with --compression=normal -# * check that bpp derives from codec-bpp by "rule of .75" +# * verify that content quality is comparable to reference encoding +# * verify that bpp derives from refbpp as expected # 5) optionally pick dirty/hq settings # * check that --compression=quality has similar filesize as normal # Theora seems to compress ~100% worse than H.264 # (reportedly 76% worse in 2010, and libtheora has not improved since) # -factor_theora=200/100 +b_dbr_theora=100 # VP8 is rumored to compress ~20% worse than H.264 -factor_vp8=120/100 +b_dbr_vp8=20 # VP9 compresses ~30% better than H.264 for practical use-cases # -factor_vp9=70/100 +b_dbr_vp9=-30 + # Mimic ReplayGain level when loudness is enabled (EBU R128: -23LUFS) # lufs=-18 @@ -541,9 +544,9 @@ fi if [ -n "$_pixels" ] && [ -n "$_frames" ]; then bitrate_avc=$(perl -E '$refsize=640*360;' \ -E "say int( +(($_pixels/\$refsize)**0.75*\$refsize*$_frames*$refbpp) )") - bitrate_theora=$(perl -E "say int( +($bitrate_avc*$factor_theora) )") #" - bitrate_vp8=$(perl -E "say int( +($bitrate_avc*$factor_vp8) )") #" - bitrate_vp9=$(perl -E "say int( +($bitrate_avc*$factor_vp9) )") #" + bitrate_theora=$(perl -E "say int( +($bitrate_avc*(100+($b_dbr_theora))/100) )") #" + bitrate_vp8=$(perl -E "say int( +($bitrate_avc*(100+($b_dbr_vp8))/100) )") #" + bitrate_vp9=$(perl -E "say int( +($bitrate_avc*(100+($b_dbr_vp9))/100) )") #" fi # default per-codec-channel bitrates -- cgit v1.2.3