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> ¶meter) 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> ¶meter) 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