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