• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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