1 /* 2 * Copyright (c) 2025 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 I_AUDIO_CAPTURE_SOURCE_H 17 #define I_AUDIO_CAPTURE_SOURCE_H 18 19 #include <iostream> 20 #include <string> 21 #include "audio_info.h" 22 #include "audio_errors.h" 23 #include "common/hdi_adapter_info.h" 24 #include "common/hdi_adapter_type.h" 25 26 #define SUCCESS_RET { return SUCCESS; } 27 #define NOT_SUPPORT_RET { return ERR_NOT_SUPPORTED; } 28 29 namespace OHOS { 30 namespace AudioStandard { 31 class IAudioSourceCallback { 32 public: 33 virtual ~IAudioSourceCallback() = default; OnCaptureSourceParamChange(const std::string & networkId,const AudioParamKey key,const std::string & condition,const std::string & value)34 virtual void OnCaptureSourceParamChange(const std::string &networkId, const AudioParamKey key, 35 const std::string &condition, const std::string &value) {} OnCaptureState(bool isActive)36 virtual void OnCaptureState(bool isActive) {} OnWakeupClose(void)37 virtual void OnWakeupClose(void) {} 38 }; 39 40 class IAudioCaptureSource { 41 public: 42 virtual ~IAudioCaptureSource() = default; 43 44 virtual int32_t Init(const IAudioSourceAttr &attr) = 0; 45 virtual void DeInit(void) = 0; 46 virtual bool IsInited(void) = 0; 47 48 virtual int32_t Start(void) = 0; 49 virtual int32_t Stop(void) = 0; 50 virtual int32_t Resume(void) = 0; 51 virtual int32_t Pause(void) = 0; 52 virtual int32_t Flush(void) = 0; 53 virtual int32_t Reset(void) = 0; 54 virtual int32_t CaptureFrame(char *frame, uint64_t requestBytes, uint64_t &replyBytes) = 0; 55 virtual int32_t CaptureFrameWithEc(FrameDesc *fdesc, uint64_t &replyBytes, FrameDesc *fdescEc, 56 uint64_t &replyBytesEc) = 0; 57 58 virtual std::string GetAudioParameter(const AudioParamKey key, const std::string &condition) = 0; 59 60 virtual int32_t SetVolume(float left, float right) = 0; 61 virtual int32_t GetVolume(float &left, float &right) = 0; 62 virtual int32_t SetMute(bool isMute) = 0; 63 virtual int32_t GetMute(bool &isMute) = 0; 64 65 virtual uint64_t GetTransactionId(void) = 0; 66 virtual int32_t GetPresentationPosition(uint64_t &frames, int64_t &timeSec, int64_t &timeNanoSec) = 0; 67 virtual float GetMaxAmplitude(void) = 0; 68 69 virtual int32_t SetAudioScene(AudioScene audioScene, bool scoExcludeFlag = false) = 0; 70 71 virtual int32_t UpdateActiveDevice(DeviceType inputDevice) = 0; UpdateSourceType(SourceType sourceType)72 virtual int32_t UpdateSourceType(SourceType sourceType) SUCCESS_RET 73 virtual void RegistCallback(uint32_t type, IAudioSourceCallback *callback) {} RegistCallback(uint32_t type,std::shared_ptr<IAudioSourceCallback> callback)74 virtual void RegistCallback(uint32_t type, std::shared_ptr<IAudioSourceCallback> callback) {} 75 76 virtual int32_t UpdateAppsUid(const int32_t appsUid[PA_MAX_OUTPUTS_PER_SOURCE], const size_t size) = 0; 77 virtual int32_t UpdateAppsUid(const std::vector<int32_t> &appsUid) = 0; 78 SetAddress(const std::string & address)79 virtual void SetAddress(const std::string &address) {} SetInvalidState(void)80 virtual void SetInvalidState(void) {} 81 DumpInfo(std::string & dumpString)82 virtual void DumpInfo(std::string &dumpString) {} 83 SetDmDeviceType(uint16_t dmDeviceType,DeviceType deviceType)84 virtual void SetDmDeviceType(uint16_t dmDeviceType, DeviceType deviceType) {} 85 virtual bool IsCaptureInvalid(void) NOT_SUPPORT_RET 86 87 // mmap extend function 88 virtual int32_t GetMmapBufferInfo(int &fd, uint32_t &totalSizeInframe, uint32_t &spanSizeInframe, 89 uint32_t &byteSizePerFrame, uint32_t &syncInfoSize) NOT_SUPPORT_RET 90 virtual int32_t GetMmapHandlePosition(uint64_t &frames, int64_t &timeSec, int64_t &timeNanoSec) NOT_SUPPORT_RET 91 }; 92 93 } // namespace AudioStandard 94 } // namespace OHOS 95 96 #endif // I_AUDIO_CAPTURE_SOURCE_H 97