webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
Classes | Namespaces | Macros | Functions | Variables
peerconnection_jni.cc File Reference
#include <jni.h>
#include <limits>
#include <memory>
#include <utility>
#include "third_party/libyuv/include/libyuv/convert_from.h"
#include "third_party/libyuv/include/libyuv/scale.h"
#include "webrtc/api/mediaconstraintsinterface.h"
#include "webrtc/api/peerconnectioninterface.h"
#include "webrtc/api/rtpreceiverinterface.h"
#include "webrtc/api/rtpsenderinterface.h"
#include "webrtc/api/videosourceproxy.h"
#include "webrtc/base/bind.h"
#include "webrtc/base/checks.h"
#include "webrtc/base/event_tracer.h"
#include "webrtc/base/logging.h"
#include "webrtc/base/logsinks.h"
#include "webrtc/base/messagequeue.h"
#include "webrtc/base/networkmonitor.h"
#include "webrtc/base/rtccertificategenerator.h"
#include "webrtc/base/ssladapter.h"
#include "webrtc/base/stringutils.h"
#include "webrtc/media/base/videocapturer.h"
#include "webrtc/media/engine/webrtcvideodecoderfactory.h"
#include "webrtc/media/engine/webrtcvideoencoderfactory.h"
#include "webrtc/system_wrappers/include/field_trial.h"
#include "webrtc/pc/webrtcsdp.h"
#include "webrtc/sdk/android/src/jni/androidmediadecoder_jni.h"
#include "webrtc/sdk/android/src/jni/androidmediaencoder_jni.h"
#include "webrtc/sdk/android/src/jni/androidnetworkmonitor_jni.h"
#include "webrtc/sdk/android/src/jni/androidvideotracksource.h"
#include "webrtc/sdk/android/src/jni/classreferenceholder.h"
#include "webrtc/sdk/android/src/jni/jni_helpers.h"
#include "webrtc/sdk/android/src/jni/native_handle_impl.h"
#include "webrtc/system_wrappers/include/field_trial_default.h"
#include "webrtc/system_wrappers/include/logcat_trace_context.h"
#include "webrtc/system_wrappers/include/trace.h"
#include "webrtc/voice_engine/include/voe_base.h"

Classes

class  webrtc_jni::PCOJava
 
class  webrtc_jni::ConstraintsWrapper
 
class  webrtc_jni::SdpObserverWrapper< T >
 
class  webrtc_jni::CreateSdpObserverWrapper
 
class  webrtc_jni::SetSdpObserverWrapper
 
class  webrtc_jni::DataChannelObserverWrapper
 
class  webrtc_jni::StatsObserverWrapper
 
class  webrtc_jni::JavaVideoRendererWrapper
 
class  webrtc_jni::RtpReceiverObserver
 

Namespaces

 webrtc_jni
 

Macros

#define JNIEXPORT   __attribute__((visibility("default")))
 

