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 AVMUXER_SAMPLE
17 #define AVMUXER_SAMPLE
18 #include <iostream>
19 #include "avformat_mock.h"
20 #include "avmuxer_mock.h"
21 
22 namespace OHOS {
23 namespace MediaAVCodec {
24 class AVMuxerSample : public NoCopyable {
25 public:
26     explicit AVMuxerSample();
27     virtual ~AVMuxerSample();
28     bool CreateMuxer(int32_t fd, const OH_AVOutputFormat format);
29     int32_t Destroy();
30     int32_t Start();
31     int32_t Stop();
32     int32_t AddTrack(int32_t &trackIndex, std::shared_ptr<FormatMock> &trackFormat);
33     int32_t WriteSample(uint32_t trackIndex, const uint8_t *sample, const OH_AVCodecBufferAttr &info);
34     int32_t WriteSampleBuffer(uint32_t trackIndex, const OH_AVBuffer *sample);
35     int32_t SetRotation(int32_t rotation);
36     int32_t SetTimedMetadata();
37 private:
38     std::shared_ptr<AVMuxerMock> muxer_;
39 };
40 }  // namespace MediaAVCodec
41 }  // namespace OHOS
42 #endif // AVMUXER_SAMPLE