bit_reader.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
134a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project// Copyright (c) 2012 The Chromium Authors. All rights reserved. 234a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 334a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project// found in the LICENSE file. 434a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project 534a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project#include "media/base/bit_reader.h" 634a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project 734a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Projectnamespace media { 834a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project 95d50b9a3cf354040d01cfec020e4dd01295ac01cRay ChenBitReader::BitReader(const uint8* data, int size) 105d50b9a3cf354040d01cfec020e4dd01295ac01cRay Chen : initial_size_(size), 1134a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project data_(data), 1234a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project bytes_left_(size), 1334a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project bit_reader_core_(this) { 1434a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project DCHECK(data != NULL); 1534a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project DCHECK_GE(size, 0); 1634a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project} 1734a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project 1834a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source ProjectBitReader::~BitReader() {} 1934a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project 2034a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Projectint BitReader::GetBytes(int max_nbytes, const uint8** out) { 2134a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project DCHECK_GE(max_nbytes, 0); 2234a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project DCHECK(out); 2334a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project 2434a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project int nbytes = max_nbytes; 2534a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project if (nbytes > bytes_left_) 2634a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project nbytes = bytes_left_; 277a314dab81f01bac02d617ffca9dbf7b6cc00700Steve Block 2834a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project *out = data_; 2934a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project data_ += nbytes; 3034a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project bytes_left_ -= nbytes; 3134a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project return nbytes; 3234a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project} 3334a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project 3434a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project} // namespace media 3534a2564d3268a5ca1472c5076675782fbaf724d6The Android Open Source Project