diff options
author | Wei Jia <wjia@google.com> | 2014-09-18 17:36:20 -0700 |
---|---|---|
committer | Wei Jia <wjia@google.com> | 2014-09-19 19:20:58 -0700 |
commit | 96e92b58b7e9647b4c7c2f54b62a1b357ab06b66 (patch) | |
tree | 35b83c45383cf9753b2f48eea71e66d5331165dc /include/media/stagefright | |
parent | 086c1e3f41a92aa0025a1da1db5dabbfdffaf129 (diff) | |
download | frameworks_av-96e92b58b7e9647b4c7c2f54b62a1b357ab06b66.zip frameworks_av-96e92b58b7e9647b4c7c2f54b62a1b357ab06b66.tar.gz frameworks_av-96e92b58b7e9647b4c7c2f54b62a1b357ab06b66.tar.bz2 |
MediaBuffer: ABuffer will release MediaBuffer when it's destructed.
Bug: 17454455
Change-Id: Ia423bcc2e1fa39137f114eac44912ed15357bb99
Diffstat (limited to 'include/media/stagefright')
-rw-r--r-- | include/media/stagefright/MediaBuffer.h | 8 | ||||
-rw-r--r-- | include/media/stagefright/foundation/ABuffer.h | 6 | ||||
-rw-r--r-- | include/media/stagefright/foundation/MediaBufferBase.h | 40 |
3 files changed, 51 insertions, 3 deletions
diff --git a/include/media/stagefright/MediaBuffer.h b/include/media/stagefright/MediaBuffer.h index 3d79596..c8a50e8 100644 --- a/include/media/stagefright/MediaBuffer.h +++ b/include/media/stagefright/MediaBuffer.h @@ -18,6 +18,8 @@ #define MEDIA_BUFFER_H_ +#include <media/stagefright/foundation/MediaBufferBase.h> + #include <pthread.h> #include <utils/Errors.h> @@ -43,7 +45,7 @@ private: MediaBufferObserver &operator=(const MediaBufferObserver &); }; -class MediaBuffer { +class MediaBuffer : public MediaBufferBase { public: // The underlying data remains the responsibility of the caller! MediaBuffer(void *data, size_t size); @@ -56,10 +58,10 @@ public: // Decrements the reference count and returns the buffer to its // associated MediaBufferGroup if the reference count drops to 0. - void release(); + virtual void release(); // Increments the reference count. - void add_ref(); + virtual void add_ref(); void *data() const; size_t size() const; diff --git a/include/media/stagefright/foundation/ABuffer.h b/include/media/stagefright/foundation/ABuffer.h index 602f7ab..6294ee7 100644 --- a/include/media/stagefright/foundation/ABuffer.h +++ b/include/media/stagefright/foundation/ABuffer.h @@ -27,6 +27,7 @@ namespace android { struct AMessage; +class MediaBufferBase; struct ABuffer : public RefBase { ABuffer(size_t capacity); @@ -50,6 +51,9 @@ struct ABuffer : public RefBase { sp<AMessage> meta(); + MediaBufferBase *getMediaBufferBase(); + void setMediaBufferBase(MediaBufferBase *mediaBuffer); + protected: virtual ~ABuffer(); @@ -57,6 +61,8 @@ private: sp<AMessage> mFarewell; sp<AMessage> mMeta; + MediaBufferBase *mMediaBufferBase; + void *mData; size_t mCapacity; size_t mRangeOffset; diff --git a/include/media/stagefright/foundation/MediaBufferBase.h b/include/media/stagefright/foundation/MediaBufferBase.h new file mode 100644 index 0000000..99418fb --- /dev/null +++ b/include/media/stagefright/foundation/MediaBufferBase.h @@ -0,0 +1,40 @@ +/* + * Copyright 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MEDIA_BUFFER_BASE_H_ + +#define MEDIA_BUFFER_BASE_H_ + +namespace android { + +class MediaBufferBase { +public: + MediaBufferBase() {} + + virtual void release() = 0; + virtual void add_ref() = 0; + +protected: + virtual ~MediaBufferBase() {} + +private: + MediaBufferBase(const MediaBufferBase &); + MediaBufferBase &operator=(const MediaBufferBase &); +}; + +} // namespace android + +#endif // MEDIA_BUFFER_BASE_H_ |