Expose functionality to convert TextureBuffer to I420.

Bug: webrtc:8392
Change-Id: I79682efbef3aecbba904aa5047b229833fae25e8
Reviewed-on: https://webrtc-review.googlesource.com/8940
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20313}
This commit is contained in:
Sami Kalliomäki
2017-10-16 11:20:26 +02:00
committed by Commit Bot
parent 6bf43d2818
commit cb98b11b71
11 changed files with 227 additions and 95 deletions

View File

@ -11,7 +11,8 @@
#include "rtc_base/refcount.h"
#include "sdk/android/src/jni/jni_helpers.h"
namespace webrtc_jni {
namespace webrtc {
namespace jni {
JNI_FUNCTION_DECLARATION(void,
JniCommon_nativeAddRef,
@ -31,4 +32,24 @@ JNI_FUNCTION_DECLARATION(void,
->Release();
}
} // namespace webrtc_jni
JNI_FUNCTION_DECLARATION(jobject,
JniCommon_allocateNativeByteBuffer,
JNIEnv* jni,
jclass,
jint size) {
void* new_data = ::operator new(size);
jobject byte_buffer = jni->NewDirectByteBuffer(new_data, size);
return byte_buffer;
}
JNI_FUNCTION_DECLARATION(void,
JniCommon_freeNativeByteBuffer,
JNIEnv* jni,
jclass,
jobject byte_buffer) {
void* data = jni->GetDirectBufferAddress(byte_buffer);
::operator delete(data);
}
} // namespace jni
} // namespace webrtc

View File

@ -306,6 +306,8 @@ rtc::scoped_refptr<I420BufferInterface> AndroidTextureBuffer::ToI420() {
JNIEnv* jni = AttachCurrentThreadIfNeeded();
ScopedLocalRefFrame local_ref_frame(jni);
// TODO(sakal): This call to a deperecated method will be removed when
// AndroidTextureBuffer is removed.
jmethodID transform_mid = GetMethodID(
jni,
GetObjectClass(jni, surface_texture_helper_),

View File

@ -65,23 +65,5 @@ Java_org_webrtc_VideoFileRenderer_nativeI420Scale(JNIEnv* jni,
}
}
extern "C" JNIEXPORT jobject JNICALL
Java_org_webrtc_VideoFileRenderer_nativeCreateNativeByteBuffer(JNIEnv* jni,
jclass,
jint size) {
void* new_data = ::operator new(size);
jobject byte_buffer = jni->NewDirectByteBuffer(new_data, size);
return byte_buffer;
}
extern "C" JNIEXPORT void JNICALL
Java_org_webrtc_VideoFileRenderer_nativeFreeNativeByteBuffer(
JNIEnv* jni,
jclass,
jobject byte_buffer) {
void* data = jni->GetDirectBufferAddress(byte_buffer);
::operator delete(data);
}
} // namespace jni
} // namespace webrtc