• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 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 #ifndef CODEC_AUDIO_CODEC_H
17 #define CODEC_AUDIO_CODEC_H
18 
19 #include "audio_base_codec.h"
20 #include "media_codec.h"
21 #include "avcodec_common.h"
22 #include "codecbase.h"
23 #include "nocopyable.h"
24 
25 namespace OHOS {
26 namespace MediaAVCodec {
27 class AudioCodec : public CodecBase {
28 public:
AudioCodec()29     explicit AudioCodec()
30     {
31         mediaCodec_ = std::make_shared<Media::MediaCodec>();
32     }
CreateCodecByName(const std::string & name)33     int32_t CreateCodecByName(const std::string &name) override
34     {
35         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Init(name)));
36     }
37 
Configure(const std::shared_ptr<Media::Meta> & meta)38     int32_t Configure(const std::shared_ptr<Media::Meta> &meta) override
39     {
40         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Configure(meta)));
41     }
SetOutputBufferQueue(const sptr<Media::AVBufferQueueProducer> & bufferQueueProducer)42     int32_t SetOutputBufferQueue(const sptr<Media::AVBufferQueueProducer> &bufferQueueProducer) override
43     {
44         return StatusToAVCodecServiceErrCode(static_cast<Media::Status>
45             (mediaCodec_->SetOutputBufferQueue(bufferQueueProducer)));
46     }
SetCodecCallback(const std::shared_ptr<Media::CodecCallback> & codecCallback)47     int32_t SetCodecCallback(const std::shared_ptr<Media::CodecCallback> &codecCallback)
48     {
49         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->SetCodecCallback(codecCallback)));
50     }
51 
Prepare()52     int32_t Prepare() override
53     {
54         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Prepare()));
55     }
56 
GetInputBufferQueue()57     sptr<Media::AVBufferQueueProducer> GetInputBufferQueue() override
58     {
59         return mediaCodec_->GetInputBufferQueue();
60     }
61 
Start()62     int32_t Start() override
63     {
64         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Start()));
65     }
66 
Stop()67     int32_t Stop() override
68     {
69         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Stop()));
70     }
71 
Flush()72     int32_t Flush() override
73     {
74         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Flush()));
75     }
76 
Reset()77     int32_t Reset() override
78     {
79         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Reset()));
80     }
81 
Release()82     int32_t Release() override
83     {
84         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->Release()));
85     }
86 
NotifyEos()87     int32_t NotifyEos() override
88     {
89         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->NotifyEos()));
90     }
91 
SetParameter(const std::shared_ptr<Media::Meta> & parameter)92     int32_t SetParameter(const std::shared_ptr<Media::Meta> &parameter) override
93     {
94         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->SetParameter(parameter)));
95     }
96 
GetOutputFormat(std::shared_ptr<Media::Meta> & parameter)97     int32_t GetOutputFormat(std::shared_ptr<Media::Meta> &parameter) override
98     {
99         return StatusToAVCodecServiceErrCode(static_cast<Media::Status> (mediaCodec_->GetOutputFormat(parameter)));
100     }
101 
Configure(const MediaAVCodec::Format & format)102     int32_t Configure(const MediaAVCodec::Format &format) override
103     {
104         (void)format;
105         return 0;
106     }
SetParameter(const MediaAVCodec::Format & format)107     int32_t SetParameter(const MediaAVCodec::Format &format) override
108     {
109         (void)format;
110         return 0;
111     }
112 
GetOutputFormat(MediaAVCodec::Format & format)113     int32_t GetOutputFormat(MediaAVCodec::Format &format) override
114     {
115         (void)format;
116         return 0;
117     }
118 
ReleaseOutputBuffer(uint32_t index)119     int32_t ReleaseOutputBuffer(uint32_t index) override
120     {
121         (void)index;
122         return 0;
123     }
124 
125 private:
126     std::shared_ptr<Media::MediaCodec> mediaCodec_;
127 };
128 } // namespace MediaAVCodec
129 } // namespace OHOS
130 #endif