1da853ecaSopenharmony_ci/* 2da853ecaSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 3da853ecaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4da853ecaSopenharmony_ci * you may not use this file except in compliance with the License. 5da853ecaSopenharmony_ci * You may obtain a copy of the License at 6da853ecaSopenharmony_ci * 7da853ecaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8da853ecaSopenharmony_ci * 9da853ecaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10da853ecaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11da853ecaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12da853ecaSopenharmony_ci * See the License for the specific language governing permissions and 13da853ecaSopenharmony_ci * limitations under the License. 14da853ecaSopenharmony_ci */ 15da853ecaSopenharmony_ci#ifndef CODECBASE_H 16da853ecaSopenharmony_ci#define CODECBASE_H 17da853ecaSopenharmony_ci 18da853ecaSopenharmony_ci#include <string> 19da853ecaSopenharmony_ci#include "avcodec_common.h" 20da853ecaSopenharmony_ci#include "buffer/avsharedmemorybase.h" 21da853ecaSopenharmony_ci#include "surface.h" 22da853ecaSopenharmony_ci#include "buffer/avbuffer.h" 23da853ecaSopenharmony_ci#include "buffer/avbuffer_queue.h" 24da853ecaSopenharmony_ci#include "buffer/avbuffer_queue_consumer.h" 25da853ecaSopenharmony_ci#include "buffer/avbuffer_queue_define.h" 26da853ecaSopenharmony_ci#include "buffer/avbuffer_queue_producer.h" 27da853ecaSopenharmony_ci#include "drm_i_keysession_service.h" 28da853ecaSopenharmony_ci 29da853ecaSopenharmony_cinamespace OHOS { 30da853ecaSopenharmony_cinamespace MediaAVCodec { 31da853ecaSopenharmony_ciclass CodecBase { 32da853ecaSopenharmony_cipublic: 33da853ecaSopenharmony_ci CodecBase() = default; 34da853ecaSopenharmony_ci virtual ~CodecBase() = default; 35da853ecaSopenharmony_ci virtual int32_t SetCallback(const std::shared_ptr<AVCodecCallback> &callback); 36da853ecaSopenharmony_ci virtual int32_t SetCallback(const std::shared_ptr<MediaCodecCallback> &callback); 37da853ecaSopenharmony_ci virtual int32_t Configure(const Format &format) = 0; 38da853ecaSopenharmony_ci virtual int32_t Start() = 0; 39da853ecaSopenharmony_ci virtual int32_t Stop() = 0; 40da853ecaSopenharmony_ci virtual int32_t Flush() = 0; 41da853ecaSopenharmony_ci virtual int32_t Reset() = 0; 42da853ecaSopenharmony_ci virtual int32_t Release() = 0; 43da853ecaSopenharmony_ci virtual int32_t SetParameter(const Format& format) = 0; 44da853ecaSopenharmony_ci virtual int32_t GetOutputFormat(Format &format) = 0; 45da853ecaSopenharmony_ci virtual int32_t QueueInputBuffer(uint32_t index, const AVCodecBufferInfo &info, AVCodecBufferFlag flag); 46da853ecaSopenharmony_ci virtual int32_t QueueInputBuffer(uint32_t index); 47da853ecaSopenharmony_ci virtual int32_t ReleaseOutputBuffer(uint32_t index) = 0; 48da853ecaSopenharmony_ci 49da853ecaSopenharmony_ci virtual int32_t NotifyEos(); 50da853ecaSopenharmony_ci virtual sptr<Surface> CreateInputSurface(); 51da853ecaSopenharmony_ci virtual int32_t SetInputSurface(sptr<Surface> surface); 52da853ecaSopenharmony_ci virtual int32_t SetOutputSurface(sptr<Surface> surface); 53da853ecaSopenharmony_ci virtual int32_t RenderOutputBuffer(uint32_t index); 54da853ecaSopenharmony_ci virtual int32_t SignalRequestIDRFrame(); 55da853ecaSopenharmony_ci virtual int32_t GetInputFormat(Format& format); 56da853ecaSopenharmony_ci virtual int32_t SetCustomBuffer(std::shared_ptr<AVBuffer> buffer); 57da853ecaSopenharmony_ci 58da853ecaSopenharmony_ci virtual std::string GetHidumperInfo() 59da853ecaSopenharmony_ci { 60da853ecaSopenharmony_ci return ""; 61da853ecaSopenharmony_ci } 62da853ecaSopenharmony_ci 63da853ecaSopenharmony_ci /* API11 audio codec interface */ 64da853ecaSopenharmony_ci virtual int32_t CreateCodecByName(const std::string &name) 65da853ecaSopenharmony_ci { 66da853ecaSopenharmony_ci (void)name; 67da853ecaSopenharmony_ci return AVCODEC_ERROR_EXTEND_START; 68da853ecaSopenharmony_ci } 69da853ecaSopenharmony_ci 70da853ecaSopenharmony_ci virtual int32_t Init(Media::Meta &callerInfo) 71da853ecaSopenharmony_ci { 72da853ecaSopenharmony_ci (void)callerInfo; 73da853ecaSopenharmony_ci return 0; 74da853ecaSopenharmony_ci } 75da853ecaSopenharmony_ci 76da853ecaSopenharmony_ci virtual int32_t Configure(const std::shared_ptr<Media::Meta> &meta) 77da853ecaSopenharmony_ci { 78da853ecaSopenharmony_ci (void)meta; 79da853ecaSopenharmony_ci return AVCODEC_ERROR_EXTEND_START; 80da853ecaSopenharmony_ci } 81da853ecaSopenharmony_ci 82da853ecaSopenharmony_ci virtual int32_t SetParameter(const std::shared_ptr<Media::Meta> ¶meter) 83da853ecaSopenharmony_ci { 84da853ecaSopenharmony_ci (void)parameter; 85da853ecaSopenharmony_ci return AVCODEC_ERROR_EXTEND_START; 86da853ecaSopenharmony_ci } 87da853ecaSopenharmony_ci 88da853ecaSopenharmony_ci virtual int32_t GetOutputFormat(std::shared_ptr<Media::Meta> ¶meter) 89da853ecaSopenharmony_ci { 90da853ecaSopenharmony_ci (void)parameter; 91da853ecaSopenharmony_ci return AVCODEC_ERROR_EXTEND_START; 92da853ecaSopenharmony_ci } 93da853ecaSopenharmony_ci 94da853ecaSopenharmony_ci virtual int32_t SetOutputBufferQueue(const sptr<Media::AVBufferQueueProducer> &bufferQueueProducer) 95da853ecaSopenharmony_ci { 96da853ecaSopenharmony_ci (void)bufferQueueProducer; 97da853ecaSopenharmony_ci return AVCODEC_ERROR_EXTEND_START; 98da853ecaSopenharmony_ci } 99da853ecaSopenharmony_ci 100da853ecaSopenharmony_ci virtual int32_t Prepare() 101da853ecaSopenharmony_ci { 102da853ecaSopenharmony_ci return AVCODEC_ERROR_EXTEND_START; 103da853ecaSopenharmony_ci } 104da853ecaSopenharmony_ci 105da853ecaSopenharmony_ci virtual sptr<Media::AVBufferQueueProducer> GetInputBufferQueue() 106da853ecaSopenharmony_ci { 107da853ecaSopenharmony_ci return nullptr; 108da853ecaSopenharmony_ci } 109da853ecaSopenharmony_ci 110da853ecaSopenharmony_ci virtual void ProcessInputBuffer() 111da853ecaSopenharmony_ci { 112da853ecaSopenharmony_ci return; 113da853ecaSopenharmony_ci } 114da853ecaSopenharmony_ci 115da853ecaSopenharmony_ci virtual int32_t SetAudioDecryptionConfig(const sptr<DrmStandard::IMediaKeySessionService> &keySession, 116da853ecaSopenharmony_ci const bool svpFlag) 117da853ecaSopenharmony_ci { 118da853ecaSopenharmony_ci (void)keySession; 119da853ecaSopenharmony_ci (void)svpFlag; 120da853ecaSopenharmony_ci return 0; 121da853ecaSopenharmony_ci } 122da853ecaSopenharmony_ci}; 123da853ecaSopenharmony_ci} // namespace MediaAVCodec 124da853ecaSopenharmony_ci} // namespace OHOS 125da853ecaSopenharmony_ci#endif // CODECBASE_H