summaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2014-09-22 16:03:02 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-09-22 16:03:03 +0000
commit0079b331227fc1555d7c5305f33917a570d44890 (patch)
tree9426b791e1d7e14ee3cba19ab38f09d7da7ade83 /include/media
parent39e07162be0680fd30bec7be50628883aa912ffd (diff)
parent96e92b58b7e9647b4c7c2f54b62a1b357ab06b66 (diff)
downloadframeworks_av-0079b331227fc1555d7c5305f33917a570d44890.zip
frameworks_av-0079b331227fc1555d7c5305f33917a570d44890.tar.gz
frameworks_av-0079b331227fc1555d7c5305f33917a570d44890.tar.bz2
Merge "MediaBuffer: ABuffer will release MediaBuffer when it's destructed." into lmp-dev
Diffstat (limited to 'include/media')
-rw-r--r--include/media/stagefright/MediaBuffer.h8
-rw-r--r--include/media/stagefright/foundation/ABuffer.h6
-rw-r--r--include/media/stagefright/foundation/MediaBufferBase.h40
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_