Android: Update convenience macro defining JNI-accessible methods
Update the name of the macro to something more descriptive and use variable length arguments to make it work better with autoformatting tools. BUG=None Review-Url: https://codereview.webrtc.org/2998403002 Cr-Commit-Position: refs/heads/master@{#19538}
This commit is contained in:
parent
0ac35775d9
commit
09f3f6eb26
@ -18,22 +18,36 @@
|
||||
// Enables collection of native histograms and creating them.
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(jlong, Histogram_nativeCreateCounts)
|
||||
(JNIEnv* jni, jclass, jstring j_name, jint min, jint max, jint buckets) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
Histogram_nativeCreateCounts,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_name,
|
||||
jint min,
|
||||
jint max,
|
||||
jint buckets) {
|
||||
std::string name = JavaToStdString(jni, j_name);
|
||||
return jlongFromPointer(
|
||||
webrtc::metrics::HistogramFactoryGetCounts(name, min, max, buckets));
|
||||
}
|
||||
|
||||
JOW(jlong, Histogram_nativeCreateEnumeration)
|
||||
(JNIEnv* jni, jclass, jstring j_name, jint max) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
Histogram_nativeCreateEnumeration,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_name,
|
||||
jint max) {
|
||||
std::string name = JavaToStdString(jni, j_name);
|
||||
return jlongFromPointer(
|
||||
webrtc::metrics::HistogramFactoryGetEnumeration(name, max));
|
||||
}
|
||||
|
||||
JOW(void, Histogram_nativeAddSample)
|
||||
(JNIEnv* jni, jclass, jlong histogram, jint sample) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
Histogram_nativeAddSample,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong histogram,
|
||||
jint sample) {
|
||||
if (histogram) {
|
||||
HistogramAdd(reinterpret_cast<webrtc::metrics::Histogram*>(histogram),
|
||||
sample);
|
||||
|
||||
@ -1476,17 +1476,18 @@ void MediaCodecVideoEncoderFactory::DestroyVideoEncoder(
|
||||
delete encoder;
|
||||
}
|
||||
|
||||
JOW(void, MediaCodecVideoEncoder_nativeFillBuffer)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_encoder,
|
||||
jint input_buffer,
|
||||
jobject j_buffer_y,
|
||||
jint stride_y,
|
||||
jobject j_buffer_u,
|
||||
jint stride_u,
|
||||
jobject j_buffer_v,
|
||||
jint stride_v) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
MediaCodecVideoEncoder_nativeFillBuffer,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_encoder,
|
||||
jint input_buffer,
|
||||
jobject j_buffer_y,
|
||||
jint stride_y,
|
||||
jobject j_buffer_u,
|
||||
jint stride_u,
|
||||
jobject j_buffer_v,
|
||||
jint stride_v) {
|
||||
uint8_t* buffer_y =
|
||||
static_cast<uint8_t*>(jni->GetDirectBufferAddress(j_buffer_y));
|
||||
uint8_t* buffer_u =
|
||||
|
||||
@ -19,12 +19,15 @@
|
||||
// Enables collection of native histograms and creating them.
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(void, Metrics_nativeEnable)(JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(void, Metrics_nativeEnable, JNIEnv* jni, jclass) {
|
||||
webrtc::metrics::Enable();
|
||||
}
|
||||
|
||||
// Gets and clears native histograms.
|
||||
JOW(jobject, Metrics_nativeGetAndReset)(JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
Metrics_nativeGetAndReset,
|
||||
JNIEnv* jni,
|
||||
jclass) {
|
||||
jclass j_metrics_class = jni->FindClass("org/webrtc/Metrics");
|
||||
jmethodID j_add =
|
||||
GetMethodID(jni, j_metrics_class, "add",
|
||||
|
||||
@ -14,11 +14,6 @@
|
||||
#include "webrtc/sdk/android/src/jni/androidvideotracksource.h"
|
||||
#include "webrtc/sdk/android/src/jni/classreferenceholder.h"
|
||||
|
||||
// Identifiers are over 80 characters long so this is needed to fit them on one
|
||||
// line.
|
||||
#define JOW_OBSERVER_METHOD(rettype, name) \
|
||||
JOW(rettype, AndroidVideoTrackSourceObserver_##name)
|
||||
|
||||
static webrtc::VideoRotation jintToVideoRotation(jint rotation) {
|
||||
RTC_DCHECK(rotation == 0 || rotation == 90 || rotation == 180 ||
|
||||
rotation == 270);
|
||||
@ -34,16 +29,18 @@ static webrtc::AndroidVideoTrackSource* AndroidVideoTrackSourceFromJavaProxy(
|
||||
proxy_source->internal());
|
||||
}
|
||||
|
||||
JOW_OBSERVER_METHOD(void, nativeOnByteBufferFrameCaptured)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jbyteArray j_frame,
|
||||
jint length,
|
||||
jint width,
|
||||
jint height,
|
||||
jint rotation,
|
||||
jlong timestamp) {
|
||||
JNI_FUNCTION_DECLARATION(
|
||||
void,
|
||||
AndroidVideoTrackSourceObserver_nativeOnByteBufferFrameCaptured,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jbyteArray j_frame,
|
||||
jint length,
|
||||
jint width,
|
||||
jint height,
|
||||
jint rotation,
|
||||
jlong timestamp) {
|
||||
webrtc::AndroidVideoTrackSource* source =
|
||||
AndroidVideoTrackSourceFromJavaProxy(j_source);
|
||||
jbyte* bytes = jni->GetByteArrayElements(j_frame, nullptr);
|
||||
@ -52,16 +49,18 @@ JOW_OBSERVER_METHOD(void, nativeOnByteBufferFrameCaptured)
|
||||
jni->ReleaseByteArrayElements(j_frame, bytes, JNI_ABORT);
|
||||
}
|
||||
|
||||
JOW_OBSERVER_METHOD(void, nativeOnTextureFrameCaptured)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jint j_width,
|
||||
jint j_height,
|
||||
jint j_oes_texture_id,
|
||||
jfloatArray j_transform_matrix,
|
||||
jint j_rotation,
|
||||
jlong j_timestamp) {
|
||||
JNI_FUNCTION_DECLARATION(
|
||||
void,
|
||||
AndroidVideoTrackSourceObserver_nativeOnTextureFrameCaptured,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jint j_width,
|
||||
jint j_height,
|
||||
jint j_oes_texture_id,
|
||||
jfloatArray j_transform_matrix,
|
||||
jint j_rotation,
|
||||
jlong j_timestamp) {
|
||||
webrtc::AndroidVideoTrackSource* source =
|
||||
AndroidVideoTrackSourceFromJavaProxy(j_source);
|
||||
source->OnTextureFrameCaptured(
|
||||
@ -69,15 +68,16 @@ JOW_OBSERVER_METHOD(void, nativeOnTextureFrameCaptured)
|
||||
NativeHandleImpl(jni, j_oes_texture_id, j_transform_matrix));
|
||||
}
|
||||
|
||||
JOW_OBSERVER_METHOD(void, nativeOnFrameCaptured)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jint j_width,
|
||||
jint j_height,
|
||||
jint j_rotation,
|
||||
jlong j_timestamp_ns,
|
||||
jobject j_video_frame_buffer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
AndroidVideoTrackSourceObserver_nativeOnFrameCaptured,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jint j_width,
|
||||
jint j_height,
|
||||
jint j_rotation,
|
||||
jlong j_timestamp_ns,
|
||||
jobject j_video_frame_buffer) {
|
||||
webrtc::AndroidVideoTrackSource* source =
|
||||
AndroidVideoTrackSourceFromJavaProxy(j_source);
|
||||
source->OnFrameCaptured(jni, j_width, j_height, j_timestamp_ns,
|
||||
@ -85,8 +85,12 @@ JOW_OBSERVER_METHOD(void, nativeOnFrameCaptured)
|
||||
j_video_frame_buffer);
|
||||
}
|
||||
|
||||
JOW_OBSERVER_METHOD(void, nativeCapturerStarted)
|
||||
(JNIEnv* jni, jclass, jlong j_source, jboolean j_success) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
AndroidVideoTrackSourceObserver_nativeCapturerStarted,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jboolean j_success) {
|
||||
LOG(LS_INFO) << "AndroidVideoTrackSourceObserve_nativeCapturerStarted";
|
||||
webrtc::AndroidVideoTrackSource* source =
|
||||
AndroidVideoTrackSourceFromJavaProxy(j_source);
|
||||
@ -95,16 +99,25 @@ JOW_OBSERVER_METHOD(void, nativeCapturerStarted)
|
||||
: webrtc::AndroidVideoTrackSource::SourceState::kEnded);
|
||||
}
|
||||
|
||||
JOW_OBSERVER_METHOD(void, nativeCapturerStopped)
|
||||
(JNIEnv* jni, jclass, jlong j_source) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
AndroidVideoTrackSourceObserver_nativeCapturerStopped,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source) {
|
||||
LOG(LS_INFO) << "AndroidVideoTrackSourceObserve_nativeCapturerStopped";
|
||||
webrtc::AndroidVideoTrackSource* source =
|
||||
AndroidVideoTrackSourceFromJavaProxy(j_source);
|
||||
source->SetState(webrtc::AndroidVideoTrackSource::SourceState::kEnded);
|
||||
}
|
||||
|
||||
JOW(void, VideoSource_nativeAdaptOutputFormat)
|
||||
(JNIEnv* jni, jclass, jlong j_source, jint j_width, jint j_height, jint j_fps) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
VideoSource_nativeAdaptOutputFormat,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_source,
|
||||
jint j_width,
|
||||
jint j_height,
|
||||
jint j_fps) {
|
||||
LOG(LS_INFO) << "VideoSource_nativeAdaptOutputFormat";
|
||||
webrtc::AndroidVideoTrackSource* source =
|
||||
AndroidVideoTrackSourceFromJavaProxy(j_source);
|
||||
|
||||
@ -36,20 +36,8 @@
|
||||
|
||||
// Convenience macro defining JNI-accessible methods in the org.webrtc package.
|
||||
// Eliminates unnecessary boilerplate and line-wraps, reducing visual clutter.
|
||||
//
|
||||
// TODO(deadbeef): Rename this macro to something like
|
||||
// "JNI_FUNCTION_DECLARATION", and use variable length arguments, such that you
|
||||
// can write:
|
||||
//
|
||||
// JNI_FUNCTION_DECLARATION(void, nativeFoo, Type arg1, Type arg2) { ...
|
||||
//
|
||||
// Instead of:
|
||||
//
|
||||
// JNI_FUNCTION_DECLARATION(void, nativeFoo)(Type arg1, Type arg2) { ...
|
||||
//
|
||||
// The latter gets handled poorly by autoformatting tools.
|
||||
#define JOW(rettype, name) \
|
||||
extern "C" JNIEXPORT rettype JNICALL Java_org_webrtc_##name
|
||||
#define JNI_FUNCTION_DECLARATION(rettype, name, ...) \
|
||||
extern "C" JNIEXPORT rettype JNICALL Java_org_webrtc_##name(__VA_ARGS__)
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
|
||||
@ -389,18 +389,22 @@ AndroidNetworkMonitorFactory::CreateNetworkMonitor() {
|
||||
return new AndroidNetworkMonitor();
|
||||
}
|
||||
|
||||
JOW(void, NetworkMonitor_nativeNotifyConnectionTypeChanged)
|
||||
(JNIEnv* jni, jobject j_monitor, jlong j_native_monitor) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
NetworkMonitor_nativeNotifyConnectionTypeChanged,
|
||||
JNIEnv* jni,
|
||||
jobject j_monitor,
|
||||
jlong j_native_monitor) {
|
||||
rtc::NetworkMonitorInterface* network_monitor =
|
||||
reinterpret_cast<rtc::NetworkMonitorInterface*>(j_native_monitor);
|
||||
network_monitor->OnNetworksChanged();
|
||||
}
|
||||
|
||||
JOW(void, NetworkMonitor_nativeNotifyOfActiveNetworkList)
|
||||
(JNIEnv* jni,
|
||||
jobject j_monitor,
|
||||
jlong j_native_monitor,
|
||||
jobjectArray j_network_infos) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
NetworkMonitor_nativeNotifyOfActiveNetworkList,
|
||||
JNIEnv* jni,
|
||||
jobject j_monitor,
|
||||
jlong j_native_monitor,
|
||||
jobjectArray j_network_infos) {
|
||||
AndroidNetworkMonitor* network_monitor =
|
||||
reinterpret_cast<AndroidNetworkMonitor*>(j_native_monitor);
|
||||
std::vector<NetworkInformation> network_infos;
|
||||
@ -413,11 +417,12 @@ JOW(void, NetworkMonitor_nativeNotifyOfActiveNetworkList)
|
||||
network_monitor->SetNetworkInfos(network_infos);
|
||||
}
|
||||
|
||||
JOW(void, NetworkMonitor_nativeNotifyOfNetworkConnect)
|
||||
(JNIEnv* jni,
|
||||
jobject j_monitor,
|
||||
jlong j_native_monitor,
|
||||
jobject j_network_info) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
NetworkMonitor_nativeNotifyOfNetworkConnect,
|
||||
JNIEnv* jni,
|
||||
jobject j_monitor,
|
||||
jlong j_native_monitor,
|
||||
jobject j_network_info) {
|
||||
AndroidNetworkMonitor* network_monitor =
|
||||
reinterpret_cast<AndroidNetworkMonitor*>(j_native_monitor);
|
||||
NetworkInformation network_info =
|
||||
@ -425,8 +430,12 @@ JOW(void, NetworkMonitor_nativeNotifyOfNetworkConnect)
|
||||
network_monitor->OnNetworkConnected(network_info);
|
||||
}
|
||||
|
||||
JOW(void, NetworkMonitor_nativeNotifyOfNetworkDisconnect)
|
||||
(JNIEnv* jni, jobject j_monitor, jlong j_native_monitor, jlong network_handle) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
NetworkMonitor_nativeNotifyOfNetworkDisconnect,
|
||||
JNIEnv* jni,
|
||||
jobject j_monitor,
|
||||
jlong j_native_monitor,
|
||||
jlong network_handle) {
|
||||
AndroidNetworkMonitor* network_monitor =
|
||||
reinterpret_cast<AndroidNetworkMonitor*>(j_native_monitor);
|
||||
network_monitor->OnNetworkDisconnected(
|
||||
|
||||
@ -13,8 +13,12 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(void, AudioTrack_nativeSetVolume)
|
||||
(JNIEnv*, jclass, jlong j_p, jdouble volume) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
AudioTrack_nativeSetVolume,
|
||||
JNIEnv*,
|
||||
jclass,
|
||||
jlong j_p,
|
||||
jdouble volume) {
|
||||
rtc::scoped_refptr<webrtc::AudioSourceInterface> source(
|
||||
reinterpret_cast<webrtc::AudioTrackInterface*>(j_p)->GetSource());
|
||||
source->SetVolume(volume);
|
||||
|
||||
@ -13,8 +13,13 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)
|
||||
(JNIEnv* jni, jclass, jstring j_dirPath, jint j_maxFileSize, jint j_severity) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
CallSessionFileRotatingLogSink_nativeAddSink,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_dirPath,
|
||||
jint j_maxFileSize,
|
||||
jint j_severity) {
|
||||
std::string dir_path = JavaToStdString(jni, j_dirPath);
|
||||
rtc::CallSessionFileRotatingLogSink* sink =
|
||||
new rtc::CallSessionFileRotatingLogSink(dir_path, j_maxFileSize);
|
||||
@ -30,16 +35,22 @@ JOW(jlong, CallSessionFileRotatingLogSink_nativeAddSink)
|
||||
return (jlong)sink;
|
||||
}
|
||||
|
||||
JOW(void, CallSessionFileRotatingLogSink_nativeDeleteSink)
|
||||
(JNIEnv* jni, jclass, jlong j_sink) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
CallSessionFileRotatingLogSink_nativeDeleteSink,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_sink) {
|
||||
rtc::CallSessionFileRotatingLogSink* sink =
|
||||
reinterpret_cast<rtc::CallSessionFileRotatingLogSink*>(j_sink);
|
||||
rtc::LogMessage::RemoveLogToStream(sink);
|
||||
delete sink;
|
||||
}
|
||||
|
||||
JOW(jbyteArray, CallSessionFileRotatingLogSink_nativeGetLogData)
|
||||
(JNIEnv* jni, jclass, jstring j_dirPath) {
|
||||
JNI_FUNCTION_DECLARATION(jbyteArray,
|
||||
CallSessionFileRotatingLogSink_nativeGetLogData,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_dirPath) {
|
||||
std::string dir_path = JavaToStdString(jni, j_dirPath);
|
||||
std::unique_ptr<rtc::CallSessionFileRotatingStream> stream(
|
||||
new rtc::CallSessionFileRotatingStream(dir_path));
|
||||
|
||||
@ -24,49 +24,68 @@ static webrtc::DataChannelInterface* ExtractNativeDC(JNIEnv* jni,
|
||||
return reinterpret_cast<webrtc::DataChannelInterface*>(j_d);
|
||||
}
|
||||
|
||||
JOW(jlong, DataChannel_registerObserverNative)
|
||||
(JNIEnv* jni, jobject j_dc, jobject j_observer) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
DataChannel_registerObserverNative,
|
||||
JNIEnv* jni,
|
||||
jobject j_dc,
|
||||
jobject j_observer) {
|
||||
std::unique_ptr<DataChannelObserverJni> observer(
|
||||
new DataChannelObserverJni(jni, j_observer));
|
||||
ExtractNativeDC(jni, j_dc)->RegisterObserver(observer.get());
|
||||
return jlongFromPointer(observer.release());
|
||||
}
|
||||
|
||||
JOW(void, DataChannel_unregisterObserverNative)
|
||||
(JNIEnv* jni, jobject j_dc, jlong native_observer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
DataChannel_unregisterObserverNative,
|
||||
JNIEnv* jni,
|
||||
jobject j_dc,
|
||||
jlong native_observer) {
|
||||
ExtractNativeDC(jni, j_dc)->UnregisterObserver();
|
||||
delete reinterpret_cast<DataChannelObserverJni*>(native_observer);
|
||||
}
|
||||
|
||||
JOW(jstring, DataChannel_label)(JNIEnv* jni, jobject j_dc) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
DataChannel_label,
|
||||
JNIEnv* jni,
|
||||
jobject j_dc) {
|
||||
return JavaStringFromStdString(jni, ExtractNativeDC(jni, j_dc)->label());
|
||||
}
|
||||
|
||||
JOW(jint, DataChannel_id)(JNIEnv* jni, jobject j_dc) {
|
||||
JNI_FUNCTION_DECLARATION(jint, DataChannel_id, JNIEnv* jni, jobject j_dc) {
|
||||
int id = ExtractNativeDC(jni, j_dc)->id();
|
||||
RTC_CHECK_LE(id, std::numeric_limits<int32_t>::max())
|
||||
<< "id overflowed jint!";
|
||||
return static_cast<jint>(id);
|
||||
}
|
||||
|
||||
JOW(jobject, DataChannel_state)(JNIEnv* jni, jobject j_dc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
DataChannel_state,
|
||||
JNIEnv* jni,
|
||||
jobject j_dc) {
|
||||
return JavaEnumFromIndexAndClassName(jni, "DataChannel$State",
|
||||
ExtractNativeDC(jni, j_dc)->state());
|
||||
}
|
||||
|
||||
JOW(jlong, DataChannel_bufferedAmount)(JNIEnv* jni, jobject j_dc) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
DataChannel_bufferedAmount,
|
||||
JNIEnv* jni,
|
||||
jobject j_dc) {
|
||||
uint64_t buffered_amount = ExtractNativeDC(jni, j_dc)->buffered_amount();
|
||||
RTC_CHECK_LE(buffered_amount, std::numeric_limits<int64_t>::max())
|
||||
<< "buffered_amount overflowed jlong!";
|
||||
return static_cast<jlong>(buffered_amount);
|
||||
}
|
||||
|
||||
JOW(void, DataChannel_close)(JNIEnv* jni, jobject j_dc) {
|
||||
JNI_FUNCTION_DECLARATION(void, DataChannel_close, JNIEnv* jni, jobject j_dc) {
|
||||
ExtractNativeDC(jni, j_dc)->Close();
|
||||
}
|
||||
|
||||
JOW(jboolean, DataChannel_sendNative)
|
||||
(JNIEnv* jni, jobject j_dc, jbyteArray data, jboolean binary) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
DataChannel_sendNative,
|
||||
JNIEnv* jni,
|
||||
jobject j_dc,
|
||||
jbyteArray data,
|
||||
jboolean binary) {
|
||||
jbyte* bytes = jni->GetByteArrayElements(data, NULL);
|
||||
bool ret = ExtractNativeDC(jni, j_dc)->Send(webrtc::DataBuffer(
|
||||
rtc::CopyOnWriteBuffer(bytes, jni->GetArrayLength(data)), binary));
|
||||
@ -74,7 +93,7 @@ JOW(jboolean, DataChannel_sendNative)
|
||||
return ret;
|
||||
}
|
||||
|
||||
JOW(void, DataChannel_dispose)(JNIEnv* jni, jobject j_dc) {
|
||||
JNI_FUNCTION_DECLARATION(void, DataChannel_dispose, JNIEnv* jni, jobject j_dc) {
|
||||
CHECK_RELEASE(ExtractNativeDC(jni, j_dc));
|
||||
}
|
||||
|
||||
|
||||
@ -13,44 +13,60 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(jboolean, DtmfSender_nativeCanInsertDtmf)
|
||||
(JNIEnv* jni, jclass, jlong j_dtmf_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
DtmfSender_nativeCanInsertDtmf,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_dtmf_sender_pointer) {
|
||||
return reinterpret_cast<webrtc::DtmfSenderInterface*>(j_dtmf_sender_pointer)
|
||||
->CanInsertDtmf();
|
||||
}
|
||||
|
||||
JOW(jboolean, DtmfSender_nativeInsertDtmf)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_dtmf_sender_pointer,
|
||||
jstring tones,
|
||||
jint duration,
|
||||
jint inter_tone_gap) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
DtmfSender_nativeInsertDtmf,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_dtmf_sender_pointer,
|
||||
jstring tones,
|
||||
jint duration,
|
||||
jint inter_tone_gap) {
|
||||
return reinterpret_cast<webrtc::DtmfSenderInterface*>(j_dtmf_sender_pointer)
|
||||
->InsertDtmf(JavaToStdString(jni, tones), duration, inter_tone_gap);
|
||||
}
|
||||
|
||||
JOW(jstring, DtmfSender_nativeTones)
|
||||
(JNIEnv* jni, jclass, jlong j_dtmf_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
DtmfSender_nativeTones,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_dtmf_sender_pointer) {
|
||||
return JavaStringFromStdString(
|
||||
jni, reinterpret_cast<webrtc::DtmfSenderInterface*>(j_dtmf_sender_pointer)
|
||||
->tones());
|
||||
}
|
||||
|
||||
JOW(jint, DtmfSender_nativeDuration)
|
||||
(JNIEnv* jni, jclass, jlong j_dtmf_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jint,
|
||||
DtmfSender_nativeDuration,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_dtmf_sender_pointer) {
|
||||
return reinterpret_cast<webrtc::DtmfSenderInterface*>(j_dtmf_sender_pointer)
|
||||
->duration();
|
||||
}
|
||||
|
||||
JOW(jint, DtmfSender_nativeInterToneGap)
|
||||
(JNIEnv* jni, jclass, jlong j_dtmf_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jint,
|
||||
DtmfSender_nativeInterToneGap,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_dtmf_sender_pointer) {
|
||||
return reinterpret_cast<webrtc::DtmfSenderInterface*>(j_dtmf_sender_pointer)
|
||||
->inter_tone_gap();
|
||||
}
|
||||
|
||||
JOW(void, DtmfSender_free)
|
||||
(JNIEnv* jni, jclass, jlong j_dtmf_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
DtmfSender_free,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_dtmf_sender_pointer) {
|
||||
reinterpret_cast<webrtc::DtmfSenderInterface*>(j_dtmf_sender_pointer)
|
||||
->Release();
|
||||
}
|
||||
|
||||
@ -17,8 +17,12 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(void, Logging_nativeEnableTracing)
|
||||
(JNIEnv* jni, jclass, jstring j_path, jint nativeLevels) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
Logging_nativeEnableTracing,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_path,
|
||||
jint nativeLevels) {
|
||||
std::string path = JavaToStdString(jni, j_path);
|
||||
if (nativeLevels != webrtc::kTraceNone) {
|
||||
webrtc::Trace::set_level_filter(nativeLevels);
|
||||
@ -34,24 +38,38 @@ JOW(void, Logging_nativeEnableTracing)
|
||||
}
|
||||
}
|
||||
|
||||
JOW(void, Logging_nativeEnableLogToDebugOutput)
|
||||
(JNIEnv* jni, jclass, jint nativeSeverity) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
Logging_nativeEnableLogToDebugOutput,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jint nativeSeverity) {
|
||||
if (nativeSeverity >= rtc::LS_SENSITIVE && nativeSeverity <= rtc::LS_NONE) {
|
||||
rtc::LogMessage::LogToDebug(
|
||||
static_cast<rtc::LoggingSeverity>(nativeSeverity));
|
||||
}
|
||||
}
|
||||
|
||||
JOW(void, Logging_nativeEnableLogThreads)(JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
Logging_nativeEnableLogThreads,
|
||||
JNIEnv* jni,
|
||||
jclass) {
|
||||
rtc::LogMessage::LogThreads(true);
|
||||
}
|
||||
|
||||
JOW(void, Logging_nativeEnableLogTimeStamps)(JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
Logging_nativeEnableLogTimeStamps,
|
||||
JNIEnv* jni,
|
||||
jclass) {
|
||||
rtc::LogMessage::LogTimestamps(true);
|
||||
}
|
||||
|
||||
JOW(void, Logging_nativeLog)
|
||||
(JNIEnv* jni, jclass, jint j_severity, jstring j_tag, jstring j_message) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
Logging_nativeLog,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jint j_severity,
|
||||
jstring j_tag,
|
||||
jstring j_message) {
|
||||
std::string message = JavaToStdString(jni, j_message);
|
||||
std::string tag = JavaToStdString(jni, j_tag);
|
||||
LOG_TAG(static_cast<rtc::LoggingSeverity>(j_severity), tag) << message;
|
||||
|
||||
@ -13,11 +13,15 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(void, MediaSource_free)(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void, MediaSource_free, JNIEnv*, jclass, jlong j_p) {
|
||||
reinterpret_cast<rtc::RefCountInterface*>(j_p)->Release();
|
||||
}
|
||||
|
||||
JOW(jobject, MediaSource_nativeState)(JNIEnv* jni, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
MediaSource_nativeState,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
rtc::scoped_refptr<webrtc::MediaSourceInterface> p(
|
||||
reinterpret_cast<webrtc::MediaSourceInterface*>(j_p));
|
||||
return JavaEnumFromIndexAndClassName(jni, "MediaSource$State", p->state());
|
||||
|
||||
@ -13,36 +13,56 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(jboolean, MediaStream_nativeAddAudioTrack)
|
||||
(JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
MediaStream_nativeAddAudioTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong pointer,
|
||||
jlong j_audio_track_pointer) {
|
||||
return reinterpret_cast<webrtc::MediaStreamInterface*>(pointer)->AddTrack(
|
||||
reinterpret_cast<webrtc::AudioTrackInterface*>(j_audio_track_pointer));
|
||||
}
|
||||
|
||||
JOW(jboolean, MediaStream_nativeAddVideoTrack)
|
||||
(JNIEnv* jni, jclass, jlong pointer, jlong j_video_track_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
MediaStream_nativeAddVideoTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong pointer,
|
||||
jlong j_video_track_pointer) {
|
||||
return reinterpret_cast<webrtc::MediaStreamInterface*>(pointer)->AddTrack(
|
||||
reinterpret_cast<webrtc::VideoTrackInterface*>(j_video_track_pointer));
|
||||
}
|
||||
|
||||
JOW(jboolean, MediaStream_nativeRemoveAudioTrack)
|
||||
(JNIEnv* jni, jclass, jlong pointer, jlong j_audio_track_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
MediaStream_nativeRemoveAudioTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong pointer,
|
||||
jlong j_audio_track_pointer) {
|
||||
return reinterpret_cast<webrtc::MediaStreamInterface*>(pointer)->RemoveTrack(
|
||||
reinterpret_cast<webrtc::AudioTrackInterface*>(j_audio_track_pointer));
|
||||
}
|
||||
|
||||
JOW(jboolean, MediaStream_nativeRemoveVideoTrack)
|
||||
(JNIEnv* jni, jclass, jlong pointer, jlong j_video_track_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
MediaStream_nativeRemoveVideoTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong pointer,
|
||||
jlong j_video_track_pointer) {
|
||||
return reinterpret_cast<webrtc::MediaStreamInterface*>(pointer)->RemoveTrack(
|
||||
reinterpret_cast<webrtc::VideoTrackInterface*>(j_video_track_pointer));
|
||||
}
|
||||
|
||||
JOW(jstring, MediaStream_nativeLabel)(JNIEnv* jni, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
MediaStream_nativeLabel,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
return JavaStringFromStdString(
|
||||
jni, reinterpret_cast<webrtc::MediaStreamInterface*>(j_p)->label());
|
||||
}
|
||||
|
||||
JOW(void, MediaStream_free)(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void, MediaStream_free, JNIEnv*, jclass, jlong j_p) {
|
||||
CHECK_RELEASE(reinterpret_cast<webrtc::MediaStreamInterface*>(j_p));
|
||||
}
|
||||
|
||||
|
||||
@ -13,32 +13,56 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(void, MediaStreamTrack_free)(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
MediaStreamTrack_free,
|
||||
JNIEnv*,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
reinterpret_cast<webrtc::MediaStreamTrackInterface*>(j_p)->Release();
|
||||
}
|
||||
|
||||
JOW(jstring, MediaStreamTrack_nativeId)(JNIEnv* jni, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
MediaStreamTrack_nativeId,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
return JavaStringFromStdString(
|
||||
jni, reinterpret_cast<webrtc::MediaStreamTrackInterface*>(j_p)->id());
|
||||
}
|
||||
|
||||
JOW(jstring, MediaStreamTrack_nativeKind)(JNIEnv* jni, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
MediaStreamTrack_nativeKind,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
return JavaStringFromStdString(
|
||||
jni, reinterpret_cast<webrtc::MediaStreamTrackInterface*>(j_p)->kind());
|
||||
}
|
||||
|
||||
JOW(jboolean, MediaStreamTrack_nativeEnabled)(JNIEnv* jni, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
MediaStreamTrack_nativeEnabled,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
return reinterpret_cast<webrtc::MediaStreamTrackInterface*>(j_p)->enabled();
|
||||
}
|
||||
|
||||
JOW(jobject, MediaStreamTrack_nativeState)(JNIEnv* jni, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
MediaStreamTrack_nativeState,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
return JavaEnumFromIndexAndClassName(
|
||||
jni, "MediaStreamTrack$State",
|
||||
reinterpret_cast<webrtc::MediaStreamTrackInterface*>(j_p)->state());
|
||||
}
|
||||
|
||||
JOW(jboolean, MediaStreamTrack_nativeSetEnabled)
|
||||
(JNIEnv* jni, jclass, jlong j_p, jboolean enabled) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
MediaStreamTrack_nativeSetEnabled,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_p,
|
||||
jboolean enabled) {
|
||||
return reinterpret_cast<webrtc::MediaStreamTrackInterface*>(j_p)->set_enabled(
|
||||
enabled);
|
||||
}
|
||||
|
||||
@ -57,30 +57,48 @@ static rtc::scoped_refptr<webrtc::PeerConnectionInterface> ExtractNativePC(
|
||||
reinterpret_cast<webrtc::PeerConnectionInterface*>(j_p));
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_freePeerConnection)(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_freePeerConnection,
|
||||
JNIEnv*,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
CHECK_RELEASE(reinterpret_cast<webrtc::PeerConnectionInterface*>(j_p));
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_freeObserver)(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_freeObserver,
|
||||
JNIEnv*,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
PeerConnectionObserverJni* p =
|
||||
reinterpret_cast<PeerConnectionObserverJni*>(j_p);
|
||||
delete p;
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_getLocalDescription)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_getLocalDescription,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
const webrtc::SessionDescriptionInterface* sdp =
|
||||
ExtractNativePC(jni, j_pc)->local_description();
|
||||
return sdp ? NativeToJavaSessionDescription(jni, sdp) : NULL;
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_getRemoteDescription)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_getRemoteDescription,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
const webrtc::SessionDescriptionInterface* sdp =
|
||||
ExtractNativePC(jni, j_pc)->remote_description();
|
||||
return sdp ? NativeToJavaSessionDescription(jni, sdp) : NULL;
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_createDataChannel)
|
||||
(JNIEnv* jni, jobject j_pc, jstring j_label, jobject j_init) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_createDataChannel,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jstring j_label,
|
||||
jobject j_init) {
|
||||
webrtc::DataChannelInit init = JavaToNativeDataChannelInit(jni, j_init);
|
||||
rtc::scoped_refptr<webrtc::DataChannelInterface> channel(
|
||||
ExtractNativePC(jni, j_pc)->CreateDataChannel(
|
||||
@ -105,8 +123,12 @@ JOW(jobject, PeerConnection_createDataChannel)
|
||||
return j_channel;
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_createOffer)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_observer, jobject j_constraints) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_createOffer,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_observer,
|
||||
jobject j_constraints) {
|
||||
MediaConstraintsJni* constraints =
|
||||
new MediaConstraintsJni(jni, j_constraints);
|
||||
rtc::scoped_refptr<CreateSdpObserverJni> observer(
|
||||
@ -115,8 +137,12 @@ JOW(void, PeerConnection_createOffer)
|
||||
ExtractNativePC(jni, j_pc)->CreateOffer(observer, constraints);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_createAnswer)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_observer, jobject j_constraints) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_createAnswer,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_observer,
|
||||
jobject j_constraints) {
|
||||
MediaConstraintsJni* constraints =
|
||||
new MediaConstraintsJni(jni, j_constraints);
|
||||
rtc::scoped_refptr<CreateSdpObserverJni> observer(
|
||||
@ -125,24 +151,36 @@ JOW(void, PeerConnection_createAnswer)
|
||||
ExtractNativePC(jni, j_pc)->CreateAnswer(observer, constraints);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_setLocalDescription)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_observer, jobject j_sdp) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_setLocalDescription,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_observer,
|
||||
jobject j_sdp) {
|
||||
rtc::scoped_refptr<SetSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<SetSdpObserverJni>(jni, j_observer, nullptr));
|
||||
ExtractNativePC(jni, j_pc)->SetLocalDescription(
|
||||
observer, JavaToNativeSessionDescription(jni, j_sdp));
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_setRemoteDescription)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_observer, jobject j_sdp) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_setRemoteDescription,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_observer,
|
||||
jobject j_sdp) {
|
||||
rtc::scoped_refptr<SetSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<SetSdpObserverJni>(jni, j_observer, nullptr));
|
||||
ExtractNativePC(jni, j_pc)->SetRemoteDescription(
|
||||
observer, JavaToNativeSessionDescription(jni, j_sdp));
|
||||
}
|
||||
|
||||
JOW(jboolean, PeerConnection_nativeSetConfiguration)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_rtc_config, jlong native_observer) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
PeerConnection_nativeSetConfiguration,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_rtc_config,
|
||||
jlong native_observer) {
|
||||
// Need to merge constraints into RTCConfiguration again, which are stored
|
||||
// in the observer object.
|
||||
PeerConnectionObserverJni* observer =
|
||||
@ -154,12 +192,13 @@ JOW(jboolean, PeerConnection_nativeSetConfiguration)
|
||||
return ExtractNativePC(jni, j_pc)->SetConfiguration(rtc_config);
|
||||
}
|
||||
|
||||
JOW(jboolean, PeerConnection_nativeAddIceCandidate)
|
||||
(JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jstring j_sdp_mid,
|
||||
jint j_sdp_mline_index,
|
||||
jstring j_candidate_sdp) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
PeerConnection_nativeAddIceCandidate,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jstring j_sdp_mid,
|
||||
jint j_sdp_mline_index,
|
||||
jstring j_candidate_sdp) {
|
||||
std::string sdp_mid = JavaToStdString(jni, j_sdp_mid);
|
||||
std::string sdp = JavaToStdString(jni, j_candidate_sdp);
|
||||
std::unique_ptr<webrtc::IceCandidateInterface> candidate(
|
||||
@ -167,8 +206,11 @@ JOW(jboolean, PeerConnection_nativeAddIceCandidate)
|
||||
return ExtractNativePC(jni, j_pc)->AddIceCandidate(candidate.get());
|
||||
}
|
||||
|
||||
JOW(jboolean, PeerConnection_nativeRemoveIceCandidates)
|
||||
(JNIEnv* jni, jobject j_pc, jobjectArray j_candidates) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
PeerConnection_nativeRemoveIceCandidates,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobjectArray j_candidates) {
|
||||
std::vector<cricket::Candidate> candidates;
|
||||
size_t num_candidates = jni->GetArrayLength(j_candidates);
|
||||
for (size_t i = 0; i < num_candidates; ++i) {
|
||||
@ -178,20 +220,30 @@ JOW(jboolean, PeerConnection_nativeRemoveIceCandidates)
|
||||
return ExtractNativePC(jni, j_pc)->RemoveIceCandidates(candidates);
|
||||
}
|
||||
|
||||
JOW(jboolean, PeerConnection_nativeAddLocalStream)
|
||||
(JNIEnv* jni, jobject j_pc, jlong native_stream) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
PeerConnection_nativeAddLocalStream,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jlong native_stream) {
|
||||
return ExtractNativePC(jni, j_pc)->AddStream(
|
||||
reinterpret_cast<webrtc::MediaStreamInterface*>(native_stream));
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_nativeRemoveLocalStream)
|
||||
(JNIEnv* jni, jobject j_pc, jlong native_stream) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_nativeRemoveLocalStream,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jlong native_stream) {
|
||||
ExtractNativePC(jni, j_pc)->RemoveStream(
|
||||
reinterpret_cast<webrtc::MediaStreamInterface*>(native_stream));
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_nativeCreateSender)
|
||||
(JNIEnv* jni, jobject j_pc, jstring j_kind, jstring j_stream_id) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_nativeCreateSender,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jstring j_kind,
|
||||
jstring j_stream_id) {
|
||||
jclass j_rtp_sender_class = FindClass(jni, "org/webrtc/RtpSender");
|
||||
jmethodID j_rtp_sender_ctor =
|
||||
GetMethodID(jni, j_rtp_sender_class, "<init>", "(J)V");
|
||||
@ -213,7 +265,10 @@ JOW(jobject, PeerConnection_nativeCreateSender)
|
||||
return j_sender;
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_nativeGetSenders)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_nativeGetSenders,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
jclass j_array_list_class = FindClass(jni, "java/util/ArrayList");
|
||||
jmethodID j_array_list_ctor =
|
||||
GetMethodID(jni, j_array_list_class, "<init>", "()V");
|
||||
@ -241,7 +296,10 @@ JOW(jobject, PeerConnection_nativeGetSenders)(JNIEnv* jni, jobject j_pc) {
|
||||
return j_senders;
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_nativeGetReceivers)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_nativeGetReceivers,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
jclass j_array_list_class = FindClass(jni, "java/util/ArrayList");
|
||||
jmethodID j_array_list_ctor =
|
||||
GetMethodID(jni, j_array_list_class, "<init>", "()V");
|
||||
@ -268,8 +326,12 @@ JOW(jobject, PeerConnection_nativeGetReceivers)(JNIEnv* jni, jobject j_pc) {
|
||||
return j_receivers;
|
||||
}
|
||||
|
||||
JOW(bool, PeerConnection_nativeOldGetStats)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_observer, jlong native_track) {
|
||||
JNI_FUNCTION_DECLARATION(bool,
|
||||
PeerConnection_nativeOldGetStats,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_observer,
|
||||
jlong native_track) {
|
||||
rtc::scoped_refptr<StatsObserverJni> observer(
|
||||
new rtc::RefCountedObject<StatsObserverJni>(jni, j_observer));
|
||||
return ExtractNativePC(jni, j_pc)->GetStats(
|
||||
@ -278,16 +340,24 @@ JOW(bool, PeerConnection_nativeOldGetStats)
|
||||
webrtc::PeerConnectionInterface::kStatsOutputLevelStandard);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_nativeNewGetStats)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_callback) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_nativeNewGetStats,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_callback) {
|
||||
rtc::scoped_refptr<RTCStatsCollectorCallbackWrapper> callback(
|
||||
new rtc::RefCountedObject<RTCStatsCollectorCallbackWrapper>(jni,
|
||||
j_callback));
|
||||
ExtractNativePC(jni, j_pc)->GetStats(callback);
|
||||
}
|
||||
|
||||
JOW(jboolean, PeerConnection_setBitrate)
|
||||
(JNIEnv* jni, jobject j_pc, jobject j_min, jobject j_current, jobject j_max) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
PeerConnection_setBitrate,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
jobject j_min,
|
||||
jobject j_current,
|
||||
jobject j_max) {
|
||||
webrtc::PeerConnectionInterface::BitrateParameters params;
|
||||
jclass j_integer_class = jni->FindClass("java/lang/Integer");
|
||||
jmethodID int_value_id = GetMethodID(jni, j_integer_class, "intValue", "()I");
|
||||
@ -306,38 +376,57 @@ JOW(jboolean, PeerConnection_setBitrate)
|
||||
return ExtractNativePC(jni, j_pc)->SetBitrate(params).ok();
|
||||
}
|
||||
|
||||
JOW(bool, PeerConnection_nativeStartRtcEventLog)
|
||||
(JNIEnv* jni, jobject j_pc, int file_descriptor, int max_size_bytes) {
|
||||
JNI_FUNCTION_DECLARATION(bool,
|
||||
PeerConnection_nativeStartRtcEventLog,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc,
|
||||
int file_descriptor,
|
||||
int max_size_bytes) {
|
||||
return ExtractNativePC(jni, j_pc)->StartRtcEventLog(file_descriptor,
|
||||
max_size_bytes);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_nativeStopRtcEventLog)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_nativeStopRtcEventLog,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
ExtractNativePC(jni, j_pc)->StopRtcEventLog();
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_signalingState)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_signalingState,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
webrtc::PeerConnectionInterface::SignalingState state =
|
||||
ExtractNativePC(jni, j_pc)->signaling_state();
|
||||
return JavaEnumFromIndexAndClassName(jni, "PeerConnection$SignalingState",
|
||||
state);
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_iceConnectionState)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_iceConnectionState,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
webrtc::PeerConnectionInterface::IceConnectionState state =
|
||||
ExtractNativePC(jni, j_pc)->ice_connection_state();
|
||||
return JavaEnumFromIndexAndClassName(jni, "PeerConnection$IceConnectionState",
|
||||
state);
|
||||
}
|
||||
|
||||
JOW(jobject, PeerConnection_iceGatheringState)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
PeerConnection_iceGatheringState,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
webrtc::PeerConnectionInterface::IceGatheringState state =
|
||||
ExtractNativePC(jni, j_pc)->ice_gathering_state();
|
||||
return JavaEnumFromIndexAndClassName(jni, "PeerConnection$IceGatheringState",
|
||||
state);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnection_close)(JNIEnv* jni, jobject j_pc) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnection_close,
|
||||
JNIEnv* jni,
|
||||
jobject j_pc) {
|
||||
ExtractNativePC(jni, j_pc)->Close();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -47,13 +47,20 @@ static char* field_trials_init_string = nullptr;
|
||||
static bool factory_static_initialized = false;
|
||||
static bool video_hw_acceleration_enabled = true;
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreateObserver)
|
||||
(JNIEnv* jni, jclass, jobject j_observer) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
PeerConnectionFactory_nativeCreateObserver,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jobject j_observer) {
|
||||
return (jlong) new PeerConnectionObserverJni(jni, j_observer);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_nativeInitializeAndroidGlobals)
|
||||
(JNIEnv* jni, jclass, jobject context, jboolean video_hw_acceleration) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_nativeInitializeAndroidGlobals,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jobject context,
|
||||
jboolean video_hw_acceleration) {
|
||||
video_hw_acceleration_enabled = video_hw_acceleration;
|
||||
if (!factory_static_initialized) {
|
||||
webrtc::JVM::Initialize(GetJVM());
|
||||
@ -61,8 +68,11 @@ JOW(void, PeerConnectionFactory_nativeInitializeAndroidGlobals)
|
||||
}
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_initializeFieldTrials)
|
||||
(JNIEnv* jni, jclass, jstring j_trials_init_string) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_initializeFieldTrials,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_trials_init_string) {
|
||||
field_trials_init_string = NULL;
|
||||
if (j_trials_init_string != NULL) {
|
||||
const char* init_string =
|
||||
@ -76,18 +86,27 @@ JOW(void, PeerConnectionFactory_initializeFieldTrials)
|
||||
webrtc::field_trial::InitFieldTrialsFromString(field_trials_init_string);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_initializeInternalTracer)(JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_initializeInternalTracer,
|
||||
JNIEnv* jni,
|
||||
jclass) {
|
||||
rtc::tracing::SetupInternalTracer();
|
||||
}
|
||||
|
||||
JOW(jstring, PeerConnectionFactory_nativeFieldTrialsFindFullName)
|
||||
(JNIEnv* jni, jclass, jstring j_name) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
PeerConnectionFactory_nativeFieldTrialsFindFullName,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_name) {
|
||||
return JavaStringFromStdString(
|
||||
jni, webrtc::field_trial::FindFullName(JavaToStdString(jni, j_name)));
|
||||
}
|
||||
|
||||
JOW(jboolean, PeerConnectionFactory_startInternalTracingCapture)
|
||||
(JNIEnv* jni, jclass, jstring j_event_tracing_filename) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
PeerConnectionFactory_startInternalTracingCapture,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jstring j_event_tracing_filename) {
|
||||
if (!j_event_tracing_filename)
|
||||
return false;
|
||||
|
||||
@ -99,21 +118,28 @@ JOW(jboolean, PeerConnectionFactory_startInternalTracingCapture)
|
||||
return ret;
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_stopInternalTracingCapture)
|
||||
(JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_stopInternalTracingCapture,
|
||||
JNIEnv* jni,
|
||||
jclass) {
|
||||
rtc::tracing::StopInternalCapture();
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_shutdownInternalTracer)(JNIEnv* jni, jclass) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_shutdownInternalTracer,
|
||||
JNIEnv* jni,
|
||||
jclass) {
|
||||
rtc::tracing::ShutdownInternalTracer();
|
||||
}
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnectionFactory)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jobject joptions,
|
||||
jobject jencoder_factory,
|
||||
jobject jdecoder_factory) {
|
||||
JNI_FUNCTION_DECLARATION(
|
||||
jlong,
|
||||
PeerConnectionFactory_nativeCreatePeerConnectionFactory,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jobject joptions,
|
||||
jobject jencoder_factory,
|
||||
jobject jdecoder_factory) {
|
||||
// talk/ assumes pretty widely that the current Thread is ThreadManager'd, but
|
||||
// ThreadManager only WrapCurrentThread()s the thread where it is first
|
||||
// created. Since the semantics around when auto-wrapping happens in
|
||||
@ -190,7 +216,11 @@ JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnectionFactory)
|
||||
return jlongFromPointer(owned_factory);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_nativeFreeFactory)(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_nativeFreeFactory,
|
||||
JNIEnv*,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
delete reinterpret_cast<OwnedFactoryAndThreads*>(j_p);
|
||||
if (field_trials_init_string) {
|
||||
webrtc::field_trial::InitFieldTrialsFromString(NULL);
|
||||
@ -200,15 +230,22 @@ JOW(void, PeerConnectionFactory_nativeFreeFactory)(JNIEnv*, jclass, jlong j_p) {
|
||||
webrtc::Trace::ReturnTrace();
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_nativeThreadsCallbacks)
|
||||
(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_nativeThreadsCallbacks,
|
||||
JNIEnv*,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
OwnedFactoryAndThreads* factory =
|
||||
reinterpret_cast<OwnedFactoryAndThreads*>(j_p);
|
||||
factory->InvokeJavaCallbacksOnFactoryThreads();
|
||||
}
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreateLocalMediaStream)
|
||||
(JNIEnv* jni, jclass, jlong native_factory, jstring label) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
PeerConnectionFactory_nativeCreateLocalMediaStream,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jstring label) {
|
||||
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
||||
factoryFromJava(native_factory));
|
||||
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream(
|
||||
@ -216,8 +253,12 @@ JOW(jlong, PeerConnectionFactory_nativeCreateLocalMediaStream)
|
||||
return (jlong)stream.release();
|
||||
}
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreateAudioSource)
|
||||
(JNIEnv* jni, jclass, jlong native_factory, jobject j_constraints) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
PeerConnectionFactory_nativeCreateAudioSource,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jobject j_constraints) {
|
||||
std::unique_ptr<MediaConstraintsJni> constraints(
|
||||
new MediaConstraintsJni(jni, j_constraints));
|
||||
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
||||
@ -229,8 +270,13 @@ JOW(jlong, PeerConnectionFactory_nativeCreateAudioSource)
|
||||
return (jlong)source.release();
|
||||
}
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreateAudioTrack)
|
||||
(JNIEnv* jni, jclass, jlong native_factory, jstring id, jlong native_source) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
PeerConnectionFactory_nativeCreateAudioTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jstring id,
|
||||
jlong native_source) {
|
||||
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
||||
factoryFromJava(native_factory));
|
||||
rtc::scoped_refptr<webrtc::AudioTrackInterface> track(
|
||||
@ -240,26 +286,34 @@ JOW(jlong, PeerConnectionFactory_nativeCreateAudioTrack)
|
||||
return (jlong)track.release();
|
||||
}
|
||||
|
||||
JOW(jboolean, PeerConnectionFactory_nativeStartAecDump)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jint file,
|
||||
jint filesize_limit_bytes) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
PeerConnectionFactory_nativeStartAecDump,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jint file,
|
||||
jint filesize_limit_bytes) {
|
||||
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
||||
factoryFromJava(native_factory));
|
||||
return factory->StartAecDump(file, filesize_limit_bytes);
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_nativeStopAecDump)
|
||||
(JNIEnv* jni, jclass, jlong native_factory) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_nativeStopAecDump,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory) {
|
||||
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
||||
factoryFromJava(native_factory));
|
||||
factory->StopAecDump();
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_nativeSetOptions)
|
||||
(JNIEnv* jni, jclass, jlong native_factory, jobject options) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
PeerConnectionFactory_nativeSetOptions,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jobject options) {
|
||||
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
||||
factoryFromJava(native_factory));
|
||||
webrtc::PeerConnectionFactoryInterface::Options options_to_set =
|
||||
@ -277,13 +331,14 @@ JOW(void, PeerConnectionFactory_nativeSetOptions)
|
||||
}
|
||||
}
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreatePeerConnection)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong factory,
|
||||
jobject j_rtc_config,
|
||||
jobject j_constraints,
|
||||
jlong observer_p) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
PeerConnectionFactory_nativeCreatePeerConnection,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong factory,
|
||||
jobject j_rtc_config,
|
||||
jobject j_constraints,
|
||||
jlong observer_p) {
|
||||
rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> f(
|
||||
reinterpret_cast<webrtc::PeerConnectionFactoryInterface*>(
|
||||
factoryFromJava(factory)));
|
||||
|
||||
@ -15,16 +15,24 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(jlong, RtpReceiver_nativeGetTrack)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer, jlong j_track_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
RtpReceiver_nativeGetTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_receiver_pointer,
|
||||
jlong j_track_pointer) {
|
||||
return jlongFromPointer(
|
||||
reinterpret_cast<webrtc::RtpReceiverInterface*>(j_rtp_receiver_pointer)
|
||||
->track()
|
||||
.release());
|
||||
}
|
||||
|
||||
JOW(jboolean, RtpReceiver_nativeSetParameters)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer, jobject j_parameters) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
RtpReceiver_nativeSetParameters,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_receiver_pointer,
|
||||
jobject j_parameters) {
|
||||
if (IsNull(jni, j_parameters)) {
|
||||
return false;
|
||||
}
|
||||
@ -34,30 +42,43 @@ JOW(jboolean, RtpReceiver_nativeSetParameters)
|
||||
->SetParameters(parameters);
|
||||
}
|
||||
|
||||
JOW(jobject, RtpReceiver_nativeGetParameters)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
RtpReceiver_nativeGetParameters,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_receiver_pointer) {
|
||||
webrtc::RtpParameters parameters =
|
||||
reinterpret_cast<webrtc::RtpReceiverInterface*>(j_rtp_receiver_pointer)
|
||||
->GetParameters();
|
||||
return NativeToJavaRtpParameters(jni, parameters);
|
||||
}
|
||||
|
||||
JOW(jstring, RtpReceiver_nativeId)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
RtpReceiver_nativeId,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_receiver_pointer) {
|
||||
return JavaStringFromStdString(
|
||||
jni,
|
||||
reinterpret_cast<webrtc::RtpReceiverInterface*>(j_rtp_receiver_pointer)
|
||||
->id());
|
||||
}
|
||||
|
||||
JOW(void, RtpReceiver_free)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
RtpReceiver_free,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_receiver_pointer) {
|
||||
reinterpret_cast<webrtc::RtpReceiverInterface*>(j_rtp_receiver_pointer)
|
||||
->Release();
|
||||
}
|
||||
|
||||
JOW(jlong, RtpReceiver_nativeSetObserver)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer, jobject j_observer) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
RtpReceiver_nativeSetObserver,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_receiver_pointer,
|
||||
jobject j_observer) {
|
||||
RtpReceiverObserverJni* rtpReceiverObserver =
|
||||
new RtpReceiverObserverJni(jni, j_observer);
|
||||
reinterpret_cast<webrtc::RtpReceiverInterface*>(j_rtp_receiver_pointer)
|
||||
@ -65,8 +86,12 @@ JOW(jlong, RtpReceiver_nativeSetObserver)
|
||||
return jlongFromPointer(rtpReceiverObserver);
|
||||
}
|
||||
|
||||
JOW(void, RtpReceiver_nativeUnsetObserver)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_receiver_pointer, jlong j_observer_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
RtpReceiver_nativeUnsetObserver,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_receiver_pointer,
|
||||
jlong j_observer_pointer) {
|
||||
reinterpret_cast<webrtc::RtpReceiverInterface*>(j_rtp_receiver_pointer)
|
||||
->SetObserver(nullptr);
|
||||
RtpReceiverObserverJni* observer =
|
||||
|
||||
@ -14,31 +14,45 @@
|
||||
|
||||
namespace webrtc_jni {
|
||||
|
||||
JOW(jboolean, RtpSender_nativeSetTrack)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jlong j_track_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
RtpSender_nativeSetTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_sender_pointer,
|
||||
jlong j_track_pointer) {
|
||||
return reinterpret_cast<webrtc::RtpSenderInterface*>(j_rtp_sender_pointer)
|
||||
->SetTrack(reinterpret_cast<webrtc::MediaStreamTrackInterface*>(
|
||||
j_track_pointer));
|
||||
}
|
||||
|
||||
JOW(jlong, RtpSender_nativeGetTrack)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
RtpSender_nativeGetTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_sender_pointer) {
|
||||
return jlongFromPointer(
|
||||
reinterpret_cast<webrtc::RtpSenderInterface*>(j_rtp_sender_pointer)
|
||||
->track()
|
||||
.release());
|
||||
}
|
||||
|
||||
JOW(jlong, RtpSender_nativeGetDtmfSender)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
RtpSender_nativeGetDtmfSender,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_sender_pointer) {
|
||||
return jlongFromPointer(
|
||||
reinterpret_cast<webrtc::RtpSenderInterface*>(j_rtp_sender_pointer)
|
||||
->GetDtmfSender()
|
||||
.release());
|
||||
}
|
||||
|
||||
JOW(jboolean, RtpSender_nativeSetParameters)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer, jobject j_parameters) {
|
||||
JNI_FUNCTION_DECLARATION(jboolean,
|
||||
RtpSender_nativeSetParameters,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_sender_pointer,
|
||||
jobject j_parameters) {
|
||||
if (IsNull(jni, j_parameters)) {
|
||||
return false;
|
||||
}
|
||||
@ -48,22 +62,32 @@ JOW(jboolean, RtpSender_nativeSetParameters)
|
||||
->SetParameters(parameters);
|
||||
}
|
||||
|
||||
JOW(jobject, RtpSender_nativeGetParameters)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jobject,
|
||||
RtpSender_nativeGetParameters,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_sender_pointer) {
|
||||
webrtc::RtpParameters parameters =
|
||||
reinterpret_cast<webrtc::RtpSenderInterface*>(j_rtp_sender_pointer)
|
||||
->GetParameters();
|
||||
return NativeToJavaRtpParameters(jni, parameters);
|
||||
}
|
||||
|
||||
JOW(jstring, RtpSender_nativeId)
|
||||
(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(jstring,
|
||||
RtpSender_nativeId,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_sender_pointer) {
|
||||
return JavaStringFromStdString(
|
||||
jni, reinterpret_cast<webrtc::RtpSenderInterface*>(j_rtp_sender_pointer)
|
||||
->id());
|
||||
}
|
||||
|
||||
JOW(void, RtpSender_free)(JNIEnv* jni, jclass, jlong j_rtp_sender_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
RtpSender_free,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_rtp_sender_pointer) {
|
||||
reinterpret_cast<webrtc::RtpSenderInterface*>(j_rtp_sender_pointer)
|
||||
->Release();
|
||||
}
|
||||
|
||||
@ -57,12 +57,13 @@ jobject GetJavaSurfaceTextureHelper(
|
||||
: nullptr;
|
||||
}
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreateVideoSource)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jobject j_surface_texture_helper,
|
||||
jboolean is_screencast) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
PeerConnectionFactory_nativeCreateVideoSource,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jobject j_surface_texture_helper,
|
||||
jboolean is_screencast) {
|
||||
OwnedFactoryAndThreads* factory =
|
||||
reinterpret_cast<OwnedFactoryAndThreads*>(native_factory);
|
||||
|
||||
@ -77,8 +78,13 @@ JOW(jlong, PeerConnectionFactory_nativeCreateVideoSource)
|
||||
return (jlong)proxy_source.release();
|
||||
}
|
||||
|
||||
JOW(jlong, PeerConnectionFactory_nativeCreateVideoTrack)
|
||||
(JNIEnv* jni, jclass, jlong native_factory, jstring id, jlong native_source) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
PeerConnectionFactory_nativeCreateVideoTrack,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jstring id,
|
||||
jlong native_source) {
|
||||
rtc::scoped_refptr<PeerConnectionFactoryInterface> factory(
|
||||
factoryFromJava(native_factory));
|
||||
rtc::scoped_refptr<webrtc::VideoTrackInterface> track(
|
||||
@ -88,12 +94,14 @@ JOW(jlong, PeerConnectionFactory_nativeCreateVideoTrack)
|
||||
return (jlong)track.release();
|
||||
}
|
||||
|
||||
JOW(void, PeerConnectionFactory_nativeSetVideoHwAccelerationOptions)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jobject local_egl_context,
|
||||
jobject remote_egl_context) {
|
||||
JNI_FUNCTION_DECLARATION(
|
||||
void,
|
||||
PeerConnectionFactory_nativeSetVideoHwAccelerationOptions,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong native_factory,
|
||||
jobject local_egl_context,
|
||||
jobject remote_egl_context) {
|
||||
OwnedFactoryAndThreads* owned_factory =
|
||||
reinterpret_cast<OwnedFactoryAndThreads*>(native_factory);
|
||||
|
||||
|
||||
@ -135,31 +135,42 @@ class JavaVideoRendererWrapper
|
||||
ScopedGlobalRef<jclass> j_byte_buffer_class_;
|
||||
};
|
||||
|
||||
JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
VideoRenderer_freeWrappedVideoRenderer,
|
||||
JNIEnv*,
|
||||
jclass,
|
||||
jlong j_p) {
|
||||
delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p);
|
||||
}
|
||||
|
||||
JOW(void, VideoRenderer_releaseNativeFrame)
|
||||
(JNIEnv* jni, jclass, jlong j_frame_ptr) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
VideoRenderer_releaseNativeFrame,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_frame_ptr) {
|
||||
delete reinterpret_cast<const webrtc::VideoFrame*>(j_frame_ptr);
|
||||
}
|
||||
|
||||
JOW(jlong, VideoRenderer_nativeWrapVideoRenderer)
|
||||
(JNIEnv* jni, jclass, jobject j_callbacks) {
|
||||
JNI_FUNCTION_DECLARATION(jlong,
|
||||
VideoRenderer_nativeWrapVideoRenderer,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jobject j_callbacks) {
|
||||
std::unique_ptr<JavaVideoRendererWrapper> renderer(
|
||||
new JavaVideoRendererWrapper(jni, j_callbacks));
|
||||
return (jlong)renderer.release();
|
||||
}
|
||||
|
||||
JOW(void, VideoRenderer_nativeCopyPlane)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jobject j_src_buffer,
|
||||
jint width,
|
||||
jint height,
|
||||
jint src_stride,
|
||||
jobject j_dst_buffer,
|
||||
jint dst_stride) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
VideoRenderer_nativeCopyPlane,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jobject j_src_buffer,
|
||||
jint width,
|
||||
jint height,
|
||||
jint src_stride,
|
||||
jobject j_dst_buffer,
|
||||
jint dst_stride) {
|
||||
size_t src_size = jni->GetDirectBufferCapacity(j_src_buffer);
|
||||
size_t dst_size = jni->GetDirectBufferCapacity(j_dst_buffer);
|
||||
RTC_CHECK(src_stride >= width) << "Wrong source stride " << src_stride;
|
||||
|
||||
@ -299,13 +299,14 @@ rtc::Optional<uint8_t> VideoDecoderWrapper::ParseQP(
|
||||
return qp;
|
||||
}
|
||||
|
||||
JOW(void, VideoDecoderWrapperCallback_nativeOnDecodedFrame)
|
||||
(JNIEnv* jni,
|
||||
jclass,
|
||||
jlong jnative_decoder,
|
||||
jobject jframe,
|
||||
jobject jdecode_time_ms,
|
||||
jobject jqp) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
VideoDecoderWrapperCallback_nativeOnDecodedFrame,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong jnative_decoder,
|
||||
jobject jframe,
|
||||
jobject jdecode_time_ms,
|
||||
jobject jqp) {
|
||||
VideoDecoderWrapper* native_decoder =
|
||||
reinterpret_cast<VideoDecoderWrapper*>(jnative_decoder);
|
||||
native_decoder->OnDecodedFrame(jni, jframe, jdecode_time_ms, jqp);
|
||||
|
||||
@ -46,13 +46,19 @@ jobject WrapI420Buffer(
|
||||
return j_wrapped_native_i420_buffer;
|
||||
}
|
||||
|
||||
JOW(void, WrappedNativeI420Buffer_nativeAddRef)
|
||||
(JNIEnv* jni, jclass, jlong j_buffer_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
WrappedNativeI420Buffer_nativeAddRef,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_buffer_pointer) {
|
||||
reinterpret_cast<webrtc::VideoFrameBuffer*>(j_buffer_pointer)->AddRef();
|
||||
}
|
||||
|
||||
JOW(void, WrappedNativeI420Buffer_nativeRelease)
|
||||
(JNIEnv* jni, jclass, jlong j_buffer_pointer) {
|
||||
JNI_FUNCTION_DECLARATION(void,
|
||||
WrappedNativeI420Buffer_nativeRelease,
|
||||
JNIEnv* jni,
|
||||
jclass,
|
||||
jlong j_buffer_pointer) {
|
||||
reinterpret_cast<webrtc::VideoFrameBuffer*>(j_buffer_pointer)->Release();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user