diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-06-03 01:08:14 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-06-03 01:08:14 +0000 |
commit | 887269dd2c83828bf57182940ed00e00759760af (patch) | |
tree | c9a45b33b3c2d00e39bc4be8877abfcd86fa1e41 | |
parent | 03641651598603f686873f85b8f04adc11768e3d (diff) | |
parent | 599af3cf252fbd5fd8dc00ad5f9a28947d6f62d4 (diff) | |
download | voip-android-platform-12.0.0_r10.tar.gz |
Snap for 7419753 from 599af3cf252fbd5fd8dc00ad5f9a28947d6f62d4 to sc-releaseandroid-vts-12.0_r9android-vts-12.0_r8android-vts-12.0_r7android-vts-12.0_r6android-vts-12.0_r5android-vts-12.0_r4android-vts-12.0_r3android-vts-12.0_r2android-vts-12.0_r12android-vts-12.0_r11android-vts-12.0_r10android-vts-12.0_r1android-security-12.0.0_r60android-security-12.0.0_r59android-security-12.0.0_r58android-security-12.0.0_r57android-security-12.0.0_r56android-security-12.0.0_r55android-security-12.0.0_r54android-security-12.0.0_r53android-security-12.0.0_r52android-security-12.0.0_r51android-security-12.0.0_r50android-security-12.0.0_r49android-security-12.0.0_r48android-security-12.0.0_r47android-security-12.0.0_r46android-security-12.0.0_r45android-security-12.0.0_r44android-security-12.0.0_r43android-security-12.0.0_r42android-security-12.0.0_r41android-security-12.0.0_r40android-security-12.0.0_r39android-security-12.0.0_r38android-security-12.0.0_r37android-security-12.0.0_r36android-security-12.0.0_r35android-security-12.0.0_r34android-platform-12.0.0_r9android-platform-12.0.0_r8android-platform-12.0.0_r7android-platform-12.0.0_r6android-platform-12.0.0_r5android-platform-12.0.0_r4android-platform-12.0.0_r32android-platform-12.0.0_r31android-platform-12.0.0_r30android-platform-12.0.0_r3android-platform-12.0.0_r29android-platform-12.0.0_r28android-platform-12.0.0_r27android-platform-12.0.0_r26android-platform-12.0.0_r25android-platform-12.0.0_r24android-platform-12.0.0_r23android-platform-12.0.0_r22android-platform-12.0.0_r21android-platform-12.0.0_r20android-platform-12.0.0_r2android-platform-12.0.0_r19android-platform-12.0.0_r18android-platform-12.0.0_r17android-platform-12.0.0_r16android-platform-12.0.0_r15android-platform-12.0.0_r14android-platform-12.0.0_r13android-platform-12.0.0_r12android-platform-12.0.0_r11android-platform-12.0.0_r10android-platform-12.0.0_r1android-cts-12.0_r9android-cts-12.0_r8android-cts-12.0_r7android-cts-12.0_r6android-cts-12.0_r5android-cts-12.0_r4android-cts-12.0_r3android-cts-12.0_r2android-cts-12.0_r12android-cts-12.0_r11android-cts-12.0_r10android-cts-12.0_r1android-12.0.0_r9android-12.0.0_r8android-12.0.0_r34android-12.0.0_r33android-12.0.0_r31android-12.0.0_r30android-12.0.0_r3android-12.0.0_r25android-12.0.0_r2android-12.0.0_r11android-12.0.0_r10android-12.0.0_r1android12-tests-releaseandroid12-security-releaseandroid12-s5-releaseandroid12-s4-releaseandroid12-s3-releaseandroid12-s2-releaseandroid12-s1-releaseandroid12-releaseandroid12-platform-release
Change-Id: I9a5af27ed753ee35b2ae8290cd13d1c69143406c
-rw-r--r-- | src/java/android/net/rtp/AudioGroup.java | 21 | ||||
-rw-r--r-- | src/jni/rtp/Android.bp | 5 | ||||
-rw-r--r-- | src/jni/rtp/AudioGroup.cpp | 62 |
3 files changed, 31 insertions, 57 deletions
diff --git a/src/java/android/net/rtp/AudioGroup.java b/src/java/android/net/rtp/AudioGroup.java index c186125..3a85bbc 100644 --- a/src/java/android/net/rtp/AudioGroup.java +++ b/src/java/android/net/rtp/AudioGroup.java @@ -16,12 +16,11 @@ package android.net.rtp; -import static android.media.permission.PermissionUtil.myIdentity; - import android.annotation.NonNull; +import android.content.AttributionSource; import android.content.Context; import android.media.AudioManager; -import android.media.permission.Identity; +import android.os.Parcel; import java.util.HashMap; import java.util.Locale; @@ -170,10 +169,14 @@ public class AudioGroup { String codecSpec = String.format(Locale.US, "%d %s %s", codec.type, codec.rtpmap, codec.fmtp); - long id = nativeAdd(stream.getMode(), stream.getSocket(), - stream.getRemoteAddress().getHostAddress(), - stream.getRemotePort(), codecSpec, stream.getDtmfType(), - myIdentity(mContext)); + final long id; + try (AttributionSource.ScopedParcelState attributionSourceState = mContext + .getAttributionSource().asScopedParcelState()) { + id = nativeAdd(stream.getMode(), stream.getSocket(), + stream.getRemoteAddress().getHostAddress(), + stream.getRemotePort(), codecSpec, stream.getDtmfType(), + attributionSourceState.getParcel()); + } mStreams.put(stream, id); } catch (NullPointerException e) { throw new IllegalStateException(e); @@ -181,8 +184,8 @@ public class AudioGroup { } } - private native long nativeAdd(int mode, int socket, String remoteAddress, - int remotePort, String codecSpec, int dtmfType, Identity identity); + private native long nativeAdd(int mode, int socket, String remoteAddress, int remotePort, + String codecSpec, int dtmfType, Parcel attributionSource); // Package-private method used by AudioStream.join(). synchronized void remove(AudioStream stream) { diff --git a/src/jni/rtp/Android.bp b/src/jni/rtp/Android.bp index 3469960..325d6b9 100644 --- a/src/jni/rtp/Android.bp +++ b/src/jni/rtp/Android.bp @@ -36,17 +36,20 @@ cc_library_shared { ], shared_libs: [ + "framework-permission-aidl-cpp", + "libandroid_runtime", "libaudioclient", "libaudiofoundation", + "libbinder", "libcutils", "liblog", "libnativehelper", "libstagefright_amrnb_common", "libutils", - "media_permission-aidl-cpp", ], static_libs: [ "libgsm", + "framework-permission-aidl-cpp", "libstagefright_amrnbdec", "libstagefright_amrnbenc", ], diff --git a/src/jni/rtp/AudioGroup.cpp b/src/jni/rtp/AudioGroup.cpp index 644b414..e92e799 100644 --- a/src/jni/rtp/AudioGroup.cpp +++ b/src/jni/rtp/AudioGroup.cpp @@ -44,6 +44,8 @@ #include <system/audio.h> #include <nativehelper/ScopedUtfChars.h> +#include <android/content/AttributionSourceState.h> +#include <android_os_Parcel.h> #include "jni.h" #include <nativehelper/JNIHelp.h> @@ -57,17 +59,10 @@ namespace { using namespace android; -using media::permission::Identity; +using android::content::AttributionSourceState; int gRandom = -1; -static struct { - jfieldID fieldUid; // Identity.uid - jfieldID fieldPid; // Identity.pid - jfieldID fieldPackageName; // Identity.packageName - jfieldID fieldAttributionTag; // Identity.attributionTag -} javaIdentityFields; - // We use a circular array to implement jitter buffer. The simplest way is doing // a modulo operation on the index while accessing the array. However modulo can // be expensive on some platforms, such as ARM. Thus we round up the size of the @@ -489,7 +484,7 @@ void AudioStream::decode(int tick) class AudioGroup { public: - explicit AudioGroup(const Identity &identity); + explicit AudioGroup(const AttributionSourceState &attributionSource); ~AudioGroup(); bool set(int sampleRate, int sampleCount); @@ -514,7 +509,7 @@ private: int mEventQueue; volatile int mDtmfEvent; - Identity mIdentity; + const AttributionSourceState mAttributionSource; int mMode; int mSampleRate; @@ -563,9 +558,9 @@ private: sp<DeviceThread> mDeviceThread; }; -AudioGroup::AudioGroup(const Identity &identity) +AudioGroup::AudioGroup(const AttributionSourceState &attributionSource) + : mAttributionSource(attributionSource) { - mIdentity = identity; mMode = ON_HOLD; mChain = NULL; mEventQueue = -1; @@ -827,7 +822,7 @@ bool AudioGroup::DeviceThread::threadLoop() // Initialize AudioTrack and AudioRecord. sp<AudioTrack> track = new AudioTrack(); - sp<AudioRecord> record = new AudioRecord(mGroup->mIdentity); + sp<AudioRecord> record = new AudioRecord(mGroup->mAttributionSource); // Set caller name so it can be logged in destructor. // MediaMetricsConstants.h: AMEDIAMETRICS_PROP_CALLERNAME_VALUE_RTP track->setCallerName("rtp"); @@ -860,7 +855,7 @@ bool AudioGroup::DeviceThread::threadLoop() sp<AudioEffect> aec; if (mode == ECHO_SUPPRESSION) { if (mGroup->platformHasAec()) { - aec = new AudioEffect(mGroup->mIdentity); + aec = new AudioEffect(mGroup->mAttributionSource); aec->set(FX_IID_AEC, NULL, 0, @@ -962,7 +957,7 @@ static jfieldID gMode; jlong add(JNIEnv *env, jobject thiz, jint mode, jint socket, jstring jRemoteAddress, jint remotePort, - jstring jCodecSpec, jint dtmfType, jobject jIdentity) + jstring jCodecSpec, jint dtmfType, jobject jAttributionSource) { AudioCodec *codec = NULL; AudioStream *stream = NULL; @@ -990,25 +985,9 @@ jlong add(JNIEnv *env, jobject thiz, jint mode, return 0; } - Identity identity; - identity.uid = env->GetIntField(jIdentity, javaIdentityFields.fieldUid); - identity.pid = env->GetIntField(jIdentity, javaIdentityFields.fieldPid); - jstring packageNameStr = static_cast<jstring>( - env->GetObjectField(jIdentity, javaIdentityFields.fieldPackageName)); - if (packageNameStr == NULL) { - identity.packageName = std::nullopt; - } else { - identity.packageName = std::optional<std::string>( - std::string(ScopedUtfChars(env, packageNameStr).c_str())); - } - jstring attributionTagStr = static_cast<jstring>( - env->GetObjectField(jIdentity, javaIdentityFields.fieldAttributionTag)); - if (attributionTagStr == NULL) { - identity.attributionTag = std::nullopt; - } else { - identity.attributionTag = std::optional<std::string>( - std::string(ScopedUtfChars(env, attributionTagStr).c_str())); - } + Parcel* parcel = parcelForJavaObject(env, jAttributionSource); + AttributionSourceState attributionSource; + attributionSource.readFromParcel(parcel); // Create audio codec. int codecType = -1; @@ -1039,7 +1018,7 @@ jlong add(JNIEnv *env, jobject thiz, jint mode, group = (AudioGroup *)env->GetLongField(thiz, gNative); if (!group) { int mode = env->GetIntField(thiz, gMode); - group = new AudioGroup(identity); + group = new AudioGroup(attributionSource); if (!group->set(8000, 256) || !group->setMode(mode)) { jniThrowException(env, "java/lang/IllegalStateException", "cannot initialize audio group"); @@ -1095,7 +1074,7 @@ void sendDtmf(JNIEnv *env, jobject thiz, jint event) } JNINativeMethod gMethods[] = { - {"nativeAdd", "(IILjava/lang/String;ILjava/lang/String;ILandroid/media/permission/Identity;)J", (void *)add}, + {"nativeAdd", "(IILjava/lang/String;ILjava/lang/String;ILandroid/os/Parcel;)J", (void *)add}, {"nativeRemove", "(J)V", (void *)remove}, {"nativeSetMode", "(I)V", (void *)setMode}, {"nativeSendDtmf", "(I)V", (void *)sendDtmf}, @@ -1120,16 +1099,5 @@ int registerAudioGroup(JNIEnv *env) return -1; } - // Get the Identity class and fields - jclass identityClass = env->FindClass("android/media/permission/Identity"); - javaIdentityFields.fieldUid = - env->GetFieldID(identityClass, "uid", "I"); - javaIdentityFields.fieldPid = - env->GetFieldID(identityClass, "pid", "I"); - javaIdentityFields.fieldPackageName = - env->GetFieldID(identityClass, "packageName", "Ljava/lang/String;"); - javaIdentityFields.fieldAttributionTag = - env->GetFieldID(identityClass, "attributionTag", "Ljava/lang/String;"); - return 0; } |