• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 /**
17  * @addtogroup OH_Camera
18  * @{
19  *
20  * @brief Provide the definition of the C interface for the camera module.
21  *
22  * @syscap SystemCapability.Multimedia.Camera.Core
23  *
24  * @since 11
25  * @version 1.0
26  */
27 
28 /**
29  * @file capture_session.h
30  *
31  * @brief Declare the capture Session concepts.
32  *
33  * @library libohcamera.so
34  * @kit CameraKit
35  * @syscap SystemCapability.Multimedia.Camera.Core
36  * @since 11
37  * @version 1.0
38  */
39 
40 #ifndef NATIVE_INCLUDE_CAMERA_CAMERA_SESSION_H
41 #define NATIVE_INCLUDE_CAMERA_CAMERA_SESSION_H
42 
43 #include <stdint.h>
44 #include <stdio.h>
45 #include "camera.h"
46 #include "camera_input.h"
47 #include "preview_output.h"
48 #include "photo_output.h"
49 #include "video_output.h"
50 #include "metadata_output.h"
51 #include "native_buffer.h"
52 
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
57 /**
58  * @brief Capture session object
59  *
60  * A pointer can be created using {@link Camera_CaptureSession} method.
61  *
62  * @since 11
63  * @version 1.0
64  */
65 typedef struct Camera_CaptureSession Camera_CaptureSession;
66 
67 /**
68  * @brief Capture session focus state callback to be called in {@link CaptureSession_Callbacks}.
69  *
70  * @param session the {@link Camera_CaptureSession} which deliver the callback.
71  * @param focusState the {@link Camera_FocusState} which delivered by the callback.
72  * @since 11
73  */
74 typedef void (*OH_CaptureSession_OnFocusStateChange)(Camera_CaptureSession* session, Camera_FocusState focusState);
75 
76 /**
77  * @brief Capture session error callback to be called in {@link CaptureSession_Callbacks}.
78  *
79  * @param session the {@link Camera_CaptureSession} which deliver the callback.
80  * @param errorCode the {@link Camera_ErrorCode} of the capture session.
81  *
82  * @see CAMERA_SERVICE_FATAL_ERROR
83  * @since 11
84  */
85 typedef void (*OH_CaptureSession_OnError)(Camera_CaptureSession* session, Camera_ErrorCode errorCode);
86 
87 /**
88  * @brief Capture session smooth zoom info callback.
89  *
90  * @param session the {@link Camera_CaptureSession} which deliver the callback.
91  * @param smoothZoomInfo the {@link Camera_SmoothZoomInfo} which delivered by the callback.
92  * @since 12
93  */
94 typedef void (*OH_CaptureSession_OnSmoothZoomInfo)(Camera_CaptureSession* session,
95     Camera_SmoothZoomInfo* smoothZoomInfo);
96 
97 /**
98  * @brief Capture session device switch status callback.
99  *
100  * @param session the {@link Camera_CaptureSession} which deliver the callback.
101  * @param autoDeviceSwitchStatusInfo the {@link Camera_AutoDeviceSwitchStatusInfo} which delivered by the callback.
102  * @since 13
103  */
104 typedef void (*OH_CaptureSession_OnAutoDeviceSwitchStatusChange)(Camera_CaptureSession* session,
105     Camera_AutoDeviceSwitchStatusInfo* autoDeviceSwitchStatusInfo);
106 
107 /**
108  * @brief Capture session system pressure level callback.
109  *
110  * @param session the {@link Camera_CaptureSession} which deliver the callback.
111  * @param systemPressureLevel the {@link Camera_SystemPressureLevel} which delivered by the callback.
112  * @since 20
113  */
114 typedef void (*OH_CaptureSession_OnSystemPressureLevelChange)(Camera_CaptureSession* session,
115     Camera_SystemPressureLevel systemPressureLevel);
116 
117 /**
118  * @brief A listener for capture session.
119  *
120  * @see OH_CaptureSession_RegisterCallback
121  * @since 11
122  * @version 1.0
123  */
124 typedef struct CaptureSession_Callbacks {
125     /**
126      * Capture session focus state change event.
127      */
128     OH_CaptureSession_OnFocusStateChange onFocusStateChange;
129 
130     /**
131      * Capture session error event.
132      */
133     OH_CaptureSession_OnError onError;
134 } CaptureSession_Callbacks;
135 
136 /**
137  * @brief Register capture session event callback.
138  *
139  * @param session the {@link Camera_CaptureSession} instance.
140  * @param callback the {@link CaptureSession_Callbacks} to be registered.
141  * @return {@link #CAMERA_OK} if the method call succeeds.
142  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
143  * @since 11
144  */
145 Camera_ErrorCode OH_CaptureSession_RegisterCallback(Camera_CaptureSession* session,
146     CaptureSession_Callbacks* callback);
147 
148 /**
149  * @brief Unregister capture session event callback.
150  *
151  * @param session the {@link Camera_CaptureSession} instance.
152  * @param callback the {@link CaptureSession_Callbacks} to be unregistered.
153  * @return {@link #CAMERA_OK} if the method call succeeds.
154  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
155  * @since 11
156  */
157 Camera_ErrorCode OH_CaptureSession_UnregisterCallback(Camera_CaptureSession* session,
158     CaptureSession_Callbacks* callback);
159 
160 /**
161  * @brief Register smooth zoom information event callback.
162  *
163  * @param session the {@link Camera_CaptureSession} instance.
164  * @param smoothZoomInfoCallback the {@link OH_CaptureSession_OnSmoothZoomInfo} to be registered.
165  * @return {@link #CAMERA_OK} if the method call succeeds.
166  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
167  * @since 12
168  */
169 Camera_ErrorCode OH_CaptureSession_RegisterSmoothZoomInfoCallback(Camera_CaptureSession* session,
170     OH_CaptureSession_OnSmoothZoomInfo smoothZoomInfoCallback);
171 
172 /**
173  * @brief Unregister smooth zoom information event callback.
174  *
175  * @param session the {@link Camera_CaptureSession} instance.
176  * @param smoothZoomInfoCallback the {@link OH_CaptureSession_OnSmoothZoomInfo} to be unregistered.
177  * @return {@link #CAMERA_OK} if the method call succeeds.
178  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
179  * @since 12
180  */
181 Camera_ErrorCode OH_CaptureSession_UnregisterSmoothZoomInfoCallback(Camera_CaptureSession* session,
182     OH_CaptureSession_OnSmoothZoomInfo smoothZoomInfoCallback);
183 
184 /**
185  * @brief Specifies the specific mode.
186  *
187  * This interface cannot be used after {@link OH_CaptureSession_BeginConfig}.
188  * We recommend using this interface immediately after using {@link OH_CameraManager_CreateCaptureSession}.
189  *
190  * @param session the {@link Camera_CaptureSession} instance.
191  * @param sceneMode the {@link CaptureSession_SceneMode} instance.
192  * @return {@link #CAMERA_OK} if the method call succeeds.
193  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
194  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
195  *         {@link #CAMERA_SESSION_CONFIG_LOCKED} if session config locked.
196  * @since 12
197  */
198 Camera_ErrorCode OH_CaptureSession_SetSessionMode(Camera_CaptureSession* session, Camera_SceneMode sceneMode);
199 
200 /**
201  * @brief Add Secure output for camera.
202  *
203  * @param session the {@link Camera_CaptureSession} instance.
204  * @param previewOutput the target {@link Camera_PreviewOutput} to Set as a secure flow.
205  * @return {@link #CAMERA_OK} if the method call succeeds.
206  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
207  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
208  *         {@link #CAMERA_SESSION_CONFIG_LOCKED} if session config locked.
209  * @since 12
210  */
211 Camera_ErrorCode OH_CaptureSession_AddSecureOutput(Camera_CaptureSession* session, Camera_PreviewOutput* previewOutput);
212 
213 /**
214  * @brief Begin capture session config.
215  *
216  * @param session the {@link Camera_CaptureSession} instance.
217  * @return {@link #CAMERA_OK} if the method call succeeds.
218  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
219  *         {@link #CAMERA_SESSION_CONFIG_LOCKED} if session config locked.
220  * @since 11
221  */
222 Camera_ErrorCode OH_CaptureSession_BeginConfig(Camera_CaptureSession* session);
223 
224 /**
225  * @brief Commit capture session config.
226  *
227  * @param session the {@link Camera_CaptureSession} instance.
228  * @return {@link #CAMERA_OK} if the method call succeeds.
229  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
230  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
231  *         {@link #CAMERA_SERVICE_FATAL_ERROR} if camera service fatal error.
232  * @since 11
233  */
234 Camera_ErrorCode OH_CaptureSession_CommitConfig(Camera_CaptureSession* session);
235 
236 /**
237  * @brief Add a camera input.
238  *
239  * @param session the {@link Camera_CaptureSession} instance.
240  * @param cameraInput the target {@link Camera_Input} to add.
241  * @return {@link #CAMERA_OK} if the method call succeeds.
242  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
243  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
244  * @since 11
245  */
246 Camera_ErrorCode OH_CaptureSession_AddInput(Camera_CaptureSession* session, Camera_Input* cameraInput);
247 
248 /**
249  * @brief Remove a camera input.
250  *
251  * @param session the {@link Camera_CaptureSession} instance.
252  * @param cameraInput the target {@link Camera_Input} to remove.
253  * @return {@link #CAMERA_OK} if the method call succeeds.
254  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
255  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
256  * @since 11
257  */
258 Camera_ErrorCode OH_CaptureSession_RemoveInput(Camera_CaptureSession* session, Camera_Input* cameraInput);
259 
260 /**
261  * @brief Add a preview output.
262  *
263  * @param session the {@link Camera_CaptureSession} instance.
264  * @param previewOutput the target {@link Camera_PreviewOutput} to add.
265  * @return {@link #CAMERA_OK} if the method call succeeds.
266  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
267  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
268  * @since 11
269  */
270 Camera_ErrorCode OH_CaptureSession_AddPreviewOutput(Camera_CaptureSession* session,
271     Camera_PreviewOutput* previewOutput);
272 
273 /**
274  * @brief Remove a preview output.
275  *
276  * @param session the {@link Camera_CaptureSession} instance.
277  * @param previewOutput the target {@link Camera_PreviewOutput} to remove.
278  * @return {@link #CAMERA_OK} if the method call succeeds.
279  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
280  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
281  * @since 11
282  */
283 Camera_ErrorCode OH_CaptureSession_RemovePreviewOutput(Camera_CaptureSession* session,
284     Camera_PreviewOutput* previewOutput);
285 
286 /**
287  * @brief Add a photo output.
288  *
289  * @param session the {@link Camera_CaptureSession} instance.
290  * @param photoOutput the target {@link Camera_PhotoOutput} to add.
291  * @return {@link #CAMERA_OK} if the method call succeeds.
292  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
293  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
294  * @since 11
295  */
296 Camera_ErrorCode OH_CaptureSession_AddPhotoOutput(Camera_CaptureSession* session, Camera_PhotoOutput* photoOutput);
297 
298 /**
299  * @brief Remove a photo output.
300  *
301  * @param session the {@link Camera_CaptureSession} instance.
302  * @param photoOutput the target {@link Camera_PhotoOutput} to remove.
303  * @return {@link #CAMERA_OK} if the method call succeeds.
304  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
305  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
306  * @since 11
307  */
308 Camera_ErrorCode OH_CaptureSession_RemovePhotoOutput(Camera_CaptureSession* session, Camera_PhotoOutput* photoOutput);
309 
310 /**
311  * @brief Add a video output.
312  *
313  * @param session the {@link Camera_CaptureSession} instance.
314  * @param videoOutput the target {@link Camera_VideoOutput} to add.
315  * @return {@link #CAMERA_OK} if the method call succeeds.
316  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
317  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
318  * @since 11
319  */
320 Camera_ErrorCode OH_CaptureSession_AddVideoOutput(Camera_CaptureSession* session, Camera_VideoOutput* videoOutput);
321 
322 /**
323  * @brief Remove a video output.
324  *
325  * @param session the {@link Camera_CaptureSession} instance.
326  * @param videoOutput the target {@link Camera_VideoOutput} to remove.
327  * @return {@link #CAMERA_OK} if the method call succeeds.
328  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
329  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
330  * @since 11
331  */
332 Camera_ErrorCode OH_CaptureSession_RemoveVideoOutput(Camera_CaptureSession* session, Camera_VideoOutput* videoOutput);
333 
334 /**
335  * @brief Add a metadata output.
336  *
337  * @param session the {@link Camera_CaptureSession} instance.
338  * @param metadataOutput the target {@link Camera_MetadataOutput} to add.
339  * @return {@link #CAMERA_OK} if the method call succeeds.
340  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
341  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
342  * @since 11
343  */
344 Camera_ErrorCode OH_CaptureSession_AddMetadataOutput(Camera_CaptureSession* session,
345     Camera_MetadataOutput* metadataOutput);
346 
347 /**
348  * @brief Remove a metadata output.
349  *
350  * @param session the {@link Camera_CaptureSession} instance.
351  * @param metadataOutput the target {@link Camera_MetadataOutput} to remove.
352  * @return {@link #CAMERA_OK} if the method call succeeds.
353  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
354  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
355  * @since 11
356  */
357 Camera_ErrorCode OH_CaptureSession_RemoveMetadataOutput(Camera_CaptureSession* session,
358     Camera_MetadataOutput* metadataOutput);
359 
360 /**
361  * @brief Start capture session.
362  *
363  * @param session the {@link Camera_CaptureSession} instance to be started.
364  * @return {@link #CAMERA_OK} if the method call succeeds.
365  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
366  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
367  *         {@link #CAMERA_SERVICE_FATAL_ERROR} if camera service fatal error.
368  * @since 11
369  */
370 Camera_ErrorCode OH_CaptureSession_Start(Camera_CaptureSession* session);
371 
372 /**
373  * @brief Stop capture session.
374  *
375  * @param session the {@link Camera_CaptureSession} instance to be stoped.
376  * @return {@link #CAMERA_OK} if the method call succeeds.
377  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
378  *         {@link #CAMERA_SERVICE_FATAL_ERROR} if camera service fatal error.
379  * @since 11
380  */
381 Camera_ErrorCode OH_CaptureSession_Stop(Camera_CaptureSession* session);
382 
383 /**
384  * @brief Release capture session.
385  *
386  * @param session the {@link Camera_CaptureSession} instance to be release.
387  * @return {@link #CAMERA_OK} if the method call succeeds.
388  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
389  *         {@link #CAMERA_SERVICE_FATAL_ERROR} if camera service fatal error.
390  * @since 11
391  */
392 Camera_ErrorCode OH_CaptureSession_Release(Camera_CaptureSession* session);
393 
394 /**
395  * @brief Check if device has flash light.
396  *
397  * @param session the {@link Camera_CaptureSession} instance.
398  * @param hasFlash the result of whether flash supported.
399  * @return {@link #CAMERA_OK} if the method call succeeds.
400  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
401  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
402  * @since 11
403  */
404 Camera_ErrorCode OH_CaptureSession_HasFlash(Camera_CaptureSession* session, bool* hasFlash);
405 
406 /**
407  * @brief Check whether a specified flash mode is supported.
408  *
409  * @param session the {@link Camera_CaptureSession} instance.
410  * @param flashMode the {@link Camera_FlashMode} to be checked.
411  * @param isSupported the result of whether flash mode supported.
412  * @return {@link #CAMERA_OK} if the method call succeeds.
413  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
414  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
415  * @since 11
416  */
417 Camera_ErrorCode OH_CaptureSession_IsFlashModeSupported(Camera_CaptureSession* session,
418     Camera_FlashMode flashMode, bool* isSupported);
419 
420 /**
421  * @brief Get current flash mode.
422  *
423  * @param session the {@link Camera_CaptureSession} instance.
424  * @param flashMode the current {@link Camera_FlashMode}.
425  * @return {@link #CAMERA_OK} if the method call succeeds.
426  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
427  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
428  * @since 11
429  */
430 Camera_ErrorCode OH_CaptureSession_GetFlashMode(Camera_CaptureSession* session, Camera_FlashMode* flashMode);
431 
432 /**
433  * @brief Set flash mode.
434  *
435  * @param session the {@link Camera_CaptureSession} instance.
436  * @param flashMode the target {@link Camera_FlashMode} to set.
437  * @return {@link #CAMERA_OK} if the method call succeeds.
438  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
439  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
440  * @since 11
441  */
442 Camera_ErrorCode OH_CaptureSession_SetFlashMode(Camera_CaptureSession* session, Camera_FlashMode flashMode);
443 
444 /**
445  * @brief Check whether a specified exposure mode is supported.
446  *
447  * @param session the {@link Camera_CaptureSession} instance.
448  * @param exposureMode the {@link Camera_ExposureMode} to be checked.
449  * @param isSupported the result of whether exposure mode supported.
450  * @return {@link #CAMERA_OK} if the method call succeeds.
451  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
452  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
453  * @since 11
454  */
455 Camera_ErrorCode OH_CaptureSession_IsExposureModeSupported(Camera_CaptureSession* session,
456     Camera_ExposureMode exposureMode, bool* isSupported);
457 
458 /**
459  * @brief Get current exposure mode.
460  *
461  * @param session the {@link Camera_CaptureSession} instance.
462  * @param exposureMode the current {@link Camera_ExposureMode}.
463  * @return {@link #CAMERA_OK} if the method call succeeds.
464  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
465  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
466  * @since 11
467  */
468 Camera_ErrorCode OH_CaptureSession_GetExposureMode(Camera_CaptureSession* session, Camera_ExposureMode* exposureMode);
469 
470 /**
471  * @brief Set exposure mode.
472  *
473  * @param session the {@link Camera_CaptureSession} instance.
474  * @param exposureMode the target {@link Camera_ExposureMode} to set.
475  * @return {@link #CAMERA_OK} if the method call succeeds.
476  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
477  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
478  * @since 11
479  */
480 Camera_ErrorCode OH_CaptureSession_SetExposureMode(Camera_CaptureSession* session, Camera_ExposureMode exposureMode);
481 
482 /**
483  * @brief Get current metering point.
484  *
485  * @param session the {@link Camera_CaptureSession} instance.
486  * @param point the current {@link Camera_Point} metering point.
487  * @return {@link #CAMERA_OK} if the method call succeeds.
488  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
489  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
490  * @since 11
491  */
492 Camera_ErrorCode OH_CaptureSession_GetMeteringPoint(Camera_CaptureSession* session, Camera_Point* point);
493 
494 /**
495  * @brief Set the center point of the metering area.
496  *
497  * @param session the {@link Camera_CaptureSession} instance.
498  * @param point the target {@link Camera_Point} to set.
499  * @return {@link #CAMERA_OK} if the method call succeeds.
500  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
501  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
502  * @since 11
503  */
504 Camera_ErrorCode OH_CaptureSession_SetMeteringPoint(Camera_CaptureSession* session, Camera_Point point);
505 
506 /**
507  * @brief Query the exposure compensation range.
508  *
509  * @param session the {@link Camera_CaptureSession} instance.
510  * @param minExposureBias the minimum of exposure compensation.
511  * @param maxExposureBias the Maximum of exposure compensation.
512  * @param step the step of exposure compensation between each level.
513  * @return {@link #CAMERA_OK} if the method call succeeds.
514  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
515  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
516  * @since 11
517  */
518 Camera_ErrorCode OH_CaptureSession_GetExposureBiasRange(Camera_CaptureSession* session, float* minExposureBias,
519     float* maxExposureBias, float* step);
520 
521 /**
522  * @brief Set exposure compensation.
523  *
524  * @param session the {@link Camera_CaptureSession} instance.
525  * @param exposureBias the target exposure compensation to set.
526  * @return {@link #CAMERA_OK} if the method call succeeds.
527  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
528  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
529  * @since 11
530  */
531 Camera_ErrorCode OH_CaptureSession_SetExposureBias(Camera_CaptureSession* session, float exposureBias);
532 
533 /**
534  * @brief Get current exposure compensation.
535  *
536  * @param session the {@link Camera_CaptureSession} instance.
537  * @param exposureBias the current exposure compensation.
538  * @return {@link #CAMERA_OK} if the method call succeeds.
539  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
540  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
541  * @since 11
542  */
543 Camera_ErrorCode OH_CaptureSession_GetExposureBias(Camera_CaptureSession* session, float* exposureBias);
544 
545 /**
546  * @brief Check whether a specified focus mode is supported.
547  *
548  * @param session the {@link Camera_CaptureSession} instance.
549  * @param focusMode the {@link Camera_FocusMode} to be checked.
550  * @param isSupported the result of whether focus mode supported.
551  * @return {@link #CAMERA_OK} if the method call succeeds.
552  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
553  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
554  * @since 11
555  */
556 Camera_ErrorCode OH_CaptureSession_IsFocusModeSupported(Camera_CaptureSession* session,
557     Camera_FocusMode focusMode, bool* isSupported);
558 
559 /**
560  * @brief Get current focus mode.
561  *
562  * @param session the {@link Camera_CaptureSession} instance.
563  * @param exposureBias the current {@link Camera_FocusMode}.
564  * @return {@link #CAMERA_OK} if the method call succeeds.
565  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
566  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
567  * @since 11
568  */
569 Camera_ErrorCode OH_CaptureSession_GetFocusMode(Camera_CaptureSession* session, Camera_FocusMode* focusMode);
570 
571 /**
572  * @brief Set focus mode.
573  *
574  * @param session the {@link Camera_CaptureSession} instance.
575  * @param focusMode the target {@link Camera_FocusMode} to set.
576  * @return {@link #CAMERA_OK} if the method call succeeds.
577  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
578  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
579  * @since 11
580  */
581 Camera_ErrorCode OH_CaptureSession_SetFocusMode(Camera_CaptureSession* session, Camera_FocusMode focusMode);
582 
583 /**
584  * @brief Get current focus point.
585  *
586  * @param session the {@link Camera_CaptureSession} instance.
587  * @param focusPoint the current {@link Camera_Point}.
588  * @return {@link #CAMERA_OK} if the method call succeeds.
589  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
590  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
591  * @since 11
592  */
593 Camera_ErrorCode OH_CaptureSession_GetFocusPoint(Camera_CaptureSession* session, Camera_Point* focusPoint);
594 
595 /**
596  * @brief Set focus point.
597  *
598  * @param session the {@link Camera_CaptureSession} instance.
599  * @param focusPoint the target {@link Camera_Point} to set.
600  * @return {@link #CAMERA_OK} if the method call succeeds.
601  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
602  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
603  * @since 11
604  */
605 Camera_ErrorCode OH_CaptureSession_SetFocusPoint(Camera_CaptureSession* session, Camera_Point focusPoint);
606 
607 /**
608  * @brief Get all supported zoom ratio range.
609  *
610  * @param session the {@link Camera_CaptureSession} instance.
611  * @param minZoom the minimum of zoom ratio range.
612  * @param maxZoom the Maximum of zoom ratio range.
613  * @return {@link #CAMERA_OK} if the method call succeeds.
614  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
615  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
616  * @since 11
617  */
618 Camera_ErrorCode OH_CaptureSession_GetZoomRatioRange(Camera_CaptureSession* session, float* minZoom, float* maxZoom);
619 
620 /**
621  * @brief Get current zoom ratio.
622  *
623  * @param session the {@link Camera_CaptureSession} instance.
624  * @param zoom the current zoom ratio.
625  * @return {@link #CAMERA_OK} if the method call succeeds.
626  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
627  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
628  * @since 11
629  */
630 Camera_ErrorCode OH_CaptureSession_GetZoomRatio(Camera_CaptureSession* session, float* zoom);
631 
632 /**
633  * @brief Set zoom ratio.
634  *
635  * @param session the {@link Camera_CaptureSession} instance.
636  * @param zoom the target zoom ratio to set.
637  * @return {@link #CAMERA_OK} if the method call succeeds.
638  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
639  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
640  * @since 11
641  */
642 Camera_ErrorCode OH_CaptureSession_SetZoomRatio(Camera_CaptureSession* session, float zoom);
643 
644 /**
645  * @brief Check whether a specified video stabilization mode is supported.
646  *
647  * @param session the {@link Camera_CaptureSession} instance.
648  * @param mode the {@link Camera_VideoStabilizationMode} to be checked.
649  * @param isSupported the result of whether video stabilization mode supported.
650  * @return {@link #CAMERA_OK} if the method call succeeds.
651  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
652  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
653  * @since 11
654  */
655 Camera_ErrorCode OH_CaptureSession_IsVideoStabilizationModeSupported(Camera_CaptureSession* session,
656     Camera_VideoStabilizationMode mode, bool* isSupported);
657 
658 /**
659  * @brief Get current video stabilization mode.
660  *
661  * @param session the {@link Camera_CaptureSession} instance.
662  * @param mode the current {@link Camera_VideoStabilizationMode}.
663  * @return {@link #CAMERA_OK} if the method call succeeds.
664  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
665  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
666  * @since 11
667  */
668 Camera_ErrorCode OH_CaptureSession_GetVideoStabilizationMode(Camera_CaptureSession* session,
669     Camera_VideoStabilizationMode* mode);
670 
671 /**
672  * @brief Set video stabilization mode.
673  *
674  * @param session the {@link Camera_CaptureSession} instance.
675  * @param mode the target {@link Camera_VideoStabilizationMode} to set.
676  * @return {@link #CAMERA_OK} if the method call succeeds.
677  *         {@link #INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
678  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
679  * @since 11
680  */
681 Camera_ErrorCode OH_CaptureSession_SetVideoStabilizationMode(Camera_CaptureSession* session,
682     Camera_VideoStabilizationMode mode);
683 
684 /**
685  * @brief Determines whether the camera input can be added into the session.
686  *
687  * @param session the {@link Camera_CaptureSession} instance.
688  * @param cameraInput the target {@link Camera_Input} to set.
689  * @param isSuccessful the result of whether the camera input can be added into the session.
690  * @return {@link #CAMERA_OK} if the method call succeeds.
691  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
692  * @since 12
693  */
694 Camera_ErrorCode OH_CaptureSession_CanAddInput(Camera_CaptureSession* session,
695     Camera_Input* cameraInput, bool* isSuccessful);
696 
697 /**
698  * @brief Determines whether the camera preview output can be added into the session.
699  *
700  * @param session the {@link Camera_CaptureSession} instance.
701  * @param cameraOutput the target {@link Camera_PreviewOutput} to set.
702  * @param isSuccessful the result of whether the camera preview output can be added into the session.
703  * @return {@link #CAMERA_OK} if the method call succeeds.
704  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
705  * @since 12
706  */
707 Camera_ErrorCode OH_CaptureSession_CanAddPreviewOutput(Camera_CaptureSession* session,
708     Camera_PreviewOutput* cameraOutput, bool* isSuccessful);
709 
710 /**
711  * @brief Determines whether the camera photo output can be added into the session.
712  *
713  * @param session the {@link Camera_CaptureSession} instance.
714  * @param cameraOutput the target {@link Camera_PhotoOutput} to set.
715  * @param isSuccessful the result of whether the camera photo output can be added into the session.
716  * @return {@link #CAMERA_OK} if the method call succeeds.
717  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
718  * @since 12
719  */
720 Camera_ErrorCode OH_CaptureSession_CanAddPhotoOutput(Camera_CaptureSession* session,
721     Camera_PhotoOutput* cameraOutput, bool* isSuccessful);
722 
723 /**
724  * @brief Determines whether the camera video output can be added into the session.
725  *
726  * @param session the {@link Camera_CaptureSession} instance.
727  * @param cameraOutput the target {@link Camera_VideoOutput} to set.
728  * @param isSuccessful the result of whether the camera video output can be added into the session.
729  * @return {@link #CAMERA_OK} if the method call succeeds.
730  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
731  * @since 12
732  */
733 Camera_ErrorCode OH_CaptureSession_CanAddVideoOutput(Camera_CaptureSession* session,
734     Camera_VideoOutput* cameraOutput, bool* isSuccessful);
735 
736 /**
737  * @brief Check the preconfig type is supported or not.
738  *
739  * @param session the {@link Camera_CaptureSession} instance.
740  * @param preconfigType The type {@link Camera_PreconfigType} to check support for.
741  * @param canPreconfig The result of whether preconfiguration supported.
742  * @return {@link #CAMERA_OK} if the method call succeeds.
743  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
744  * @since 12
745  */
746 Camera_ErrorCode OH_CaptureSession_CanPreconfig(Camera_CaptureSession* session,
747     Camera_PreconfigType preconfigType, bool* canPreconfig);
748 
749 /**
750  * @brief Check the preconfig type with ratio is supported or not.
751  *
752  * @param session the {@link Camera_CaptureSession} instance.
753  * @param preconfigType The type {@link Camera_PreconfigType} to check support for.
754  * @param preconfigRatio The ratio {@link Camera_PreconfigRatio} to check support for.
755  * @param canPreconfig The result of whether preconfiguration supported.
756  * @return {@link #CAMERA_OK} if the method call succeeds.
757  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
758  * @since 12
759  */
760 Camera_ErrorCode OH_CaptureSession_CanPreconfigWithRatio(Camera_CaptureSession* session,
761     Camera_PreconfigType preconfigType, Camera_PreconfigRatio preconfigRatio, bool* canPreconfig);
762 
763 /**
764  * @brief Set the preconfig type.
765  *
766  * @param session the {@link Camera_CaptureSession} instance.
767  * @param preconfigType The type {@link Camera_PreconfigType} to check support for.
768  * @return {@link #CAMERA_OK} if the method call succeeds.
769  *         {@link #CAMERA_SERVICE_FATAL_ERROR} if the internal preconfiguration fails.
770  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
771  * @since 12
772  */
773 Camera_ErrorCode OH_CaptureSession_Preconfig(Camera_CaptureSession* session,
774     Camera_PreconfigType preconfigType);
775 
776 /**
777  * @brief Set the preconfig type with ratio.
778  *
779  * @param session the {@link Camera_CaptureSession} instance.
780  * @param preconfigType The type {@link Camera_PreconfigType} to check support for.
781  * @param preconfigRatio The ratio {@link Camera_PreconfigRatio} to check support for.
782  * @return {@link #CAMERA_OK} if the method call succeeds.
783  *         {@link #CAMERA_SERVICE_FATAL_ERROR} if the internal preconfiguration fails.
784  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
785  * @since 12
786  */
787 Camera_ErrorCode OH_CaptureSession_PreconfigWithRatio(Camera_CaptureSession* session,
788     Camera_PreconfigType preconfigType, Camera_PreconfigRatio preconfigRatio);
789 
790 /**
791  * @brief Query the exposure value.
792  *
793  * @param session the {@link Camera_CaptureSession} instance.
794  * @param exposureValue the current exposure value.
795  * @return {@link #CAMERA_OK} if the method call succeeds.
796  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
797  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
798  * @since 12
799  */
800 Camera_ErrorCode OH_CaptureSession_GetExposureValue(Camera_CaptureSession* session, float* exposureValue);
801 
802 /**
803  * @brief Get current focal length.
804  *
805  * @param session the {@link Camera_CaptureSession} instance.
806  * @param focalLength the current focal length.
807  * @return {@link #CAMERA_OK} if the method call succeeds.
808  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
809  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
810  * @since 12
811  */
812 Camera_ErrorCode OH_CaptureSession_GetFocalLength(Camera_CaptureSession* session, float* focalLength);
813 
814 /**
815  * @brief Set target zoom ratio by smooth method.
816  *
817  * @param session the {@link Camera_CaptureSession} instance.
818  * @param targetZoom the target zoom ratio to set.
819  * @param smoothZoomMode the {@link Camera_SmoothZoomMode} instance.
820  * @return {@link #CAMERA_OK} if the method call succeeds.
821  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
822  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
823  * @since 12
824  */
825 Camera_ErrorCode OH_CaptureSession_SetSmoothZoom(Camera_CaptureSession* session,
826     float targetZoom, Camera_SmoothZoomMode smoothZoomMode);
827 
828 /**
829  * @brief Get the supported color spaces.
830  *
831  * @param session the {@link Camera_CaptureSession} instance.
832  * @param colorSpace the supported {@link OH_NativeBuffer_ColorSpace} list to be filled if the method call succeeds.
833  * @param size the size of supported color Spaces queried.
834  * @return {@link #CAMERA_OK} if the method call succeeds.
835  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
836  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
837  * @since 12
838  */
839 Camera_ErrorCode OH_CaptureSession_GetSupportedColorSpaces(Camera_CaptureSession* session,
840     OH_NativeBuffer_ColorSpace** colorSpace, uint32_t* size);
841 
842 /**
843  * @brief Delete the color spaces.
844  *
845  * @param session the {@link Camera_CaptureSession} instance.
846  * @param colorSpace the target {@link OH_NativeBuffer_ColorSpace} list to be deleted if the method call succeeds.
847  * @return {@link #CAMERA_OK} if the method call succeeds.
848  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
849  * @since 12
850  */
851 Camera_ErrorCode OH_CaptureSession_DeleteColorSpaces(Camera_CaptureSession* session,
852     OH_NativeBuffer_ColorSpace* colorSpace);
853 
854 /**
855  * @brief Get current color space.
856  *
857  * @param session the {@link Camera_CaptureSession} instance.
858  * @param colorSpace the current {@link OH_NativeBuffer_ColorSpace} .
859  * @return {@link #CAMERA_OK} if the method call succeeds.
860  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
861  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
862  * @since 12
863  */
864 Camera_ErrorCode OH_CaptureSession_GetActiveColorSpace(Camera_CaptureSession* session,
865     OH_NativeBuffer_ColorSpace* colorSpace);
866 
867 /**
868  * @brief Set current color space.
869  *
870  * @param session the {@link Camera_CaptureSession} instance.
871  * @param colorSpace the target {@link OH_NativeBuffer_ColorSpace} to set.
872  * @return {@link #CAMERA_OK} if the method call succeeds.
873  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
874  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
875  * @since 12
876  */
877 Camera_ErrorCode OH_CaptureSession_SetActiveColorSpace(Camera_CaptureSession* session,
878     OH_NativeBuffer_ColorSpace colorSpace);
879 
880 /**
881  * @brief Register device switch event callback.
882  *
883  * @param session the {@link Camera_CaptureSession} instance.
884  * @param autoDeviceSwitchStatusChange the {@link OH_CaptureSession_OnAutoDeviceSwitchStatusChange} to be registered.
885  * @return {@link #CAMERA_OK} if the method call succeeds.
886  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
887  * @since 13
888  */
889 Camera_ErrorCode OH_CaptureSession_RegisterAutoDeviceSwitchStatusCallback(Camera_CaptureSession* session,
890     OH_CaptureSession_OnAutoDeviceSwitchStatusChange autoDeviceSwitchStatusChange);
891 
892 /**
893  * @brief Unregister device switch event callback.
894  *
895  * @param session the {@link Camera_CaptureSession} instance.
896  * @param autoDeviceSwitchStatusChange the {@link OH_CaptureSession_OnAutoDeviceSwitchStatusChange} to be unregistered.
897  * @return {@link #CAMERA_OK} if the method call succeeds.
898  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
899  * @since 13
900  */
901 Camera_ErrorCode OH_CaptureSession_UnregisterAutoDeviceSwitchStatusCallback(Camera_CaptureSession* session,
902     OH_CaptureSession_OnAutoDeviceSwitchStatusChange autoDeviceSwitchStatusChange);
903 
904 /**
905  * @brief Check whether auto device switch is supported.
906  *
907  * @param session the {@link Camera_CaptureSession} instance.
908  * @param isSupported the result of whether auto device switch supported.
909  * @return {@link #CAMERA_OK} if the method call succeeds.
910  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
911  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
912  * @since 13
913  */
914 Camera_ErrorCode OH_CaptureSession_IsAutoDeviceSwitchSupported(Camera_CaptureSession* session, bool* isSupported);
915 
916 /**
917  * @brief Enable auto switch or not for the camera device.
918  *
919  * @param session the {@link Camera_CaptureSession} instance.
920  * @param enabled the flag of enable auto switch or not.
921  * @return {@link #CAMERA_OK} if the method call succeeds.
922  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
923  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
924  *         {@link #CAMERA_SERVICE_FATAL_ERROR} if camera service fatal error.
925  * @since 13
926  */
927 Camera_ErrorCode OH_CaptureSession_EnableAutoDeviceSwitch(Camera_CaptureSession* session, bool enabled);
928 
929 /**
930  * @brief Set quality prioritization.
931  *
932  * @param session the {@link Camera_CaptureSession} instance.
933  * @param qualityPrioritization the target {@link Camera_QualityPrioritization} to set.
934  * @return {@link #CAMERA_OK} if the method call succeeds.
935  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
936  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
937  * @since 14
938  */
939 Camera_ErrorCode OH_CaptureSession_SetQualityPrioritization(
940     Camera_CaptureSession* session, Camera_QualityPrioritization qualityPrioritization);
941 
942 /**
943  * @brief Subscribes to system pressure level changes.
944  *
945  * @param session Pointer to a <b>CaptureSession</b> instance.
946  * @param systemPressureLevelChange Callback used for subscription.
947  * @return Execution result of the function. <b>CAMERA_OK</b> is returned if the execution is successful;
948  * <b>CAMERA_INVALID_ARGUMENT</b> is returned if a parameter is missing or incorrect.
949  * @since 20
950  */
951 Camera_ErrorCode OH_CaptureSession_RegisterSystemPressureLevelChangeCallback(Camera_CaptureSession* session,
952     OH_CaptureSession_OnSystemPressureLevelChange systemPressureLevel);
953 
954 /**
955  * @brief Unsubscribes from system pressure level changes.
956  *
957  * @param session Pointer to a <b>CaptureSession</b> instance.
958  * @param systemPressureLevelChange Callback used for unsubscription.
959  * @return Execution result of the function. <b>CAMERA_OK</b> is returned if the execution is successful;
960  * <b>CAMERA_INVALID_ARGUMENT</b> is returned if a parameter is missing or incorrect.
961  * @since 20
962  */
963 Camera_ErrorCode OH_CaptureSession_UnregisterSystemPressureLevelChangeCallback(Camera_CaptureSession* session,
964     OH_CaptureSession_OnSystemPressureLevelChange systemPressureLevel);
965 
966 /**
967  * @brief Check whether macro ability is supported.
968  *
969  * @param session the {@link Camera_CaptureSession} instance.
970  * @param isSupported the result of whether macro ability supported.
971  * @return {@link #CAMERA_OK} if the method call succeeds.
972  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
973  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
974  * @since 17
975  */
976 Camera_ErrorCode OH_CaptureSession_IsMacroSupported(Camera_CaptureSession* session, bool* isSupported);
977 
978 /**
979  * @brief Enable macro ability or not for the camera device.
980  *
981  * @param session the {@link Camera_CaptureSession} instance.
982  * @param enabled the flag of enable macro ability or not.
983  * @return {@link #CAMERA_OK} if the method call succeeds.
984  *         {@link #CAMERA_INVALID_ARGUMENT} if parameter missing or parameter type incorrect.
985  *         {@link #CAMERA_SESSION_NOT_CONFIG} if the capture session not config.
986  *         {@link #CAMERA_OPERATION_NOT_ALLOWED} if operation not allowed.
987  * @since 17
988  */
989 Camera_ErrorCode OH_CaptureSession_EnableMacro(Camera_CaptureSession* session, bool enabled);
990 
991 Camera_ErrorCode OH_CaptureSession_IsWhiteBalanceModeSupported(
992     Camera_CaptureSession* session, Camera_WhiteBalanceMode whiteBalanceMode, bool* isSupported);
993 
994 Camera_ErrorCode OH_CaptureSession_GetWhiteBalanceMode(Camera_CaptureSession* session,
995     Camera_WhiteBalanceMode* whiteBalanceMode);
996 
997 Camera_ErrorCode OH_CaptureSession_GetWhiteBalanceRange(Camera_CaptureSession* session, int32_t *minColorTemperature,
998     int32_t *maxColorTemperature);
999 
1000 Camera_ErrorCode OH_CaptureSession_GetWhiteBalance(Camera_CaptureSession* session, int32_t *colorTemperature);
1001 
1002 Camera_ErrorCode OH_CaptureSession_SetWhiteBalance(Camera_CaptureSession* session, int32_t colorTemperature);
1003 
1004 Camera_ErrorCode OH_CaptureSession_SetWhiteBalanceMode(Camera_CaptureSession* session,
1005     Camera_WhiteBalanceMode whiteBalanceMode);
1006 
1007 Camera_ErrorCode OH_CaptureSession_IsControlCenterSupported(Camera_CaptureSession* session, bool* isSupported);
1008 
1009 Camera_ErrorCode OH_CaptureSession_GetSupportedEffectTypes(
1010     Camera_CaptureSession* session, Camera_ControlCenterEffectType** types, uint32_t* size);
1011 
1012 Camera_ErrorCode OH_CaptureSession_DeleteSupportedEffectTypes(Camera_CaptureSession* session,
1013     Camera_ControlCenterEffectType* types, uint32_t size);
1014 
1015 Camera_ErrorCode OH_CaptureSession_EnableControlCenter(Camera_CaptureSession* session, bool enabled);
1016 
1017 typedef void (*OH_CaptureSession_OnControlCenterEffectStatusChange)(Camera_CaptureSession* session,
1018     Camera_ControlCenterStatusInfo* controlCenterStatusInfo);
1019 
1020 Camera_ErrorCode OH_CaptureSession_RegisterControlCenterEffectStatusChangeCallback(Camera_CaptureSession* session,
1021     OH_CaptureSession_OnControlCenterEffectStatusChange controlCenterEffectStatusChange);
1022 
1023 Camera_ErrorCode OH_CaptureSession_UnregisterControlCenterEffectStatusChangeCallback(Camera_CaptureSession* session,
1024     OH_CaptureSession_OnControlCenterEffectStatusChange controlCenterEffectStatusChange);
1025 
1026 typedef void (*OH_CaptureSession_OnMacroStatusChange)(Camera_CaptureSession* session, bool isMacroActive);
1027 
1028 Camera_ErrorCode OH_CaptureSession_RegisterMacroStatusChangeCallback(
1029     Camera_CaptureSession* session, OH_CaptureSession_OnMacroStatusChange macroStatusChange);
1030 
1031 Camera_ErrorCode OH_CaptureSession_UnregisterMacroStatusChangeCallback(
1032     Camera_CaptureSession* session, OH_CaptureSession_OnMacroStatusChange macroStatusChange);
1033 
1034 
1035 #ifdef __cplusplus
1036 }
1037 #endif
1038 
1039 #endif // NATIVE_INCLUDE_CAMERA_CAMERA_SESSION_H
1040 /** @} */