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_NONE = -1, 30 VIDEO_640X480_25 = 0, 31 VIDEO_640X480_30, 32 VIDEO_640X480_60, 33 VIDEO_1280X720_25, 34 VIDEO_1280X720_30, 35 VIDEO_1280X720_60, 36 VIDEO_1920X1080_25, 37 VIDEO_1920X1080_30, 38 VIDEO_1920X1080_60 39 }; 40 41 enum AudioFormat { 42 AUDIO_NONE = -1, 43 AUDIO_8000_8_1 = 0, 44 AUDIO_8000_8_2, 45 AUDIO_8000_16_1, 46 AUDIO_8000_16_2, 47 48 AUDIO_11025_8_1 = 10, 49 AUDIO_11025_8_2, 50 AUDIO_11025_16_1, 51 AUDIO_11025_16_2, 52 53 AUDIO_22050_8_1 = 20, 54 AUDIO_22050_8_2, 55 AUDIO_22050_16_1, 56 AUDIO_22050_16_2, 57 58 AUDIO_44100_8_1 = 30, 59 AUDIO_44100_8_2, 60 AUDIO_44100_16_1, 61 AUDIO_44100_16_2, 62 AUDIO_44100_16_4, 63 64 AUDIO_48000_8_1 = 40, 65 AUDIO_48000_8_2, 66 AUDIO_48000_16_1, 67 AUDIO_48000_16_2, 68 AUDIO_48000_16_4, 69 AUDIO_48000_16_6, 70 AUDIO_48000_16_8 71 }; 72 73 constexpr uint32_t WFD_MSEC_IN_SEC = 1000; 74 75 constexpr uint32_t AUDIO_SAMPLE_BIT_U8 = 8; 76 constexpr uint32_t AUDIO_SAMPLE_BIT_S16LE = 16; 77 constexpr uint32_t AUDIO_CHANNEL_STEREO = 2; 78 constexpr uint32_t AUDIO_SAMPLE_RATE_44100 = 44100; 79 constexpr uint32_t AUDIO_SAMPLE_RATE_48000 = 48000; 80 constexpr uint32_t AUDIO_BIT_RATE_12800 = 128000; 81 constexpr uint32_t SAMPLE_RATE_90K = 90000; 82 83 constexpr uint32_t INVALID_ID = 0; 84 constexpr int32_t DEFAULT_CHANNEL = 2; 85 constexpr int32_t DEFAULT_SAMPLERATE = 48000; 86 87 constexpr uint16_t MIN_PORT = 6700; 88 constexpr uint16_t MAX_PORT = 7000; 89 constexpr uint16_t DEFAULT_WFD_CTRLPORT = 7236; 90 91 constexpr uint32_t DEFAULT_VIDEO_WIDTH = 1920; 92 constexpr uint32_t DEFAULT_VIDEO_HEIGHT = 1080; 93 constexpr uint32_t DEFAULT_WINDOW_WIDTH = 1920; 94 constexpr uint32_t DEFAULT_WINDOW_HEIGHT = 1080; 95 constexpr uint32_t DEFAULT_CAPTURE_VIDEO_WIDTH = 1280; 96 constexpr uint32_t DEFAULT_CAPTURE_VIDEO_HEIGHT = 720; 97 constexpr uint32_t DEFAULT_FRAME_RATE = 30; 98 constexpr uint32_t DEFAULT_SAMPLE_BIT = 16; 99 100 constexpr int32_t MAX_CONTEXT_NUM = 20; 101 constexpr int32_t MAX_SRC_AGENT_NUM = 20; 102 constexpr int32_t MAX_SINK_AGENT_NUM = 20; 103 constexpr int64_t MAX_YUV420_BUFFER_SIZE = 2560 * 1600 * (3 / 2) * 2; 104 constexpr int32_t MAX_RTSP_PLAYER_NUM = 2; 105 106 constexpr int32_t SCREEN_CAPTURE_ENCODE_BITRATE = 2000000; 107 constexpr uint64_t SCREEN_ID_INVALID = -1ULL; 108 constexpr float DEFAULT_SCREEN_DENSITY = 2.0; 109 constexpr int32_t DEFAULT_SCREEN_FLAGS = 0; 110 111 const std::string DUMMY_EMPTY = ""; 112 113 constexpr int32_t MAX_RTP_PAYLOAD_SIZE = 1316; 114 115 enum TrackType { TRACK_INVALID = -1, TRACK_VIDEO = 0, TRACK_AUDIO, TRACK_TITLE, TRACK_APPLICATION, TRACK_MAX }; 116 117 #define CODEC_MAP(XX) \ 118 XX(CODEC_DEFAULT, TRACK_VIDEO, 0, "default", PSI_STREAM_DEFAULT) \ 119 XX(CODEC_H264, TRACK_VIDEO, 1, "H264", PSI_STREAM_H264) \ 120 XX(CODEC_H265, TRACK_VIDEO, 2, "H265", PSI_STREAM_H265) \ 121 XX(CODEC_AAC, TRACK_AUDIO, 3, "mpeg4-generic", PSI_STREAM_AAC) \ 122 XX(CODEC_G711A, TRACK_AUDIO, 4, "PCMA", PSI_STREAM_AUDIO_G711A) \ 123 XX(CODEC_G711U, TRACK_AUDIO, 5, "PCMU", PSI_STREAM_AUDIO_G711U) \ 124 XX(CODEC_OPUS, TRACK_AUDIO, 6, "opus", PSI_STREAM_AUDIO_OPUS) \ 125 XX(CODEC_L16, TRACK_AUDIO, 7, "L16", PSI_STREAM_RESERVED) \ 126 XX(CODEC_VP8, TRACK_VIDEO, 8, "VP8", PSI_STREAM_VP8) \ 127 XX(CODEC_VP9, TRACK_VIDEO, 9, "VP9", PSI_STREAM_VP9) \ 128 XX(CODEC_AV1, TRACK_VIDEO, 10, "AV1X", PSI_STREAM_AV1) \ 129 XX(CODEC_PCM, TRACK_AUDIO, 11, "PCM_S16LE", PSI_STREAM_AUDIO_PCM_S16LE) 130 131 typedef enum { 132 CODEC_NONE = -1, 133 #define XX(name, type, value, str, mpeg_id) name = (value), 134 CODEC_MAP(XX) 135 #undef XX 136 CODEC_MAX 137 } CodecId; 138 139 #define ABSTRACT_ERR_BASE(errorCode) ((errorCode) / 100 * 100) 140 141 enum SharingErrorCode { 142 // common 143 ERR_OK = 0, 144 // framework 18800001~18800099 145 ERR_GENERAL_ERROR = 18800001, 146 ERR_BAD_PARAMETER, 147 ERR_INVALID_ID, 148 ERR_SERVICE_LIMIT, 149 ERR_STATE_EXCEPTION, 150 ERR_CONNECTION_FAILURE, 151 ERR_INTERACTION_FAILURE, 152 ERR_CONNECTION_TIMEOUT, 153 ERR_CONNECTION_REFUSED, 154 ERR_BAD_PROTOCOL, 155 ERR_NETWORK_ERROR, 156 ERR_UNAUTHORIZED, 157 ERR_INVALID_URL, 158 ERR_REMOTE_DIED, 159 ERR_TCP_KEEPALIVE_TIMEOUT, 160 ERR_UDP_KEEPALIVE_TIMEOUT, 161 ERR_PROTOCOL_INTERACTION_TIMEOUT, 162 // interaction 18800101~18800199 163 ERR_INVALID_SURFACE_ID = 18800101, 164 ERR_SURFACE_FAILURE, 165 // context + agent 18800201~18800299 166 ERR_CONTEXT_AGENT_BASE = 18800200, 167 ERR_CONTEXT_CREATE = 18800201, 168 ERR_AGENT_CREATE, 169 ERR_AGENT_START, 170 ERR_AGENT_PAUSE, 171 ERR_AGENT_RESUME, 172 // session 18800301~18800399 173 ERR_SESSION_BASE = 18800300, 174 ERR_SESSION_CREATE = 18800301, 175 ERR_SESSION_START, 176 ERR_SESSION_PAUSE, 177 ERR_SESSION_RESUME, 178 ERR_INTAKE_TIMEOUT, 179 // prosumer 18800501~18800599 180 ERR_PROSUMER_BASE = 18800500, 181 ERR_PROSUMER_INIT = 18800501, 182 ERR_PROSUMER_CREATE, 183 ERR_PROSUMER_START, 184 ERR_PROSUMER_PAUSE, 185 ERR_PROSUMER_RESUME, 186 ERR_PROSUMER_TIMEOUT, 187 ERR_PROSUMER_STOP, 188 ERR_PROSUMER_DESTROY, 189 ERR_PROSUMER_VIDEO_CAPTURE, 190 ERR_PROSUMER_AUDIO_CAPTURE, 191 // decode + encode + play 18800601~18800699 192 ERR_DECODE_ERROR = 18800601, 193 ERR_DECODE_FORMAT, 194 ERR_DECODE_SCARCE_CAPACITY, 195 ERR_DECODE_DISABLE_ACCELERATION, 196 ERR_ENCODE_ERROR, 197 ERR_ENCODE_FORMAT, 198 ERR_ENCODE_SCARCE_CAPACITY, 199 ERR_PLAY_START, 200 ERR_PLAY_STOP, 201 202 // application: wfd 18802000~18802999 203 ERR_WFD_START_CODE = 18802000, 204 ERR_RECEIVING_LIMIT = SharingErrorCode::ERR_WFD_START_CODE + 101, 205 ERR_P2P_SINK_DISCONNECTED, 206 ERR_P2P_SOURCE_DISCONNECTED, 207 ERR_P2P_SOURCE_HEARTBEAT_ERROR, 208 ERR_P2P_DHCP_INVALID_IP, 209 }; 210 211 enum SharingMsgId { 212 // service: 0 ~ 999 213 // chat: 1000 ~ 1999 214 CHAT_MSG_ID_START = 1000, 215 // wfd: 2000 ~ 2999 216 WFD_MSG_ID_START = 2000, 217 // player: 3000 ~ 3999 218 PLAYER_MSG_ID_START = 3000, 219 // any push: 4000 ~ 4999 220 ANY_PUSH_MSG_ID_START = 4000 221 }; 222 223 } // namespace Sharing 224 } // namespace OHOS 225 #endif 226