• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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 AVBUFFER_H
17 #define AVBUFFER_H
18 
19 #include <gmock/gmock.h>
20 #include <gtest/gtest.h>
21 #include <memory>
22 #include <string>
23 #include "buffer/avallocator.h"
24 #include "common/status.h"
25 
26 namespace OHOS {
27 namespace Media {
28 class AVMemory;
29 class AVBuffer {
30 public:
31     AVBuffer() = default;
32     virtual ~AVBuffer() = default;
33     MOCK_METHOD(const AVBufferConfig&, GetConfig, (), ());
34     MOCK_METHOD(uint64_t, GetUniqueId, (), ());
35     MOCK_METHOD(bool, WriteToMessageParcel, (MessageParcel& parcel), ());
36     MOCK_METHOD(bool, ReadFromMessageParcel, (MessageParcel& parcel, bool isSurfaceBuffer), ());
CreateAVBuffer(const AVBufferConfig & config)37     static std::shared_ptr<AVBuffer> CreateAVBuffer(const AVBufferConfig &config)
38     {
39         return std::make_shared<AVBuffer>();
40     }
41     static std::shared_ptr<AVBuffer> CreateAVBuffer(std::shared_ptr<AVAllocator> allocator, int32_t capacity = 0,
42                                                     int32_t align = 0)
43     {
44         return std::make_shared<AVBuffer>();
45     }
46     static std::shared_ptr<AVBuffer> CreateAVBuffer(uint8_t *ptr, int32_t capacity, int32_t size = 0)
47     {
48         return std::make_shared<AVBuffer>();
49     }
CreateAVBuffer(sptr<SurfaceBuffer> surfaceBuffer)50     static std::shared_ptr<AVBuffer> CreateAVBuffer(sptr<SurfaceBuffer> surfaceBuffer)
51     {
52         return std::make_shared<AVBuffer>();
53     }
Clone(std::shared_ptr<AVBuffer> & srcBuffer,std::shared_ptr<AVBuffer> & dstBuffer)54     static Status Clone(std::shared_ptr<AVBuffer>& srcBuffer, std::shared_ptr<AVBuffer>& dstBuffer)
55     {
56         return Status::OK;
57     }
58 protected:
59     using MetaData = std::vector<uint8_t>;
60     int64_t pts_;
61     int64_t dts_;
62     int64_t duration_;
63     uint32_t flag_;
64     std::shared_ptr<Meta> meta_;
65     std::shared_ptr<AVMemory> memory_;
66     AVBufferConfig config_;
67     MOCK_METHOD(Status, Init, (std::shared_ptr<AVAllocator> allocator, int32_t capacity, int32_t align), ());
68     MOCK_METHOD(Status, Init, (uint8_t* ptr, int32_t capacity, int32_t size), ());
69     MOCK_METHOD(Status, Init, (sptr<SurfaceBuffer> surfaceBuffer), ());
70 };
71 
72 class AVMemory {
73 public:
74     AVMemory() = default;
75     virtual ~AVMemory() = default;
76     MOCK_METHOD(MemoryType, GetMemoryType, (), ());
77     MOCK_METHOD(MemoryFlag, GetMemoryFlag, (), ());
78     MOCK_METHOD(int32_t, GetCapacity, (), ());
79     MOCK_METHOD(int32_t, GetSize, (), ());
80     MOCK_METHOD(Status, SetSize, (int32_t size), ());
81     MOCK_METHOD(int32_t, GetOffset, (), ());
82     MOCK_METHOD(Status, SetOffset, (int32_t offset), ());
83     MOCK_METHOD(int32_t, GetFileDescriptor, (), ());
84     MOCK_METHOD(uint8_t*, GetAddr, (), ());
85     MOCK_METHOD(int32_t, Write, (const uint8_t* in, int32_t writeSize, int32_t position), ());
86     MOCK_METHOD(int32_t, Read, (uint8_t* out, int32_t readSize, int32_t position), ());
87     MOCK_METHOD(void, Reset, (), ());
88     MOCK_METHOD(sptr<SurfaceBuffer>, GetSurfaceBuffer, (), ());
89 
90 protected:
91     MOCK_METHOD(Status, Init, (), ());
92     MOCK_METHOD(Status, Init, (MessageParcel& parcel), ());
93     MOCK_METHOD(Status, InitSurfaceBuffer, (MessageParcel& parcel), ());
94     MOCK_METHOD(Status, InitSurfaceBuffer, (sptr<SurfaceBuffer> surfaceBuffer), ());
95     MOCK_METHOD(bool, WriteToMessageParcel, (MessageParcel& parcel), ());
96     MOCK_METHOD(bool, ReadFromMessageParcel, (MessageParcel& parcel), ());
97     MOCK_METHOD(bool, ReadCommonFromMessageParcel, (MessageParcel& parcel), ());
98     MOCK_METHOD(bool, SkipCommonFromMessageParcel, (MessageParcel& parcel), ());
99     MOCK_METHOD(bool, WriteCommonToMessageParcel, (MessageParcel& parcel), ());
100     int32_t capacity_ = 0;
101     int32_t align_;
102     int32_t offset_;
103     int32_t size_;
104     uint8_t *base_;
105     uint64_t uid_;
106     std::shared_ptr<AVAllocator> allocator_;
107     static std::shared_ptr<AVMemory> CreateAVMemory(std::shared_ptr<AVAllocator> allocator,
108                                                     int32_t capacity = 0, int32_t align = 0)
109     {
110         return std::make_shared<AVMemory>();
111     }
CreateAVMemory(uint8_t * ptr,int32_t capacity,int32_t size)112     static std::shared_ptr<AVMemory> CreateAVMemory(uint8_t *ptr, int32_t capacity, int32_t size)
113     {
114         return std::make_shared<AVMemory>();
115     }
116     static std::shared_ptr<AVMemory> CreateAVMemory(MessageParcel &parcel, bool isSurfaceBuffer = false)
117     {
118         return std::make_shared<AVMemory>();
119     }
CreateAVMemory(sptr<SurfaceBuffer> surfaceBuffer)120     static std::shared_ptr<AVMemory> CreateAVMemory(sptr<SurfaceBuffer> surfaceBuffer)
121     {
122         return std::make_shared<AVMemory>();
123     }
124 };
125 }
126 }
127 #endif // MOCK_AVBUFFER_H