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 FRAMEWORKS_SURFACE_INCLUDE_BUFFER_UTILS_H
17#define FRAMEWORKS_SURFACE_INCLUDE_BUFFER_UTILS_H
18
19#include <errno.h>
20#include <message_parcel.h>
21#include "surface_type.h"
22#include <surface_tunnel_handle.h>
23
24#include "surface_buffer.h"
25
26namespace OHOS {
27void ReadFileDescriptor(MessageParcel &parcel, int32_t &fd);
28GSError WriteFileDescriptor(MessageParcel &parcel, int32_t fd);
29
30void ReadRequestConfig(MessageParcel &parcel, BufferRequestConfig &config);
31GSError WriteRequestConfig(MessageParcel &parcel, const BufferRequestConfig  &config);
32
33GSError ReadFlushConfig(MessageParcel &parcel, BufferFlushConfigWithDamages &config);
34GSError WriteFlushConfig(MessageParcel &parcel, const BufferFlushConfigWithDamages &config);
35
36GSError ReadSurfaceBufferImpl(MessageParcel &parcel, uint32_t &sequence, sptr<SurfaceBuffer> &buffer);
37GSError WriteSurfaceBufferImpl(MessageParcel &parcel, uint32_t sequence, const sptr<SurfaceBuffer> &buffer);
38
39void ReadVerifyAllocInfo(MessageParcel &parcel, std::vector<BufferVerifyAllocInfo> &infos);
40GSError WriteVerifyAllocInfo(MessageParcel &parcel, const std::vector<BufferVerifyAllocInfo> &infos);
41
42GSError ReadHDRMetaData(MessageParcel &parcel, std::vector<GraphicHDRMetaData> &metaData);
43GSError WriteHDRMetaData(MessageParcel &parcel, const std::vector<GraphicHDRMetaData> &metaData);
44
45GSError ReadHDRMetaDataSet(MessageParcel &parcel, std::vector<uint8_t> &metaData);
46GSError WriteHDRMetaDataSet(MessageParcel &parcel, const std::vector<uint8_t> &metaData);
47
48GSError ReadExtDataHandle(MessageParcel &parcel, sptr<SurfaceTunnelHandle> &handle);
49GSError WriteExtDataHandle(MessageParcel &parcel, const GraphicExtDataHandle *handle);
50
51GSError DumpToFileAsync(pid_t pid, std::string name, sptr<SurfaceBuffer> &buffer);
52} // namespace OHOS
53
54#endif // FRAMEWORKS_SURFACE_INCLUDE_BUFFER_UTILS_H
55