Loading media/libaudioclient/AudioPolicy.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ status_t AudioMix::readFromParcel(Parcel *parcel) mDeviceType = (audio_devices_t) parcel->readInt32(); mDeviceAddress = parcel->readString8(); mCbFlags = (uint32_t)parcel->readInt32(); mAllowPrivilegedPlaybackCapture = parcel->readBool(); size_t size = (size_t)parcel->readInt32(); if (size > MAX_CRITERIA_PER_MIX) { size = MAX_CRITERIA_PER_MIX; Loading @@ -120,6 +121,7 @@ status_t AudioMix::writeToParcel(Parcel *parcel) const parcel->writeInt32(mDeviceType); parcel->writeString8(mDeviceAddress); parcel->writeInt32(mCbFlags); parcel->writeBool(mAllowPrivilegedPlaybackCapture); size_t size = mCriteria.size(); if (size > MAX_CRITERIA_PER_MIX) { size = MAX_CRITERIA_PER_MIX; Loading media/libaudioclient/include/media/AudioPolicy.h +2 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,8 @@ public: audio_devices_t mDeviceType; String8 mDeviceAddress; uint32_t mCbFlags; // flags indicating which callbacks to use, see kCbFlag* /** Ignore the AUDIO_FLAG_NO_MEDIA_PROJECTION */ bool mAllowPrivilegedPlaybackCapture = false; }; Loading media/libmedia/TypeConverter.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -392,7 +392,8 @@ const AudioFlagConverter::Table AudioFlagConverter::mTable[] = { MAKE_STRING_FROM_ENUM(AUDIO_FLAG_BYPASS_MUTE), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_LOW_LATENCY), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_DEEP_BUFFER), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_CAPTURE), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_MEDIA_PROJECTION), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_SYSTEM_CAPTURE), TERMINATOR }; Loading media/utils/ServiceUtilities.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,14 @@ bool captureAudioOutputAllowed(pid_t pid, uid_t uid) { return ok; } bool captureMediaOutputAllowed(pid_t pid, uid_t uid) { if (isAudioServerOrRootUid(uid)) return true; static const String16 sCaptureMediaOutput("android.permission.CAPTURE_MEDIA_OUTPUT"); bool ok = PermissionCache::checkPermission(sCaptureMediaOutput, pid, uid); if (!ok) ALOGE("Request requires android.permission.CAPTURE_MEDIA_OUTPUT"); return ok; } bool captureHotwordAllowed(pid_t pid, uid_t uid) { // CAPTURE_AUDIO_HOTWORD permission implies RECORD_AUDIO permission bool ok = recordingAllowed(String16(""), pid, uid); Loading media/utils/include/mediautils/ServiceUtilities.h +1 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ bool recordingAllowed(const String16& opPackageName, pid_t pid, uid_t uid); bool startRecording(const String16& opPackageName, pid_t pid, uid_t uid); void finishRecording(const String16& opPackageName, uid_t uid); bool captureAudioOutputAllowed(pid_t pid, uid_t uid); bool captureMediaOutputAllowed(pid_t pid, uid_t uid); bool captureHotwordAllowed(pid_t pid, uid_t uid); bool settingsAllowed(); bool modifyAudioRoutingAllowed(); Loading Loading
media/libaudioclient/AudioPolicy.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ status_t AudioMix::readFromParcel(Parcel *parcel) mDeviceType = (audio_devices_t) parcel->readInt32(); mDeviceAddress = parcel->readString8(); mCbFlags = (uint32_t)parcel->readInt32(); mAllowPrivilegedPlaybackCapture = parcel->readBool(); size_t size = (size_t)parcel->readInt32(); if (size > MAX_CRITERIA_PER_MIX) { size = MAX_CRITERIA_PER_MIX; Loading @@ -120,6 +121,7 @@ status_t AudioMix::writeToParcel(Parcel *parcel) const parcel->writeInt32(mDeviceType); parcel->writeString8(mDeviceAddress); parcel->writeInt32(mCbFlags); parcel->writeBool(mAllowPrivilegedPlaybackCapture); size_t size = mCriteria.size(); if (size > MAX_CRITERIA_PER_MIX) { size = MAX_CRITERIA_PER_MIX; Loading
media/libaudioclient/include/media/AudioPolicy.h +2 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,8 @@ public: audio_devices_t mDeviceType; String8 mDeviceAddress; uint32_t mCbFlags; // flags indicating which callbacks to use, see kCbFlag* /** Ignore the AUDIO_FLAG_NO_MEDIA_PROJECTION */ bool mAllowPrivilegedPlaybackCapture = false; }; Loading
media/libmedia/TypeConverter.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -392,7 +392,8 @@ const AudioFlagConverter::Table AudioFlagConverter::mTable[] = { MAKE_STRING_FROM_ENUM(AUDIO_FLAG_BYPASS_MUTE), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_LOW_LATENCY), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_DEEP_BUFFER), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_CAPTURE), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_MEDIA_PROJECTION), MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_SYSTEM_CAPTURE), TERMINATOR }; Loading
media/utils/ServiceUtilities.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,14 @@ bool captureAudioOutputAllowed(pid_t pid, uid_t uid) { return ok; } bool captureMediaOutputAllowed(pid_t pid, uid_t uid) { if (isAudioServerOrRootUid(uid)) return true; static const String16 sCaptureMediaOutput("android.permission.CAPTURE_MEDIA_OUTPUT"); bool ok = PermissionCache::checkPermission(sCaptureMediaOutput, pid, uid); if (!ok) ALOGE("Request requires android.permission.CAPTURE_MEDIA_OUTPUT"); return ok; } bool captureHotwordAllowed(pid_t pid, uid_t uid) { // CAPTURE_AUDIO_HOTWORD permission implies RECORD_AUDIO permission bool ok = recordingAllowed(String16(""), pid, uid); Loading
media/utils/include/mediautils/ServiceUtilities.h +1 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ bool recordingAllowed(const String16& opPackageName, pid_t pid, uid_t uid); bool startRecording(const String16& opPackageName, pid_t pid, uid_t uid); void finishRecording(const String16& opPackageName, uid_t uid); bool captureAudioOutputAllowed(pid_t pid, uid_t uid); bool captureMediaOutputAllowed(pid_t pid, uid_t uid); bool captureHotwordAllowed(pid_t pid, uid_t uid); bool settingsAllowed(); bool modifyAudioRoutingAllowed(); Loading