From bc18ea5f961f2400bfb75c3350eba2b4452d2067 Mon Sep 17 00:00:00 2001 From: shegangbin Date: Tue, 5 Jul 2022 10:39:39 +0800 Subject: [PATCH] graphic ndk zh Signed-off-by: shegangbin --- zh-cn/native_sdk/graphic/native_buffer.h | 146 +++++++++++++++++++++++ zh-cn/native_sdk/graphic/native_vsync.h | 85 +++++++++++++ 2 files changed, 231 insertions(+) create mode 100644 zh-cn/native_sdk/graphic/native_buffer.h create mode 100644 zh-cn/native_sdk/graphic/native_vsync.h diff --git a/zh-cn/native_sdk/graphic/native_buffer.h b/zh-cn/native_sdk/graphic/native_buffer.h new file mode 100644 index 00000000..a4325f05 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_buffer.h @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NDK_INCLUDE_NATIVE_BUFFER_H_ +#define NDK_INCLUDE_NATIVE_BUFFER_H_ + +/** + * @addtogroup OH_NativeBuffer + * @{ + * + * @brief 提供NativeBuffer功能 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @since 9 + * @version 1.0 + */ + +/** + * @file native_buffer.h + * + * @brief 定义获取和使用NativeBuffer的相关函数 + * + * @since 9 + * @version 1.0 + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct OH_NativeBuffer; +typedef struct OH_NativeBuffer OH_NativeBuffer; + +/** + * @brief OH_NativeBuffer的属性配置,用于申请新的OH_NativeBuffer实例或查询现有实例的相关属性 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @since 9 + * @version 1.0 + */ +typedef struct { + int32_t width; // 宽度(像素) + int32_t height; // 高度(像素) + int32_t format; // 像素格式 + int32_t usage; // buffer的用途说明 +} OH_NativeBuffer_Config; + +/** + * @brief 通过OH_NativeBuffer_Config创建OH_NativeBuffer实例,每次调用都会产生一个新的OH_NativeBuffer实例 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @param config 参数是一个指向OH_NativeBuffer属性的指针,类型为OH_NativeBuffer_Config + * @return 创建成功则返回一个指向OH_NativeBuffer结构体实例的指针,否则返回NULL + * @since 9 + * @version 1.0 + */ +OH_NativeBuffer* OH_NativeBuffer_Alloc(const OH_NativeBuffer_Config* config); + +/** + * @brief 将OH_NativeBuffer对象的引用计数加1 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @param buffer 参数是一个指向OH_NativeBuffer实例的指针 + * @return 返回一个由GSError定义的int32_t类型的错误码 + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeBuffer_Reference(OH_NativeBuffer *buffer); + +/** + * @brief 将OH_NativeBuffer对象的引用计数减1,当引用计数为0的时候,该NativeBuffer对象会被析构掉 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @param buffer 参数是一个指向OH_NativeBuffer实例的指针 + * @return 返回一个由GSError定义的int32_t类型的错误码 + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeBuffer_Unreference(OH_NativeBuffer *buffer); + +/** + * @brief 用于获取OH_NativeBuffer的属性 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @param buffer 参数是一个指向OH_NativeBuffer实例的指针 + * @param config 参数是一个指向OH_NativeBuffer_Config的指针,用于接收OH_NativeBuffer的属性 + * @since 9 + * @version 1.0 + */ +void OH_NativeBuffer_GetConfig(OH_NativeBuffer *buffer, OH_NativeBuffer_Config* config); + +/** + * @brief 将OH_NativeBuffer对应的ION内存映射到进程空间 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @param buffer 参数是一个指向OH_NativeBuffer实例的指针 + * @param virAddr 参数是一个二级指针,二级指针指向虚拟内存的地址 + * @return 返回一个由GSError定义的int32_t类型的错误码 + * @since 9 + * @version 1.0 + */ + +int32_t OH_NativeBuffer_Map(OH_NativeBuffer *buffer, void **virAddr); + +/** + * @brief 将OH_NativeBuffer对应的ION内存从进程空间移除 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @param buffer 参数是一个指向OH_NativeBuffer实例的指针 + * @return 返回一个由GSError定义的int32_t类型的错误码 + * @since 9 + * @version 1.0 + */ +int32_t OH_NativeBuffer_Unmap(OH_NativeBuffer *buffer); + +/** + * @brief 获取OH_NativeBuffer的序列号 + * + * @syscap SystemCapability.Graphic.Graphic2D.OH_NativeBuffer + * @param buffer 参数是一个指向OH_NativeBuffer实例的指针 + * @return 返回对应OH_NativeBuffer的唯一序列号 + * @since 9 + * @version 1.0 + */ +uint32_t OH_NativeBuffer_GetSeqNum(OH_NativeBuffer *buffer); + +#ifdef __cplusplus +} +#endif + +/** @} */ +#endif \ No newline at end of file diff --git a/zh-cn/native_sdk/graphic/native_vsync.h b/zh-cn/native_sdk/graphic/native_vsync.h new file mode 100644 index 00000000..b17473e5 --- /dev/null +++ b/zh-cn/native_sdk/graphic/native_vsync.h @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NDK_INCLUDE_NATIVE_VSYNC_H_ +#define NDK_INCLUDE_NATIVE_VSYNC_H_ + +/** + * @addtogroup NativeVsync + * @{ + * + * @brief 提供NativeVsync功能 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeVsync + * @since 8 + * @version 1.0 + */ + +/** + * @file native_vsync.h + * + * @brief 定义获取和使用NativeVsync的相关函数 + * + * @since 8 + * @version 1.0 + */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct OH_NativeVSync; +typedef struct OH_NativeVSync OH_NativeVSync; +typedef void (*OH_NativeVSync_FrameCallback)(long long timestamp, void *data); + +/** + * @brief 创建一个OH_NativeVSync实例,每次调用都会产生一个新的实例 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeVsync + * @param name 参数表示一个vsync连接的名字 + * @param length 参数是name的长度 + * @return 返回一个指向OH_NativeVSync实例的指针 + * @since 8 + * @version 1.0 + */ +OH_NativeVSync* OH_NativeVSync_Create(const char* name, unsigned int length); + +/** + * @brief 销毁OH_NativeVSync实例 + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeVsync + * @param nativeVsync 参数是一个指向OH_NativeVSync实例的指针 + * @since 8 + * @version 1.0 + */ +void OH_NativeVSync_Destroy(OH_NativeVSync* nativeVsync); + +/** + * @brief 请求下一次vsync信号,当信号到来时,调用回调函数callback + * + * @syscap SystemCapability.Graphic.Graphic2D.NativeVsync + * @param nativeVsync 参数是一个指向OH_NativeVSync实例的指针 + * @param callback 参数是一个OH_NativeVSync_FrameCallback类型的函数指针,当下一次vsync信号到来时会被调用 + * @param data 参数是一个指向用户自定义数据结构的指针,类型是void* + * @return 返回一个由GSError定义的int32_t类型的错误码 + * @since 8 + * @version 1.0 + */ +int OH_NativeVSync_RequestFrame(OH_NativeVSync* nativeVsync, OH_NativeVSync_FrameCallback callback, void* data); +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file -- Gitee