1 /* 2 * Copyright (c) 2021 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 * @file istream_operator_callback.h 18 * 19 * @brief Declares callbacks related to {@link IStreamOperator}. The caller needs to implement these callbacks. 20 * 21 * @since 1.0 22 * @version 1.0 23 */ 24 25 #ifndef HDI_STREAM_OPERATOR_CALLBACK_SERVER_H 26 #define HDI_STREAM_OPERATOR_CALLBACK_SERVER_H 27 28 #include <list> 29 #include <map> 30 #include <vector> 31 #include <hdf_log.h> 32 #include <iremote_broker.h> 33 #include "types.h" 34 35 namespace OHOS::Camera { 36 enum { 37 CMD_STREAM_OPERATOR_CALLBACK_ON_CAPTURE_STARTED = 0, 38 CMD_STREAM_OPERATOR_CALLBACK_ON_CAPTURE_ENDED, 39 CMD_STREAM_OPERATOR_CALLBACK_ON_CAPTURE_ERROR, 40 CMD_STREAM_OPERATOR_CALLBACK_ON_FRAME_SHUTTER, 41 }; 42 43 class IStreamOperatorCallback : public IRemoteBroker { 44 public: 45 DECLARE_INTERFACE_DESCRIPTOR(u"HDI.Camera.V1_0.StreamOperatorCallback"); ~IStreamOperatorCallback()46 virtual ~IStreamOperatorCallback() {} 47 48 public: 49 /** 50 * @brief Called when the capture starts. 51 * 52 * @param captureId Indicates the ID of the capture request corresponding to the callback. 53 * @param streamIds Indicates the IDs of the streams corresponding to the callback. 54 * 55 * @since 1.0 56 * @version 1.0 57 */ 58 virtual void OnCaptureStarted(int32_t captureId, const std::vector<int32_t> &streamIds) = 0; 59 60 /** 61 * @brief Called when the capture ends. 62 * 63 * @param captureId Indicates the ID of the capture request corresponding to the callback. 64 * @param infos Indicates information related to the capture when it ends. 65 * 66 * @since 1.0 67 * @version 1.0 68 */ 69 virtual void OnCaptureEnded(int32_t captureId, 70 const std::vector<std::shared_ptr<CaptureEndedInfo>> &infos) = 0; 71 72 /** 73 * @brief Called when an error occurs during the capture. 74 * 75 * @param captureId Indicates the ID of the capture request corresponding to the callback. 76 * @param infos Indicates a list of capture error messages. 77 * 78 * @since 1.0 79 * @version 1.0 80 */ 81 virtual void OnCaptureError(int32_t captureId, 82 const std::vector<std::shared_ptr<CaptureErrorInfo>> &infos) = 0; 83 84 /** 85 * @brief Called when a frame is captured. 86 * 87 * This callback is enabled by using <b>enableShutterCallback_</b> in the {@link CaptureInfo} parameter of {@link Capture}. 88 * When <b>enableShutterCallback_</b> is set to <b>true</b>, this callback is triggered each time a frame is captured. 89 * 90 * @param captureId Indicates the ID of the capture request corresponding to the callback. 91 * @param streamIds Indicates the IDs of the streams corresponding to the callback. 92 * @param timestamp Indicates the timestamp when the callback is invoked. 93 * 94 * @since 1.0 95 * @version 1.0 96 */ 97 virtual void OnFrameShutter(int32_t captureId, 98 const std::vector<int32_t> &streamIds, uint64_t timestamp) = 0; 99 }; 100 } 101 #endif // HDI_STREAM_OPERATOR_CALLBACK_SERVER_H 102