1/* 2 * Copyright (c) 2022 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#ifndef OHOS_HDI_CAMERA_V1_0_ISTREAMOPERATOR_H 17#define OHOS_HDI_CAMERA_V1_0_ISTREAMOPERATOR_H 18 19#include <stdint.h> 20#include <vector> 21#include <hdf_base.h> 22#include <hdi_base.h> 23#include "buffer_producer_sequenceable.h" 24#include "camera/v1_0/ioffline_stream_operator.h" 25#include "camera/v1_0/istream_operator_callback.h" 26#include "camera/v1_0/types.h" 27 28#ifndef HDI_BUFF_MAX_SIZE 29#define HDI_BUFF_MAX_SIZE (1024 * 200) 30#endif 31 32#ifndef HDI_CHECK_VALUE_RETURN 33#define HDI_CHECK_VALUE_RETURN(lv, compare, rv, ret) do { \ 34 if ((lv) compare (rv)) { \ 35 return ret; \ 36 } \ 37} while (false) 38#endif 39 40#ifndef HDI_CHECK_VALUE_RET_GOTO 41#define HDI_CHECK_VALUE_RET_GOTO(lv, compare, rv, ret, value, table) do { \ 42 if ((lv) compare (rv)) { \ 43 ret = value; \ 44 goto table; \ 45 } \ 46} while (false) 47#endif 48 49namespace OHOS { 50namespace HDI { 51namespace Camera { 52namespace V1_0 { 53using namespace OHOS; 54using namespace OHOS::HDI; 55 56enum { 57 CMD_STREAM_OPERATOR_GET_VERSION = 0, 58 CMD_STREAM_OPERATOR_IS_STREAMS_SUPPORTED = 1, 59 CMD_STREAM_OPERATOR_CREATE_STREAMS = 2, 60 CMD_STREAM_OPERATOR_RELEASE_STREAMS = 3, 61 CMD_STREAM_OPERATOR_COMMIT_STREAMS = 4, 62 CMD_STREAM_OPERATOR_GET_STREAM_ATTRIBUTES = 5, 63 CMD_STREAM_OPERATOR_ATTACH_BUFFER_QUEUE = 6, 64 CMD_STREAM_OPERATOR_DETACH_BUFFER_QUEUE = 7, 65 CMD_STREAM_OPERATOR_CAPTURE = 8, 66 CMD_STREAM_OPERATOR_CANCEL_CAPTURE = 9, 67 CMD_STREAM_OPERATOR_CHANGE_TO_OFFLINE_STREAM = 10, 68}; 69 70class IStreamOperator : public HdiBase { 71public: 72 DECLARE_HDI_DESCRIPTOR(u"ohos.hdi.camera.v1_0.IStreamOperator"); 73 74 virtual ~IStreamOperator() = default; 75 76 virtual int32_t IsStreamsSupported(OHOS::HDI::Camera::V1_0::OperationMode mode, 77 const std::vector<uint8_t>& modeSetting, const std::vector<OHOS::HDI::Camera::V1_0::StreamInfo>& infos, OHOS::HDI::Camera::V1_0::StreamSupportType& type) = 0; 78 79 virtual int32_t CreateStreams(const std::vector<OHOS::HDI::Camera::V1_0::StreamInfo>& streamInfos) = 0; 80 81 virtual int32_t ReleaseStreams(const std::vector<int32_t>& streamIds) = 0; 82 83 virtual int32_t CommitStreams(OHOS::HDI::Camera::V1_0::OperationMode mode, 84 const std::vector<uint8_t>& modeSetting) = 0; 85 86 virtual int32_t GetStreamAttributes(std::vector<OHOS::HDI::Camera::V1_0::StreamAttribute>& attributes) = 0; 87 88 virtual int32_t AttachBufferQueue(int32_t streamId, 89 const sptr<OHOS::HDI::Camera::V1_0::BufferProducerSequenceable>& bufferProducer) = 0; 90 91 virtual int32_t DetachBufferQueue(int32_t streamId) = 0; 92 93 virtual int32_t Capture(int32_t captureId, const OHOS::HDI::Camera::V1_0::CaptureInfo& info, bool isStreaming) = 0; 94 95 virtual int32_t CancelCapture(int32_t captureId) = 0; 96 97 virtual int32_t ChangeToOfflineStream(const std::vector<int32_t>& streamIds, 98 const sptr<OHOS::HDI::Camera::V1_0::IStreamOperatorCallback>& callbackObj, sptr<OHOS::HDI::Camera::V1_0::IOfflineStreamOperator>& offlineOperator) = 0; 99 100 virtual int32_t GetVersion(uint32_t& majorVer, uint32_t& minorVer) 101 { 102 majorVer = 1; 103 minorVer = 0; 104 return HDF_SUCCESS; 105 } 106 107 virtual bool IsProxy() 108 { 109 return false; 110 } 111 112 virtual const std::u16string GetDesc() 113 { 114 return metaDescriptor_; 115 } 116}; 117} // V1_0 118} // Camera 119} // HDI 120} // OHOS 121 122#endif // OHOS_HDI_CAMERA_V1_0_ISTREAMOPERATOR_H 123 124