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