Adjust, fix and add subgop config models The enhanced model gives a -0.3% BDRATE improvement over the baseline in a 49 frame q-mode test. Change-Id: Iadc583f963519183d1ea90f10ac1c6fd674744a1
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c index dfde0fd..a21c1c1 100644 --- a/av1/av1_cx_iface.c +++ b/av1/av1_cx_iface.c
@@ -159,10 +159,10 @@ }; // Example subgop configs. Currently not used by default. +// // Default config const char subgop_config_str_16_def[] = - "16:2:16F1P1/8F2P1^-1/" - "4U3P-2^1^-1/2U4P1^-3^-2^-1/" + "16:2:16F1P1/8F2P1^-1/4U3P-2^1^-1/2U4P1^-3^-2^-1/" "1V5P1^-2^-4^-3^-1/2S/3V5P4^5^1^-3^-2^-1/4S/6U4P3^5^5^1^-2^4^-1/" "5V5P3^5^4^1^-4^-2^-1/6S/7V5P4^5^5^1^-2^3^-1/8R2P5^4^3^1^2^5^-1/" "12U3P2^5^3^1^5^4^-1/10U4P2^5^5^1^-3^4^-1/9V5P2^5^4^1^-4^-3^-1/10S/" @@ -177,6 +177,29 @@ "11V5P4^5^2^1^-3^1^-1/12S/14U4P3^5^5^1^1^4^-1/13V5P3^5^4^1^-4^1^-1/" "14S/15V5P4^5^5^1^1^3^-1/16R1P5^4^5^1^3^5^1,"; +// An enhanced config where the last subgop uses a shorter dist to arf +const char subgop_config_str_16_enh[] = + "16:2:16F1P1/8F2P1^-1/4U3P-2^1^-1/2U4P1^-3^-2^-1/" + "1V5P1^-2^-4^-3^-1/2S/3V5P4^5^1^-3^-2^-1/4S/6U4P3^5^5^1^-2^4^-1/" + "5V5P3^5^4^1^-4^-2^-1/6S/7V5P4^5^5^1^-2^3^-1/8R2P5^4^3^1^2^5^-1/" + "12U3P2^5^3^1^5^4^-1/10U4P2^5^5^1^-3^4^-1/9V5P2^5^4^1^-4^-3^-1/10S/" + "11V5P4^5^5^1^-3^2^-1/12S/14U4P3^5^2^1^5^4^-1/13V5P3^5^5^1^-4^4^-1/" + "14S/15V5P4^5^4^1^5^3^-1/16R1P5^4^5^1^3^5^1," + + "16:0:16F1P5^4^3^1^1^1^5/8F2P5^4^3^1^1^5^-1/4U3P5^4^5^1^-2^1^-1/" + "2U4P5^4^1^1^-3^-2^-1/1V5P5^4^1^1^-4^-3^-1/2S/3V5P4^5^1^1^-3^-2^-1/4S/" + "6U4P3^5^4^1^-2^1^-1/5V5P3^5^1^1^-4^-2^-1/6S/7V5P4^5^3^1^-2^1^-1/" + "8R2P5^4^5^1^2^1^-1/12U3P2^5^5^1^1^4^-1/10U4P2^5^4^1^-3^1^-1/" + "9V5P2^5^1^1^-4^-3^-1/10S/11V5P4^5^2^1^-3^1^-1/12S/14U4P3^5^5^1^1^4^-1/" + "13V5P3^5^4^1^-4^1^-1/14S/15V5P4^5^5^1^1^3^-1/16R1P5^4^5^1^3^1," + + "16:1:14F1P4^3^1^1^1^5/7F2P1^1^-1^3^4^5^5/4U3P5^5^4^1^1^-2^-1/" + "2U4P5^4^1^1^-3^-2^-1/1V5P5^4^1^1^-4^-3^-1/2S/3V5P1^1^5^4^-3^-2^-1/4S/" + "6U4P3^5^4^1^-2^1^-1/5V5P1^5^3^-4^-2^-1/6S/7R2P1^1^-1^2^4^3^5/" + "11U3P1^1^2^-1^5^4^3/9U4P1^1^5^4^2^-3^-1/8V5P1^1^4^2^-4^-3^-1/9S/" + "10V5P1^2^4^1^5^-3^-1/11S/13U4P1^1^4^3^-1^5^5/12V5P1^1^4^5^3^-4^-1/13S/" + "14R1P1^1^3^4^5^5/16U4P1^1^3^4^5^5/15V5P1^1^3^4^5^-4/16S"; + // A config that honors temporally scalable prediction structure, i.e. // no frame is coded with references at higher pyramid depths. const char subgop_config_str_16_ts[] = @@ -195,18 +218,31 @@ // An asymmetrical config where the hierarchical frames are not exactly // dyadic, but slightly skewed. const char subgop_config_str_16_asym[] = - "16:0:16F1P1^1/11F2P1^1^2^-1/6U3P1^1^2^-2^-1/3U4P1^1^-3^-2^-1/" - "1V5P1^1^-4^-3^-2^-1/2V5P1^1^-4^-3^-2^-1^5/3S/4V5P1^5^5^4^-3^-2^-1/" - "5V5P1^5^5^4^-3^-2^-1/6S/9U3P^1^3^-1^-2/7V4P1^-1^-2^3^-3^4/" - "8V5P1^-1^-2^-3^3^4^5/9S/10V4P1^-1^-2^3^3^4/11R2P1^2^-1/" - "14U3P1^-1^2^3^3/13U4P1^-1^2^3^-3^4^4/12V5P1^-1^2^3^-3^4^-4/" - "13S/14S/15V5P1^-1^2^3^4^4^5/16R1P1^1," + "16:2:16F1P1/10F2P1^-1/5U3P-2^1^-1/3U4P1^-3^-2^-1/" + "1V4P1^-2^-3^-4^-1/2V5P1^4^-4^-3^-2^-1/3S/4V5P1^-1^-2^-3^4^4^5/5S/" + "8U4P1^-1^-2^3^4^5^5/6V4P1^-1^-2^3^-4^4^5/7V5P1^-1^-2^3^-4^4^5/8S/" + "9V5P1^-1^-2^3^4^4^5/10R2P1^-1^2^5^5^4^4/13U3P1^-1^2^5^4^4^5/" + "11V4P1^-1^2^-3^5^4^5/12V5P1^-1^2^-3^5^4^4/13S/" + "14V4P1^-1^2^3^5^4^5/15V5P1^-1^2^3^4^4^5/16R1P1^1^3^4^4^5^5/," - "16:1:14F1P1^1/8F2P1^1^2^-1/4U3P1^1^2^-2^-1/2U4P1^1^-3^-2^-1/" - "1V5P1^1^-4^-3^-2^-1/2S/3V5P1^5^4^-3^-2^-1/4S/6U4P1^3^4^-2^-1/" - "5V5P1^4^5^3^-4^-2^-1/6S/7V5P1^3^5^4^-2^-1/8R2P1^2^-1/11U3P1^3^2^-1/" - "9V4P1^-1^2^3^-3^4/10V5P1^-1^2^-3^4^4^5/11S/12V4P1^-1^2^3^4/" - "13V5P1^-1^2^3^4^4^5/14R1P1^1/16U4P1^1^2^3^4/15V5P1^1^2^3^4^-4^5/16S"; + "16:0:16F1P5^4^3^1^1^4^5/11F2P5^4^3^1^1^5^-1/6U3P3^4^5^1^-2^1^-1/" + "3U4P5^4^1^1^-3^-2^-1/1V5P4^1^1^-4^-1^-3^5/2V5P1^1^-4^-3^-1^5^5/3S/" + "4V5P4^5^1^1^-3^-2^-1/5V5P1^1^5^4^-3^-2^-1/6S/9U3P1^3^-1^-2^1^5/" + "7V4P1^1^-1^-2^3^-3^5/8V5P1^1^-1^-2^-3^3^4/9S/10V4P1^1^-1^-2^3^4^5/" + "11R2P1^1^2^-1/14U3P1^1^-1^2^3^4^5/13U4P1^-1^2^3^-3^4/" + "12V5P1^1^-1^2^-3^4^-4/13S/14S/15V5P1^1^-1^2^3^4^5/16R1P1^1^3^4^5^5," + + "16:1:14F1P5^4^3^1^1^1^5/7F2P1^1^-1^3^4^5^5/4U3P5^4^1^1^-2^-1/" + "2U4P5^3^1^1^-3^-2^-1/1V5P5^3^1^1^-4^-3^-1/2S/3V5P1^1^5^4^-3^-2^-1/4S/" + "6U4P3^5^4^1^-2^1^-1/5V5P1^5^3^-4^-2^-1/6S/7R2P1^1^-1^2^4^5/" + "11U3P1^1^2^-1^5^4^3/9U4P1^1^5^4^2^-3^-1/8V5P1^1^2^-4^4^-3^-1/9S/" + "10V5P1^2^4^1^5^-3^-1/11S/13U4P1^1^4^3^-1^5^5/12V5P1^1^4^5^3^-4^-1/13S/" + "14R1P1^1^1^3^4^5^5/16U4P1^1^3^4^5^5/15V5P1^1^3^4^5^-4/16S"; + +// low delay config without references +const char subgop_config_str_16_ld[] = + "16:0:1V5/2V4/3V5/4V3/5V5/6V4/7V5/8V2/" + "9V5/10V4/11V5/12V3/13V5/14V4/15V5/16V1"; static struct av1_extracfg default_extra_cfg = { 0, // cpu_used