1ba487d97Sopenharmony_ci/* 2ba487d97Sopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd. 3ba487d97Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4ba487d97Sopenharmony_ci * you may not use this file except in compliance with the License. 5ba487d97Sopenharmony_ci * You may obtain a copy of the License at 6ba487d97Sopenharmony_ci * 7ba487d97Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8ba487d97Sopenharmony_ci * 9ba487d97Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10ba487d97Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11ba487d97Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12ba487d97Sopenharmony_ci * See the License for the specific language governing permissions and 13ba487d97Sopenharmony_ci * limitations under the License. 14ba487d97Sopenharmony_ci */ 15ba487d97Sopenharmony_ci 16ba487d97Sopenharmony_ci/** 17ba487d97Sopenharmony_ci * @addtogroup MultiMedia_MediaCommon 18ba487d97Sopenharmony_ci * @{ 19ba487d97Sopenharmony_ci * 20ba487d97Sopenharmony_ci * @brief Provides data types and media formats required for recording and playing audio and videos. 21ba487d97Sopenharmony_ci * 22ba487d97Sopenharmony_ci * 23ba487d97Sopenharmony_ci * @since 1.0 24ba487d97Sopenharmony_ci * @version 1.0 25ba487d97Sopenharmony_ci */ 26ba487d97Sopenharmony_ci 27ba487d97Sopenharmony_ci/** 28ba487d97Sopenharmony_ci * @file media_info.h 29ba487d97Sopenharmony_ci * 30ba487d97Sopenharmony_ci * @brief Declares the <b>media_info</b> class and provides various audio, video, and codec types. 31ba487d97Sopenharmony_ci * 32ba487d97Sopenharmony_ci * 33ba487d97Sopenharmony_ci * @since 1.0 34ba487d97Sopenharmony_ci * @version 1.0 35ba487d97Sopenharmony_ci */ 36ba487d97Sopenharmony_ci 37ba487d97Sopenharmony_ci#ifndef MEDIA_INFO_H 38ba487d97Sopenharmony_ci#define MEDIA_INFO_H 39ba487d97Sopenharmony_ci#include <string> 40ba487d97Sopenharmony_ci 41ba487d97Sopenharmony_ci/** 42ba487d97Sopenharmony_ci * Indicates the constant quality mode. In this mode, the bit rate is not limited to guarantee the image quality to 43ba487d97Sopenharmony_ci * the largest extent. 44ba487d97Sopenharmony_ci */ 45ba487d97Sopenharmony_ciconst int BITRATE_MODE_CQ = 0; 46ba487d97Sopenharmony_ci 47ba487d97Sopenharmony_ci/** 48ba487d97Sopenharmony_ci * Indicates the variable bit rate mode. In this mode, the codec dynamically adjusts the output bit rate based on 49ba487d97Sopenharmony_ci * the image complexity. The codec increases the bit rate if the image is complex and decreases the bit rate if the 50ba487d97Sopenharmony_ci * image is simple. 51ba487d97Sopenharmony_ci */ 52ba487d97Sopenharmony_ciconst int BITRATE_MODE_VBR = 1; 53ba487d97Sopenharmony_ci 54ba487d97Sopenharmony_ci/** Indicates the constant bit rate mode. In this mode, the codec keeps the output bit rate as constant as possible. */ 55ba487d97Sopenharmony_ciconst int BITRATE_MODE_CBR = 2; 56ba487d97Sopenharmony_ci 57ba487d97Sopenharmony_ci/** Indicates the ARGB8888 color format. */ 58ba487d97Sopenharmony_ciconst int32_t COLOR_FORMAT_ARGB8888_32BIT = 16; 59ba487d97Sopenharmony_ci 60ba487d97Sopenharmony_ci/** Indicates the YUV420SP color format. */ 61ba487d97Sopenharmony_ciconst int32_t COLOR_FORMAT_YUV420SP = 21; 62ba487d97Sopenharmony_ci 63ba487d97Sopenharmony_ci 64ba487d97Sopenharmony_ci/** 65ba487d97Sopenharmony_ci * @brief Enumerates audio source types. 66ba487d97Sopenharmony_ci * 67ba487d97Sopenharmony_ci * @since 1.0 68ba487d97Sopenharmony_ci * @version 1.0 69ba487d97Sopenharmony_ci */ 70ba487d97Sopenharmony_citypedef enum { 71ba487d97Sopenharmony_ci /** Invalid audio source */ 72ba487d97Sopenharmony_ci AUDIO_SOURCE_INVALID = -1, 73ba487d97Sopenharmony_ci /** Default audio source */ 74ba487d97Sopenharmony_ci AUDIO_SOURCE_DEFAULT = 0, 75ba487d97Sopenharmony_ci /** Microphone */ 76ba487d97Sopenharmony_ci AUDIO_MIC = 1, 77ba487d97Sopenharmony_ci /** Uplink voice */ 78ba487d97Sopenharmony_ci AUDIO_VOICE_UPLINK = 2, 79ba487d97Sopenharmony_ci /** Downlink voice */ 80ba487d97Sopenharmony_ci AUDIO_VOICE_DOWNLINK = 3, 81ba487d97Sopenharmony_ci /** Voice call */ 82ba487d97Sopenharmony_ci AUDIO_VOICE_CALL = 4, 83ba487d97Sopenharmony_ci /** Camcorder */ 84ba487d97Sopenharmony_ci AUDIO_CAMCORDER = 5, 85ba487d97Sopenharmony_ci /** Voice recognition */ 86ba487d97Sopenharmony_ci AUDIO_VOICE_RECOGNITION = 6, 87ba487d97Sopenharmony_ci /** Voice communication */ 88ba487d97Sopenharmony_ci AUDIO_VOICE_COMMUNICATION = 7, 89ba487d97Sopenharmony_ci /** Remote submix */ 90ba487d97Sopenharmony_ci AUDIO_REMOTE_SUBMIX = 8, 91ba487d97Sopenharmony_ci /** Unprocessed audio */ 92ba487d97Sopenharmony_ci AUDIO_UNPROCESSED = 9, 93ba487d97Sopenharmony_ci /** Voice performance */ 94ba487d97Sopenharmony_ci AUDIO_VOICE_PERFORMANCE = 10, 95ba487d97Sopenharmony_ci /** Echo reference */ 96ba487d97Sopenharmony_ci AUDIO_ECHO_REFERENCE = 1997, 97ba487d97Sopenharmony_ci /** Radio tuner */ 98ba487d97Sopenharmony_ci AUDIO_RADIO_TUNER = 1998, 99ba487d97Sopenharmony_ci /** Hotword */ 100ba487d97Sopenharmony_ci AUDIO_HOTWORD = 1999, 101ba487d97Sopenharmony_ci /** Extended remote submix */ 102ba487d97Sopenharmony_ci AUDIO_REMOTE_SUBMIX_EXTEND = 10007, 103ba487d97Sopenharmony_ci} AudioSourceType; 104ba487d97Sopenharmony_ci 105ba487d97Sopenharmony_ci/** 106ba487d97Sopenharmony_ci * @brief Defines the audio Device Descriptor. 107ba487d97Sopenharmony_ci * 108ba487d97Sopenharmony_ci * @since 1.0 109ba487d97Sopenharmony_ci * @version 1.0 110ba487d97Sopenharmony_ci */ 111ba487d97Sopenharmony_citypedef struct { 112ba487d97Sopenharmony_ci /** Device name */ 113ba487d97Sopenharmony_ci std::string deviceName; 114ba487d97Sopenharmony_ci /** Type of the audio input source */ 115ba487d97Sopenharmony_ci AudioSourceType inputSourceType; 116ba487d97Sopenharmony_ci /** Bits 31-24: reserved bits; bits 23-16: mode ID; bits 15-8: device ID; bits 7-0: channel ID */ 117ba487d97Sopenharmony_ci uint32_t deviceId; 118ba487d97Sopenharmony_ci} AudioDeviceDesc; 119ba487d97Sopenharmony_ci 120ba487d97Sopenharmony_ci/** 121ba487d97Sopenharmony_ci * @brief Enumerates audio stream types. 122ba487d97Sopenharmony_ci * 123ba487d97Sopenharmony_ci * @since 1.0 124ba487d97Sopenharmony_ci * @version 1.0 125ba487d97Sopenharmony_ci */ 126ba487d97Sopenharmony_citypedef enum { 127ba487d97Sopenharmony_ci /** Default audio stream type */ 128ba487d97Sopenharmony_ci TYPE_DEFAULT = -1, 129ba487d97Sopenharmony_ci /** Media */ 130ba487d97Sopenharmony_ci TYPE_MEDIA = 0, 131ba487d97Sopenharmony_ci /** Voice call */ 132ba487d97Sopenharmony_ci TYPE_VOICE_COMMUNICATION = 1, 133ba487d97Sopenharmony_ci /** System sound */ 134ba487d97Sopenharmony_ci TYPE_SYSTEM = 2, 135ba487d97Sopenharmony_ci /** Ringtone */ 136ba487d97Sopenharmony_ci TYPE_RING = 3, 137ba487d97Sopenharmony_ci /** Music */ 138ba487d97Sopenharmony_ci TYPE_MUSIC = 4, 139ba487d97Sopenharmony_ci /** Alarm */ 140ba487d97Sopenharmony_ci TYPE_ALARM = 5, 141ba487d97Sopenharmony_ci /** Notification */ 142ba487d97Sopenharmony_ci TYPE_NOTIFICATION = 6, 143ba487d97Sopenharmony_ci /** Bluetooth Synchronous Connection-Oriented (SCO) */ 144ba487d97Sopenharmony_ci TYPE_BLUETOOTH_SCO = 7, 145ba487d97Sopenharmony_ci /** Enforced audible */ 146ba487d97Sopenharmony_ci TYPE_ENFORCED_AUDIBLE = 8, 147ba487d97Sopenharmony_ci /** Dual-tone multi-frequency (DTMF) */ 148ba487d97Sopenharmony_ci TYPE_DTMF = 9, 149ba487d97Sopenharmony_ci /** Text-To-Speech (TTS) */ 150ba487d97Sopenharmony_ci TYPE_TTS = 10, 151ba487d97Sopenharmony_ci /** Accessibility */ 152ba487d97Sopenharmony_ci TYPE_ACCESSIBILITY = 11, 153ba487d97Sopenharmony_ci} AudioStreamType; 154ba487d97Sopenharmony_ci 155ba487d97Sopenharmony_ci/** 156ba487d97Sopenharmony_ci * @brief Enumerates video codec formats. 157ba487d97Sopenharmony_ci * 158ba487d97Sopenharmony_ci * @since 1.0 159ba487d97Sopenharmony_ci * @version 1.0 160ba487d97Sopenharmony_ci */ 161ba487d97Sopenharmony_citypedef enum { 162ba487d97Sopenharmony_ci /** Default format */ 163ba487d97Sopenharmony_ci VIDEO_DEFAULT = 0, 164ba487d97Sopenharmony_ci /** H.264 */ 165ba487d97Sopenharmony_ci H264 = 2, 166ba487d97Sopenharmony_ci /** High Efficiency Video Coding (HEVC) */ 167ba487d97Sopenharmony_ci HEVC = 5, 168ba487d97Sopenharmony_ci} VideoCodecFormat; 169ba487d97Sopenharmony_ci 170ba487d97Sopenharmony_ci/** 171ba487d97Sopenharmony_ci * @brief Enumerates audio codec formats. 172ba487d97Sopenharmony_ci * 173ba487d97Sopenharmony_ci * @since 1.0 174ba487d97Sopenharmony_ci * @version 1.0 175ba487d97Sopenharmony_ci */ 176ba487d97Sopenharmony_citypedef enum { 177ba487d97Sopenharmony_ci /** Default format */ 178ba487d97Sopenharmony_ci AUDIO_DEFAULT = 0, 179ba487d97Sopenharmony_ci /** PCM */ 180ba487d97Sopenharmony_ci PCM = 1, 181ba487d97Sopenharmony_ci /** Advanced Audio Coding Low Complexity (AAC-LC) */ 182ba487d97Sopenharmony_ci AAC_LC = 2, 183ba487d97Sopenharmony_ci /** High-Efficiency Advanced Audio Coding (AAC-HE), previously known as AAC+ or aacPlus v1 */ 184ba487d97Sopenharmony_ci AAC_HE_V1 = 3, 185ba487d97Sopenharmony_ci /** AAC++ or aacPlus v2 */ 186ba487d97Sopenharmony_ci AAC_HE_V2 = 4, 187ba487d97Sopenharmony_ci /** Advanced Audio Coding Low Delay (AAC-LD) */ 188ba487d97Sopenharmony_ci AAC_LD = 5, 189ba487d97Sopenharmony_ci /** Advanced Audio Coding Enhanced Low Delay (AAC-ELD) */ 190ba487d97Sopenharmony_ci AAC_ELD = 6, 191ba487d97Sopenharmony_ci /** G711 a-law*/ 192ba487d97Sopenharmony_ci G711A = 7, 193ba487d97Sopenharmony_ci /** G711 u-law */ 194ba487d97Sopenharmony_ci G711U = 8, 195ba487d97Sopenharmony_ci /** G726 */ 196ba487d97Sopenharmony_ci G726 = 9, 197ba487d97Sopenharmony_ci /** Invalid value */ 198ba487d97Sopenharmony_ci FORMAT_BUTT, 199ba487d97Sopenharmony_ci} AudioCodecFormat; 200ba487d97Sopenharmony_ci 201ba487d97Sopenharmony_ci/** 202ba487d97Sopenharmony_ci * @brief Enumerates audio bit widths. 203ba487d97Sopenharmony_ci * 204ba487d97Sopenharmony_ci * @since 1.0 205ba487d97Sopenharmony_ci * @version 1.0 206ba487d97Sopenharmony_ci */ 207ba487d97Sopenharmony_citypedef enum { 208ba487d97Sopenharmony_ci /** 8-bit width */ 209ba487d97Sopenharmony_ci BIT_WIDTH_8 = 8, 210ba487d97Sopenharmony_ci /** 16-bit width */ 211ba487d97Sopenharmony_ci BIT_WIDTH_16 = 16, 212ba487d97Sopenharmony_ci /** 24-bit width */ 213ba487d97Sopenharmony_ci BIT_WIDTH_24 = 24, 214ba487d97Sopenharmony_ci /** 32-bit width */ 215ba487d97Sopenharmony_ci BIT_WIDTH_32 = 32, 216ba487d97Sopenharmony_ci /** Invalid value */ 217ba487d97Sopenharmony_ci BIT_WIDTH_BUTT, 218ba487d97Sopenharmony_ci} AudioBitWidth; 219ba487d97Sopenharmony_ci#endif // MEDIA_INFO_H 220