From 2f98701c684eec921f5d515aa124e87934112924 Mon Sep 17 00:00:00 2001 From: default Date: Wed, 18 Jul 2018 18:24:27 +0300 Subject: [PATCH 1/2] More flexibility of tg_voip_jni.cpp: TGVOIP_NO_GROUP_CALLS, TGVOIP_PACKAGE_PATH, TGVOIP_PEER_TAG_VARIABLE_NAME, TGVOIP_FUNC --- .DS_Store | Bin 0 -> 6148 bytes client/.DS_Store | Bin 0 -> 6148 bytes client/android/tg_voip_jni.cpp | 130 +++++++++++++++++++-------------- 3 files changed, 75 insertions(+), 55 deletions(-) create mode 100644 .DS_Store create mode 100644 client/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9d5c08a7d268fea157190093bb978f73fa7dedab GIT binary patch literal 6148 zcmeHKu};G<5PdEIRj^cIfPo=jfYgyKs=~t_Fa5WvYi8926f&CdH}jq!DyGw5|Me)1?dEf_!$?&=JTu=TU#uwRf961 z4E#R^{`_4Q@g(>b~xunD~9=O~x%7mjk_HK%4 zf0)@>>5}doo&DZ(X45pUs|v@LWN@7*BL){%V83a z+A0IeK%0RrKkUi-fBJp>-*(cGGN24>6aywohv|SRg|~GfIeBYi>WC^L>l%;Fg-v*l gT}PhcL#h+b#nK@r0UM9BQ1nN@(V&eo@TUyC0SWtum;e9( literal 0 HcmV?d00001 diff --git a/client/.DS_Store b/client/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..43a1384bc3c49dd72da9c8bf0548fdc15c74d83a GIT binary patch literal 6148 zcmeHKJ5EC}5S%5Eh?FKJrLVvZtSC7_E)c?NkRqN0qJI_V;%Ll%3Ze&HC_uB)dhGR% zEl=_GEdblT4fntXz>4mOcOT~F`|dNlsfZEjJY&QYhT-+`d>Uuj-v^v~iw8Voz{^+u zc=j!s6p#W^Knh3!DR5;4s=%(+S3XzANdYPF_Z9H(L!&$P!YMI69UP(sATAjW<2-r^ zV)Fp87fy+c&@8FMq*}EYmUPBj<@LfTG3l^sKCEuG>QF3h=lLztVLef!6p#X!3M_KD z@%q1~|Iq(mlC+WnQs7@HV9VWMx8;+nw$2{swYJfZbkF&qyKx>A4pEMYQI5Ira(ov_ bnb&;I{a!dF2A%Ps6ZJFTy2zx!Z!7Q#M6?xr literal 0 HcmV?d00001 diff --git a/client/android/tg_voip_jni.cpp b/client/android/tg_voip_jni.cpp index 86e9625a61..e93f0523d8 100644 --- a/client/android/tg_voip_jni.cpp +++ b/client/android/tg_voip_jni.cpp @@ -10,12 +10,16 @@ #include #include #include -#include "../../VoIPController.h" -#include "../../os/android/AudioOutputOpenSLES.h" -#include "../../os/android/AudioInputOpenSLES.h" -#include "../../os/android/AudioInputAndroid.h" -#include "../../os/android/AudioOutputAndroid.h" -#include "../../audio/Resampler.h" +#include +#include +#include +#include +#include +#include + +#ifdef TGVOIP_HAS_CONFIG +#include +#endif JavaVM* sharedJVM; jfieldID audioRecordInstanceFld=NULL; @@ -33,6 +37,26 @@ struct impl_data_android_t{ jobject javaObject; }; +#ifndef TGVOIP_PACKAGE_PATH +#define TGVOIP_PACKAGE_PATH "org/telegram/messenger/voip" +#endif + +#ifndef TGVOIP_PEER_TAG_VARIABLE_NAME +#define TGVOIP_PEER_TAG_VARIABLE_NAME "peer_tag" +#endif + +#ifndef TGVOIP_FUNC +#define TGVOIP_FUNC(RETURN_TYPE, NAME, ...) \ + extern "C" { \ + JNIEXPORT RETURN_TYPE \ + Java_org_telegram_messenger_voip_##NAME( \ + JNIEnv *env, ##__VA_ARGS__); \ + } \ + JNIEXPORT RETURN_TYPE \ + Java_org_telegram_messenger_voip_##NAME( \ + JNIEnv *env, ##__VA_ARGS__) +#endif + using namespace tgvoip; using namespace tgvoip::audio; @@ -193,18 +217,17 @@ namespace tgvoip { } } -extern "C" JNIEXPORT jlong Java_org_telegram_messenger_voip_VoIPController_nativeInit(JNIEnv* env, jobject thiz, jint systemVersion){ - +TGVOIP_FUNC(jlong, VoIPController_nativeInit, jobject thiz, jint systemVersion) { env->GetJavaVM(&sharedJVM); if(!AudioInputAndroid::jniClass){ - jclass cls=env->FindClass("org/telegram/messenger/voip/AudioRecordJNI"); + jclass cls=env->FindClass(TGVOIP_PACKAGE_PATH "/AudioRecordJNI"); AudioInputAndroid::jniClass=(jclass) env->NewGlobalRef(cls); AudioInputAndroid::initMethod=env->GetMethodID(cls, "init", "(IIII)V"); AudioInputAndroid::releaseMethod=env->GetMethodID(cls, "release", "()V"); AudioInputAndroid::startMethod=env->GetMethodID(cls, "start", "()Z"); AudioInputAndroid::stopMethod=env->GetMethodID(cls, "stop", "()V"); - cls=env->FindClass("org/telegram/messenger/voip/AudioTrackJNI"); + cls=env->FindClass(TGVOIP_PACKAGE_PATH "/AudioTrackJNI"); AudioOutputAndroid::jniClass=(jclass) env->NewGlobalRef(cls); AudioOutputAndroid::initMethod=env->GetMethodID(cls, "init", "(IIII)V"); AudioOutputAndroid::releaseMethod=env->GetMethodID(cls, "release", "()V"); @@ -212,7 +235,7 @@ extern "C" JNIEXPORT jlong Java_org_telegram_messenger_voip_VoIPController_nativ AudioOutputAndroid::stopMethod=env->GetMethodID(cls, "stop", "()V"); } - jclass thisClass=env->FindClass("org/telegram/messenger/voip/VoIPController"); + jclass thisClass=env->FindClass(TGVOIP_PACKAGE_PATH "/VoIPController"); setStateMethod=env->GetMethodID(thisClass, "handleStateChange", "(I)V"); setSignalBarsMethod=env->GetMethodID(thisClass, "handleSignalBarsChange", "(I)V"); groupCallKeyReceivedMethod=env->GetMethodID(thisClass, "groupCallKeyReceived", "([B)V"); @@ -220,7 +243,7 @@ extern "C" JNIEXPORT jlong Java_org_telegram_messenger_voip_VoIPController_nativ callUpgradeRequestReceivedMethod=env->GetMethodID(thisClass, "callUpgradeRequestReceived", "()V"); if(!jniUtilitiesClass) - jniUtilitiesClass=(jclass) env->NewGlobalRef(env->FindClass("org/telegram/messenger/voip/JNIUtilities")); + jniUtilitiesClass=(jclass) env->NewGlobalRef(env->FindClass(TGVOIP_PACKAGE_PATH "/JNIUtilities")); impl_data_android_t* impl=(impl_data_android_t*) malloc(sizeof(impl_data_android_t)); impl->javaObject=env->NewGlobalRef(thiz); @@ -236,15 +259,15 @@ extern "C" JNIEXPORT jlong Java_org_telegram_messenger_voip_VoIPController_nativ return (jlong)(intptr_t)cntrlr; } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeStart(JNIEnv* env, jobject thiz, jlong inst){ +TGVOIP_FUNC(void, VoIPController_nativeStart, jobject thiz, jlong inst){ ((VoIPController*)(intptr_t)inst)->Start(); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeConnect(JNIEnv* env, jobject thiz, jlong inst){ +TGVOIP_FUNC(void, VoIPController_nativeConnect, jobject thiz, jlong inst){ ((VoIPController*)(intptr_t)inst)->Connect(); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetProxy(JNIEnv* env, jobject thiz, jlong inst, jstring _address, jint port, jstring _username, jstring _password){ +TGVOIP_FUNC(void, VoIPController_nativeSetProxy, jobject thiz, jlong inst, jstring _address, jint port, jstring _username, jstring _password){ const char* address=env->GetStringUTFChars(_address, NULL); const char* username=_username ? env->GetStringUTFChars(_username, NULL) : NULL; const char* password=_password ? env->GetStringUTFChars(_password, NULL) : NULL; @@ -256,13 +279,13 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_native env->ReleaseStringUTFChars(_password, password); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetEncryptionKey(JNIEnv* env, jobject thiz, jlong inst, jbyteArray key, jboolean isOutgoing){ +TGVOIP_FUNC(void, VoIPController_nativeSetEncryptionKey, jobject thiz, jlong inst, jbyteArray key, jboolean isOutgoing){ jbyte* akey=env->GetByteArrayElements(key, NULL); ((VoIPController*)(intptr_t)inst)->SetEncryptionKey((char *) akey, isOutgoing); env->ReleaseByteArrayElements(key, akey, JNI_ABORT); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetRemoteEndpoints(JNIEnv* env, jobject thiz, jlong inst, jobjectArray endpoints, jboolean allowP2p, jboolean tcp, jint connectionMaxLayer){ +TGVOIP_FUNC(void, VoIPController_nativeSetRemoteEndpoints, jobject thiz, jlong inst, jobjectArray endpoints, jboolean allowP2p, jboolean tcp, jint connectionMaxLayer){ size_t len=(size_t) env->GetArrayLength(endpoints); // voip_endpoint_t* eps=(voip_endpoint_t *) malloc(sizeof(voip_endpoint_t)*len); std::vector eps; @@ -274,7 +297,7 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_native jfieldID ipFld=env->GetFieldID(epClass, "ip", "Ljava/lang/String;"); jfieldID ipv6Fld=env->GetFieldID(epClass, "ipv6", "Ljava/lang/String;"); jfieldID portFld=env->GetFieldID(epClass, "port", "I"); - jfieldID peerTagFld=env->GetFieldID(epClass, "peer_tag", "[B"); + jfieldID peerTagFld=env->GetFieldID(epClass, TGVOIP_PEER_TAG_VARIABLE_NAME, "[B"); jfieldID idFld=env->GetFieldID(epClass, "id", "J"); int i; for(i=0;iSetRemoteEndpoints(eps, allowP2p, connectionMaxLayer); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetNativeBufferSize(JNIEnv* env, jclass thiz, jint size){ +TGVOIP_FUNC(void, VoIPController_nativeSetNativeBufferSize, jclass thiz, jint size){ AudioOutputOpenSLES::nativeBufferSize=(unsigned int) size; AudioInputOpenSLES::nativeBufferSize=(unsigned int) size; } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeRelease(JNIEnv* env, jobject thiz, jlong inst){ +TGVOIP_FUNC(void, VoIPController_nativeRelease, jobject thiz, jlong inst){ //env->DeleteGlobalRef(AudioInputAndroid::jniClass); VoIPController* ctlr=((VoIPController*)(intptr_t)inst); @@ -322,7 +345,7 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_native } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_AudioRecordJNI_nativeCallback(JNIEnv* env, jobject thiz, jobject buffer){ +TGVOIP_FUNC(void, AudioRecordJNI_nativeCallback, jobject thiz, jobject buffer){ if(!audioRecordInstanceFld) audioRecordInstanceFld=env->GetFieldID(env->GetObjectClass(thiz), "nativeInst", "J"); @@ -331,7 +354,7 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_AudioRecordJNI_native in->HandleCallback(env, buffer); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_AudioTrackJNI_nativeCallback(JNIEnv* env, jobject thiz, jbyteArray buffer){ +TGVOIP_FUNC(void, AudioTrackJNI_nativeCallback, jobject thiz, jbyteArray buffer){ if(!audioTrackInstanceFld) audioTrackInstanceFld=env->GetFieldID(env->GetObjectClass(thiz), "nativeInst", "J"); @@ -340,20 +363,20 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_AudioTrackJNI_nativeC in->HandleCallback(env, buffer); } -extern "C" JNIEXPORT jstring Java_org_telegram_messenger_voip_VoIPController_nativeGetDebugString(JNIEnv* env, jobject thiz, jlong inst){ +TGVOIP_FUNC(jstring, VoIPController_nativeGetDebugString, jobject thiz, jlong inst){ std::string str=((VoIPController*)(intptr_t)inst)->GetDebugString(); return env->NewStringUTF(str.c_str()); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetNetworkType(JNIEnv* env, jobject thiz, jlong inst, jint type){ +TGVOIP_FUNC(void, VoIPController_nativeSetNetworkType, jobject thiz, jlong inst, jint type){ ((VoIPController*)(intptr_t)inst)->SetNetworkType(type); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetMicMute(JNIEnv* env, jobject thiz, jlong inst, jboolean mute){ +TGVOIP_FUNC(void, VoIPController_nativeSetMicMute, jobject thiz, jlong inst, jboolean mute){ ((VoIPController*)(intptr_t)inst)->SetMicMute(mute); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetConfig(JNIEnv* env, jobject thiz, jlong inst, jdouble recvTimeout, jdouble initTimeout, jint dataSavingMode, jboolean enableAEC, jboolean enableNS, jboolean enableAGC, jstring logFilePath, jstring statsDumpPath){ +TGVOIP_FUNC(void, VoIPController_nativeSetConfig, jobject thiz, jlong inst, jdouble recvTimeout, jdouble initTimeout, jint dataSavingMode, jboolean enableAEC, jboolean enableNS, jboolean enableAGC, jstring logFilePath, jstring statsDumpPath){ VoIPController::Config cfg; cfg.initTimeout=initTimeout; cfg.recvTimeout=recvTimeout; @@ -375,23 +398,23 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_native ((VoIPController*)(intptr_t)inst)->SetConfig(cfg); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeDebugCtl(JNIEnv* env, jobject thiz, jlong inst, jint request, jint param){ +TGVOIP_FUNC(void, VoIPController_nativeDebugCtl, jobject thiz, jlong inst, jint request, jint param){ ((VoIPController*)(intptr_t)inst)->DebugCtl(request, param); } -extern "C" JNIEXPORT jstring Java_org_telegram_messenger_voip_VoIPController_nativeGetVersion(JNIEnv* env, jclass clasz){ +TGVOIP_FUNC(jstring, VoIPController_nativeGetVersion, jclass clasz){ return env->NewStringUTF(VoIPController::GetVersion()); } -extern "C" JNIEXPORT jlong Java_org_telegram_messenger_voip_VoIPController_nativeGetPreferredRelayID(JNIEnv* env, jclass clasz, jlong inst){ +TGVOIP_FUNC(jlong, VoIPController_nativeGetPreferredRelayID, jclass clasz, jlong inst){ return ((VoIPController*)(intptr_t)inst)->GetPreferredRelayID(); } -extern "C" JNIEXPORT jint Java_org_telegram_messenger_voip_VoIPController_nativeGetLastError(JNIEnv* env, jclass clasz, jlong inst){ +TGVOIP_FUNC(jint, VoIPController_nativeGetLastError, jclass clasz, jlong inst){ return ((VoIPController*)(intptr_t)inst)->GetLastError(); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeGetStats(JNIEnv* env, jclass clasz, jlong inst, jobject stats){ +TGVOIP_FUNC(void, VoIPController_nativeGetStats, jclass clasz, jlong inst, jobject stats){ VoIPController::TrafficStats _stats; ((VoIPController*)(intptr_t)inst)->GetStats(&_stats); jclass cls=env->GetObjectClass(stats); @@ -401,7 +424,7 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_native env->SetLongField(stats, env->GetFieldID(cls, "bytesRecvdMobile", "J"), _stats.bytesRecvdMobile); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPServerConfig_nativeSetConfig(JNIEnv* env, jclass clasz, jobjectArray keys, jobjectArray values){ +TGVOIP_FUNC(void, VoIPServerConfig_nativeSetConfig, jclass clasz, jobjectArray keys, jobjectArray values){ std::map config; int len=env->GetArrayLength(keys); int i; @@ -421,39 +444,40 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPServerConfig_nati ServerConfig::GetSharedInstance()->Update(config); } -extern "C" JNIEXPORT jstring Java_org_telegram_messenger_voip_VoIPController_nativeGetDebugLog(JNIEnv* env, jobject thiz, jlong inst){ +TGVOIP_FUNC(jstring, VoIPController_nativeGetDebugLog, jobject thiz, jlong inst){ VoIPController* ctlr=((VoIPController*)(intptr_t)inst); std::string log=ctlr->GetDebugLog(); return env->NewStringUTF(log.c_str()); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetAudioOutputGainControlEnabled(JNIEnv* env, jclass clasz, jlong inst, jboolean enabled){ +TGVOIP_FUNC(void, VoIPController_nativeSetAudioOutputGainControlEnabled, jclass clasz, jlong inst, jboolean enabled){ ((VoIPController*)(intptr_t)inst)->SetAudioOutputGainControlEnabled(enabled); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSetEchoCancellationStrength(JNIEnv* env, jclass cls, jlong inst, jint strength){ +TGVOIP_FUNC(void, VoIPController_nativeSetEchoCancellationStrength, jclass cls, jlong inst, jint strength){ ((VoIPController*)(intptr_t)inst)->SetEchoCancellationStrength(strength); } -extern "C" JNIEXPORT jint Java_org_telegram_messenger_voip_Resampler_convert44to48(JNIEnv* env, jclass cls, jobject from, jobject to){ +TGVOIP_FUNC(jint, Resampler_convert44to48, jclass cls, jobject from, jobject to){ return tgvoip::audio::Resampler::Convert44To48((int16_t *) env->GetDirectBufferAddress(from), (int16_t *) env->GetDirectBufferAddress(to), (size_t) (env->GetDirectBufferCapacity(from)/2), (size_t) (env->GetDirectBufferCapacity(to)/2)); } -extern "C" JNIEXPORT jint Java_org_telegram_messenger_voip_Resampler_convert48to44(JNIEnv* env, jclass cls, jobject from, jobject to){ +TGVOIP_FUNC(jint, Resampler_convert48to44, jclass cls, jobject from, jobject to){ return tgvoip::audio::Resampler::Convert48To44((int16_t *) env->GetDirectBufferAddress(from), (int16_t *) env->GetDirectBufferAddress(to), (size_t) (env->GetDirectBufferCapacity(from)/2), (size_t) (env->GetDirectBufferCapacity(to)/2)); } -extern "C" JNIEXPORT jlong Java_org_telegram_messenger_voip_VoIPGroupController_nativeInit(JNIEnv* env, jobject thiz, jint timeDifference){ +#ifndef TGVOIP_NO_GROUP_CALLS +TGVOIP_FUNC(jlong, VoIPGroupController_nativeInit, jobject thiz, jint timeDifference){ env->GetJavaVM(&sharedJVM); if(!AudioInputAndroid::jniClass){ - jclass cls=env->FindClass("org/telegram/messenger/voip/AudioRecordJNI"); + jclass cls=env->FindClass(TGVOIP_PACKAGE_PATH "/AudioRecordJNI"); AudioInputAndroid::jniClass=(jclass) env->NewGlobalRef(cls); AudioInputAndroid::initMethod=env->GetMethodID(cls, "init", "(IIII)V"); AudioInputAndroid::releaseMethod=env->GetMethodID(cls, "release", "()V"); AudioInputAndroid::startMethod=env->GetMethodID(cls, "start", "()Z"); AudioInputAndroid::stopMethod=env->GetMethodID(cls, "stop", "()V"); - cls=env->FindClass("org/telegram/messenger/voip/AudioTrackJNI"); + cls=env->FindClass(TGVOIP_PACKAGE_PATH "/AudioTrackJNI"); AudioOutputAndroid::jniClass=(jclass) env->NewGlobalRef(cls); AudioOutputAndroid::initMethod=env->GetMethodID(cls, "init", "(IIII)V"); AudioOutputAndroid::releaseMethod=env->GetMethodID(cls, "release", "()V"); @@ -479,13 +503,8 @@ extern "C" JNIEXPORT jlong Java_org_telegram_messenger_voip_VoIPGroupController_ return (jlong)(intptr_t)cntrlr; } -/* - private native void nativeSetGroupCallInfo(long inst, byte[] encryptionKey, byte[] reflectorGroupTag, byte[] reflectorSelfTag, byte[] reflectorSelfSecret, String reflectorAddress, String reflectorAddressV6, int reflectorPort); - private native void addGroupCallParticipant(long inst, int userID, byte[] memberTagHash); - private native void removeGroupCallParticipant(long inst, int userID); - */ -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPGroupController_nativeSetGroupCallInfo(JNIEnv* env, jclass cls, jlong inst, jbyteArray _encryptionKey, jbyteArray _reflectorGroupTag, jbyteArray _reflectorSelfTag, jbyteArray _reflectorSelfSecret, jbyteArray _reflectorSelfTagHash, jint selfUserID, jstring reflectorAddress, jstring reflectorAddressV6, jint reflectorPort){ +TGVOIP_FUNC(void, VoIPGroupController_nativeSetGroupCallInfo, jclass cls, jlong inst, jbyteArray _encryptionKey, jbyteArray _reflectorGroupTag, jbyteArray _reflectorSelfTag, jbyteArray _reflectorSelfSecret, jbyteArray _reflectorSelfTagHash, jint selfUserID, jstring reflectorAddress, jstring reflectorAddressV6, jint reflectorPort){ VoIPGroupController* ctlr=((VoIPGroupController*)(intptr_t)inst); jbyte* encryptionKey=env->GetByteArrayElements(_encryptionKey, NULL); jbyte* reflectorGroupTag=env->GetByteArrayElements(_reflectorGroupTag, NULL); @@ -513,7 +532,7 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPGroupController_n env->ReleaseByteArrayElements(_reflectorSelfTagHash, reflectorSelfTagHash, JNI_ABORT); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPGroupController_nativeAddGroupCallParticipant(JNIEnv* env, jclass cls, jlong inst, jint userID, jbyteArray _memberTagHash, jbyteArray _streams){ +TGVOIP_FUNC(void, VoIPGroupController_nativeAddGroupCallParticipant, jclass cls, jlong inst, jint userID, jbyteArray _memberTagHash, jbyteArray _streams){ VoIPGroupController* ctlr=((VoIPGroupController*)(intptr_t)inst); jbyte* memberTagHash=env->GetByteArrayElements(_memberTagHash, NULL); jbyte* streams=_streams ? env->GetByteArrayElements(_streams, NULL) : NULL; @@ -526,20 +545,20 @@ extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPGroupController_n } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPGroupController_nativeRemoveGroupCallParticipant(JNIEnv* env, jclass cls, jlong inst, jint userID){ +TGVOIP_FUNC(void, VoIPGroupController_nativeRemoveGroupCallParticipant, jclass cls, jlong inst, jint userID){ VoIPGroupController* ctlr=((VoIPGroupController*)(intptr_t)inst); ctlr->RemoveGroupCallParticipant(userID); } -extern "C" JNIEXPORT jfloat Java_org_telegram_messenger_voip_VoIPGroupController_nativeGetParticipantAudioLevel(JNIEnv* env, jclass cls, jlong inst, jint userID){ +TGVOIP_FUNC(jfloat, VoIPGroupController_nativeGetParticipantAudioLevel, jclass cls, jlong inst, jint userID){ return ((VoIPGroupController*)(intptr_t)inst)->GetParticipantAudioLevel(userID); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPGroupController_nativeSetParticipantVolume(JNIEnv* env, jclass cls, jlong inst, jint userID, jfloat volume){ +TGVOIP_FUNC(void, VoIPGroupController_nativeSetParticipantVolume, jclass cls, jlong inst, jint userID, jfloat volume){ ((VoIPGroupController*)(intptr_t)inst)->SetParticipantVolume(userID, volume); } -extern "C" JNIEXPORT jbyteArray Java_org_telegram_messenger_voip_VoIPGroupController_getInitialStreams(JNIEnv* env, jclass cls){ +TGVOIP_FUNC(jbyteArray, VoIPGroupController_getInitialStreams, jclass cls){ unsigned char buf[1024]; size_t len=VoIPGroupController::GetInitialStreams(buf, sizeof(buf)); jbyteArray arr=env->NewByteArray(len); @@ -549,24 +568,25 @@ extern "C" JNIEXPORT jbyteArray Java_org_telegram_messenger_voip_VoIPGroupContro return arr; } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPGroupController_nativeSetParticipantStreams(JNIEnv* env, jclass cls, jlong inst, jint userID, jbyteArray _streams){ +TGVOIP_FUNC(void, VoIPGroupController_nativeSetParticipantStreams, jclass cls, jlong inst, jint userID, jbyteArray _streams){ jbyte* streams=env->GetByteArrayElements(_streams, NULL); ((VoIPGroupController*)(intptr_t)inst)->SetParticipantStreams(userID, (unsigned char *) streams, (size_t) env->GetArrayLength(_streams)); env->ReleaseByteArrayElements(_streams, streams, JNI_ABORT); } +#endif -extern "C" JNIEXPORT jint Java_org_telegram_messenger_voip_VoIPController_nativeGetPeerCapabilities(JNIEnv* env, jclass cls, jlong inst){ +TGVOIP_FUNC(jint, VoIPController_nativeGetPeerCapabilities, jclass cls, jlong inst){ return ((VoIPController*)(intptr_t)inst)->GetPeerCapabilities(); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeSendGroupCallKey(JNIEnv* env, jclass cls, jlong inst, jbyteArray _key){ +TGVOIP_FUNC(void, VoIPController_nativeSendGroupCallKey, jclass cls, jlong inst, jbyteArray _key){ jbyte* key=env->GetByteArrayElements(_key, NULL); ((VoIPController*)(intptr_t)inst)->SendGroupCallKey((unsigned char *) key); env->ReleaseByteArrayElements(_key, key, JNI_ABORT); } -extern "C" JNIEXPORT void Java_org_telegram_messenger_voip_VoIPController_nativeRequestCallUpgrade(JNIEnv* env, jclass cls, jlong inst){ +TGVOIP_FUNC(void, VoIPController_nativeRequestCallUpgrade, jclass cls, jlong inst){ ((VoIPController*)(intptr_t)inst)->RequestCallUpgrade(); } \ No newline at end of file From 632975bf349cbf3d036f82dba3fc6c55846d4bd1 Mon Sep 17 00:00:00 2001 From: default Date: Wed, 18 Jul 2018 18:40:08 +0300 Subject: [PATCH 2/2] removed .DS_Store & added it to .gitignore --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 1 + client/.DS_Store | Bin 6148 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 9235 -> 0 bytes .../xcschemes/libtgvoip.xcscheme | 80 ------------------ .../xcschemes/xcschememanagement.plist | 22 ----- .../xcschemes/xcschememanagement.plist | 14 --- .../UserInterfaceState.xcuserstate | Bin 9235 -> 0 bytes .../xcschemes/libtgvoip.xcscheme | 80 ------------------ .../xcschemes/xcschememanagement.plist | 22 ----- .../xcschemes/xcschememanagement.plist | 14 --- 11 files changed, 1 insertion(+), 232 deletions(-) delete mode 100644 .DS_Store delete mode 100644 client/.DS_Store delete mode 100644 libtgvoip.xcodeproj/project.xcworkspace/xcuserdata/grishka.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme delete mode 100644 libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 libtgvoip.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 libtgvoip_osx.xcodeproj/project.xcworkspace/xcuserdata/grishka.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme delete mode 100644 libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 libtgvoip_osx.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 9d5c08a7d268fea157190093bb978f73fa7dedab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKu};G<5PdEIRj^cIfPo=jfYgyKs=~t_Fa5WvYi8926f&CdH}jq!DyGw5|Me)1?dEf_!$?&=JTu=TU#uwRf961 z4E#R^{`_4Q@g(>b~xunD~9=O~x%7mjk_HK%4 zf0)@>>5}doo&DZ(X45pUs|v@LWN@7*BL){%V83a z+A0IeK%0RrKkUi-fBJp>-*(cGGN24>6aywohv|SRg|~GfIeBYi>WC^L>l%;Fg-v*l gT}PhcL#h+b#nK@r0UM9BQ1nN@(V&eo@TUyC0SWtum;e9( diff --git a/.gitignore b/.gitignore index f7e517ece4..c1b0826211 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.DS_Store bin .idea build diff --git a/client/.DS_Store b/client/.DS_Store deleted file mode 100644 index 43a1384bc3c49dd72da9c8bf0548fdc15c74d83a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ5EC}5S%5Eh?FKJrLVvZtSC7_E)c?NkRqN0qJI_V;%Ll%3Ze&HC_uB)dhGR% zEl=_GEdblT4fntXz>4mOcOT~F`|dNlsfZEjJY&QYhT-+`d>Uuj-v^v~iw8Voz{^+u zc=j!s6p#W^Knh3!DR5;4s=%(+S3XzANdYPF_Z9H(L!&$P!YMI69UP(sATAjW<2-r^ zV)Fp87fy+c&@8FMq*}EYmUPBj<@LfTG3l^sKCEuG>QF3h=lLztVLef!6p#X!3M_KD z@%q1~|Iq(mlC+WnQs7@HV9VWMx8;+nw$2{swYJfZbkF&qyKx>A4pEMYQI5Ira(ov_ bnb&;I{a!dF2A%Ps6ZJFTy2zx!Z!7Q#M6?xr diff --git a/libtgvoip.xcodeproj/project.xcworkspace/xcuserdata/grishka.xcuserdatad/UserInterfaceState.xcuserstate b/libtgvoip.xcodeproj/project.xcworkspace/xcuserdata/grishka.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 24e6306be3fcdbb3396ef98deffdcd8fe89cd297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9235 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 F{2#0)S{?uZ diff --git a/libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme b/libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme deleted file mode 100644 index a24e940e34..0000000000 --- a/libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist b/libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 253fba52b6..0000000000 --- a/libtgvoip.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - libtgvoip.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 69F842351E67540700C110F7 - - primary - - - - - diff --git a/libtgvoip.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist b/libtgvoip.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 3572d3d9ca..0000000000 --- a/libtgvoip.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SuppressBuildableAutocreation - - 69F842351E67540700C110F7 - - primary - - - - - diff --git a/libtgvoip_osx.xcodeproj/project.xcworkspace/xcuserdata/grishka.xcuserdatad/UserInterfaceState.xcuserstate b/libtgvoip_osx.xcodeproj/project.xcworkspace/xcuserdata/grishka.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 24e6306be3fcdbb3396ef98deffdcd8fe89cd297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9235 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 F{2#0)S{?uZ diff --git a/libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme b/libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme deleted file mode 100644 index a24e940e34..0000000000 --- a/libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/libtgvoip.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist b/libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 253fba52b6..0000000000 --- a/libtgvoip_osx.xcodeproj/xcuserdata/grishka.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - libtgvoip.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 69F842351E67540700C110F7 - - primary - - - - - diff --git a/libtgvoip_osx.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist b/libtgvoip_osx.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 3572d3d9ca..0000000000 --- a/libtgvoip_osx.xcodeproj/xcuserdata/peter.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SuppressBuildableAutocreation - - 69F842351E67540700C110F7 - - primary - - - - -