summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wonsik Kim <wonsik@google.com> 2016-09-27 15:23:35 +0900
committer Wonsik Kim <wonsik@google.com> 2016-09-30 20:07:04 +0900
commit4273dd03a83fd5f9ba25f3b7c3a4add7bce7206c (patch)
tree7a6f28b4c676c53fe3082be4106cf2c88e9bb134
parent2e0a36c4cb739833718a079ea200b6579d1ffde4 (diff)
MediaCodec refactoring part 1-a: buffers become separate class
MediaCodecBuffer is meant to replace ABuffer and MediaBuffer in communication between framework components. As the first step, replace use of ABuffer in MediaCodec with MediaCodecBuffer, and adjust related classes accordingly. MediaCodec.getBuffer() and related APIs now returns MediaCodecBuffers; thus change MediaCodec clients to use MediaCodecBuffer accordingly. Test: manually tested for key use cases (Camera, YouTube and Play Movies) Change-Id: Iba7ce131645e75ce5ddbf497fb793ab38b7f245b
-rw-r--r--media/jni/android_media_MediaCodec.cpp12
-rw-r--r--media/jni/android_media_MediaCodec.h3
2 files changed, 9 insertions, 6 deletions
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 810996ec79a7..c2c66fdb6ca9 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -32,6 +32,7 @@
#include <gui/Surface.h>
#include <media/ICrypto.h>
+#include <media/MediaCodecBuffer.h>
#include <media/stagefright/MediaCodec.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
@@ -407,7 +408,7 @@ status_t JMediaCodec::getOutputFormat(JNIEnv *env, size_t index, jobject *format
status_t JMediaCodec::getBuffers(
JNIEnv *env, bool input, jobjectArray *bufArray) const {
- Vector<sp<ABuffer> > buffers;
+ Vector<sp<MediaCodecBuffer> > buffers;
status_t err =
input
@@ -425,7 +426,7 @@ status_t JMediaCodec::getBuffers(
}
for (size_t i = 0; i < buffers.size(); ++i) {
- const sp<ABuffer> &buffer = buffers.itemAt(i);
+ const sp<MediaCodecBuffer> &buffer = buffers.itemAt(i);
jobject byteBuffer = NULL;
err = createByteBufferFromABuffer(
@@ -446,8 +447,9 @@ status_t JMediaCodec::getBuffers(
}
// static
+template <typename T>
status_t JMediaCodec::createByteBufferFromABuffer(
- JNIEnv *env, bool readOnly, bool clearBuffer, const sp<ABuffer> &buffer,
+ JNIEnv *env, bool readOnly, bool clearBuffer, const sp<T> &buffer,
jobject *buf) const {
// if this is an ABuffer that doesn't actually hold any accessible memory,
// use a null ByteBuffer
@@ -492,7 +494,7 @@ status_t JMediaCodec::createByteBufferFromABuffer(
status_t JMediaCodec::getBuffer(
JNIEnv *env, bool input, size_t index, jobject *buf) const {
- sp<ABuffer> buffer;
+ sp<MediaCodecBuffer> buffer;
status_t err =
input
@@ -509,7 +511,7 @@ status_t JMediaCodec::getBuffer(
status_t JMediaCodec::getImage(
JNIEnv *env, bool input, size_t index, jobject *buf) const {
- sp<ABuffer> buffer;
+ sp<MediaCodecBuffer> buffer;
status_t err =
input
diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h
index c0c47ef2aeda..88b566a62dff 100644
--- a/media/jni/android_media_MediaCodec.h
+++ b/media/jni/android_media_MediaCodec.h
@@ -146,8 +146,9 @@ private:
status_t mInitStatus;
+ template <typename T>
status_t createByteBufferFromABuffer(
- JNIEnv *env, bool readOnly, bool clearBuffer, const sp<ABuffer> &buffer,
+ JNIEnv *env, bool readOnly, bool clearBuffer, const sp<T> &buffer,
jobject *buf) const;
void cacheJavaObjects(JNIEnv *env);