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