1 /*
2 * Copyright (c) 2022-2023 Huawei Device 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 #include <string>
17
18 #include "napi/native_common.h"
19 #include "avcontrol_command.h"
20 #include "avcall_state.h"
21 #include "avplayback_state.h"
22 #include "avmeta_data.h"
23 #include "avsession_info.h"
24 #include "napi_avsession_enum.h"
25
26 namespace OHOS::AVSession {
SetNamedProperty(napi_env env,napi_value & obj,const std::string & name,int32_t value)27 static napi_status SetNamedProperty(napi_env env, napi_value& obj, const std::string& name, int32_t value)
28 {
29 napi_value property = nullptr;
30 napi_status status = napi_create_int32(env, value, &property);
31 if (status != napi_ok) {
32 return status;
33 }
34 status = napi_set_named_property(env, obj, name.c_str(), property);
35 if (status != napi_ok) {
36 return status;
37 }
38 return status;
39 }
40
SetNamedProperty(napi_env env,napi_value & obj,const std::string & name,const std::string & value)41 static napi_status SetNamedProperty(napi_env env, napi_value& obj, const std::string& name, const std::string& value)
42 {
43 napi_value property = nullptr;
44 napi_status status = napi_create_string_utf8(env, value.c_str(), value.size(), &property);
45 if (status != napi_ok) {
46 return status;
47 }
48 status = napi_set_named_property(env, obj, name.c_str(), property);
49 if (status != napi_ok) {
50 return status;
51 }
52 return status;
53 }
54
ExportDecoderType(napi_env env)55 static napi_value ExportDecoderType(napi_env env)
56 {
57 napi_value result = nullptr;
58 napi_create_object(env, &result);
59
60 (void)SetNamedProperty(env, result, "OH_AVCODEC_MIMETYPE_VIDEO_AVC",
61 static_cast<std::string>(DecoderType::OH_AVCODEC_MIMETYPE_VIDEO_AVC));
62 (void)SetNamedProperty(env, result, "OH_AVCODEC_MIMETYPE_VIDEO_HEVC",
63 static_cast<std::string>(DecoderType::OH_AVCODEC_MIMETYPE_VIDEO_HEVC));
64 (void)SetNamedProperty(env, result, "OH_AVCODEC_MIMETYPE_AUDIO_VIVID",
65 static_cast<std::string>(DecoderType::OH_AVCODEC_MIMETYPE_AUDIO_VIVID));
66
67 napi_object_freeze(env, result);
68 return result;
69 }
70
ExportResolutionLevel(napi_env env)71 static napi_value ExportResolutionLevel(napi_env env)
72 {
73 napi_value result = nullptr;
74 napi_create_object(env, &result);
75
76 (void)SetNamedProperty(env, result, "RESOLUTION_480P", static_cast<int32_t>(ResolutionLevel::RESOLUTION_480P));
77 (void)SetNamedProperty(env, result, "RESOLUTION_720P", static_cast<int32_t>(ResolutionLevel::RESOLUTION_720P));
78 (void)SetNamedProperty(env, result, "RESOLUTION_1080P", static_cast<int32_t>(ResolutionLevel::RESOLUTION_1080P));
79 (void)SetNamedProperty(env, result, "RESOLUTION_2K", static_cast<int32_t>(ResolutionLevel::RESOLUTION_2K));
80 (void)SetNamedProperty(env, result, "RESOLUTION_4K", static_cast<int32_t>(ResolutionLevel::RESOLUTION_4K));
81
82 napi_object_freeze(env, result);
83 return result;
84 }
85
ExportLoopMode(napi_env env)86 static napi_value ExportLoopMode(napi_env env)
87 {
88 napi_value result = nullptr;
89 napi_create_object(env, &result);
90
91 (void)SetNamedProperty(env, result, "LOOP_MODE_SEQUENCE", AVPlaybackState::LOOP_MODE_SEQUENCE);
92 (void)SetNamedProperty(env, result, "LOOP_MODE_SINGLE", AVPlaybackState::LOOP_MODE_SINGLE);
93 (void)SetNamedProperty(env, result, "LOOP_MODE_LIST", AVPlaybackState::LOOP_MODE_LIST);
94 (void)SetNamedProperty(env, result, "LOOP_MODE_SHUFFLE", AVPlaybackState::LOOP_MODE_SHUFFLE);
95 (void)SetNamedProperty(env, result, "LOOP_MODE_CUSTOM", AVPlaybackState::LOOP_MODE_CUSTOM);
96
97 napi_object_freeze(env, result);
98 return result;
99 }
100
ExportSkipIntervals(napi_env env)101 static napi_value ExportSkipIntervals(napi_env env)
102 {
103 napi_value result = nullptr;
104 napi_create_object(env, &result);
105
106 (void)SetNamedProperty(env, result, "SECONDS_10", AVMetaData::SECONDS_10);
107 (void)SetNamedProperty(env, result, "SECONDS_15", AVMetaData::SECONDS_15);
108 (void)SetNamedProperty(env, result, "SECONDS_30", AVMetaData::SECONDS_30);
109
110 napi_object_freeze(env, result);
111 return result;
112 }
113
ExportAVCastCategory(napi_env env)114 static napi_value ExportAVCastCategory(napi_env env)
115 {
116 napi_value result = nullptr;
117 napi_create_object(env, &result);
118
119 (void)SetNamedProperty(env, result, "CATEGORY_LOCAL", AVCastCategory::CATEGORY_LOCAL);
120 (void)SetNamedProperty(env, result, "CATEGORY_REMOTE", AVCastCategory::CATEGORY_REMOTE);
121
122 napi_object_freeze(env, result);
123 return result;
124 }
125
ExportProtocolType(napi_env env)126 static napi_value ExportProtocolType(napi_env env)
127 {
128 napi_value result = nullptr;
129 napi_create_object(env, &result);
130
131 (void)SetNamedProperty(env, result, "TYPE_LOCAL", ProtocolType::TYPE_LOCAL);
132 (void)SetNamedProperty(env, result, "TYPE_CAST_PLUS_MIRROR", ProtocolType::TYPE_CAST_PLUS_MIRROR);
133 (void)SetNamedProperty(env, result, "TYPE_CAST_PLUS_STREAM", ProtocolType::TYPE_CAST_PLUS_STREAM);
134 (void)SetNamedProperty(env, result, "TYPE_DLNA", ProtocolType::TYPE_DLNA);
135 (void)SetNamedProperty(env, result, "TYPE_CAST_PLUS_AUDIO", ProtocolType::TYPE_CAST_PLUS_AUDIO);
136
137 napi_object_freeze(env, result);
138 return result;
139 }
140
ExportConnectionState(napi_env env)141 static napi_value ExportConnectionState(napi_env env)
142 {
143 napi_value result = nullptr;
144 napi_create_object(env, &result);
145
146 (void)SetNamedProperty(env, result, "STATE_CONNECTING", static_cast<int32_t>(ConnectionState::STATE_CONNECTING));
147 (void)SetNamedProperty(env, result, "STATE_CONNECTED", static_cast<int32_t>(ConnectionState::STATE_CONNECTED));
148 (void)SetNamedProperty(env, result, "STATE_DISCONNECTED",
149 static_cast<int32_t>(ConnectionState::STATE_DISCONNECTED));
150
151 napi_object_freeze(env, result);
152 return result;
153 }
154
ExportDeviceType(napi_env env)155 static napi_value ExportDeviceType(napi_env env)
156 {
157 napi_value result = nullptr;
158 napi_create_object(env, &result);
159
160 (void)SetNamedProperty(env, result, "DEVICE_TYPE_LOCAL", DeviceType::DEVICE_TYPE_LOCAL);
161 (void)SetNamedProperty(env, result, "DEVICE_TYPE_TV", DeviceType::DEVICE_TYPE_TV);
162 (void)SetNamedProperty(env, result, "DEVICE_TYPE_SMART_SPEAKER", DeviceType::DEVICE_TYPE_SPEAKER);
163 (void)SetNamedProperty(env, result, "DEVICE_TYPE_BLUETOOTH", DeviceType::DEVICE_TYPE_BLUETOOTH);
164
165 napi_object_freeze(env, result);
166 return result;
167 }
168
ExportPlaybackState(napi_env env)169 static napi_value ExportPlaybackState(napi_env env)
170 {
171 napi_value result = nullptr;
172 napi_create_object(env, &result);
173
174 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_INITIAL", AVPlaybackState::PLAYBACK_STATE_INITIAL);
175 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_PREPARE", AVPlaybackState::PLAYBACK_STATE_PREPARE);
176 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_PLAY", AVPlaybackState::PLAYBACK_STATE_PLAY);
177 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_PAUSE", AVPlaybackState::PLAYBACK_STATE_PAUSE);
178 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_FAST_FORWARD", AVPlaybackState::PLAYBACK_STATE_FAST_FORWARD);
179 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_REWIND", AVPlaybackState::PLAYBACK_STATE_REWIND);
180 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_STOP", AVPlaybackState::PLAYBACK_STATE_STOP);
181 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_COMPLETED", AVPlaybackState::PLAYBACK_STATE_COMPLETED);
182 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_RELEASED", AVPlaybackState::PLAYBACK_STATE_RELEASED);
183 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_ERROR", AVPlaybackState::PLAYBACK_STATE_ERROR);
184 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_IDLE", AVPlaybackState::PLAYBACK_STATE_IDLE);
185 (void)SetNamedProperty(env, result, "PLAYBACK_STATE_BUFFERING", AVPlaybackState::PLAYBACK_STATE_BUFFERING);
186
187 napi_object_freeze(env, result);
188 return result;
189 }
190
ExportAVCallState(napi_env env)191 static napi_value ExportAVCallState(napi_env env)
192 {
193 napi_value result = nullptr;
194 napi_create_object(env, &result);
195
196 (void)SetNamedProperty(env, result, "CALL_STATE_IDLE", AVCallState::AVCALL_STATE_IDLE);
197 (void)SetNamedProperty(env, result, "CALL_STATE_INCOMING", AVCallState::AVCALL_STATE_INCOMING);
198 (void)SetNamedProperty(env, result, "CALL_STATE_ACTIVE", AVCallState::AVCALL_STATE_ACTIVE);
199 (void)SetNamedProperty(env, result, "CALL_STATE_DIALING", AVCallState::AVCALL_STATE_DIALING);
200 (void)SetNamedProperty(env, result, "CALL_STATE_WAITING", AVCallState::AVCALL_STATE_WAITING);
201 (void)SetNamedProperty(env, result, "CALL_STATE_HOLDING", AVCallState::AVCALL_STATE_HOLDING);
202 (void)SetNamedProperty(env, result, "CALL_STATE_DISCONNECTING", AVCallState::AVCALL_STATE_DISCONNECTING);
203
204 napi_object_freeze(env, result);
205 return result;
206 }
207
AVSessionControlErrorCode(napi_env env,napi_value result)208 static void AVSessionControlErrorCode(napi_env env, napi_value result)
209 {
210 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_UNSPECIFIED",
211 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_UNSPECIFIED);
212 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_REMOTE_ERROR",
213 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_REMOTE_ERROR);
214 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_BEHIND_LIVE_WINDOW",
215 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_BEHIND_LIVE_WINDOW);
216 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_TIMEOUT",
217 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_TIMEOUT);
218 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_RUNTIME_CHECK_FAILED",
219 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_RUNTIME_CHECK_FAILED);
220 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PLAYER_NOT_WORKING",
221 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PLAYER_NOT_WORKING);
222 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_SEEK_MODE_UNSUPPORTED",
223 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_SEEK_MODE_UNSUPPORTED);
224 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_ILLEGAL_SEEK_TARGET",
225 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_ILLEGAL_SEEK_TARGET);
226 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PLAY_MODE_UNSUPPORTED",
227 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PLAY_MODE_UNSUPPORTED);
228 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PLAY_SPEED_UNSUPPORTED",
229 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PLAY_SPEED_UNSUPPORTED);
230 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DEVICE_MISSING",
231 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DEVICE_MISSING);
232 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_INVALID_PARAM",
233 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_INVALID_PARAM);
234 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_NO_MEMORY",
235 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_NO_MEMORY);
236 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_OPERATION_NOT_ALLOWED",
237 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_OPERATION_NOT_ALLOWED);
238 }
239
AVSessionIOErrorCode(napi_env env,napi_value result)240 static void AVSessionIOErrorCode(napi_env env, napi_value result)
241 {
242 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_UNSPECIFIED",
243 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_UNSPECIFIED);
244 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_FAILED",
245 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_FAILED);
246 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_TIMEOUT",
247 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NETWORK_CONNECTION_TIMEOUT);
248 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_INVALID_HTTP_CONTENT_TYPE",
249 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_INVALID_HTTP_CONTENT_TYPE);
250 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_BAD_HTTP_STATUS",
251 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_BAD_HTTP_STATUS);
252 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_FILE_NOT_FOUND",
253 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_FILE_NOT_FOUND);
254 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NO_PERMISSION",
255 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NO_PERMISSION);
256 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_CLEARTEXT_NOT_PERMITTED",
257 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_CLEARTEXT_NOT_PERMITTED);
258 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_READ_POSITION_OUT_OF_RANGE",
259 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_READ_POSITION_OUT_OF_RANGE);
260 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NO_CONTENTS",
261 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NO_CONTENTS);
262 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_READ_ERROR",
263 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_READ_ERROR);
264 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_CONTENT_BUSY",
265 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_CONTENT_BUSY);
266 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_CONTENT_EXPIRED",
267 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_CONTENT_EXPIRED);
268 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_USE_FORBIDDEN",
269 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_USE_FORBIDDEN);
270 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NOT_VERIFIED",
271 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NOT_VERIFIED);
272 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_EXHAUSTED_ALLOWED_USES",
273 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_EXHAUSTED_ALLOWED_USES);
274 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_IO_NETWORK_PACKET_SENDING_FAILED",
275 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_IO_NETWORK_PACKET_SENDING_FAILED);
276 }
277
AVSessionParsingErrorCode(napi_env env,napi_value result)278 static void AVSessionParsingErrorCode(napi_env env, napi_value result)
279 {
280 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_UNSPECIFIED",
281 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_UNSPECIFIED);
282 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_MALFORMED",
283 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_MALFORMED);
284 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_MALFORMED",
285 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_MALFORMED);
286 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_UNSUPPORTED",
287 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_CONTAINER_UNSUPPORTED);
288 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_UNSUPPORTED",
289 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_PARSING_MANIFEST_UNSUPPORTED);
290 }
291
AVSessionDecodingErrorCode(napi_env env,napi_value result)292 static void AVSessionDecodingErrorCode(napi_env env, napi_value result)
293 {
294 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_UNSPECIFIED",
295 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_UNSPECIFIED);
296 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_INIT_FAILED",
297 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_INIT_FAILED);
298 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_QUERY_FAILED",
299 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_QUERY_FAILED);
300 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_FAILED",
301 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_FAILED);
302 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_FORMAT_EXCEEDS_CAPABILITIES",
303 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_FORMAT_EXCEEDS_CAPABILITIES);
304 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DECODING_FORMAT_UNSUPPORTED",
305 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DECODING_FORMAT_UNSUPPORTED);
306 }
307
AVSessionAudioRenderErrorCode(napi_env env,napi_value result)308 static void AVSessionAudioRenderErrorCode(napi_env env, napi_value result)
309 {
310 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_UNSPECIFIED",
311 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_UNSPECIFIED);
312 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_INIT_FAILED",
313 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_INIT_FAILED);
314 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_WRITE_FAILED",
315 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_AUDIO_RENDERER_WRITE_FAILED);
316 }
317
AVSessionDRMErrorCode(napi_env env,napi_value result)318 static void AVSessionDRMErrorCode(napi_env env, napi_value result)
319 {
320 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_UNSPECIFIED",
321 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_UNSPECIFIED);
322 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_SCHEME_UNSUPPORTED",
323 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_SCHEME_UNSUPPORTED);
324 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_PROVISIONING_FAILED",
325 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_PROVISIONING_FAILED);
326 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_CONTENT_ERROR",
327 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_CONTENT_ERROR);
328 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_LICENSE_ACQUISITION_FAILED",
329 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_LICENSE_ACQUISITION_FAILED);
330 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_DISALLOWED_OPERATION",
331 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_DISALLOWED_OPERATION);
332 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_SYSTEM_ERROR",
333 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_SYSTEM_ERROR);
334 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_DEVICE_REVOKED",
335 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_DEVICE_REVOKED);
336 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_LICENSE_EXPIRED",
337 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_LICENSE_EXPIRED);
338 (void)SetNamedProperty(env, result, "ERR_CODE_CAST_CONTROL_DRM_PROVIDE_KEY_RESPONSE_ERROR",
339 AVSessionErrorCode::ERR_CODE_CAST_CONTROL_DRM_PROVIDE_KEY_RESPONSE_ERROR);
340 }
341
ExportAVSessionErrorCode(napi_env env)342 static napi_value ExportAVSessionErrorCode(napi_env env)
343 {
344 napi_value result = nullptr;
345 napi_create_object(env, &result);
346
347 (void)SetNamedProperty(env, result, "ERR_CODE_SERVICE_EXCEPTION", AVSessionErrorCode::ERR_CODE_SERVICE_EXCEPTION);
348 (void)SetNamedProperty(env, result, "ERR_CODE_SESSION_NOT_EXIST", AVSessionErrorCode::ERR_CODE_SESSION_NOT_EXIST);
349 (void)SetNamedProperty(env, result, "ERR_CODE_CONTROLLER_NOT_EXIST",
350 AVSessionErrorCode::ERR_CODE_CONTROLLER_NOT_EXIST);
351 (void)SetNamedProperty(env, result, "ERR_CODE_REMOTE_CONNECTION_ERR",
352 AVSessionErrorCode::ERR_CODE_REMOTE_CONNECTION_ERR);
353 (void)SetNamedProperty(env, result, "ERR_CODE_COMMAND_INVALID", AVSessionErrorCode::ERR_CODE_COMMAND_INVALID);
354 (void)SetNamedProperty(env, result, "ERR_CODE_SESSION_INACTIVE", AVSessionErrorCode::ERR_CODE_SESSION_INACTIVE);
355 (void)SetNamedProperty(env, result, "ERR_CODE_MESSAGE_OVERLOAD", AVSessionErrorCode::ERR_CODE_MESSAGE_OVERLOAD);
356 (void)SetNamedProperty(env, result, "ERR_CODE_DEVICE_CONNECTION_FAILED",
357 AVSessionErrorCode::ERR_CODE_DEVICE_CONNECTION_FAILED);
358 (void)SetNamedProperty(env, result, "ERR_CODE_REMOTE_CONNECTION_NOT_EXIST",
359 AVSessionErrorCode::ERR_CODE_REMOTE_CONNECTION_NOT_EXIST);
360 AVSessionControlErrorCode(env, result);
361 AVSessionIOErrorCode(env, result);
362 AVSessionParsingErrorCode(env, result);
363 AVSessionDecodingErrorCode(env, result);
364 AVSessionAudioRenderErrorCode(env, result);
365 AVSessionDRMErrorCode(env, result);
366 napi_object_freeze(env, result);
367 return result;
368 }
369
ExportDisplayTag(napi_env env)370 static napi_value ExportDisplayTag(napi_env env)
371 {
372 napi_value result = nullptr;
373 napi_create_object(env, &result);
374
375 (void)SetNamedProperty(env, result, "TAG_AUDIO_VIVID", AVMetaData::DISPLAY_TAG_AUDIO_VIVID);
376
377 napi_object_freeze(env, result);
378 return result;
379 }
380
ExportCastDisplayState(napi_env env)381 static napi_value ExportCastDisplayState(napi_env env)
382 {
383 napi_value result = nullptr;
384 napi_create_object(env, &result);
385
386 (void)SetNamedProperty(env, result, "STATE_OFF", static_cast<int32_t>(CastDisplayState::STATE_OFF));
387 (void)SetNamedProperty(env, result, "STATE_ON", static_cast<int32_t>(CastDisplayState::STATE_ON));
388
389 napi_object_freeze(env, result);
390 return result;
391 }
392
ExportDeviceLogEventCode(napi_env env)393 static napi_value ExportDeviceLogEventCode(napi_env env)
394 {
395 napi_value result = nullptr;
396 napi_create_object(env, &result);
397
398 (void)SetNamedProperty(env, result, "DEVICE_LOG_FULL",
399 static_cast<int32_t>(DeviceLogEventCode::DEVICE_LOG_FULL));
400 (void)SetNamedProperty(env, result, "DEVICE_LOG_EXCEPTION",
401 static_cast<int32_t>(DeviceLogEventCode::DEVICE_LOG_EXCEPTION));
402
403 napi_object_freeze(env, result);
404 return result;
405 }
406
ExportDistributedSessionType(napi_env env)407 static napi_value ExportDistributedSessionType(napi_env env)
408 {
409 napi_value result = nullptr;
410 napi_create_object(env, &result);
411
412 (void)SetNamedProperty(env, result, "TYPE_SESSION_REMOTE",
413 static_cast<int32_t>(DistributedSessionType::TYPE_SESSION_REMOTE));
414 (void)SetNamedProperty(env, result, "TYPE_SESSION_MIGRATE_IN",
415 static_cast<int32_t>(DistributedSessionType::TYPE_SESSION_MIGRATE_IN));
416 (void)SetNamedProperty(env, result, "TYPE_SESSION_MIGRATE_OUT",
417 static_cast<int32_t>(DistributedSessionType::TYPE_SESSION_MIGRATE_OUT));
418
419 napi_object_freeze(env, result);
420 return result;
421 }
422
InitEnums(napi_env env,napi_value exports)423 napi_status InitEnums(napi_env env, napi_value exports)
424 {
425 const napi_property_descriptor properties[] = {
426 DECLARE_NAPI_PROPERTY("AVCastCategory", ExportAVCastCategory(env)),
427 DECLARE_NAPI_PROPERTY("ProtocolType", ExportProtocolType(env)),
428 DECLARE_NAPI_PROPERTY("ConnectionState", ExportConnectionState(env)),
429 DECLARE_NAPI_PROPERTY("DeviceType", ExportDeviceType(env)),
430 DECLARE_NAPI_PROPERTY("LoopMode", ExportLoopMode(env)),
431 DECLARE_NAPI_PROPERTY("SkipIntervals", ExportSkipIntervals(env)),
432 DECLARE_NAPI_PROPERTY("PlaybackState", ExportPlaybackState(env)),
433 DECLARE_NAPI_PROPERTY("CallState", ExportAVCallState(env)),
434 DECLARE_NAPI_PROPERTY("AVSessionErrorCode", ExportAVSessionErrorCode(env)),
435 DECLARE_NAPI_PROPERTY("DisplayTag", ExportDisplayTag(env)),
436 DECLARE_NAPI_PROPERTY("CastDisplayState", ExportCastDisplayState(env)),
437 DECLARE_NAPI_PROPERTY("DeviceLogEventCode", ExportDeviceLogEventCode(env)),
438 DECLARE_NAPI_PROPERTY("DistributedSessionType", ExportDistributedSessionType(env)),
439 DECLARE_NAPI_PROPERTY("DecoderType", ExportDecoderType(env)),
440 DECLARE_NAPI_PROPERTY("ResolutionLevel", ExportResolutionLevel(env)),
441 };
442
443 size_t count = sizeof(properties) / sizeof(napi_property_descriptor);
444 return napi_define_properties(env, exports, count, properties);
445 }
446 }