summaryrefslogtreecommitdiffstats
path: root/include/media/stagefright/foundation
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2014-06-26 19:55:23 -0700
committerChong Zhang <chz@google.com>2014-07-08 10:18:33 -0700
commit862f8455eaacc1ffb5d8911f0bc7ecc3cf7ec46c (patch)
tree27f7ae818997dde8df89fac5b65fd21180b21911 /include/media/stagefright/foundation
parente8f2c6cfe9afc5b303ab6b0fb51e18ddce512b54 (diff)
downloadframeworks_av-862f8455eaacc1ffb5d8911f0bc7ecc3cf7ec46c.zip
frameworks_av-862f8455eaacc1ffb5d8911f0bc7ecc3cf7ec46c.tar.gz
frameworks_av-862f8455eaacc1ffb5d8911f0bc7ecc3cf7ec46c.tar.bz2
handle emulation_prevention_three_bytes for AVC
bug: 15917805 Change-Id: I824fe7eea807f8faba6b149c31890b7a5df87825
Diffstat (limited to 'include/media/stagefright/foundation')
-rw-r--r--include/media/stagefright/foundation/ABitReader.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/include/media/stagefright/foundation/ABitReader.h b/include/media/stagefright/foundation/ABitReader.h
index 5510b12..c3bf0ff 100644
--- a/include/media/stagefright/foundation/ABitReader.h
+++ b/include/media/stagefright/foundation/ABitReader.h
@@ -25,8 +25,10 @@
namespace android {
-struct ABitReader {
+class ABitReader {
+public:
ABitReader(const uint8_t *data, size_t size);
+ virtual ~ABitReader();
uint32_t getBits(size_t n);
void skipBits(size_t n);
@@ -37,18 +39,32 @@ struct ABitReader {
const uint8_t *data() const;
-private:
+protected:
const uint8_t *mData;
size_t mSize;
uint32_t mReservoir; // left-aligned bits
size_t mNumBitsLeft;
- void fillReservoir();
+ virtual void fillReservoir();
DISALLOW_EVIL_CONSTRUCTORS(ABitReader);
};
+class NALBitReader : public ABitReader {
+public:
+ NALBitReader(const uint8_t *data, size_t size);
+
+ bool atLeastNumBitsLeft(size_t n) const;
+
+private:
+ int32_t mNumZeros;
+
+ virtual void fillReservoir();
+
+ DISALLOW_EVIL_CONSTRUCTORS(NALBitReader);
+};
+
} // namespace android
#endif // A_BIT_READER_H_