/* * Copyright (C) 2014 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. */ #ifndef AUDIO_POLICY_HELPER_H_ #define AUDIO_POLICY_HELPER_H_ #include audio_stream_type_t audio_attributes_to_stream_type(const audio_attributes_t *attr) { // flags to stream type mapping if ((attr->flags & AUDIO_FLAG_AUDIBILITY_ENFORCED) == AUDIO_FLAG_AUDIBILITY_ENFORCED) { return AUDIO_STREAM_ENFORCED_AUDIBLE; } if ((attr->flags & AUDIO_FLAG_SCO) == AUDIO_FLAG_SCO) { return AUDIO_STREAM_BLUETOOTH_SCO; } // usage to stream type mapping switch (attr->usage) { case AUDIO_USAGE_MEDIA: case AUDIO_USAGE_GAME: case AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY: case AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE: return AUDIO_STREAM_MUSIC; case AUDIO_USAGE_ASSISTANCE_SONIFICATION: return AUDIO_STREAM_SYSTEM; case AUDIO_USAGE_VOICE_COMMUNICATION: return AUDIO_STREAM_VOICE_CALL; case AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING: return AUDIO_STREAM_DTMF; case AUDIO_USAGE_ALARM: return AUDIO_STREAM_ALARM; case AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE: return AUDIO_STREAM_RING; case AUDIO_USAGE_NOTIFICATION: case AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST: case AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT: case AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED: case AUDIO_USAGE_NOTIFICATION_EVENT: return AUDIO_STREAM_NOTIFICATION; case AUDIO_USAGE_UNKNOWN: default: return AUDIO_STREAM_MUSIC; } } #endif //AUDIO_POLICY_HELPER_H_