/*
 * Copyright (C) 2017 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.
 */

syntax = "proto2";
option java_multiple_files = true;

package android.media;

import "frameworks/base/core/proto/android/privacy.proto";

/**
 * An android.media.AudioAttributes object.
 */
message AudioAttributesProto {
    option (android.msg_privacy).dest = DEST_AUTOMATIC;

    optional Usage usage = 1;
    optional ContentType content_type = 2;
    // Bit representation of set flags.
    optional int32 flags = 3;
    repeated string tags = 4 [ (android.privacy).dest = DEST_EXPLICIT ];
}

enum ContentType {
    // Content type value to use when the content type is unknown, or other than
    // the ones defined.
    CONTENT_TYPE_UNKNOWN = 0;
    // Content type value to use when the content type is speech.
    SPEECH = 1;
    // Content type value to use when the content type is music.
    MUSIC = 2;
    // Content type value to use when the content type is a soundtrack,
    // typically accompanying a movie or TV program.
    MOVIE = 3;
    // Content type value to use when the content type is a sound used to
    // accompany a user action, such as a beep or sound effect expressing a key
    // click, or event, such as the type of a sound for a bonus being received
    // in a game. These sounds are mostly synthesized or short Foley sounds.
    SONIFICATION = 4;
}

enum Usage {
    // Usage value to use when the usage is unknown.
    USAGE_UNKNOWN = 0;
    // Usage value to use when the usage is media, such as music, or movie
    // soundtracks.
    MEDIA = 1;
    // Usage value to use when the usage is voice communications, such as
    // telephony or VoIP.
    VOICE_COMMUNICATION = 2;
    // Usage value to use when the usage is in-call signalling, such as with a
    // "busy" beep, or DTMF tones.
    VOICE_COMMUNICATION_SIGNALLING = 3;
    // Usage value to use when the usage is an alarm (e.g. wake-up alarm).
    ALARM = 4;
    // Usage value to use when the usage is notification. Other notification
    // usages are for more specialized uses.
    NOTIFICATION = 5;
    // Usage value to use when the usage is telephony ringtone.
    NOTIFICATION_RINGTONE = 6;
    // Usage value to use when the usage is a request to enter/end a
    // communication, such as a VoIP communication or video-conference.
    NOTIFICATION_COMMUNICATION_REQUEST = 7;
    // Usage value to use when the usage is notification for an "instant"
    // communication such as a chat, or SMS.
    NOTIFICATION_COMMUNICATION_INSTANT = 8;
    // Usage value to use when the usage is notification for a non-immediate
    // type of communication such as e-mail.
    NOTIFICATION_COMMUNICATION_DELAYED = 9;
    // Usage value to use when the usage is to attract the user's attention,
    // such as a reminder or low battery warning.
    NOTIFICATION_EVENT = 10;
    // Usage value to use when the usage is for accessibility, such as with a
    // screen reader.
    ASSISTANCE_ACCESSIBILITY = 11;
    // Usage value to use when the usage is driving or navigation directions.
    ASSISTANCE_NAVIGATION_GUIDANCE = 12;
    // Usage value to use when the usage is sonification, such as  with user
    // interface sounds.
    ASSISTANCE_SONIFICATION = 13;
    // Usage value to use when the usage is for game audio.
    GAME = 14;
    // Usage value to use when feeding audio to the platform and replacing
    // "traditional" audio source, such as audio capture devices.
    VIRTUAL_SOURCE = 15;
    // Usage value to use for audio responses to user queries, audio
    // instructions or help utterances.
    ASSISTANT = 16;
}
