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 "audio_capturer.h" 17#include "media_log.h" 18 19namespace OHOS { 20namespace Audio { 21AudioCapturer::AudioCapturerClient::AudioCapturerClient() 22 : impl_(new(std::nothrow) AudioCapturerImpl()) 23{ 24} 25 26AudioCapturer::AudioCapturerClient::~AudioCapturerClient() 27{ 28 if (impl_ != nullptr) { 29 impl_.reset(); 30 impl_ = nullptr; 31 } 32 MEDIA_DEBUG_LOG("ctor"); 33} 34 35bool AudioCapturer::AudioCapturerClient::GetMinFrameCount(int32_t sampleRate, int32_t channelCount, 36 AudioCodecFormat audioFormat, size_t &frameCount) 37{ 38 return AudioCapturerImpl::GetMinFrameCount(sampleRate, channelCount, audioFormat, frameCount); 39} 40 41uint64_t AudioCapturer::AudioCapturerClient::GetFrameCount() 42{ 43 if (impl_ == nullptr) { 44 MEDIA_ERR_LOG("impl_ null"); 45 return 0; 46 } 47 return impl_->GetFrameCount(); 48} 49 50State AudioCapturer::AudioCapturerClient::GetStatus() 51{ 52 if (impl_ == nullptr) { 53 MEDIA_ERR_LOG("impl_ null"); 54 return INITIALIZED; 55 } 56 return impl_->GetStatus(); 57} 58 59bool AudioCapturer::AudioCapturerClient::GetAudioTime(Timestamp ×tamp, Timestamp::Timebase base) 60{ 61 if (impl_ == nullptr) { 62 MEDIA_ERR_LOG("impl_ null"); 63 return false; 64 } 65 return impl_->GetTimestamp(timestamp, base); 66} 67 68int32_t AudioCapturer::AudioCapturerClient::SetCapturerInfo(const AudioCapturerInfo info) 69{ 70 if (impl_ == nullptr) { 71 MEDIA_ERR_LOG("impl_ null"); 72 return -1; 73 } 74 return impl_->SetCapturerInfo(info); 75} 76 77int32_t AudioCapturer::AudioCapturerClient::GetCapturerInfo(AudioCapturerInfo &info) 78{ 79 if (impl_ == nullptr) { 80 MEDIA_ERR_LOG("impl_ null"); 81 return -1; 82 } 83 return impl_->GetCapturerInfo(info); 84} 85 86bool AudioCapturer::AudioCapturerClient::Start() 87{ 88 if (impl_ == nullptr) { 89 MEDIA_ERR_LOG("impl_ null"); 90 return false; 91 } 92 return impl_->Record(); 93} 94 95bool AudioCapturer::AudioCapturerClient::Stop() 96{ 97 if (impl_ == nullptr) { 98 MEDIA_ERR_LOG("impl_ null"); 99 return false; 100 } 101 return impl_->Stop(); 102} 103 104bool AudioCapturer::AudioCapturerClient::Release() 105{ 106 if (impl_ == nullptr) { 107 MEDIA_ERR_LOG("impl_ null"); 108 return false; 109 } 110 return impl_->Release(); 111} 112 113int32_t AudioCapturer::AudioCapturerClient::Read(uint8_t *buffer, size_t userSize, bool isBlockingRead) 114{ 115 if (impl_ == nullptr) { 116 MEDIA_ERR_LOG("impl_ null"); 117 return -1; 118 } 119 return impl_->Read(buffer, userSize, isBlockingRead); 120} 121} // namespace Audio 122} // namespace OHOS 123