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