From a425e2cc0658ffdcc4dbc97edb62e24bc8a794a5 Mon Sep 17 00:00:00 2001
From: John Koleszar <jkoleszar@google.com>
Date: Thu, 6 Jun 2013 18:03:44 -0700
Subject: [PATCH] Add marker bit to bool-coded partition start

Adds a marker bit to allow distinguishing the frame header from its residual
data.

Change-Id: Id75d47acc9e5a97007e4690c4f8748a4ce63e641
---
 test/vp9_boolcoder_test.cc  | 3 +++
 vp9/decoder/vp9_dboolhuff.c | 5 ++++-
 vp9/encoder/vp9_boolhuff.c  | 1 +
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/test/vp9_boolcoder_test.cc b/test/vp9_boolcoder_test.cc
index 5d87ff6bff..42b2229bff 100644
--- a/test/vp9_boolcoder_test.cc
+++ b/test/vp9_boolcoder_test.cc
@@ -68,6 +68,9 @@ TEST(VP9, TestBitIO) {
 
         vp9_stop_encode(&bw);
 
+        // First bit should be zero
+        GTEST_ASSERT_EQ(bw_buffer[0] & 0x80, 0);
+
         vp9_reader br;
         vp9_reader_init(&br, bw_buffer, buffer_size);
         bit_rnd.Reset(random_seed);
diff --git a/vp9/decoder/vp9_dboolhuff.c b/vp9/decoder/vp9_dboolhuff.c
index 9921ea727b..df77d650d2 100644
--- a/vp9/decoder/vp9_dboolhuff.c
+++ b/vp9/decoder/vp9_dboolhuff.c
@@ -14,6 +14,8 @@
 #include "vp9/decoder/vp9_dboolhuff.h"
 
 int vp9_reader_init(vp9_reader *r, const uint8_t *buffer, size_t size) {
+  int marker_bit;
+
   r->buffer_end = buffer + size;
   r->buffer = buffer;
   r->value = 0;
@@ -24,7 +26,8 @@ int vp9_reader_init(vp9_reader *r, const uint8_t *buffer, size_t size) {
     return 1;
 
   vp9_reader_fill(r);
-  return 0;
+  marker_bit = vp9_read_bit(r);
+  return marker_bit != 0;
 }
 
 void vp9_reader_fill(vp9_reader *r) {
diff --git a/vp9/encoder/vp9_boolhuff.c b/vp9/encoder/vp9_boolhuff.c
index 86143ca572..0f1aa594e9 100644
--- a/vp9/encoder/vp9_boolhuff.c
+++ b/vp9/encoder/vp9_boolhuff.c
@@ -47,6 +47,7 @@ void vp9_start_encode(vp9_writer *br, uint8_t *source) {
   br->count    = -24;
   br->buffer   = source;
   br->pos      = 0;
+  vp9_write_bit(br, 0);
 }
 
 void vp9_stop_encode(vp9_writer *br) {
-- 
GitLab