diff --git a/Android.bp b/Android.bp index c6f9362b4919c..59530079d4ade 100644 --- a/Android.bp +++ b/Android.bp @@ -547,6 +547,7 @@ java_library { exclude_srcs: ["core/java/android/content/pm/AndroidTestBaseUpdater.java"], aidl: { generate_get_transaction_name: true, + local_include_dirs: ["media/aidl"], }, dxflags: [ "--core-library", @@ -583,6 +584,7 @@ java_library { // in favor of an API stubs dependency in java_library "framework" below. "mimemap", "mediatranscoding_aidl_interface-java", + "soundtrigger_middleware-aidl-java", ], // For backwards compatibility. stem: "framework", diff --git a/ApiDocs.bp b/ApiDocs.bp index ca921ff97c350..c82fee0fe8ace 100644 --- a/ApiDocs.bp +++ b/ApiDocs.bp @@ -83,6 +83,10 @@ stubs_defaults { merge_annotations_dirs: [ "metalava-manual", ], + // TODO(b/169090544): remove below aidl includes. + aidl: { + local_include_dirs: ["media/aidl"], + }, } droidstubs { @@ -150,6 +154,10 @@ doc_defaults { ":current-support-api", ":current-androidx-api", ], + // TODO(b/169090544): remove below aidl includes. + aidl: { + local_include_dirs: ["media/aidl"], + }, } doc_defaults { diff --git a/StubLibraries.bp b/StubLibraries.bp index 0458e7960eff6..852fcc6128c4b 100644 --- a/StubLibraries.bp +++ b/StubLibraries.bp @@ -51,9 +51,12 @@ stubs_defaults { ":android_icu4j_public_api_files", "**/package.html", ], - // TODO(b/147699819): remove below aidl includes. + // TODO(b/147699819, b/169090544): remove below aidl includes. aidl: { - local_include_dirs: ["telephony/java"], + local_include_dirs: [ + "telephony/java", + "media/aidl", + ], }, libs: ["framework-internal-utils"], installable: false, diff --git a/core/java/android/hardware/soundtrigger/ConversionUtil.java b/core/java/android/hardware/soundtrigger/ConversionUtil.java index c4d123ca4382c..06b5b6745bd17 100644 --- a/core/java/android/hardware/soundtrigger/ConversionUtil.java +++ b/core/java/android/hardware/soundtrigger/ConversionUtil.java @@ -32,10 +32,12 @@ import android.media.soundtrigger_middleware.RecognitionMode; import android.media.soundtrigger_middleware.SoundModel; import android.media.soundtrigger_middleware.SoundTriggerModuleDescriptor; import android.media.soundtrigger_middleware.SoundTriggerModuleProperties; +import android.os.ParcelFileDescriptor; import android.os.SharedMemory; import android.system.ErrnoException; import java.io.FileDescriptor; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.UUID; @@ -109,7 +111,12 @@ class ConversionUtil { aidlModel.type = apiModel.getType(); aidlModel.uuid = api2aidlUuid(apiModel.getUuid()); aidlModel.vendorUuid = api2aidlUuid(apiModel.getVendorUuid()); - aidlModel.data = byteArrayToSharedMemory(apiModel.getData(), "SoundTrigger SoundModel"); + try { + aidlModel.data = ParcelFileDescriptor.dup( + byteArrayToSharedMemory(apiModel.getData(), "SoundTrigger SoundModel")); + } catch (IOException e) { + throw new RuntimeException(e); + } aidlModel.dataSize = apiModel.getData().length; return aidlModel; } diff --git a/media/Android.bp b/media/Android.bp index 8895b3a9a2ba7..828707b70e7b4 100644 --- a/media/Android.bp +++ b/media/Android.bp @@ -1,85 +1,52 @@ aidl_interface { name: "audio_common-aidl", unstable: true, - local_include_dir: "java", + local_include_dir: "aidl", srcs: [ - "java/android/media/audio/common/AudioChannelMask.aidl", - "java/android/media/audio/common/AudioConfig.aidl", - "java/android/media/audio/common/AudioFormat.aidl", - "java/android/media/audio/common/AudioOffloadInfo.aidl", - "java/android/media/audio/common/AudioStreamType.aidl", - "java/android/media/audio/common/AudioUsage.aidl", + "aidl/android/media/audio/common/AudioChannelMask.aidl", + "aidl/android/media/audio/common/AudioConfig.aidl", + "aidl/android/media/audio/common/AudioFormat.aidl", + "aidl/android/media/audio/common/AudioOffloadInfo.aidl", + "aidl/android/media/audio/common/AudioStreamType.aidl", + "aidl/android/media/audio/common/AudioUsage.aidl", ], - backend: - { - cpp: { - enabled: true, - }, - java: { - // Already generated as part of the entire media java library. - enabled: false, - }, - }, } aidl_interface { name: "media_permission-aidl", unstable: true, - local_include_dir: "java", + local_include_dir: "aidl", srcs: [ - "java/android/media/permission/Identity.aidl", + "aidl/android/media/permission/Identity.aidl", ], - backend: - { - cpp: { - enabled: true, - }, - java: { - // Already generated as part of the entire media java library. - enabled: false, - }, - }, } aidl_interface { name: "soundtrigger_middleware-aidl", unstable: true, - local_include_dir: "java", + local_include_dir: "aidl", srcs: [ - "java/android/media/soundtrigger_middleware/ConfidenceLevel.aidl", - "java/android/media/soundtrigger_middleware/ISoundTriggerCallback.aidl", - "java/android/media/soundtrigger_middleware/ISoundTriggerMiddlewareService.aidl", - "java/android/media/soundtrigger_middleware/ISoundTriggerModule.aidl", - "java/android/media/soundtrigger_middleware/ModelParameter.aidl", - "java/android/media/soundtrigger_middleware/ModelParameterRange.aidl", - "java/android/media/soundtrigger_middleware/Phrase.aidl", - "java/android/media/soundtrigger_middleware/PhraseRecognitionEvent.aidl", - "java/android/media/soundtrigger_middleware/PhraseRecognitionExtra.aidl", - "java/android/media/soundtrigger_middleware/PhraseSoundModel.aidl", - "java/android/media/soundtrigger_middleware/RecognitionConfig.aidl", - "java/android/media/soundtrigger_middleware/RecognitionEvent.aidl", - "java/android/media/soundtrigger_middleware/RecognitionMode.aidl", - "java/android/media/soundtrigger_middleware/RecognitionStatus.aidl", - "java/android/media/soundtrigger_middleware/SoundModel.aidl", - "java/android/media/soundtrigger_middleware/SoundModelType.aidl", - "java/android/media/soundtrigger_middleware/SoundTriggerModuleDescriptor.aidl", - "java/android/media/soundtrigger_middleware/SoundTriggerModuleProperties.aidl", - "java/android/media/soundtrigger_middleware/Status.aidl", + "aidl/android/media/soundtrigger_middleware/AudioCapabilities.aidl", + "aidl/android/media/soundtrigger_middleware/ConfidenceLevel.aidl", + "aidl/android/media/soundtrigger_middleware/ISoundTriggerCallback.aidl", + "aidl/android/media/soundtrigger_middleware/ISoundTriggerMiddlewareService.aidl", + "aidl/android/media/soundtrigger_middleware/ISoundTriggerModule.aidl", + "aidl/android/media/soundtrigger_middleware/ModelParameter.aidl", + "aidl/android/media/soundtrigger_middleware/ModelParameterRange.aidl", + "aidl/android/media/soundtrigger_middleware/Phrase.aidl", + "aidl/android/media/soundtrigger_middleware/PhraseRecognitionEvent.aidl", + "aidl/android/media/soundtrigger_middleware/PhraseRecognitionExtra.aidl", + "aidl/android/media/soundtrigger_middleware/PhraseSoundModel.aidl", + "aidl/android/media/soundtrigger_middleware/RecognitionConfig.aidl", + "aidl/android/media/soundtrigger_middleware/RecognitionEvent.aidl", + "aidl/android/media/soundtrigger_middleware/RecognitionMode.aidl", + "aidl/android/media/soundtrigger_middleware/RecognitionStatus.aidl", + "aidl/android/media/soundtrigger_middleware/SoundModel.aidl", + "aidl/android/media/soundtrigger_middleware/SoundModelType.aidl", + "aidl/android/media/soundtrigger_middleware/SoundTriggerModuleDescriptor.aidl", + "aidl/android/media/soundtrigger_middleware/SoundTriggerModuleProperties.aidl", + "aidl/android/media/soundtrigger_middleware/Status.aidl", ], - backend: - { - cpp: { - enabled: true, - }, - java: { - // Already generated as part of the entire media java library. - enabled: false, - }, - ndk: { - // Not currently needed, and disabled because of b/146172425 - enabled: false, - }, - }, imports: [ "audio_common-aidl", "media_permission-aidl", diff --git a/media/java/android/media/audio/common/AudioChannelMask.aidl b/media/aidl/android/media/audio/common/AudioChannelMask.aidl similarity index 100% rename from media/java/android/media/audio/common/AudioChannelMask.aidl rename to media/aidl/android/media/audio/common/AudioChannelMask.aidl diff --git a/media/java/android/media/audio/common/AudioConfig.aidl b/media/aidl/android/media/audio/common/AudioConfig.aidl similarity index 100% rename from media/java/android/media/audio/common/AudioConfig.aidl rename to media/aidl/android/media/audio/common/AudioConfig.aidl diff --git a/media/java/android/media/audio/common/AudioFormat.aidl b/media/aidl/android/media/audio/common/AudioFormat.aidl similarity index 100% rename from media/java/android/media/audio/common/AudioFormat.aidl rename to media/aidl/android/media/audio/common/AudioFormat.aidl diff --git a/media/java/android/media/audio/common/AudioOffloadInfo.aidl b/media/aidl/android/media/audio/common/AudioOffloadInfo.aidl similarity index 100% rename from media/java/android/media/audio/common/AudioOffloadInfo.aidl rename to media/aidl/android/media/audio/common/AudioOffloadInfo.aidl diff --git a/media/java/android/media/audio/common/AudioStreamType.aidl b/media/aidl/android/media/audio/common/AudioStreamType.aidl similarity index 100% rename from media/java/android/media/audio/common/AudioStreamType.aidl rename to media/aidl/android/media/audio/common/AudioStreamType.aidl diff --git a/media/java/android/media/audio/common/AudioUsage.aidl b/media/aidl/android/media/audio/common/AudioUsage.aidl similarity index 100% rename from media/java/android/media/audio/common/AudioUsage.aidl rename to media/aidl/android/media/audio/common/AudioUsage.aidl diff --git a/media/java/android/media/permission/Identity.aidl b/media/aidl/android/media/permission/Identity.aidl similarity index 100% rename from media/java/android/media/permission/Identity.aidl rename to media/aidl/android/media/permission/Identity.aidl diff --git a/media/java/android/media/soundtrigger_middleware/AudioCapabilities.aidl b/media/aidl/android/media/soundtrigger_middleware/AudioCapabilities.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/AudioCapabilities.aidl rename to media/aidl/android/media/soundtrigger_middleware/AudioCapabilities.aidl diff --git a/media/java/android/media/soundtrigger_middleware/ConfidenceLevel.aidl b/media/aidl/android/media/soundtrigger_middleware/ConfidenceLevel.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/ConfidenceLevel.aidl rename to media/aidl/android/media/soundtrigger_middleware/ConfidenceLevel.aidl diff --git a/media/java/android/media/soundtrigger_middleware/ISoundTriggerCallback.aidl b/media/aidl/android/media/soundtrigger_middleware/ISoundTriggerCallback.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/ISoundTriggerCallback.aidl rename to media/aidl/android/media/soundtrigger_middleware/ISoundTriggerCallback.aidl diff --git a/media/java/android/media/soundtrigger_middleware/ISoundTriggerMiddlewareService.aidl b/media/aidl/android/media/soundtrigger_middleware/ISoundTriggerMiddlewareService.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/ISoundTriggerMiddlewareService.aidl rename to media/aidl/android/media/soundtrigger_middleware/ISoundTriggerMiddlewareService.aidl diff --git a/media/java/android/media/soundtrigger_middleware/ISoundTriggerModule.aidl b/media/aidl/android/media/soundtrigger_middleware/ISoundTriggerModule.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/ISoundTriggerModule.aidl rename to media/aidl/android/media/soundtrigger_middleware/ISoundTriggerModule.aidl diff --git a/media/java/android/media/soundtrigger_middleware/ModelParameter.aidl b/media/aidl/android/media/soundtrigger_middleware/ModelParameter.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/ModelParameter.aidl rename to media/aidl/android/media/soundtrigger_middleware/ModelParameter.aidl diff --git a/media/java/android/media/soundtrigger_middleware/ModelParameterRange.aidl b/media/aidl/android/media/soundtrigger_middleware/ModelParameterRange.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/ModelParameterRange.aidl rename to media/aidl/android/media/soundtrigger_middleware/ModelParameterRange.aidl diff --git a/media/java/android/media/soundtrigger_middleware/OWNERS b/media/aidl/android/media/soundtrigger_middleware/OWNERS similarity index 100% rename from media/java/android/media/soundtrigger_middleware/OWNERS rename to media/aidl/android/media/soundtrigger_middleware/OWNERS diff --git a/media/java/android/media/soundtrigger_middleware/Phrase.aidl b/media/aidl/android/media/soundtrigger_middleware/Phrase.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/Phrase.aidl rename to media/aidl/android/media/soundtrigger_middleware/Phrase.aidl diff --git a/media/java/android/media/soundtrigger_middleware/PhraseRecognitionEvent.aidl b/media/aidl/android/media/soundtrigger_middleware/PhraseRecognitionEvent.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/PhraseRecognitionEvent.aidl rename to media/aidl/android/media/soundtrigger_middleware/PhraseRecognitionEvent.aidl diff --git a/media/java/android/media/soundtrigger_middleware/PhraseRecognitionExtra.aidl b/media/aidl/android/media/soundtrigger_middleware/PhraseRecognitionExtra.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/PhraseRecognitionExtra.aidl rename to media/aidl/android/media/soundtrigger_middleware/PhraseRecognitionExtra.aidl diff --git a/media/java/android/media/soundtrigger_middleware/PhraseSoundModel.aidl b/media/aidl/android/media/soundtrigger_middleware/PhraseSoundModel.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/PhraseSoundModel.aidl rename to media/aidl/android/media/soundtrigger_middleware/PhraseSoundModel.aidl diff --git a/media/java/android/media/soundtrigger_middleware/RecognitionConfig.aidl b/media/aidl/android/media/soundtrigger_middleware/RecognitionConfig.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/RecognitionConfig.aidl rename to media/aidl/android/media/soundtrigger_middleware/RecognitionConfig.aidl diff --git a/media/java/android/media/soundtrigger_middleware/RecognitionEvent.aidl b/media/aidl/android/media/soundtrigger_middleware/RecognitionEvent.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/RecognitionEvent.aidl rename to media/aidl/android/media/soundtrigger_middleware/RecognitionEvent.aidl diff --git a/media/java/android/media/soundtrigger_middleware/RecognitionMode.aidl b/media/aidl/android/media/soundtrigger_middleware/RecognitionMode.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/RecognitionMode.aidl rename to media/aidl/android/media/soundtrigger_middleware/RecognitionMode.aidl diff --git a/media/java/android/media/soundtrigger_middleware/RecognitionStatus.aidl b/media/aidl/android/media/soundtrigger_middleware/RecognitionStatus.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/RecognitionStatus.aidl rename to media/aidl/android/media/soundtrigger_middleware/RecognitionStatus.aidl diff --git a/media/java/android/media/soundtrigger_middleware/SoundModel.aidl b/media/aidl/android/media/soundtrigger_middleware/SoundModel.aidl similarity index 94% rename from media/java/android/media/soundtrigger_middleware/SoundModel.aidl rename to media/aidl/android/media/soundtrigger_middleware/SoundModel.aidl index 81d8291e85aa3..cee3635a1e3bf 100644 --- a/media/java/android/media/soundtrigger_middleware/SoundModel.aidl +++ b/media/aidl/android/media/soundtrigger_middleware/SoundModel.aidl @@ -16,6 +16,7 @@ package android.media.soundtrigger_middleware; import android.media.soundtrigger_middleware.SoundModelType; +import android.os.ParcelFileDescriptor; /** * Base sound model descriptor. This struct can be extended for various specific types by way of @@ -32,7 +33,7 @@ parcelable SoundModel { * was build for */ String vendorUuid; /** Opaque data transparent to Android framework */ - FileDescriptor data; + ParcelFileDescriptor data; /** Size of the above data, in bytes. */ int dataSize; } diff --git a/media/java/android/media/soundtrigger_middleware/SoundModelType.aidl b/media/aidl/android/media/soundtrigger_middleware/SoundModelType.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/SoundModelType.aidl rename to media/aidl/android/media/soundtrigger_middleware/SoundModelType.aidl diff --git a/media/java/android/media/soundtrigger_middleware/SoundTriggerModuleDescriptor.aidl b/media/aidl/android/media/soundtrigger_middleware/SoundTriggerModuleDescriptor.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/SoundTriggerModuleDescriptor.aidl rename to media/aidl/android/media/soundtrigger_middleware/SoundTriggerModuleDescriptor.aidl diff --git a/media/java/android/media/soundtrigger_middleware/SoundTriggerModuleProperties.aidl b/media/aidl/android/media/soundtrigger_middleware/SoundTriggerModuleProperties.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/SoundTriggerModuleProperties.aidl rename to media/aidl/android/media/soundtrigger_middleware/SoundTriggerModuleProperties.aidl diff --git a/media/java/android/media/soundtrigger_middleware/Status.aidl b/media/aidl/android/media/soundtrigger_middleware/Status.aidl similarity index 100% rename from media/java/android/media/soundtrigger_middleware/Status.aidl rename to media/aidl/android/media/soundtrigger_middleware/Status.aidl diff --git a/services/core/java/com/android/server/soundtrigger_middleware/ConversionUtil.java b/services/core/java/com/android/server/soundtrigger_middleware/ConversionUtil.java index 1d31285ed9c7b..de8823c4b7f3e 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/ConversionUtil.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/ConversionUtil.java @@ -40,7 +40,10 @@ import android.media.soundtrigger_middleware.SoundModel; import android.media.soundtrigger_middleware.SoundModelType; import android.media.soundtrigger_middleware.SoundTriggerModuleProperties; import android.os.HidlMemoryUtil; +import android.os.ParcelFileDescriptor; +import java.io.FileDescriptor; +import java.io.IOException; import java.util.regex.Matcher; /** @@ -196,8 +199,18 @@ class ConversionUtil { hidlModel.header.type = aidl2hidlSoundModelType(aidlModel.type); hidlModel.header.uuid = aidl2hidlUuid(aidlModel.uuid); hidlModel.header.vendorUuid = aidl2hidlUuid(aidlModel.vendorUuid); - hidlModel.data = HidlMemoryUtil.fileDescriptorToHidlMemory(aidlModel.data, - aidlModel.dataSize); + + // Extract a dup of the underlying FileDescriptor out of aidlModel.data without changing + // the original. + FileDescriptor fd = new FileDescriptor(); + try { + ParcelFileDescriptor dup = aidlModel.data.dup(); + fd.setInt$(dup.detachFd()); + hidlModel.data = HidlMemoryUtil.fileDescriptorToHidlMemory(fd, aidlModel.dataSize); + } catch (IOException e) { + throw new RuntimeException(e); + } + return hidlModel; } diff --git a/services/tests/servicestests/src/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImplTest.java b/services/tests/servicestests/src/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImplTest.java index ebcf10dd019f4..509eb25633767 100644 --- a/services/tests/servicestests/src/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImplTest.java +++ b/services/tests/servicestests/src/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImplTest.java @@ -59,6 +59,7 @@ import android.os.HidlMemoryUtil; import android.os.HwParcel; import android.os.IHwBinder; import android.os.IHwInterface; +import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.SharedMemory; import android.system.ErrnoException; @@ -126,7 +127,7 @@ public class SoundTriggerMiddlewareImplTest { model.uuid = "12345678-2345-3456-4567-abcdef987654"; model.vendorUuid = "87654321-5432-6543-7654-456789fedcba"; byte[] data = new byte[]{91, 92, 93, 94, 95}; - model.data = byteArrayToFileDescriptor(data); + model.data = new ParcelFileDescriptor(byteArrayToFileDescriptor(data)); model.dataSize = data.length; return model; }