12ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian/*
22ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
32ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian *
42ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian *  Use of this source code is governed by a BSD-style license
52ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian *  that can be found in the LICENSE file in the root of the source
62ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian *  tree. An additional intellectual property rights grant can be found
72ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian *  in the file PATENTS.  All contributing project authors may
82ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian *  be found in the AUTHORS file in the root of the source tree.
92ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian */
102ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian
112ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#include <assert.h>
122ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian
13da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#include "./bitwriter.h"
14da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian
15da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianvoid vpx_start_encode(vpx_writer *br, uint8_t *source) {
162ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian  br->lowvalue = 0;
177bc9febe8749e98a3812a0dc4380ceae75c29450Johann  br->range = 255;
187bc9febe8749e98a3812a0dc4380ceae75c29450Johann  br->count = -24;
197bc9febe8749e98a3812a0dc4380ceae75c29450Johann  br->buffer = source;
207bc9febe8749e98a3812a0dc4380ceae75c29450Johann  br->pos = 0;
21da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian  vpx_write_bit(br, 0);
222ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian}
232ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian
24da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianvoid vpx_stop_encode(vpx_writer *br) {
252ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian  int i;
262ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian
277bc9febe8749e98a3812a0dc4380ceae75c29450Johann  for (i = 0; i < 32; i++) vpx_write_bit(br, 0);
282ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian
292ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian  // Ensure there's no ambigous collision with any index marker bytes
307bc9febe8749e98a3812a0dc4380ceae75c29450Johann  if ((br->buffer[br->pos - 1] & 0xe0) == 0xc0) br->buffer[br->pos++] = 0;
312ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian}
32