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 &timestamp, 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