Functions

 webrtc_jni::JOW (jlong, DataChannel_registerObserverNative)(JNIEnv *jni
 
 webrtc_jni::ExtractNativeDC (jni, j_dc) -> RegisterObserver(observer.get())
 
return webrtc_jni::jlongFromPointer (observer.release())
 
 webrtc_jni::JOW (void, DataChannel_unregisterObserverNative)(JNIEnv *jni
 
delete webrtc_jni::reinterpret_cast< DataChannelObserverWrapper * > (native_observer)
 
 webrtc_jni::JOW (jstring, DataChannel_label)(JNIEnv *jni
 
 webrtc_jni::JOW (jint, DataChannel_id)(JNIEnv *jni
 
 webrtc_jni::JOW (jlong, DataChannel_bufferedAmount)(JNIEnv *jni
 
 webrtc_jni::JOW (jboolean, DataChannel_sendNative)(JNIEnv *jni
 
jni webrtc_jni::ReleaseByteArrayElements (data, bytes, JNI_ABORT)
 
 webrtc_jni::JOW (void, DataChannel_dispose)(JNIEnv *jni
 
 webrtc_jni::JOW (void, Logging_nativeEnableTracing)(JNIEnv *jni
 
 webrtc_jni::if (nativeLevels !=webrtc::kTraceNone)
 
PeerConnectionFactoryInterface::Options webrtc_jni::ParseOptionsFromJava (JNIEnv *jni, jobject options)
 
 webrtc_jni::JOW (jlong, PeerConnectionFactory_nativeCreatePeerConnectionFactory)(JNIEnv *jni
 
network_thread webrtc_jni::SetName ("network_thread", nullptr)
 
 webrtc_jni::RTC_CHECK (network_thread->Start())<< "Failed to start thread"
 
worker_thread webrtc_jni::SetName ("worker_thread", nullptr)
 
 webrtc_jni::RTC_CHECK (worker_thread->Start())<< "Failed to start thread"
 
signaling_thread webrtc_jni::SetName ("signaling_thread", NULL)
 
 webrtc_jni::RTC_CHECK (signaling_thread->Start())<< "Failed to start thread"
 
 webrtc_jni::if (has_options)
 
 webrtc_jni::if (video_hw_acceleration_enabled)
 
 webrtc_jni::if (!(has_options &&options.disable_network_monitor))
 
 webrtc_jni::RTC_CHECK (factory)<< "Failed to create the peer connection factory
 
<< "WebRTC/libjingle init likely failed on this device";if(has_options) { factory-> webrtc_jni::SetOptions (options)
 
owned_factory webrtc_jni::InvokeJavaCallbacksOnFactoryThreads ()
 
return webrtc_jni::jlongFromPointer (owned_factory)
 
 webrtc_jni::JOW (void, PeerConnectionFactory_nativeFreeFactory)(JNIEnv *
 
 webrtc_jni::if (field_trials_init_string)
 
 webrtc_jni::JOW (void, PeerConnectionFactory_nativeThreadsCallbacks)(JNIEnv *
 
 webrtc_jni::JOW (jlong, PeerConnectionFactory_nativeCreateLocalMediaStream)(JNIEnv *jni
 
rtc::scoped_refptr< MediaStreamInterfacewebrtc_jni::stream (factory->CreateLocalMediaStream(JavaToStdString(jni, label)))
 
 webrtc_jni::return (jlong) stream.release()
 
rtc::scoped_refptr< webrtc::AndroidVideoTrackSourcewebrtc_jni::source (new rtc::RefCountedObject< webrtc::AndroidVideoTrackSource >(factory->signaling_thread(), jni, j_egl_context, is_screencast))
 
rtc::scoped_refptr< PeerConnectionFactoryInterfacewebrtc_jni::factory (factoryFromJava(native_factory))
 
jni webrtc_jni::CallVoidMethod (j_video_capturer, GetMethodID(jni, FindClass(jni, "org/webrtc/VideoCapturer"), "initialize", "(Lorg/webrtc/SurfaceTextureHelper;Landroid/content/" "Context;Lorg/webrtc/VideoCapturer$CapturerObserver;)V"), surface_texture_helper ? surface_texture_helper->GetJavaSurfaceTextureHelper() :nullptr, j_application_context, j_frame_observer)
 
 webrtc_jni::CHECK_EXCEPTION (jni)
 
 webrtc_jni::JOW (jlong, PeerConnectionFactory_nativeCreateVideoTrack)(JNIEnv *jni
 
rtc::scoped_refptr< VideoTrackInterfacewebrtc_jni::track (factory->CreateVideoTrack(JavaToStdString(jni, id), reinterpret_cast< VideoTrackSourceInterface *>(native_source)))
 
 webrtc_jni::JOW (jlong, PeerConnectionFactory_nativeCreateAudioSource)(JNIEnv *jni
 
 webrtc_jni::CopyConstraintsIntoAudioOptions (constraints.get(), &options)
 
rtc::scoped_refptr< AudioSourceInterfacewebrtc_jni::source (factory->CreateAudioSource(options))
 
 webrtc_jni::JOW (jlong, PeerConnectionFactory_nativeCreateAudioTrack)(JNIEnv *jni
 
rtc::scoped_refptr< AudioTrackInterfacewebrtc_jni::track (factory->CreateAudioTrack(JavaToStdString(jni, id), reinterpret_cast< AudioSourceInterface *>(native_source)))
 
 webrtc_jni::JOW (jboolean, PeerConnectionFactory_nativeStartAecDump)(JNIEnv *jni
 
return factory webrtc_jni::StartAecDump (file, filesize_limit_bytes)
 
 webrtc_jni::JOW (void, PeerConnectionFactory_nativeStopAecDump)(JNIEnv *jni
 
factory webrtc_jni::StopAecDump ()
 
 webrtc_jni::JOW (void, PeerConnectionFactory_nativeSetOptions)(JNIEnv *jni
 
factory webrtc_jni::SetOptions (options_to_set)
 
 webrtc_jni::if (options_to_set.disable_network_monitor)
 
 webrtc_jni::JOW (void, PeerConnectionFactory_nativeSetVideoHwAccelerationOptions)(JNIEnv *jni
 
 webrtc_jni::if (encoder_factory &&jni->IsInstanceOf(local_egl_context, j_eglbase14_context_class))
 
 webrtc_jni::if (decoder_factory)
 
 webrtc_jni::JOW (jlong, PeerConnectionFactory_nativeCreatePeerConnection)(JNIEnv *jni
 
PeerConnectionInterface::RTCConfiguration webrtc_jni::rtc_config (PeerConnectionInterface::RTCConfigurationType::kAggressive)
 
 webrtc_jni::JavaRTCConfigurationToJsepRTCConfiguration (jni, j_rtc_config, &rtc_config)
 
 webrtc_jni::if (key_type !=rtc::KT_DEFAULT)
 
observer webrtc_jni::SetConstraints (new ConstraintsWrapper(jni, j_constraints))
 
 webrtc_jni::CopyConstraintsIntoRtcConfiguration (observer->constraints(), &rtc_config)
 
rtc::scoped_refptr< PeerConnectionInterfacewebrtc_jni::pc (f->CreatePeerConnection(rtc_config, nullptr, nullptr, observer))
 
 webrtc_jni::JOW (jobject, PeerConnection_getLocalDescription)(JNIEnv *jni
 
return sdp JavaSdpFromNativeSdp(jni, sdpwebrtc_jni::JOW (jobject, PeerConnection_getRemoteDescription)(JNIEnv *jni
 
return sdp JavaSdpFromNativeSdp(jni, sdpwebrtc_jni::JOW (jobject, PeerConnection_createDataChannel)(JNIEnv *jni
 
 webrtc_jni::if (!nativeChannelPtr)
 
 webrtc_jni::RTC_CHECK (bumped_count==2)<< "Unexpected refcount"
 
 webrtc_jni::JOW (void, PeerConnection_createOffer)(JNIEnv *jni
 
rtc::scoped_refptr< CreateSdpObserverWrapper > webrtc_jni::observer (new rtc::RefCountedObject< CreateSdpObserverWrapper >(jni, j_observer, constraints))
 
 webrtc_jni::ExtractNativePC (jni, j_pc) -> CreateOffer(observer, constraints)
 
 webrtc_jni::JOW (void, PeerConnection_createAnswer)(JNIEnv *jni
 
 webrtc_jni::JOW (void, PeerConnection_setLocalDescription)(JNIEnv *jni
 
 webrtc_jni::JOW (void, PeerConnection_setRemoteDescription)(JNIEnv *jni
 
 webrtc_jni::JOW (jboolean, PeerConnection_nativeSetConfiguration)(JNIEnv *jni
 
 webrtc_jni::JOW (jboolean, PeerConnection_nativeAddIceCandidate)(JNIEnv *jni
 
std::unique_ptr< IceCandidateInterfacewebrtc_jni::candidate (webrtc::CreateIceCandidate(sdp_mid, j_sdp_mline_index, sdp, NULL))
 
 webrtc_jni::for (size_t i=0;i< num_networks;++i)
 
 webrtc_jni::JOW (jboolean, PeerConnection_nativeAddLocalStream)(JNIEnv *jni
 
 webrtc_jni::JOW (void, PeerConnection_nativeRemoveLocalStream)(JNIEnv *jni
 
 webrtc_jni::JOW (jobject, PeerConnection_nativeCreateSender)(JNIEnv *jni
 
 webrtc_jni::if (!sender.get())
 
sender webrtc_jni::AddRef ()
 
 webrtc_jni::JOW (jobject, PeerConnection_nativeGetSenders)(JNIEnv *jni
 
 webrtc_jni::for (const auto &sender :senders)
 
 webrtc_jni::JOW (jobject, PeerConnection_nativeGetReceivers)(JNIEnv *jni
 
 webrtc_jni::for (const auto &receiver :receivers)
 
 webrtc_jni::JOW (bool, PeerConnection_nativeGetStats)(JNIEnv *jni
 
 webrtc_jni::JOW (bool, PeerConnection_nativeStartRtcEventLog)(JNIEnv *jni
 
 webrtc_jni::JOW (void, PeerConnection_nativeStopRtcEventLog)(JNIEnv *jni
 
 webrtc_jni::JOW (jobject, PeerConnection_signalingState)(JNIEnv *jni
 
return webrtc_jni::JavaEnumFromIndex (jni, "PeerConnection$SignalingState", state)
 
 webrtc_jni::JOW (jobject, PeerConnection_iceConnectionState)(JNIEnv *jni
 
return webrtc_jni::JavaEnumFromIndex (jni, "PeerConnection$IceConnectionState", state)
 
 webrtc_jni::JOW (jobject, PeerConnection_iceGatheringState)(JNIEnv *jni
 
return webrtc_jni::JavaEnumFromIndex (jni, "PeerConnection$IceGatheringState", state)
 
 webrtc_jni::JOW (void, PeerConnection_close)(JNIEnv *jni
 
 webrtc_jni::JOW (jobject, MediaSource_nativeState)(JNIEnv *jni
 
return webrtc_jni::JavaEnumFromIndex (jni, "MediaSource$State", p->state())
 
 webrtc_jni::JOW (jlong, VideoRenderer_nativeWrapVideoRenderer)(JNIEnv *jni
 
 webrtc_jni::JOW (void, VideoRenderer_nativeCopyPlane)(JNIEnv *jni
 
 webrtc_jni::RTC_CHECK (src_stride >=width)<< "Wrong source stride "<< src_stride
 
 webrtc_jni::RTC_CHECK (dst_stride >=width)<< "Wrong destination stride "<< dst_stride
 
 webrtc_jni::if (ret)
 
 webrtc_jni::JOW (void, VideoFileRenderer_nativeI420Scale)(JNIEnv *jni
 
 webrtc_jni::RTC_CHECK_GE (src_size_y, j_src_stride_y *height)
 
 webrtc_jni::RTC_CHECK_GE (src_size_u, j_src_stride_u *height/4)
 
 webrtc_jni::RTC_CHECK_GE (src_size_v, j_src_stride_v *height/4)
 
 webrtc_jni::RTC_CHECK_GE (dst_size, dst_stride *dstHeight *3/2)
 
 webrtc_jni::JOW (jstring, MediaStreamTrack_nativeId)(JNIEnv *jni
 
 webrtc_jni::JOW (jstring, MediaStreamTrack_nativeKind)(JNIEnv *jni
 
 webrtc_jni::JOW (jboolean, MediaStreamTrack_nativeEnabled)(JNIEnv *jni
 
 webrtc_jni::JOW (jobject, MediaStreamTrack_nativeState)(JNIEnv *jni
 
 webrtc_jni::JOW (jboolean, MediaStreamTrack_nativeSetEnabled)(JNIEnv *jni
 
 webrtc_jni::JOW (void, VideoTrack_nativeAddRenderer)(JNIEnv *jni
 
 webrtc_jni::reinterpret_cast< VideoTrackInterface * > (j_video_track_pointer) -> AddOrUpdateSink(reinterpret_cast< rtc::VideoSinkInterface< webrtc::VideoFrame > *>(j_renderer_pointer), rtc::VideoSinkWants())
 
 webrtc_jni::JOW (void, VideoTrack_nativeRemoveRenderer)(JNIEnv *jni
 
 webrtc_jni::JOW (jlong, CallSessionFileRotatingLogSink_nativeAddSink)(JNIEnv *jni
 
 webrtc_jni::if (!sink->Init())
 
 webrtc_jni::JOW (void, CallSessionFileRotatingLogSink_nativeDeleteSink)(JNIEnv *jni
 
 webrtc_jni::JOW (jbyteArray, CallSessionFileRotatingLogSink_nativeGetLogData)(JNIEnv *jni
 
std::unique_ptr< rtc::CallSessionFileRotatingStreamwebrtc_jni::stream (new rtc::CallSessionFileRotatingStream(dir_path))
 
 webrtc_jni::if (!stream->Open())
 
 webrtc_jni::if (!stream->GetSize(&log_size)||log_size==0)
 
std::unique_ptr< jbyte > webrtc_jni::buffer (static_cast< jbyte *>(malloc(log_size)))
 
stream webrtc_jni::ReadAll (buffer.get(), log_size, &read, nullptr)
 
jni webrtc_jni::SetByteArrayRegion (result, 0, read, buffer.get())
 
 webrtc_jni::JOW (jboolean, RtpSender_nativeSetTrack)(JNIEnv *jni
 
 webrtc_jni::JavaRtpParametersToJsepRtpParameters (jni, j_parameters, &parameters)
 
return webrtc_jni::reinterpret_cast< RtpSenderInterface * > (j_rtp_sender_pointer) -> SetParameters(parameters)
 
return webrtc_jni::JsepRtpParametersToJavaRtpParameters (jni, parameters)
 
 webrtc_jni::JOW (jstring, RtpSender_nativeId)(JNIEnv *jni
 
 webrtc_jni::JOW (void, RtpSender_free)(JNIEnv *jni
 
 webrtc_jni::JOW (jlong, RtpReceiver_nativeGetTrack)(JNIEnv *jni
 
return webrtc_jni::reinterpret_cast< RtpReceiverInterface * > (j_rtp_receiver_pointer) -> SetParameters(parameters)
 
 webrtc_jni::JOW (jstring, RtpReceiver_nativeId)(JNIEnv *jni
 
 webrtc_jni::reinterpret_cast< RtpReceiverInterface * > (j_rtp_receiver_pointer) -> SetObserver(rtpReceiverObserver)
 
return webrtc_jni::jlongFromPointer (rtpReceiverObserver)
 
 webrtc_jni::if (observer)
 

Variables

jobject webrtc_jni::j_dc
 
jobject jobject webrtc_jni::j_observer
 
jobject jlong webrtc_jni::native_observer
 
<< "id overflowed jint!";return static_cast< jint >(id);} JOW(jobject, DataChannel_state)(JNIEnv *jni, jobject j_dc) { return JavaEnumFromIndex(jni, "DataChannel$State", ExtractNativeDC(jni, j_dc) -> webrtc_jni::state ())
 
<< "buffered_amount overflowed jlong!";return static_cast< jlong >(buffered_amount);} JOW(void, DataChannel_close)(JNIEnv *jni, jobject j_dc) { ExtractNativeDC(jni, j_dc) -> webrtc_jni::Close ()
 
jobject jbyteArray webrtc_jni::data
 
jobject jbyteArray jboolean webrtc_jni::binary
 
bool webrtc_jni::ret
 
jstring webrtc_jni::j_path
 
jstring jint webrtc_jni::nativeLevels
 
JNIEnv jint webrtc_jni::nativeSeverity
 
jobject webrtc_jni::joptions
 
std::unique_ptr< Threadwebrtc_jni::network_thread
 
std::unique_ptr< Threadwebrtc_jni::worker_thread = rtc::Thread::Create()
 
std::unique_ptr< Threadwebrtc_jni::signaling_thread = rtc::Thread::Create()
 
WebRtcVideoEncoderFactorywebrtc_jni::encoder_factory = nullptr
 
WebRtcVideoDecoderFactorywebrtc_jni::decoder_factory = nullptr
 
rtc::NetworkMonitorFactorywebrtc_jni::network_monitor_factory = nullptr
 
PeerConnectionFactoryInterface::Options webrtc_jni::options
 
bool webrtc_jni::has_options = joptions != NULL
 
rtc::scoped_refptr< PeerConnectionFactoryInterfacewebrtc_jni::factory (webrtc::CreatePeerConnectionFactory(network_thread.get(), worker_thread.get(), signaling_thread.get(), nullptr, encoder_factory, decoder_factory))
 
OwnedFactoryAndThreads * webrtc_jni::owned_factory
 
jlong webrtc_jni::j_p
 
jlong webrtc_jni::native_factory
 
jlong jstring webrtc_jni::label
 
JNIEnv jlong jobject webrtc_jni::j_egl_context
 
JNIEnv jlong jobject jboolean webrtc_jni::is_screencast
 
rtc::scoped_refptr< webrtc::VideoTrackSourceProxy > webrtc_jni::proxy_source
 
JNIEnv jlong jobject webrtc_jni::j_video_capturer
 
JNIEnv jlong jobject jlong webrtc_jni::native_source
 
JNIEnv jlong jobject jlong jobject webrtc_jni::j_frame_observer
 
rtc::scoped_refptr< SurfaceTextureHelper > webrtc_jni::surface_texture_helper
 
jlong jstring webrtc_jni::id
 
jlong jobject webrtc_jni::j_constraints
 
jlong jint webrtc_jni::file
 
jlong jint jint webrtc_jni::filesize_limit_bytes
 
PeerConnectionFactoryInterface::Options webrtc_jni::options_to_set
 
jlong jobject webrtc_jni::local_egl_context
 
jlong jobject jobject webrtc_jni::remote_egl_context
 
jclass webrtc_jni::j_eglbase14_context_class
 
jlong jobject webrtc_jni::j_rtc_config
 
jlong jobject jobject jlong webrtc_jni::observer_p
 
jclass webrtc_jni::j_rtc_config_class = GetObjectClass(jni, j_rtc_config)
 
jfieldID webrtc_jni::j_key_type_id
 
jobject webrtc_jni::j_key_type = GetObjectField(jni, j_rtc_config, j_key_type_id)
 
rtc::KeyType webrtc_jni::key_type = JavaKeyTypeToNativeType(jni, j_key_type)
 
PCOJava * webrtc_jni::observer = reinterpret_cast<PCOJava*>(observer_p)
 
jobject webrtc_jni::j_pc
 
return sdp JavaSdpFromNativeSdp(jni, sdp) jobject jstring webrtc_jni::j_label
 
return sdp JavaSdpFromNativeSdp(jni, sdp) jobject jstring jobject webrtc_jni::j_init
 
rtc::scoped_refptr< DataChannelInterfacewebrtc_jni::channel (ExtractNativePC(jni, j_pc) ->CreateDataChannel(JavaToStdString(jni, j_label), &init))
 
jlong webrtc_jni::nativeChannelPtr = jlongFromPointer(channel.get())
 
jclass webrtc_jni::j_data_channel_class = FindClass(jni, "org/webrtc/DataChannel")
 
jmethodID webrtc_jni::j_data_channel_ctor
 
jobject webrtc_jni::j_channel
 
int webrtc_jni::bumped_count = channel->AddRef()
 
jobject jobject jobject webrtc_jni::j_sdp
 
jobject jstring webrtc_jni::j_sdp_mid
 
jobject jstring jint webrtc_jni::j_sdp_mline_index
 
jobject jstring jint jstring webrtc_jni::j_candidate_sdp
 
std::string webrtc_jni::sdp = JavaToStdString(jni, j_candidate_sdp)
 
JNIEnv jobject jobjectArray webrtc_jni::j_candidates
 
size_t webrtc_jni::num_candidates = jni->GetArrayLength(j_candidates)
 
jobject jlong webrtc_jni::native_stream
 
jobject jstring webrtc_jni::j_kind
 
jobject jstring jstring webrtc_jni::j_stream_id
 
jmethodID webrtc_jni::j_rtp_sender_ctor
 
std::string webrtc_jni::kind = JavaToStdString(jni, j_kind)
 
std::string webrtc_jni::stream_id = JavaToStdString(jni, j_stream_id)
 
rtc::scoped_refptr< RtpSenderInterfacewebrtc_jni::sender
 
jlong webrtc_jni::nativeSenderPtr = jlongFromPointer(sender.get())
 
jobject webrtc_jni::j_sender
 
jmethodID webrtc_jni::j_array_list_ctor
 
jmethodID webrtc_jni::j_array_list_add
 
jobject webrtc_jni::j_senders = jni->NewObject(j_array_list_class, j_array_list_ctor)
 
jclass webrtc_jni::j_rtp_sender_class = FindClass(jni, "org/webrtc/RtpSender")
 
auto webrtc_jni::senders = ExtractNativePC(jni, j_pc)->GetSenders()
 
jobject webrtc_jni::j_receivers = jni->NewObject(j_array_list_class, j_array_list_ctor)
 
jclass webrtc_jni::j_rtp_receiver_class = FindClass(jni, "org/webrtc/RtpReceiver")
 
jmethodID webrtc_jni::j_rtp_receiver_ctor
 
auto webrtc_jni::receivers = ExtractNativePC(jni, j_pc)->GetReceivers()
 
jobject jobject jlong webrtc_jni::native_track
 
jobject int webrtc_jni::file_descriptor
 
jobject int int webrtc_jni::max_size_bytes
 
 webrtc_jni::return
 
jobject webrtc_jni::j_callbacks
 
jobject webrtc_jni::j_src_buffer
 
jobject jint jint jint webrtc_jni::src_stride
 
jobject jint jint jint jobject webrtc_jni::j_dst_buffer
 
jobject jint jint jint jobject jint webrtc_jni::dst_stride
 
size_t webrtc_jni::dst_size = jni->GetDirectBufferCapacity(j_dst_buffer)
 
<< "Insufficient source buffer capacity "<< src_size;<< "Insufficient destination buffer capacity "<< dst_size;uint8_t *src=reinterpret_cast< uint8_t * >(jni->GetDirectBufferAddress(j_src_buffer));uint8_t *dst=reinterpret_cast< uint8_t * >(jni->GetDirectBufferAddress(j_dst_buffer));if(src_stride==dst_stride) { memcpy(dst, src, src_stride *height);} else { for(int i=0;i< height;i++) { memcpy(dst, src, width);src+=src_stride;dst+=dst_stride;} } } JOW(void, FileVideoCapturer_nativeI420ToNV21)(JNIEnv *jni, jclass, jbyteArray j_src_buffer, jint width, jint height, jbyteArray j_dst_buffer) { size_t src_size=jni->GetArrayLength(j_src_buffer);size_t dst_size=jni->GetArrayLength(j_dst_buffer);int src_stride=width;int dst_stride=width;RTC_CHECK_GE(src_size, src_stride *height *3/2);RTC_CHECK_GE(dst_size, dst_stride *height *3/2);jbyte *src_bytes=jni->GetByteArrayElements(j_src_buffer, 0);uint8_t *src=reinterpret_cast< uint8_t * >(src_bytes);jbyte *dst_bytes=jni->GetByteArrayElements(j_dst_buffer, 0);uint8_t *dst=reinterpret_cast< uint8_t * >(dst_bytes);uint8_t *src_y=src;size_t src_stride_y=src_stride;uint8_t *src_u=src+src_stride *height;size_t src_stride_u=src_stride/2;uint8_t *src_v=src+src_stride *height *5/4;size_t src_stride_v=src_stride/2;uint8_t *dst_y=dst;size_t dst_stride_y=dst_stride;size_t dst_stride_uv=dst_stride;uint8_t *dst_uv=dst+dst_stride *height;int ret=libyuv::I420ToNV21(src_y, src_stride_y, src_u, src_stride_u, src_v, src_stride_v, dst_y, dst_stride_y, dst_uv, dst_stride_uv, width, height);jni->ReleaseByteArrayElements(j_src_buffer, src_bytes, 0);jni-> webrtc_jni::ReleaseByteArrayElements (j_dst_buffer, dst_bytes, 0)
 
jobject webrtc_jni::j_src_buffer_y
 
jobject jint webrtc_jni::j_src_stride_y
 
jobject jint jobject webrtc_jni::j_src_buffer_u
 
jobject jint jobject jint webrtc_jni::j_src_stride_u
 
jobject jint jobject jint jobject webrtc_jni::j_src_buffer_v
 
jobject jint jobject jint jobject jint webrtc_jni::j_src_stride_v
 
jobject jint jobject jint jobject jint jint jint jbyteArray jint webrtc_jni::dstWidth
 
jobject jint jobject jint jobject jint jint jint jbyteArray jint jint webrtc_jni::dstHeight
 
size_t webrtc_jni::src_size_u = jni->GetDirectBufferCapacity(j_src_buffer_u)
 
size_t webrtc_jni::src_size_v = jni->GetDirectBufferCapacity(j_src_buffer_v)
 
uint8_twebrtc_jni::src_y
 
uint8_twebrtc_jni::src_u
 
uint8_twebrtc_jni::src_v
 
uint8_twebrtc_jni::dst
 
uint8_twebrtc_jni::dst_y = dst
 
size_t webrtc_jni::dst_stride_y = dst_stride
 
uint8_twebrtc_jni::dst_u = dst + dst_stride * dstHeight
 
size_t webrtc_jni::dst_stride_u = dst_stride / 2
 
uint8_twebrtc_jni::dst_v = dst + dst_stride * dstHeight * 5 / 4
 
size_t webrtc_jni::dst_stride_v = dst_stride / 2
 
JNIEnv jint webrtc_jni::size
 
jobject webrtc_jni::byte_buffer = jni->NewDirectByteBuffer(new_data, size)
 
jlong jboolean webrtc_jni::enabled
 
jlong webrtc_jni::j_video_track_pointer
 
jlong jlong webrtc_jni::j_renderer_pointer
 
jstring webrtc_jni::j_dirPath
 
jstring jint webrtc_jni::j_maxFileSize
 
jstring jint jint webrtc_jni::j_severity
 
rtc::CallSessionFileRotatingLogSinkwebrtc_jni::sink
 
jlong webrtc_jni::j_sink
 
size_t webrtc_jni::log_size = 0
 
size_t webrtc_jni::read = 0
 
jbyteArray webrtc_jni::result = jni->NewByteArray(read)
 
jlong webrtc_jni::j_rtp_sender_pointer
 
jlong jlong webrtc_jni::j_track_pointer
 
JNIEnv jlong jobject webrtc_jni::j_parameters
 
jlong webrtc_jni::j_rtp_receiver_pointer
 
JNIEnv jlong jlong webrtc_jni::j_observer_pointer
 
JNIEnv jlong webrtc_jni::j_dtmf_sender_pointer
 
JNIEnv jlong jstring webrtc_jni::tones
 
JNIEnv jlong jstring jint webrtc_jni::duration
 
JNIEnv jlong jstring jint jint webrtc_jni::inter_tone_gap
 

Macro Definition Documentation

◆ JNIEXPORT

#define JNIEXPORT   __attribute__((visibility("default")))