From 45f4b87e8e274256c5f13662f243c27b8eb187d5 Mon Sep 17 00:00:00 2001 From: Adrian Grange Date: Mon, 6 Feb 2012 15:02:33 -0800 Subject: [PATCH] Fixed bug in 5-layer multi-layer encode The 5-layer encode must have a keyframe every 16 frames. The KF flag was being reset after the encode of the first frame, which it should not do for the 5-layer case (mode=6). Change-Id: I207d6e689d347fe3fd1075b97a817e82f7ad53b9 --- vp8_scalable_patterns.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/vp8_scalable_patterns.c b/vp8_scalable_patterns.c index 0a077fa..50cc03a 100644 --- a/vp8_scalable_patterns.c +++ b/vp8_scalable_patterns.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010 The WebM project authors. All Rights Reserved. + * Copyright (c) 2012 The WebM project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source @@ -393,16 +393,15 @@ int main(int argc, char **argv) { layer_flags[13] = layer_flags[15] = VP8_EFLAG_NO_UPD_LAST | VP8_EFLAG_NO_UPD_GF | - VP8_EFLAG_NO_UPD_ARF | - VP8_EFLAG_NO_UPD_ENTROPY; + VP8_EFLAG_NO_UPD_ARF; layer_flags[2] = layer_flags[6] = layer_flags[10] = - layer_flags[14] = 0; + layer_flags[14] = VP8_EFLAG_NO_UPD_ARF | VP8_EFLAG_NO_UPD_GF; layer_flags[4] = - layer_flags[12] = VP8_EFLAG_NO_REF_LAST; - layer_flags[8] = VP8_EFLAG_NO_REF_LAST | VP8_EFLAG_NO_REF_GF | - VP8_EFLAG_NO_UPD_ENTROPY; + layer_flags[12] = VP8_EFLAG_NO_REF_LAST | + VP8_EFLAG_NO_UPD_ARF; + layer_flags[8] = VP8_EFLAG_NO_REF_LAST | VP8_EFLAG_NO_REF_GF; break; } @@ -520,7 +519,8 @@ int main(int argc, char **argv) { die_codec(&codec, "Failed to encode frame"); // Reset KF flag - layer_flags[0] &= ~VPX_EFLAG_FORCE_KF; + if (layering_mode != 6) + layer_flags[0] &= ~VPX_EFLAG_FORCE_KF; got_data = 0; while ( (pkt = vpx_codec_get_cx_data(&codec, &iter)) ) { -- 2.7.4