1 /* 2 * Copyright (c) 2023-2024 Shenzhen Kaihong Digital Industry Development Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef OHOS_SHARING_CONST_DEF_H 17 #define OHOS_SHARING_CONST_DEF_H 18 19 #include <string> 20 21 namespace OHOS { 22 namespace Sharing { 23 24 enum MediaType { MEDIA_TYPE_AV, MEDIA_TYPE_AUDIO, MEDIA_TYPE_VIDEO }; 25 26 enum SceneType { FOREGROUND = 0, BACKGROUND = 1 }; 27 28 enum VideoFormat { 29 VIDEO_640X480_25 = 0, 30 VIDEO_640X480_30, 31 VIDEO_640X480_60, 32 VIDEO_1280X720_25, 33 VIDEO_1280X720_30, 34 VIDEO_1280X720_60, 35 VIDEO_1920X1080_25, 36 VIDEO_1920X1080_30, 37 VIDEO_1920X1080_60 38 }; 39 40 enum AudioFormat { 41 AUDIO_8000_8_1 = 0, 42 AUDIO_8000_8_2, 43 AUDIO_8000_16_1, 44 AUDIO_8000_16_2, 45 46 AUDIO_11025_8_1 = 10, 47 AUDIO_11025_8_2, 48 AUDIO_11025_16_1, 49 AUDIO_11025_16_2, 50 51 AUDIO_22050_8_1 = 20, 52 AUDIO_22050_8_2, 53 AUDIO_22050_16_1, 54 AUDIO_22050_16_2, 55 56 AUDIO_44100_8_1 = 30, 57 AUDIO_44100_8_2, 58 AUDIO_44100_16_1, 59 AUDIO_44100_16_2, 60 AUDIO_44100_16_4, 61 62 AUDIO_48000_8_1 = 40, 63 AUDIO_48000_8_2, 64 AUDIO_48000_16_1, 65 AUDIO_48000_16_2, 66 AUDIO_48000_16_4 67 }; 68 69 constexpr uint32_t AUDIO_SAMPLE_BIT_U8 = 8; 70 constexpr uint32_t AUDIO_SAMPLE_BIT_S16LE = 16; 71 constexpr uint32_t AUDIO_CHANNEL_STEREO = 2; 72 constexpr uint32_t AUDIO_SAMPLE_RATE_44100 = 44100; 73 constexpr uint32_t AUDIO_SAMPLE_RATE_48000 = 48000; 74 constexpr uint32_t AUDIO_BIT_RATE_12800 = 128000; 75 76 constexpr uint32_t INVALID_ID = 0; 77 constexpr int32_t DEFAULT_CHANNEL = 2; 78 constexpr int32_t DEFAULT_SAMPLERATE = 48000; 79 80 constexpr uint16_t MIN_PORT = 6700; 81 constexpr uint16_t MAX_PORT = 7000; 82 constexpr uint16_t DEFAULT_WFD_CTRLPORT = 7236; 83 84 constexpr uint32_t DEFAULT_VIDEO_WIDTH = 1920; 85 constexpr uint32_t DEFAULT_VIDEO_HEIGHT = 1080; 86 constexpr uint32_t DEFAULT_WINDOW_WIDTH = 1920; 87 constexpr uint32_t DEFAULT_WINDOW_HEIGHT = 1080; 88 constexpr uint32_t DEFAULT_CAPTURE_VIDEO_WIDTH = 1280; 89 constexpr uint32_t DEFAULT_CAPTURE_VIDEO_HEIGHT = 720; 90 constexpr uint32_t DEFAULT_FRAME_RATE = 30; 91 constexpr uint32_t DEFAULT_SAMPLE_BIT = 16; 92 93 constexpr int32_t MAX_CONTEXT_NUM = 20; 94 constexpr int32_t MAX_SRC_AGENT_NUM = 20; 95 constexpr int32_t MAX_SINK_AGENT_NUM = 20; 96 constexpr int64_t MAX_YUV420_BUFFER_SIZE = 2560 * 1600 * (3 / 2) * 2; 97 constexpr int32_t MAX_RTSP_PLAYER_NUM = 2; 98 99 constexpr int32_t SCREEN_CAPTURE_ENCODE_BITRATE = 2000000; 100 constexpr uint64_t SCREEN_ID_INVALID = -1ULL; 101 constexpr float DEFAULT_SCREEN_DENSITY = 2.0; 102 constexpr int32_t DEFAULT_SCREEN_FLAGS = 0; 103 104 const std::string DUMMY_EMPTY = ""; 105 106 enum TrackType { TRACK_INVALID = -1, TRACK_VIDEO = 0, TRACK_AUDIO, TRACK_TITLE, TRACK_APPLICATION, TRACK_MAX }; 107 108 #define CODEC_MAP(XX) \ 109 XX(CODEC_DEFAULT, TRACK_VIDEO, 0, "default", PSI_STREAM_DEFAULT) \ 110 XX(CODEC_H264, TRACK_VIDEO, 1, "H264", PSI_STREAM_H264) \ 111 XX(CODEC_H265, TRACK_VIDEO, 2, "H265", PSI_STREAM_H265) \ 112 XX(CODEC_AAC, TRACK_AUDIO, 3, "mpeg4-generic", PSI_STREAM_AAC) \ 113 XX(CODEC_G711A, TRACK_AUDIO, 4, "PCMA", PSI_STREAM_AUDIO_G711A) \ 114 XX(CODEC_G711U, TRACK_AUDIO, 5, "PCMU", PSI_STREAM_AUDIO_G711U) \ 115 XX(CODEC_OPUS, TRACK_AUDIO, 6, "opus", PSI_STREAM_AUDIO_OPUS) \ 116 XX(CODEC_L16, TRACK_AUDIO, 7, "L16", PSI_STREAM_RESERVED) \ 117 XX(CODEC_VP8, TRACK_VIDEO, 8, "VP8", PSI_STREAM_VP8) \ 118 XX(CODEC_VP9, TRACK_VIDEO, 9, "VP9", PSI_STREAM_VP9) \ 119 XX(CODEC_AV1, TRACK_VIDEO, 10, "AV1X", PSI_STREAM_AV1) \ 120 XX(CODEC_PCM, TRACK_AUDIO, 11, "PCM_S16LE", PSI_STREAM_AUDIO_PCM_S16LE) 121 122 typedef enum { 123 CODEC_NONE = -1, 124 #define XX(name, type, value, str, mpeg_id) name = (value), 125 CODEC_MAP(XX) 126 #undef XX 127 CODEC_MAX 128 } CodecId; 129 130 #define ABSTRACT_ERR_BASE(errorCode) ((errorCode) / 100 * 100) 131 132 enum SharingErrorCode { 133 // common 134 ERR_OK = 0, 135 // framework 18800001~18800099 136 ERR_GENERAL_ERROR = 18800001, 137 ERR_BAD_PARAMETER, 138 ERR_INVALID_ID, 139 ERR_SERVICE_LIMIT, 140 ERR_STATE_EXCEPTION, 141 ERR_CONNECTION_FAILURE, 142 ERR_INTERACTION_FAILURE, 143 ERR_CONNECTION_TIMEOUT, 144 ERR_CONNECTION_REFUSED, 145 ERR_BAD_PROTOCOL, 146 ERR_NETWORK_ERROR, 147 ERR_UNAUTHORIZED, 148 ERR_INVALID_URL, 149 ERR_REMOTE_DIED, 150 ERR_TCP_KEEPALIVE_TIMEOUT, 151 ERR_UDP_KEEPALIVE_TIMEOUT, 152 ERR_PROTOCOL_INTERACTION_TIMEOUT, 153 // interaction 18800101~18800199 154 ERR_INVALID_SURFACE_ID = 18800101, 155 ERR_SURFACE_FAILURE, 156 // context + agent 18800201~18800299 157 ERR_CONTEXT_AGENT_BASE = 18800200, 158 ERR_CONTEXT_CREATE = 18800201, 159 ERR_AGENT_CREATE, 160 ERR_AGENT_START, 161 ERR_AGENT_PAUSE, 162 ERR_AGENT_RESUME, 163 // session 18800301~18800399 164 ERR_SESSION_BASE = 18800300, 165 ERR_SESSION_CREATE = 18800301, 166 ERR_SESSION_START, 167 ERR_SESSION_PAUSE, 168 ERR_SESSION_RESUME, 169 ERR_INTAKE_TIMEOUT, 170 // prosumer 18800501~18800599 171 ERR_PROSUMER_BASE = 18800500, 172 ERR_PROSUMER_INIT = 18800501, 173 ERR_PROSUMER_CREATE, 174 ERR_PROSUMER_START, 175 ERR_PROSUMER_PAUSE, 176 ERR_PROSUMER_RESUME, 177 ERR_PROSUMER_TIMEOUT, 178 ERR_PROSUMER_STOP, 179 ERR_PROSUMER_DESTROY, 180 ERR_PROSUMER_VIDEO_CAPTURE, 181 ERR_PROSUMER_AUDIO_CAPTURE, 182 // decode + encode + play 18800601~18800699 183 ERR_DECODE_ERROR = 18800601, 184 ERR_DECODE_FORMAT, 185 ERR_DECODE_SCARCE_CAPACITY, 186 ERR_DECODE_DISABLE_ACCELERATION, 187 ERR_ENCODE_ERROR, 188 ERR_ENCODE_FORMAT, 189 ERR_ENCODE_SCARCE_CAPACITY, 190 ERR_PLAY_START, 191 ERR_PLAY_STOP, 192 193 // application: wfd 18802000~18802999 194 ERR_WFD_START_CODE = 18802000, 195 ERR_RECEIVING_LIMIT = SharingErrorCode::ERR_WFD_START_CODE + 101, 196 ERR_P2P_SINK_DISCONNECTED, 197 ERR_P2P_SOURCE_DISCONNECTED, 198 ERR_P2P_SOURCE_HEARTBEAT_ERROR, 199 ERR_P2P_DHCP_INVALID_IP, 200 }; 201 202 enum SharingMsgId { 203 // service: 0 ~ 999 204 // chat: 1000 ~ 1999 205 CHAT_MSG_ID_START = 1000, 206 // wfd: 2000 ~ 2999 207 WFD_MSG_ID_START = 2000, 208 // player: 3000 ~ 3999 209 PLAYER_MSG_ID_START = 3000, 210 // any push: 4000 ~ 4999 211 ANY_PUSH_MSG_ID_START = 4000 212 }; 213 214 } // namespace Sharing 215 } // namespace OHOS 216 #endif 217