ABitReader.h revision cda17c606b0fe3ccda4dc68a6d43882410ea2462
14ababd922eac5931e0222862ff082dc29e012816Joe Onorato/* 24ababd922eac5931e0222862ff082dc29e012816Joe Onorato * Copyright (C) 2010 The Android Open Source Project 34ababd922eac5931e0222862ff082dc29e012816Joe Onorato * 44ababd922eac5931e0222862ff082dc29e012816Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 54ababd922eac5931e0222862ff082dc29e012816Joe Onorato * you may not use this file except in compliance with the License. 64ababd922eac5931e0222862ff082dc29e012816Joe Onorato * You may obtain a copy of the License at 74ababd922eac5931e0222862ff082dc29e012816Joe Onorato * 84ababd922eac5931e0222862ff082dc29e012816Joe Onorato * http://www.apache.org/licenses/LICENSE-2.0 94ababd922eac5931e0222862ff082dc29e012816Joe Onorato * 104ababd922eac5931e0222862ff082dc29e012816Joe Onorato * Unless required by applicable law or agreed to in writing, software 114ababd922eac5931e0222862ff082dc29e012816Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 124ababd922eac5931e0222862ff082dc29e012816Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134ababd922eac5931e0222862ff082dc29e012816Joe Onorato * See the License for the specific language governing permissions and 144ababd922eac5931e0222862ff082dc29e012816Joe Onorato * limitations under the License. 154ababd922eac5931e0222862ff082dc29e012816Joe Onorato */ 164ababd922eac5931e0222862ff082dc29e012816Joe Onorato 174ababd922eac5931e0222862ff082dc29e012816Joe Onorato#ifndef A_BIT_READER_H_ 184ababd922eac5931e0222862ff082dc29e012816Joe Onorato 194ababd922eac5931e0222862ff082dc29e012816Joe Onorato#define A_BIT_READER_H_ 204ababd922eac5931e0222862ff082dc29e012816Joe Onorato 214ababd922eac5931e0222862ff082dc29e012816Joe Onorato#include <media/stagefright/foundation/ABase.h> 224ababd922eac5931e0222862ff082dc29e012816Joe Onorato 234ababd922eac5931e0222862ff082dc29e012816Joe Onorato#include <sys/types.h> 244ababd922eac5931e0222862ff082dc29e012816Joe Onorato#include <stdint.h> 254ababd922eac5931e0222862ff082dc29e012816Joe Onorato 264ababd922eac5931e0222862ff082dc29e012816Joe Onoratonamespace android { 274ababd922eac5931e0222862ff082dc29e012816Joe Onorato 284ababd922eac5931e0222862ff082dc29e012816Joe Onoratostruct ABitReader { 294ababd922eac5931e0222862ff082dc29e012816Joe Onorato ABitReader(const uint8_t *data, size_t size); 304ababd922eac5931e0222862ff082dc29e012816Joe Onorato 314ababd922eac5931e0222862ff082dc29e012816Joe Onorato uint32_t getBits(size_t n); 324ababd922eac5931e0222862ff082dc29e012816Joe Onorato void skipBits(size_t n); 334ababd922eac5931e0222862ff082dc29e012816Joe Onorato 344ababd922eac5931e0222862ff082dc29e012816Joe Onorato size_t numBitsLeft() const; 354ababd922eac5931e0222862ff082dc29e012816Joe Onorato 364ababd922eac5931e0222862ff082dc29e012816Joe Onorato const uint8_t *data() const; 374ababd922eac5931e0222862ff082dc29e012816Joe Onorato 384ababd922eac5931e0222862ff082dc29e012816Joe Onoratoprivate: 394ababd922eac5931e0222862ff082dc29e012816Joe Onorato const uint8_t *mData; 404ababd922eac5931e0222862ff082dc29e012816Joe Onorato size_t mSize; 414ababd922eac5931e0222862ff082dc29e012816Joe Onorato 424ababd922eac5931e0222862ff082dc29e012816Joe Onorato uint32_t mReservoir; // left-aligned bits 434ababd922eac5931e0222862ff082dc29e012816Joe Onorato size_t mNumBitsLeft; 444ababd922eac5931e0222862ff082dc29e012816Joe Onorato 454ababd922eac5931e0222862ff082dc29e012816Joe Onorato void fillReservoir(); 464ababd922eac5931e0222862ff082dc29e012816Joe Onorato void putBits(uint32_t x, size_t n); 474ababd922eac5931e0222862ff082dc29e012816Joe Onorato 484ababd922eac5931e0222862ff082dc29e012816Joe Onorato DISALLOW_EVIL_CONSTRUCTORS(ABitReader); 494ababd922eac5931e0222862ff082dc29e012816Joe Onorato}; 504ababd922eac5931e0222862ff082dc29e012816Joe Onorato 51a3804cf77f0edd93f6247a055cdafb856b117eecElliott Hughes} // namespace android 524ababd922eac5931e0222862ff082dc29e012816Joe Onorato 534ababd922eac5931e0222862ff082dc29e012816Joe Onorato#endif // A_BIT_READER_H_ 544ababd922eac5931e0222862ff082dc29e012816Joe Onorato