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 HOS_CAMERA_IBUFFER_H
17#define HOS_CAMERA_IBUFFER_H
18
19#include "camera.h"
20
21namespace OHOS {
22namespace Camera {
23enum CameraBufferStatus {
24    CAMERA_BUFFER_STATUS_OK = 0,
25    CAMERA_BUFFER_STATUS_DROP,
26    CAMERA_BUFFER_STATUS_INVALID,
27};
28
29class IBuffer {
30public:
31    virtual ~IBuffer() {}
32
33    virtual int32_t GetIndex() const = 0;
34    virtual uint32_t GetWidth() const = 0;
35    virtual uint32_t GetCurWidth() const = 0;
36    virtual uint32_t GetHeight() const = 0;
37    virtual uint32_t GetCurHeight() const = 0;
38    virtual uint32_t GetStride() const = 0;
39    virtual int32_t GetFormat() const = 0;
40    virtual int32_t GetCurFormat() const = 0;
41    virtual uint32_t GetSize() const = 0;
42    virtual uint32_t GetSuffaceBufferSize() const = 0;
43    virtual void* GetSuffaceBufferAddr() const = 0;
44    virtual uint64_t GetUsage() const = 0;
45    virtual void* GetVirAddress() const = 0;
46    virtual uint64_t GetPhyAddress() const = 0;
47    virtual int32_t GetFileDescriptor() const = 0;
48    virtual int32_t GetSourceType() const = 0;
49    virtual uint64_t GetTimestamp() const = 0;
50    virtual uint64_t GetFrameNumber() const = 0;
51    virtual int64_t GetPoolId() const = 0;
52    virtual int32_t GetCaptureId() const = 0;
53    virtual CameraBufferStatus GetBufferStatus() const = 0;
54    virtual int32_t GetSequenceId() const = 0;
55    virtual int32_t GetFenceId() const = 0;
56    virtual EsFrameInfo GetEsFrameInfo() const = 0;
57    virtual int32_t GetEncodeType() const = 0;
58    virtual int32_t GetStreamId() const = 0;
59    virtual bool GetIsValidDataInSurfaceBuffer() const = 0;
60
61    virtual void SetIndex(const int32_t index) = 0;
62    virtual void SetWidth(const uint32_t width) = 0;
63    virtual void SetCurWidth(const uint32_t width) = 0;
64    virtual void SetHeight(const uint32_t height) = 0;
65    virtual void SetCurHeight(const uint32_t height) = 0;
66    virtual void SetStride(const uint32_t stride) = 0;
67    virtual void SetFormat(const int32_t format) = 0;
68    virtual void SetCurFormat(const int32_t format) = 0;
69    virtual void SetSize(const uint32_t size) = 0;
70    virtual void SetSuffaceBufferAddr(const void* addr) = 0;
71    virtual void SetSuffaceBufferSize(const uint32_t size) = 0;
72    virtual void SetUsage(const uint64_t usage) = 0;
73    virtual void SetVirAddress(const void* addr) = 0;
74    virtual void SetPhyAddress(const uint64_t addr) = 0;
75    virtual void SetFileDescriptor(const int32_t fd) = 0;
76    virtual void SetTimestamp(const uint64_t timestamp) = 0;
77    virtual void SetFrameNumber(const uint64_t frameNumber) = 0;
78    virtual void SetPoolId(const int64_t id) = 0;
79    virtual void SetCaptureId(const int32_t id) = 0;
80    virtual void SetBufferStatus(const CameraBufferStatus flag) = 0;
81    virtual void SetSequenceId(const int32_t sequence) = 0;
82    virtual void SetFenceId(const int32_t fence) = 0;
83    virtual void SetEncodeType(const int32_t type) = 0;
84    virtual void SetEsFrameSize(const int32_t frameSize) = 0;
85    virtual void SetEsTimestamp(const int64_t timeStamp) = 0;
86    virtual void SetEsKeyFrame(const int32_t isKey) = 0;
87    virtual void SetEsFrameNum(const int32_t frameNum) = 0;
88    virtual void SetStreamId(const int32_t streamId) = 0;
89    virtual void SetIsValidDataInSurfaceBuffer(const bool isValid) = 0;
90
91    virtual void Free() = 0;
92
93    virtual bool operator==(const IBuffer& u) = 0;
94};
95} // namespace Camera
96} // namespace OHOS
97#endif
98
99