Sound trigger middleware service definition

These are the AIDL files that define the sound trigger middleware
interface.
This service is intended to replace the existing
frameworks/av/include/soundtrigger/ISoundTriggerHwService.h
using AIDL in order to avoid a large amount of hand-written
parceling code and other forms of boilerplate, and provide
cross-language support.

Change-Id: Ia783ba4f1ea7335a984396e7024cac0411699403
Bug: 142070343
This commit is contained in:
Ytai Ben-Tsvi
2019-11-25 12:26:07 -08:00
parent d58b04ae47
commit ab58ef6483
18 changed files with 735 additions and 0 deletions

View File

@@ -133,3 +133,41 @@ aidl_interface {
},
}
aidl_interface {
name: "soundtrigger_middleware-aidl",
local_include_dir: "java",
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/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",
],
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" ],
}

View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
/**
* A recognition confidence level.
* This type is used to represent either a threshold or an actual detection confidence level.
*
* {@hide}
*/
parcelable ConfidenceLevel {
/** user ID. */
int userId;
/**
* Confidence level in percent (0 - 100).
* <ul>
* <li>Min level for recognition configuration
* <li>Detected level for recognition event.
* </ul>
*/
int levelPercent;
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.RecognitionEvent;
import android.media.soundtrigger_middleware.PhraseRecognitionEvent;
/**
* Main interface for a client to get notifications of events coming from this module.
*
* {@hide}
*/
oneway interface ISoundTriggerCallback {
/**
* Invoked whenever a recognition event is triggered (typically, on recognition, but also in
* case of external aborting of a recognition or a forced recognition event - see the status
* code in the event for determining).
*/
void onRecognition(int modelHandle, in RecognitionEvent event);
/**
* Invoked whenever a phrase recognition event is triggered (typically, on recognition, but
* also in case of external aborting of a recognition or a forced recognition event - see the
* status code in the event for determining).
*/
void onPhraseRecognition(int modelHandle, in PhraseRecognitionEvent event);
/**
* Notifies the client the recognition has become available after previously having been
* unavailable, or vice versa. This method will always be invoked once immediately after
* attachment, and then every time there is a change in availability.
* When availability changes from available to unavailable, all active recognitions are aborted,
* and this event will be sent in addition to the abort event.
*/
void onRecognitionAvailabilityChange(boolean available);
}

View File

@@ -0,0 +1,48 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.ISoundTriggerModule;
import android.media.soundtrigger_middleware.ISoundTriggerCallback;
import android.media.soundtrigger_middleware.SoundTriggerModuleDescriptor;
/**
* Main entry point into this module.
*
* Allows the client to enumerate the available soundtrigger devices and their capabilities, then
* attach to either one of them in order to use it.
*
* {@hide}
*/
interface ISoundTriggerMiddlewareService {
/**
* Query the available modules and their capabilities.
*/
SoundTriggerModuleDescriptor[] listModules();
/**
* Attach to one of the available modules.
* listModules() must be called prior to calling this method and the provided handle must be
* one of the handles from the returned list.
*/
ISoundTriggerModule attach(int handle, ISoundTriggerCallback callback);
/**
* Notify the service that external input capture is taking place. This may cause some of the
* active recognitions to be aborted.
*/
void setExternalCaptureState(boolean active);
}

View File

@@ -0,0 +1,105 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.SoundModel;
import android.media.soundtrigger_middleware.PhraseSoundModel;
import android.media.soundtrigger_middleware.RecognitionConfig;
/**
* A sound-trigger module.
*
* This interface allows a client to operate a sound-trigger device, intended for low-power
* detection of various sound patterns, represented by a "sound model".
*
* Basic operation is to load a sound model (either a generic one or a "phrase" model), then
* initiate recognition on this model. A trigger will be delivered asynchronously via a callback
* provided by the caller earlier, when attaching to this interface.
*
* In additon to recognition events, this module will also produce abort events in cases where
* recognition has been externally preempted.
*
* {@hide}
*/
interface ISoundTriggerModule {
/**
* Load a sound model. Will return a handle to the model on success or will throw a
* ServiceSpecificException with one of the {@link Status} error codes upon a recoverable error
* (for example, lack of resources of loading a model at the time of call.
* Model must eventually be unloaded using {@link #unloadModel(int)} prior to detaching.
*
* May throw a ServiceSpecificException with an RESOURCE_CONTENTION status to indicate that
* resources required for loading the model are currently consumed by other clients.
*/
int loadModel(in SoundModel model);
/**
* Load a phrase sound model. Will return a handle to the model on success or will throw a
* ServiceSpecificException with one of the {@link Status} error codes upon a recoverable error
* (for example, lack of resources of loading a model at the time of call.
* Model must eventually be unloaded using unloadModel prior to detaching.
*
* May throw a ServiceSpecificException with an RESOURCE_CONTENTION status to indicate that
* resources required for loading the model are currently consumed by other clients.
*/
int loadPhraseModel(in PhraseSoundModel model);
/**
* Unload a model, previously loaded with loadModel or loadPhraseModel. After unloading, model
* can no longer be used for recognition and the resources occupied by it are released.
* Model must not be active at the time of unloading. Cient may call stopRecognition to ensure
* that.
*/
void unloadModel(int modelHandle);
/**
* Initiate recognition on a previously loaded model.
* Recognition event would eventually be delivered via the client-provided callback, typically
* supplied during attachment to this interface.
*
* Once a recognition event is passed to the client, the recognition automatically become
* inactive, unless the event is of the RecognitionStatus.FORCED kind. Client can also shut down
* the recognition explicitly, via stopRecognition.
*/
void startRecognition(int modelHandle, in RecognitionConfig config);
/**
* Stop a recognition of a previously active recognition. Will NOT generate a recognition event.
* This call is idempotent - calling it on an inactive model has no effect. However, it must
* only be used with a loaded model handle.
*/
void stopRecognition(int modelHandle);
/**
* Force generation of a recognition event. Handle must be that of a loaded model. If
* recognition is inactive, will do nothing. If recognition is active, will asynchronously
* deliever an event with RecognitionStatus.FORCED status and leave recognition in active state.
* To avoid any race conditions, once an event signalling the automatic stopping of recognition
* is sent, no more forced events will get sent (even if previously requested) until recognition
* is explicitly started again.
*
* Since not all module implementations support this feature, may throw a
* ServiceSpecificException with an OPERATION_NOT_SUPPORTED status.
*/
void forceRecognitionEvent(int modelHandle);
/**
* Detach from the module, releasing any active resources.
* This will ensure the client callback is no longer called after this call returns.
* All models must have been unloaded prior to calling this method.
*/
void detach();
}

View File

@@ -0,0 +1,34 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
/**
* Key phrase descriptor.
*
* {@hide}
*/
parcelable Phrase {
/** Unique keyphrase ID assigned at enrollment time. */
int id;
/** Recognition modes supported by this key phrase (bitfield of RecognitionMode enum). */
int recognitionModes;
/** List of users IDs associated with this key phrase. */
int[] users;
/** Locale - Java Locale style (e.g. en_US). */
String locale;
/** Phrase text. */
String text;
}

View File

@@ -0,0 +1,31 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.PhraseRecognitionExtra;
import android.media.soundtrigger_middleware.RecognitionEvent;
/**
* An event that gets sent to indicate a phrase recognition (or aborting of the recognition
process).
* {@hide}
*/
parcelable PhraseRecognitionEvent {
/** Common recognition event. */
RecognitionEvent common;
/** List of descriptors for each recognized key phrase */
PhraseRecognitionExtra[] phraseExtras;
}

View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.ConfidenceLevel;
/**
* Specialized recognition event for key phrase detection.
* {@hide}
*/
parcelable PhraseRecognitionExtra {
// TODO(ytai): Constants / enums.
/** keyphrase ID */
int id;
/** recognition modes used for this keyphrase */
int recognitionModes;
/** confidence level for mode RECOGNITION_MODE_VOICE_TRIGGER */
int confidenceLevel;
/** number of user confidence levels */
ConfidenceLevel[] levels;
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.SoundModel;
import android.media.soundtrigger_middleware.Phrase;
/**
* Specialized sound model for key phrase detection.
* Proprietary representation of key phrases in binary data must match
* information indicated by phrases field.
* {@hide}
*/
parcelable PhraseSoundModel {
/** Common part of sound model descriptor */
SoundModel common;
/** List of descriptors for key phrases supported by this sound model */
Phrase[] phrases;
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.PhraseRecognitionExtra;
/**
* Configuration for tuning behavior of an active recognition process.
* {@hide}
*/
parcelable RecognitionConfig {
/* Capture and buffer audio for this recognition instance. */
boolean captureRequested;
/* Configuration for each key phrase. */
PhraseRecognitionExtra[] phraseRecognitionExtras;
/** Opaque capture configuration data. */
byte[] data;
}

View File

@@ -0,0 +1,51 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.audio.common.AudioConfig;
import android.media.soundtrigger_middleware.RecognitionStatus;
import android.media.soundtrigger_middleware.SoundModelType;
/**
* An event that gets sent to indicate a recognition (or aborting of the recognition process).
* {@hide}
*/
parcelable RecognitionEvent {
/** Recognition status. */
RecognitionStatus status;
/** Event type, same as sound model type. */
SoundModelType type;
/** Is it possible to capture audio from this utterance buffered by the implementation. */
boolean captureAvailable;
/* Audio session ID. framework use. */
int captureSession;
/**
* Delay in ms between end of model detection and start of audio available for capture.
* A negative value is possible (e.g. if key phrase is also available for Capture.
*/
int captureDelayMs;
/** Duration in ms of audio captured before the start of the trigger. 0 if none. */
int capturePreambleMs;
/** If true, the 'data' field below contains the capture of the trigger sound. */
boolean triggerInData;
/**
* Audio format of either the trigger in event data or to use for capture of the rest of the
* utterance.
*/
AudioConfig audioConfig;
/** Additional data. */
byte[] data;
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
/**
* Recognition mode.
* {@hide}
*/
@Backing(type="int")
enum RecognitionMode {
/** Simple voice trigger. */
VOICE_TRIGGER = 0x1,
/** Trigger only if one user in model identified. */
USER_IDENTIFICATION = 0x2,
/** Trigger only if one user in model authenticated. */
USER_AUTHENTICATION = 0x4,
/** Generic sound trigger. */
GENERIC_TRIGGER = 0x8,
}

View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
/**
* A status for indicating the type of a recognition event.
* {@hide}
*/
@Backing(type="int")
enum RecognitionStatus {
/** Recognition success. */
SUCCESS = 0,
/** Recognition aborted (e.g. capture preempted by another use-case. */
ABORTED = 1,
/** Recognition failure. */
FAILURE = 2,
/**
* Recognition event was triggered by a forceRecognitionEvent request, not by the DSP.
* Note that forced detections *do not* stop the active recognition, unlike the other types.
*/
FORCED = 3
}

View File

@@ -0,0 +1,36 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.SoundModelType;
/**
* Base sound model descriptor. This struct can be extended for various specific types by way of
* aggregation.
* {@hide}
*/
parcelable SoundModel {
/** Model type. */
SoundModelType type;
/** Unique sound model ID. */
String uuid;
/**
* Unique vendor ID. Identifies the engine the sound model
* was build for */
String vendorUuid;
/** Opaque data transparent to Android framework */
byte[] data;
}

View File

@@ -0,0 +1,30 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
/**
* Sound model type.
* {@hide}
*/
@Backing(type="int")
enum SoundModelType {
/** Unspecified sound model type */
UNKNOWN = -1,
/** Key phrase sound models */
KEYPHRASE = 0,
/** All models other than keyphrase */
GENERIC = 1,
}

View File

@@ -0,0 +1,31 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
import android.media.soundtrigger_middleware.SoundTriggerModuleProperties;
/**
* A descriptor of an available sound trigger module, containing the handle used to reference the
* module, as well its capabilities.
* {@hide}
*/
parcelable SoundTriggerModuleDescriptor {
/** Module handle to be used for attaching to it. */
int handle;
/** Module capabilities. */
SoundTriggerModuleProperties properties;
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
/**
* Capabilities of a sound trigger module.
* {@hide}
*/
parcelable SoundTriggerModuleProperties {
/** Implementor name */
String implementor;
/** Implementation description */
String description;
/** Implementation version */
int version;
/**
* Unique implementation ID. The UUID must change with each version of
the engine implementation */
String uuid;
/** Maximum number of concurrent sound models loaded */
int maxSoundModels;
/** Maximum number of key phrases */
int maxKeyPhrases;
/** Maximum number of concurrent users detected */
int maxUsers;
/** All supported modes. e.g RecognitionMode.VOICE_TRIGGER */
int recognitionModes;
/** Supports seamless transition from detection to capture */
boolean captureTransition;
/** Maximum buffering capacity in ms if captureTransition is true */
int maxBufferMs;
/** Supports capture by other use cases while detection is active */
boolean concurrentCapture;
/** Returns the trigger capture in event */
boolean triggerInEvent;
/**
* Rated power consumption when detection is active with TDB
* silence/sound/speech ratio */
int powerConsumptionMw;
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.media.soundtrigger_middleware;
/**
* {@hide}
*/
@Backing(type="int")
enum Status {
/** Success. */
SUCCESS = 0,
/** Failure due to resource contention. This is typically a temporary condition. */
RESOURCE_CONTENTION = 1,
/** Operation is not supported in this implementation. This is a permanent condition. */
OPERATION_NOT_SUPPORTED = 2,
}