From 1076101b2b8d34844e2c5c72ba58264a0676cf06 Mon Sep 17 00:00:00 2001 From: Marco Paniconi Date: Mon, 17 Sep 2012 11:57:51 -0700 Subject: [PATCH] Update to 2 layer case in vp8_scalable_patterns. Change-Id: I11aa90be41dd585c9784301f47a9d580fac09260 --- vp8_scalable_patterns.c | 48 ++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/vp8_scalable_patterns.c b/vp8_scalable_patterns.c index 0677468c8..06270fecb 100644 --- a/vp8_scalable_patterns.c +++ b/vp8_scalable_patterns.c @@ -427,7 +427,7 @@ int main(int argc, char **argv) { case 8: { - /* 2-layers */ + /* 2-layers, with sync point at first frame of layer 1. */ int ids[2] = {0,1}; cfg.ts_number_layers = 2; cfg.ts_periodicity = 2; @@ -438,22 +438,40 @@ int main(int argc, char **argv) { flag_periodicity = 8; /* 0=L, 1=GF */ + // ARF is used as predictor for all frames, and is only updated on + // key frame. Sync point every 8 frames. + + // Layer 0: predict from L and ARF, update L and G. layer_flags[0] = VPX_EFLAG_FORCE_KF | - VP8_EFLAG_NO_REF_GF | VP8_EFLAG_NO_REF_ARF | - VP8_EFLAG_NO_UPD_GF | VP8_EFLAG_NO_UPD_ARF; - layer_flags[1] = VP8_EFLAG_NO_REF_GF | VP8_EFLAG_NO_REF_ARF | - VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_ARF; - layer_flags[2] = - layer_flags[4] = - layer_flags[6] = VP8_EFLAG_NO_REF_GF | VP8_EFLAG_NO_REF_ARF | - VP8_EFLAG_NO_UPD_GF | VP8_EFLAG_NO_UPD_ARF; - layer_flags[3] = - layer_flags[5] = VP8_EFLAG_NO_REF_ARF | - VP8_EFLAG_NO_UPD_ARF | VP8_EFLAG_NO_UPD_LAST; - layer_flags[7] = VP8_EFLAG_NO_REF_ARF | - VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_GF | - VP8_EFLAG_NO_UPD_ARF | + VP8_EFLAG_NO_REF_GF | + VP8_EFLAG_NO_UPD_ARF; + + // Layer 1: sync point: predict from L and ARF, and update G. + layer_flags[1] = VP8_EFLAG_NO_REF_GF | + VP8_EFLAG_NO_UPD_LAST | + VP8_EFLAG_NO_UPD_ARF; + + // Layer 0, predict from L and ARF, update L. + layer_flags[2] = VP8_EFLAG_NO_REF_GF | + VP8_EFLAG_NO_UPD_GF | + VP8_EFLAG_NO_UPD_ARF; + + // Layer 1: predict from L, G and ARF, and update G. + layer_flags[3] = VP8_EFLAG_NO_UPD_ARF | + VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_ENTROPY; + + // Layer 0 + layer_flags[4] = layer_flags[2]; + + // Layer 1 + layer_flags[5] = layer_flags[3]; + + // Layer 0 + layer_flags[6] = layer_flags[4]; + + // Layer 1 + layer_flags[7] = layer_flags[5]; break; }