summaryrefslogtreecommitdiff
path: root/vp8_scalable_patterns.c
diff options
context:
space:
mode:
authorAdrian Grange <agrange@google.com>2012-09-17 13:40:07 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2012-09-17 13:40:07 -0700
commiteec08d5cfc71678293ee9e63258ebdf5c8aa0e7b (patch)
treebaf6a252ae9fa362bde356e6284d985e798af1a3 /vp8_scalable_patterns.c
parent57c7e45066fd210425d25ad5edbd7c8a4fcd6547 (diff)
parent1076101b2b8d34844e2c5c72ba58264a0676cf06 (diff)
downloadlibvpx-eec08d5cfc71678293ee9e63258ebdf5c8aa0e7b.tar
libvpx-eec08d5cfc71678293ee9e63258ebdf5c8aa0e7b.tar.gz
libvpx-eec08d5cfc71678293ee9e63258ebdf5c8aa0e7b.tar.bz2
libvpx-eec08d5cfc71678293ee9e63258ebdf5c8aa0e7b.zip
Merge "Update to 2 layer case in vp8_scalable_patterns."
Diffstat (limited to 'vp8_scalable_patterns.c')
-rw-r--r--vp8_scalable_patterns.c48
1 files 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;
}