1 /*
2  * Copyright (c) 2021 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 DECODER_WRAPPER_H
17 #define DECODER_WRAPPER_H
18 
19 #include "coder_wrapper.h"
20 
21 namespace OHOS {
22 namespace AI {
23 class DecoderWrapper : public CoderWrapper {
24 public:
25     DecoderWrapper();
26     ~DecoderWrapper();
27 
28     /* Initializes decoder */
29     int32_t Initialize(const CoderConfig &input) override;
30 
31     /* Starts decoder */
32     int32_t Start() override;
33 
34     /* Stops decoder */
35     int32_t Stop() override;
36 
37     /* Pushes source CoderStream into coder for decoding */
38     int32_t PushSourceStream(const CoderStream &stream) override;
39 
40     /* Pulls decoded result CoderStream from coder */
41     int32_t PullCodedStream(CoderStream &stream) override;
42 
43 protected:
44     int32_t InitCodecAttr(const CoderConfig &input) override;
45 
46 private:
47     CODEC_HANDLETYPE codeHandle_;
48     CodecType decodeType_ = CODEC_AAC_TO_PCM;
49     AvCodecMime codecMime_ = MEDIA_MIMETYPE_AUDIO_AAC;
50     uint32_t bufSize_ = AUDIO_AUDIO_POINT_NUM;
51     bool started_ = false;
52 };
53 } // namespace AI
54 } // namespace OHOS
55 #endif // DECODER_WRAPPER_H