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