• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# video_processing_types.h
2<!--Kit: Media Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @wang-haizhou6-->
5<!--Designer: @HmQQQ-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9## 概述
10
11视频处理类型定义。
12
13**引用文件:** <multimedia/video_processing_engine/video_processing_types.h>
14
15**库:** libvideo_processing.so
16
17**系统能力:** SystemCapability.Multimedia.VideoProcessingEngine
18
19**起始版本:** 12
20
21**相关模块:** [VideoProcessing](capi-videoprocessing.md)
22
23## 汇总
24
25### 结构体
26
27| 名称 | typedef关键字 | 描述 |
28| -- | -- | -- |
29| [VideoProcessing_ColorSpaceInfo](capi-videoprocessing-videoprocessing-colorspaceinfo.md) | VideoProcessing_ColorSpaceInfo | 视频颜色空间信息数据结构。 |
30| [OH_VideoProcessing](capi-videoprocessing-oh-videoprocessing.md) | OH_VideoProcessing | 定义视频处理对象。<br>定义一个OH_VideoProcessing空指针,调用[OH_VideoProcessing_Create](capi-video-processing-h.md#oh_videoprocessing_create)创建视频处理实例,该指针在创建实例之前必须为空。用户可以对不同的处理类型创建不同的视频处理实例。 |
31| [NativeWindow](capi-videoprocessing-nativewindow.md) | OHNativeWindow | 定义NativeWindow对象。 |
32| [OH_AVFormat](capi-videoprocessing-oh-avformat.md) | OH_AVFormat | 定义OH_AVFormat对象。 |
33| [VideoProcessing_Callback](capi-videoprocessing-videoprocessing-callback.md) | VideoProcessing_Callback | 视频处理回调对象类型。<br>定义一个VideoProcessing_Callback空指针,调用[OH_VideoProcessingCallback_Create](capi-video-processing-h.md#oh_videoprocessingcallback_create)来创建一个回调对象。创建之前该指针必须为空。通过调用[OH_VideoProcessing_RegisterCallback](capi-video-processing-h.md#oh_videoprocessing_registercallback)来向视频处理实例注册回调对象。 |
34
35### 枚举
36
37| 名称 | typedef关键字 | 描述 |
38| -- | -- | -- |
39| [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel) | VideoDetailEnhancer_QualityLevel | 用于细节增强的质量等级。 |
40| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) | VideoProcessing_ErrorCode | 视频处理错误码。 |
41| [VideoProcessing_State](#videoprocessing_state) | VideoProcessing_State | 视频处理状态。<br>视频处理状态通过回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)进行报告。 |
42
43### 函数
44
45| 名称 | typedef关键字 | 描述 |
46| -- | -- | -- |
47| [typedef void (\*OH_VideoProcessingCallback_OnError)(OH_VideoProcessing* videoProcessor,VideoProcessing_ErrorCode error, void* userData)](#oh_videoprocessingcallback_onerror) | OH_VideoProcessingCallback_OnError | 视频处理过程中报告错误的回调函数指针。 |
48| [typedef void (\*OH_VideoProcessingCallback_OnState)(OH_VideoProcessing* videoProcessor, VideoProcessing_State state, void* userData)](#oh_videoprocessingcallback_onstate) | OH_VideoProcessingCallback_OnState | 报告视频处理状态的回调函数指针。<br>[OH_VideoProcessing_Start](capi-video-processing-h.md#oh_videoprocessing_start)成功调用之后状态会变为[VideoProcessing_State](#videoprocessing_state).VIDEO_PROCESSING_STATE_RUNNING。调用[OH_VideoProcessing_Stop](capi-video-processing-h.md#oh_videoprocessing_stop),所有的缓存buffer处理完成后,状态会变为[VideoProcessing_State](#videoprocessing_state).VIDEO_PROCESSING_STATE_STOPPED。 |
49| [typedef void (\*OH_VideoProcessingCallback_OnNewOutputBuffer)(OH_VideoProcessing* videoProcessor, uint32_t index, void* userData)](#oh_videoprocessingcallback_onnewoutputbuffer) | OH_VideoProcessingCallback_OnNewOutputBuffer | 报告输出buffer已填充好数据的回调函数指针。<br>每个新输出buffer填充好数据之后该buffer的索引就会报告给用户。调用[OH_VideoProcessing_RenderOutputBuffer](capi-video-processing-h.md#oh_videoprocessing_renderoutputbuffer)根据索引来处理渲染并输出该buffer。如果未注册该函数,则输出buffer填充好数据后不会报告用户,而是直接进行处理渲染并输出。 |
50
51### 变量
52
53| 名称 | 描述 |
54| -- | -- |
55| const int32_t VIDEO_PROCESSING_TYPE_COLOR_SPACE_CONVERSION | 表示创建颜色空间转换视频处理实例。<br>调用[OH_VideoProcessing_Create](capi-video-processing-h.md#oh_videoprocessing_create)创建颜色空间转换视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode).VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。<br>**起始版本:** 12 |
56| const int32_t VIDEO_PROCESSING_TYPE_METADATA_GENERATION | 表示创建元数据生成视频处理实例。<br>调用[OH_VideoProcessing_Create](capi-video-processing-h.md#oh_videoprocessing_create)创建元数据生成视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode).VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。<br>**起始版本:** 12 |
57| const int32_t VIDEO_PROCESSING_TYPE_DETAIL_ENHANCER | 表示创建细节增强视频处理实例。<br>调用[OH_VideoProcessing_Create](capi-video-processing-h.md#oh_videoprocessing_create)创建细节增强视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode).VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。<br>**起始版本:** 12 |
58| const char* VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL | 指定视频细节增强的质量等级,参考[VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel)查看具体取值。<br>调用[OH_VideoProcessing_SetParameter](capi-video-processing-h.md#oh_videoprocessing_setparameter)设置质量等级。<br>调用[OH_VideoProcessing_GetParameter](capi-video-processing-h.md#oh_videoprocessing_getparameter)获取当前质量等级。<br>**起始版本:** 12 |
59
60## 枚举类型说明
61
62### VideoDetailEnhancer_QualityLevel
63
64```
65enum VideoDetailEnhancer_QualityLevel
66```
67
68**描述**
69
70用于细节增强的质量等级。参数VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL的具体取值,设置方法详见开发指南。
71
72**起始版本:** 12
73
74| 枚举项 | 描述 |
75| -- | -- |
76| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_NONE | 无细节增强。 |
77| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_LOW | 低质量等级细节增强,速度较快,默认设置。 |
78| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_MEDIUM | 中等质量等级细节增强,速度适中。 |
79| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_HIGH | 高质量等级细节增强,速度相对较慢。 |
80
81**参考:**
82
83[OH_VideoProcessing_SetParameter](capi-video-processing-h.md#oh_videoprocessing_setparameter)
84
85[OH_VideoProcessing_GetParameter](capi-video-processing-h.md#oh_videoprocessing_getparameter)
86
87### VideoProcessing_ErrorCode
88
89```
90enum VideoProcessing_ErrorCode
91```
92
93**描述**
94
95视频处理错误码。
96
97**起始版本:** 12
98
99| 枚举项 | 描述 |
100| -- | -- |
101| VIDEO_PROCESSING_SUCCESS | 处理成功。 |
102| VIDEO_PROCESSING_ERROR_INVALID_PARAMETER = 401 | 输入参数无效。以下情况都会返回该错误码:<br>1. 无效的输入或输出视频buffer,视频buffer为空。<br>2. 无效的参数,参数为空。<br>3. 无效的处理类型。 |
103| VIDEO_PROCESSING_ERROR_UNKNOWN = 29210001 | 未知错误,比如GPU计算失败或memcpy失败。 |
104| VIDEO_PROCESSING_ERROR_INITIALIZE_FAILED | 视频处理全局环境初始化失败,比如初始化GPU环境失败。 |
105| VIDEO_PROCESSING_ERROR_CREATE_FAILED | 创建视频处理实例失败,比如实例总数超出上限。 |
106| VIDEO_PROCESSING_ERROR_PROCESS_FAILED | 处理过程失败,比如处理时间超时。 |
107| VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING | 不支持的处理类型,可以调用OH_VideoProcessing_IsXXXSupported来检查是否支持这种处理。 |
108| VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED | 不允许的操作,比如不满足调用接口所需的运行状态下调用该接口。 |
109| VIDEO_PROCESSING_ERROR_NO_MEMORY | 内存不足。 |
110| VIDEO_PROCESSING_ERROR_INVALID_INSTANCE | 视频处理实例无效,比如视频处理实例为空实例。 |
111| VIDEO_PROCESSING_ERROR_INVALID_VALUE | 输入值无效,以下情况都会造成这种错误:<br>1. 视频buffer宽高太大或者颜色空间错误。<br>2. 参数包含无效的值,比如细节增强的质量等级错误。 |
112
113### VideoProcessing_State
114
115```
116enum VideoProcessing_State
117```
118
119**描述**
120
121视频处理状态。
122
123视频处理状态通过回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)进行报告。
124
125**起始版本:** 12
126
127| 枚举项 | 描述 |
128| -- | -- |
129| VIDEO_PROCESSING_STATE_RUNNING | 视频处理进行中。 |
130| VIDEO_PROCESSING_STATE_STOPPED | 视频处理已停止。 |
131
132
133## 函数说明
134
135### OH_VideoProcessingCallback_OnError()
136
137```
138typedef void (*OH_VideoProcessingCallback_OnError)(OH_VideoProcessing* videoProcessor,VideoProcessing_ErrorCode error, void* userData)
139```
140
141**描述**
142
143视频处理过程中报告错误的回调函数指针。
144
145错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode):
146
147VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING,不支持的处理,比如不支持输入输出的颜色空间类型转换。
148
149VIDEO_PROCESSING_ERROR_INVALID_VALUE,无效的视频属性,比如视频的颜色空间无效。
150
151VIDEO_PROCESSING_ERROR_NO_MEMORY,内存不足。
152
153VIDEO_PROCESSING_ERROR_PROCESS_FAILED,处理过程中出错。
154
155**起始版本:** 12
156
157
158**参数:**
159
160| 参数项 | 描述 |
161| -- | -- |
162| [OH_VideoProcessing](capi-videoprocessing-oh-videoprocessing.md)* videoProcessor | 视频处理实例。 |
163| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) error | 报告给用户的错误码。 |
164|  void* userData | 用户的自定义数据。 |
165
166### OH_VideoProcessingCallback_OnState()
167
168```
169typedef void (*OH_VideoProcessingCallback_OnState)(OH_VideoProcessing* videoProcessor, VideoProcessing_State state,void* userData)
170```
171
172**描述**
173
174报告视频处理状态的回调函数指针。
175
176[OH_VideoProcessing_Start](capi-video-processing-h.md#oh_videoprocessing_start)成功调用之后状态会变为[VideoProcessing_State](#videoprocessing_state).VIDEO_PROCESSING_STATE_RUNNING。调用[OH_VideoProcessing_Stop](capi-video-processing-h.md#oh_videoprocessing_stop),所有的缓存buffer处理完成后,状态会变为[VideoProcessing_State](#videoprocessing_state).VIDEO_PROCESSING_STATE_STOPPED。
177
178**起始版本:** 12
179
180
181**参数:**
182
183| 参数项 | 描述 |
184| -- | -- |
185| [OH_VideoProcessing](capi-videoprocessing-oh-videoprocessing.md)* videoProcessor | 视频处理实例。 |
186|  [VideoProcessing_State](#videoprocessing_state) state | 视频处理状态。 |
187| void* userData | 用户的自定义数据。 |
188
189### OH_VideoProcessingCallback_OnNewOutputBuffer()
190
191```
192typedef void (*OH_VideoProcessingCallback_OnNewOutputBuffer)(OH_VideoProcessing* videoProcessor, uint32_t index,void* userData)
193```
194
195**描述**
196
197报告输出buffer已填充好数据的回调函数指针。
198
199每个新输出buffer填充好数据之后该buffer的索引就会报告给用户。调用[OH_VideoProcessing_RenderOutputBuffer](capi-video-processing-h.md#oh_videoprocessing_renderoutputbuffer)根据索引来处理渲染并输出该buffer。如果未注册该函数,则输出buffer填充好数据后不会报告用户,而是直接进行处理渲染并输出。
200
201**起始版本:** 12
202
203
204**参数:**
205
206| 参数项 | 描述 |
207| -- | -- |
208| [OH_VideoProcessing](capi-videoprocessing-oh-videoprocessing.md)* videoProcessor | 视频处理实例。 |
209|  uint32_t index | 新输出buffer的索引。 |
210| void* userData | 用户自定义的数据。 |
211
212
213