1# VideoProcessing
2
3
4## 概述
5
6提供用于视频处理的API函数。
7
8提供视频处理能力,包括颜色空间转换、元数据生成和视频缩放。
9
10<!--RP1--><!--RP1End-->
11
12**起始版本:** 12
13
14
15## 汇总
16
17
18### 文件
19
20| 名称 | 描述 |
21| -------- | -------- |
22| [video_processing.h](video__processing_8h.md) | 声明视频处理函数。 |
23| [video_processing_types.h](video__processing__types_8h.md) | 视频处理类型定义。 |
24
25
26### 结构体
27
28| 名称 | 描述 |
29| -------- | -------- |
30| struct  [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) | 视频颜色空间信息数据结构。 |
31
32
33### 类型定义
34
35| 名称 | 描述 |
36| -------- | -------- |
37| typedef struct [OH_VideoProcessing](#oh_videoprocessing-1) [OH_VideoProcessing](#oh_videoprocessing) | 定义视频处理对象。 |
38| typedef struct NativeWindow [OHNativeWindow](#ohnativewindow) | 定义NativeWindow对象。 |
39| typedef struct [OH_AVFormat](#oh_avformat-1) [OH_AVFormat](#oh_avformat) | 定义OH_AVFormat对象。 |
40| typedef struct [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) [VideoProcessing_ColorSpaceInfo](#videoprocessing_colorspaceinfo) | 视频颜色空间信息数据结构。 |
41| typedef enum [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel-1) [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel) | 用于细节增强的质量等级。 |
42| typedef enum [VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) [VideoProcessing_ErrorCode](#videoprocessing_errorcode) | 视频处理错误码。 |
43| typedef enum [VideoProcessing_State](#videoprocessing_state-1) [VideoProcessing_State](#videoprocessing_state) | 视频处理状态。 |
44| typedef struct [VideoProcessing_Callback](#videoprocessing_callback) [VideoProcessing_Callback](#videoprocessing_callback) | 视频处理回调对象类型。 |
45| typedef void(\* [OH_VideoProcessingCallback_OnError](#oh_videoprocessingcallback_onerror)) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [VideoProcessing_ErrorCode](#videoprocessing_errorcode) error, void \*userData) | 视频处理过程中报告错误的回调函数指针。 |
46| typedef void(\* [OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [VideoProcessing_State](#videoprocessing_state) state, void \*userData) | 报告视频处理状态的回调函数指针。 |
47| typedef void(\* [OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer)) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, uint32_t index, void \*userData) | 报告输出buffer已填充好数据的回调函数指针。 |
48
49
50### 枚举
51
52| 名称 | 描述 |
53| -------- | -------- |
54| [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel-1) {<br/>VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_NONE,<br/>VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_LOW,<br/>VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_MEDIUM,<br/>VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_HIGH } | 用于细节增强的质量等级。 |
55| [VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) {<br/>VIDEO_PROCESSING_SUCCESS,<br/>VIDEO_PROCESSING_ERROR_INVALID_PARAMETER = 401,<br/>VIDEO_PROCESSING_ERROR_UNKNOWN = 29210001,<br/>VIDEO_PROCESSING_ERROR_INITIALIZE_FAILED,<br/>VIDEO_PROCESSING_ERROR_CREATE_FAILED,<br/>VIDEO_PROCESSING_ERROR_PROCESS_FAILED,<br/>VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING,<br/>VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED,<br/>VIDEO_PROCESSING_ERROR_NO_MEMORY,<br/>VIDEO_PROCESSING_ERROR_INVALID_INSTANCE,<br/>VIDEO_PROCESSING_ERROR_INVALID_VALUE<br/>} | 视频处理错误码。 |
56| [VideoProcessing_State](#videoprocessing_state-1) {<br/>VIDEO_PROCESSING_STATE_RUNNING,<br/>VIDEO_PROCESSING_STATE_STOPPED } | 视频处理状态。 |
57
58
59### 函数
60
61| 名称 | 描述 |
62| -------- | -------- |
63| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment) (void) | 初始化视频处理全局环境。 |
64| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_DeinitializeEnvironment](#oh_videoprocessing_deinitializeenvironment) (void) | 释放视频处理全局环境。 |
65| bool [OH_VideoProcessing_IsColorSpaceConversionSupported](#oh_videoprocessing_iscolorspaceconversionsupported) (const [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) \*sourceVideoInfo, const [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) \*destinationVideoInfo) | 查询是否支持视频颜色空间转换。 |
66| bool [OH_VideoProcessing_IsMetadataGenerationSupported](#oh_videoprocessing_ismetadatagenerationsupported) (const [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) \*sourceVideoInfo) | 查询是否支持视频元数据生成。 |
67| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Create](#oh_videoprocessing_create) ([OH_VideoProcessing](#oh_videoprocessing) \*\*videoProcessor, int type) | 创建视频处理实例。 |
68| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Destroy](#oh_videoprocessing_destroy) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor) | 销毁视频处理实例。 |
69| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_RegisterCallback](#oh_videoprocessing_registercallback) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, const [VideoProcessing_Callback](#videoprocessing_callback) \*callback, void \*userData) | 注册回调函数。 |
70| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_SetSurface](#oh_videoprocessing_setsurface) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, const [OHNativeWindow](#ohnativewindow) \*window) | 设置视频处理输出surface。 |
71| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_GetSurface](#oh_videoprocessing_getsurface) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [OHNativeWindow](#ohnativewindow) \*\*window) | 创建surface。 |
72| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, const [OH_AVFormat](#oh_avformat) \*parameter) | 设置视频处理输出参数。 |
73| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [OH_AVFormat](#oh_avformat) \*parameter) | 获取视频处理参数。 |
74| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Start](#oh_videoprocessing_start) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor) | 启动视频处理。 |
75| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Stop](#oh_videoprocessing_stop) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor) | 停止视频处理。 |
76| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_RenderOutputBuffer](#oh_videoprocessing_renderoutputbuffer) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, uint32_t index) | 渲染处理并输出buffer。 |
77| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessingCallback_Create](#oh_videoprocessingcallback_create) ([VideoProcessing_Callback](#videoprocessing_callback) \*\*callback) | 创建视频处理回调函数对象。 |
78| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessingCallback_Destroy](#oh_videoprocessingcallback_destroy) ([VideoProcessing_Callback](#videoprocessing_callback) \*callback) | 销毁回调对象。 |
79| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessingCallback_BindOnError](#oh_videoprocessingcallback_bindonerror) ([VideoProcessing_Callback](#videoprocessing_callback) \*callback, [OH_VideoProcessingCallback_OnError](#oh_videoprocessingcallback_onerror) onError) | 绑定回调函数[OH_VideoProcessingCallback_OnError](#oh_videoprocessingcallback_onerror)到回调对象。 |
80| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessingCallback_BindOnState](#oh_videoprocessingcallback_bindonstate) ([VideoProcessing_Callback](#videoprocessing_callback) \*callback, [OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate) onState) | 绑定回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)到回调对象。 |
81| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessingCallback_BindOnNewOutputBuffer](#oh_videoprocessingcallback_bindonnewoutputbuffer) ([VideoProcessing_Callback](#videoprocessing_callback) \*callback, [OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer) onNewOutputBuffer) | 绑定回调函数[OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer)到回调对象。 |
82
83
84### 变量
85
86| 名称 | 描述 |
87| -------- | -------- |
88| const int32_t [VIDEO_PROCESSING_TYPE_COLOR_SPACE_CONVERSION](#video_processing_type_color_space_conversion) | 表示创建颜色空间转换视频处理实例。 |
89| const int32_t [VIDEO_PROCESSING_TYPE_METADATA_GENERATION](#video_processing_type_metadata_generation) | 表示创建元数据生成视频处理实例。 |
90| const int32_t [VIDEO_PROCESSING_TYPE_DETAIL_ENHANCER](#video_processing_type_detail_enhancer) | 表示创建细节增强视频处理实例。 |
91| const char \* [VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL](#video_detail_enhancer_parameter_key_quality_level) | 指定视频细节增强的质量等级。 |
92
93
94## 类型定义说明
95
96
97### OH_AVFormat
98
99```
100typedef struct OH_AVFormatOH_AVFormat
101```
102
103**描述**
104
105定义OH_AVFormat对象。
106
107**起始版本:** 12
108
109
110### OH_VideoProcessing
111
112```
113typedef struct OH_VideoProcessingOH_VideoProcessing
114```
115
116**描述**
117
118定义视频处理对象。
119
120定义一个OH_VideoProcessing空指针,调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建视频处理实例,该指针在创建实例之前必须为空。 用户可以对不同的处理类型创建不同的视频处理实例。
121
122**起始版本:** 12
123
124
125### OH_VideoProcessingCallback_OnError
126
127```
128typedef void(* OH_VideoProcessingCallback_OnError) (OH_VideoProcessing *videoProcessor, VideoProcessing_ErrorCode error, void *userData)
129```
130
131**描述**
132
133视频处理过程中报告错误的回调函数指针。
134
135错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
136
137- VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING,不支持的处理,比如不支持输入输出的颜色空间类型转换。
138
139- VIDEO_PROCESSING_ERROR_INVALID_VALUE,无效的视频属性,比如视频的颜色空间无效。
140
141- VIDEO_PROCESSING_ERROR_NO_MEMORY, 内存不足。
142
143- VIDEO_PROCESSING_ERROR_PROCESS_FAILED,处理过程中出错。
144
145**起始版本:** 12
146
147**参数:**
148
149| 名称 | 描述 |
150| -------- | -------- |
151| videoProcessor | 视频处理实例。 |
152| error | 报告给用户的错误码。 |
153| userData | 用户的自定义数据。 |
154
155
156### OH_VideoProcessingCallback_OnNewOutputBuffer
157
158```
159typedef void(* OH_VideoProcessingCallback_OnNewOutputBuffer) (OH_VideoProcessing *videoProcessor, uint32_t index, void *userData)
160```
161
162**描述**
163
164报告输出buffer已填充好数据的回调函数指针。
165
166每个新输出buffer填充好数据之后该buffer的索引就会报告给用户。调用[OH_VideoProcessing_RenderOutputBuffer](#oh_videoprocessing_renderoutputbuffer)根据索引来处理渲染并输出该buffer。 如果未注册该函数,则输出buffer填充好数据后不会报告用户,而是直接进行处理渲染并输出。
167
168**起始版本:** 12
169
170**参数:**
171
172| 名称 | 描述 |
173| -------- | -------- |
174| videoProcessor | 视频处理实例。 |
175| index | 新输出buffer的索引。 |
176| userData | 用户自定义的数据。 |
177
178
179### OH_VideoProcessingCallback_OnState
180
181```
182typedef void(* OH_VideoProcessingCallback_OnState) (OH_VideoProcessing *videoProcessor, VideoProcessing_State state, void *userData)
183```
184
185**描述**
186
187报告视频处理状态的回调函数指针。
188
189[OH_VideoProcessing_Start](#oh_videoprocessing_start)成功调用之后状态会变为VIDEO_PROCESSING_STATE_RUNNING。 调用[OH_VideoProcessing_Stop](#oh_videoprocessing_stop),所有的缓存buffer处理完成后,状态会变为VIDEO_PROCESSING_STATE_STOPPED。状态说明参阅[VideoProcessing_State](#videoprocessing_state)。
190
191**起始版本:** 12
192
193**参数:**
194
195| 名称 | 描述 |
196| -------- | -------- |
197| videoProcessor | 视频处理实例。 |
198| state | 参阅 [VideoProcessing_State](#videoprocessing_state)。 |
199| userData | 用户的自定义数据。 |
200
201
202### OHNativeWindow
203
204```
205typedef struct NativeWindow OHNativeWindow
206```
207
208**描述**
209
210定义NativeWindow对象。
211
212**起始版本:** 12
213
214
215### VideoDetailEnhancer_QualityLevel
216
217```
218typedef enum VideoDetailEnhancer_QualityLevelVideoDetailEnhancer_QualityLevel
219```
220
221**描述**
222
223用于细节增强的质量等级。
224
225参数[VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL](#video_detail_enhancer_parameter_key_quality_level)的具体取值,设置方法详见开发指南。
226
227**参见:**[OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter)、[OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter)
228
229**起始版本:** 12
230
231
232### VideoProcessing_Callback
233
234```
235typedef struct VideoProcessing_CallbackVideoProcessing_Callback
236```
237
238**描述**
239
240视频处理回调对象类型。
241
242定义一个VideoProcessing_Callback空指针,调用[OH_VideoProcessingCallback_Create](#oh_videoprocessingcallback_create)来创建一个回调对象。创建之前该指针必须为空。 通过调用[OH_VideoProcessing_RegisterCallback](#oh_videoprocessing_registercallback)来向视频处理实例注册回调对象。
243
244**起始版本:** 12
245
246
247### VideoProcessing_ColorSpaceInfo
248
249```
250typedef struct VideoProcessing_ColorSpaceInfoVideoProcessing_ColorSpaceInfo
251```
252
253**描述**
254
255视频颜色空间信息数据结构。
256
257**参见:**[OH_VideoProcessing_IsColorSpaceConversionSupported](#oh_videoprocessing_iscolorspaceconversionsupported)
258
259**起始版本:** 12
260
261
262### VideoProcessing_ErrorCode
263
264```
265typedef enum VideoProcessing_ErrorCodeVideoProcessing_ErrorCode
266```
267
268**描述**
269
270视频处理错误码。
271
272**起始版本:** 12
273
274
275### VideoProcessing_State
276
277```
278typedef enum VideoProcessing_StateVideoProcessing_State
279```
280
281**描述**
282
283视频处理状态。
284
285视频处理状态通过回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)进行报告。
286
287**起始版本:** 12
288
289
290## 枚举类型说明
291
292
293### VideoDetailEnhancer_QualityLevel
294
295```
296enum VideoDetailEnhancer_QualityLevel
297```
298
299**描述**
300
301用于细节增强的质量等级。
302
303参数[VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL](#video_detail_enhancer_parameter_key_quality_level)的具体取值,设置方法详见开发指南。
304
305**参见:**[OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter)、[OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter)
306
307**起始版本:** 12
308
309| 枚举值 | 描述 |
310| -------- | -------- |
311| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_NONE | 无细节增强。 |
312| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_LOW | 低质量等级细节增强,速度较快,默认设置。 |
313| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_MEDIUM | 中等质量等级细节增强,速度适中。 |
314| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_HIGH | 高质量等级细节增强,速度相对较慢。 |
315
316
317### VideoProcessing_ErrorCode
318
319```
320enum VideoProcessing_ErrorCode
321```
322
323**描述**
324
325视频处理错误码。
326
327**起始版本:** 12
328
329| 枚举值 | 描述 |
330| -------- | -------- |
331| VIDEO_PROCESSING_SUCCESS | 处理成功。 |
332| VIDEO_PROCESSING_ERROR_INVALID_PARAMETER | 输入参数无效。以下情况都会返回该错误码:<br/>1 - 无效的输入或输出视频buffer,视频buffer为空。<br/>2 - 无效的参数,参数为空。<br/>3 - 无效的处理类型。 |
333| VIDEO_PROCESSING_ERROR_UNKNOWN | 未知错误,比如GPU计算失败或memcpy失败。 |
334| VIDEO_PROCESSING_ERROR_INITIALIZE_FAILED | 视频处理全局环境初始化失败,比如初始化GPU环境失败。 |
335| VIDEO_PROCESSING_ERROR_CREATE_FAILED | 创建视频处理实例失败,比如实例总数超出上限。 |
336| VIDEO_PROCESSING_ERROR_PROCESS_FAILED | 处理过程失败,比如处理时间超时。 |
337| VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING | 不支持的处理类型,可以调用 OH_VideoProcessing_IsXXXSupported来检查是否支持这种处理。 |
338| VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED | 不允许的操作,比如不满足调用接口所需的运行状态下调用该接口。 |
339| VIDEO_PROCESSING_ERROR_NO_MEMORY | 内存不足。 |
340| VIDEO_PROCESSING_ERROR_INVALID_INSTANCE | 视频处理实例无效,比如视频处理实例为空实例。 |
341| VIDEO_PROCESSING_ERROR_INVALID_VALUE | 输入值无效,以下情况都会造成这种错误:<br/>1 - 视频buffer宽高太大或者颜色空间错误。<br/>2 - 参数包含无效的值,比如细节增强的质量等级错误。 |
342
343
344### VideoProcessing_State
345
346```
347enum VideoProcessing_State
348```
349
350**描述**
351
352视频处理状态。
353
354视频处理状态通过回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)进行报告。
355
356**起始版本:** 12
357
358| 枚举值 | 描述 |
359| -------- | -------- |
360| VIDEO_PROCESSING_STATE_RUNNING | 视频处理进行中。 |
361| VIDEO_PROCESSING_STATE_STOPPED | 视频处理已停止。 |
362
363
364## 函数说明
365
366
367### OH_VideoProcessing_Create()
368
369```
370VideoProcessing_ErrorCode OH_VideoProcessing_Create (OH_VideoProcessing ** videoProcessor, int type )
371```
372
373**描述**
374
375创建视频处理实例。
376
377**起始版本:** 12
378
379**参数:**
380
381| 名称 | 描述 |
382| -------- | -------- |
383| videoProcessor | 输出参数。指向视频处理对象的指针的指针。 输入前\*videoProcessor必须是空指针。 |
384| type | 使用VIDEO_PROCESSING_TYPE_XXX来指定处理类型。实例的处理类型不能改变。 |
385
386**返回:**
387
388视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
389
390- 如果视频处理实例创建成功,返回VIDEO_PROCESSING_SUCCESS。
391
392- 如果处理类型不支持,返回VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING,
393  例如,如果不支持元数据生成就返回VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
394
395- 如果创建视频处理实例失败,返回VIDEO_PROCESSING_ERROR_CREATE_FAILED。
396
397- 如果实例为空或实例的指针非空,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
398
399- 如果处理类型无效,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
400
401
402### OH_VideoProcessing_DeinitializeEnvironment()
403
404```
405VideoProcessing_ErrorCode OH_VideoProcessing_DeinitializeEnvironment (void )
406```
407
408**描述**
409
410释放视频处理全局环境。
411
412调用前,必须调用[OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment)初始化。 通常在主进程即将退出时调用该函数来释放通过调用[OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment)函数初始化的全局环境。 如果仍有视频处理的实例运行中,就不能调用该函数。
413
414**起始版本:** 12
415
416**返回:**
417
418视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
419
420- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
421
422- 如果还有视频处理的实例没有销毁或者没有调用[OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment),返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
423
424
425### OH_VideoProcessing_Destroy()
426
427```
428VideoProcessing_ErrorCode OH_VideoProcessing_Destroy (OH_VideoProcessing * videoProcessor)
429```
430
431**描述**
432
433销毁视频处理实例。
434
435销毁之前先停止实例,参阅[OH_VideoProcessing_Stop](#oh_videoprocessing_stop)。
436
437**起始版本:** 12
438
439**参数:**
440
441| 名称 | 描述 |
442| -------- | -------- |
443| videoProcessor | 指向视频处理实例的指针,建议在实例销毁之后将其设置为空指针。 |
444
445**返回:**
446
447视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
448
449- 如果实例销毁成功,返回VIDEO_PROCESSING_SUCCESS。
450
451- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
452
453- 如果实例仍在运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
454
455
456### OH_VideoProcessing_GetParameter()
457
458```
459VideoProcessing_ErrorCode OH_VideoProcessing_GetParameter (OH_VideoProcessing * videoProcessor, OH_AVFormat * parameter )
460```
461
462**描述**
463
464获取视频处理参数。
465
466**起始版本:** 12
467
468**参数:**
469
470| 名称 | 描述 |
471| -------- | -------- |
472| videoProcessor | 指向视频处理实例的指针。 |
473| parameter | 指向视频处理参数实例的指针。 |
474
475**返回:**
476
477视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
478
479- 如果参数获取成功,返回VIDEO_PROCESSING_SUCCESS。
480
481- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
482
483- 如果参数为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
484
485
486### OH_VideoProcessing_GetSurface()
487
488```
489VideoProcessing_ErrorCode OH_VideoProcessing_GetSurface (OH_VideoProcessing * videoProcessor, OHNativeWindow ** window )
490```
491
492**描述**
493
494创建surface。
495
496在视频处理启动之前创建输入surface。调用[OH_NativeWindow_DestroyNativeWindow](../apis-arkgraphics2d/_native_window.md#oh_nativewindow_destroynativewindow)销毁输入surface。
497
498**起始版本:** 12
499
500**参数:**
501
502| 名称 | 描述 |
503| -------- | -------- |
504| videoProcessor | 指向视频处理实例的指针。 |
505| window | 指向输入surface的指针。例如,此输入surface指针可以指向视频解码器输出surface。 |
506
507**返回:**
508
509视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
510
511- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
512
513- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
514
515- 如果window为空指针或指向window的指针不为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
516
517- 如果创建surface失败,或者输入surface已经创建,或者视频处理实例还在运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
518
519
520### OH_VideoProcessing_InitializeEnvironment()
521
522```
523VideoProcessing_ErrorCode OH_VideoProcessing_InitializeEnvironment (void )
524```
525
526**描述**
527
528初始化视频处理全局环境。
529
530该函数是可选的。 该函数只在主进程启动时被调用一次,用于初始化视频处理全局环境,这样可以减少[OH_VideoProcessing_Create](#oh_videoprocessing_create)的时间。 调用[OH_VideoProcessing_DeinitializeEnvironment](#oh_videoprocessing_deinitializeenvironment)释放视频处理全局环境。 初始化后,必须释放视频处理全局环境,释放方式及时机详见[OH_VideoProcessing_DeinitializeEnvironment](#oh_videoprocessing_deinitializeenvironment)。
531
532**起始版本:** 12
533
534**返回:**
535
536视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
537
538如果初始化成功,返回VIDEO_PROCESSING_SUCCESS,否则返回VIDEO_PROCESSING_ERROR_INITIALIZE_FAILED。
539
540如果失败,应用需要检查GPU是否正常工作。
541
542
543### OH_VideoProcessing_IsColorSpaceConversionSupported()
544
545```
546bool OH_VideoProcessing_IsColorSpaceConversionSupported (const VideoProcessing_ColorSpaceInfo * sourceVideoInfo, const VideoProcessing_ColorSpaceInfo * destinationVideoInfo )
547```
548
549**描述**
550
551查询是否支持视频颜色空间转换。
552
553**起始版本:** 12
554
555**参数:**
556
557| 名称 | 描述 |
558| -------- | -------- |
559| sourceVideoInfo | 输入视频颜色空间信息。 |
560| destinationVideoInfo | 输出视频颜色空间信息。 |
561
562**返回:**
563
564如果支持视频颜色空间转换返回**true**,否则返回**false**。
565
566
567### OH_VideoProcessing_IsMetadataGenerationSupported()
568
569```
570bool OH_VideoProcessing_IsMetadataGenerationSupported (const VideoProcessing_ColorSpaceInfo * sourceVideoInfo)
571```
572
573**描述**
574
575查询是否支持视频元数据生成。
576
577**起始版本:** 12
578
579**参数:**
580
581| 名称 | 描述 |
582| -------- | -------- |
583| sourceVideoInfo | 输入视频颜色空间信息。 |
584
585**返回:**
586
587如果支持视频元数据生成返回**true**,否则返回**false**。
588
589
590### OH_VideoProcessing_RegisterCallback()
591
592```
593VideoProcessing_ErrorCode OH_VideoProcessing_RegisterCallback (OH_VideoProcessing * videoProcessor, const VideoProcessing_Callback * callback, void * userData )
594```
595
596**描述**
597
598注册回调函数。
599
600在开始视频处理之前注册回调函数,视频处理过程中无法注册回调函数。
601
602**起始版本:** 12
603
604**参数:**
605
606| 名称 | 描述 |
607| -------- | -------- |
608| videoProcessor | 指向视频处理实例的指针。 |
609| callback | 回调函数指针。 |
610| userData | 指向用户特定数据的指针。 |
611
612**返回:**
613
614视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
615
616- 如果回调函数注册成功,返回VIDEO_PROCESSING_SUCCESS。
617
618- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
619
620- 如果回调函数指针为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
621
622- 如果实例仍在运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
623
624
625### OH_VideoProcessing_RenderOutputBuffer()
626
627```
628VideoProcessing_ErrorCode OH_VideoProcessing_RenderOutputBuffer (OH_VideoProcessing * videoProcessor, uint32_t index )
629```
630
631**描述**
632
633渲染处理并输出buffer。
634
635如果设置了回调函数[OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer),当输出buffer准备好之后会通过回调函数把buffer的索引返回给用户。
636
637**起始版本:** 12
638
639**参数:**
640
641| 名称 | 描述 |
642| -------- | -------- |
643| videoProcessor | 指向视频处理实例的指针。 |
644| index | 输出buffer的索引。 |
645
646**返回:**
647
648视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
649
650- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
651
652- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
653
654- 如果索引值无效,输出VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
655
656- 如果没有设置回调函数[OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer)或者实例已经停止运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
657
658
659### OH_VideoProcessing_SetParameter()
660
661```
662VideoProcessing_ErrorCode OH_VideoProcessing_SetParameter (OH_VideoProcessing * videoProcessor, const OH_AVFormat * parameter )
663```
664
665**描述**
666
667设置视频处理输出参数。
668
669**起始版本:** 12
670
671**参数:**
672
673| 名称 | 描述 |
674| -------- | -------- |
675| videoProcessor | 指向视频处理实例的指针。 |
676| parameter | 指向视频处理参数实例的指针。 |
677
678**返回:**
679
680视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
681
682- 如果参数设置成功,返回VIDEO_PROCESSING_SUCCESS。
683
684- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
685
686- 如果参数为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
687
688- 如果参数的某些属性无效,返回VIDEO_PROCESSING_ERROR_INVALID_VALUE,例如,包含不支持的参数值。
689
690- 如果内存分配失败,返回VIDEO_PROCESSING_ERROR_NO_MEMORY。
691
692
693### OH_VideoProcessing_SetSurface()
694
695```
696VideoProcessing_ErrorCode OH_VideoProcessing_SetSurface (OH_VideoProcessing * videoProcessor, const OHNativeWindow * window )
697```
698
699**描述**
700
701设置视频处理输出surface。
702
703在视频处理启动之前设置输出surface。
704
705**起始版本:** 12
706
707**参数:**
708
709| 名称 | 描述 |
710| -------- | -------- |
711| videoProcessor | 指向视频处理实例的指针。 |
712| window | 指向输出surface的指针。 |
713
714**返回:**
715
716视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
717
718- 如果输出surface设置成功,返回VIDEO_PROCESSING_SUCCESS。
719
720- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
721
722- 如果window为空指针,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
723
724
725### OH_VideoProcessing_Start()
726
727```
728VideoProcessing_ErrorCode OH_VideoProcessing_Start (OH_VideoProcessing * videoProcessor)
729```
730
731**描述**
732
733启动视频处理。
734
735成功启动后,回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)会报告VIDEO_PROCESSING_STATE_RUNNING状态,状态说明参阅[VideoProcessing_State](#videoprocessing_state)。
736
737**起始版本:** 12
738
739**参数:**
740
741| 名称 | 描述 |
742| -------- | -------- |
743| videoProcessor | 指向视频处理实例的指针。 |
744
745**返回:**
746
747视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
748
749- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
750
751- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
752
753- 如果没有设置输出surface,或者没有创建输入surface,或者实例已经运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
754
755
756### OH_VideoProcessing_Stop()
757
758```
759VideoProcessing_ErrorCode OH_VideoProcessing_Stop (OH_VideoProcessing * videoProcessor)
760```
761
762**描述**
763
764停止视频处理。
765
766成功停止后,回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)会报告VIDEO_PROCESSING_STATE_STOPPED状态,状态说明参阅[VideoProcessing_State](#videoprocessing_state)。
767
768**起始版本:** 12
769
770**参数:**
771
772| 名称 | 描述 |
773| -------- | -------- |
774| videoProcessor | 指向视频处理实例的指针。 |
775
776**返回:**
777
778视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
779
780- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
781
782- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
783
784- 如果实例已经停止,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
785
786
787### OH_VideoProcessingCallback_BindOnError()
788
789```
790VideoProcessing_ErrorCode OH_VideoProcessingCallback_BindOnError (VideoProcessing_Callback * callback, OH_VideoProcessingCallback_OnError onError )
791```
792
793**描述**
794
795绑定回调函数[OH_VideoProcessingCallback_OnError](#oh_videoprocessingcallback_onerror)到回调对象。
796
797**起始版本:** 12
798
799**参数:**
800
801| 名称 | 描述 |
802| -------- | -------- |
803| callback | 指向回调对象的指针。 |
804| onError | 回调函数。 |
805
806**返回:**
807
808视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
809
810- 如果函数绑定成功,返回VIDEO_PROCESSING_SUCCESS。
811
812- 如果callback为空或者onError为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
813
814
815### OH_VideoProcessingCallback_BindOnNewOutputBuffer()
816
817```
818VideoProcessing_ErrorCode OH_VideoProcessingCallback_BindOnNewOutputBuffer (VideoProcessing_Callback * callback, OH_VideoProcessingCallback_OnNewOutputBuffer onNewOutputBuffer )
819```
820
821**描述**
822
823绑定回调函数[OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer)到回调对象。
824
825**起始版本:** 12
826
827**参数:**
828
829| 名称 | 描述 |
830| -------- | -------- |
831| callback | 指向回调对象的指针。 |
832| onNewOutputBuffer | 回调函数。 |
833
834**返回:**
835
836视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
837
838- 如果函数绑定成功,返回VIDEO_PROCESSING_SUCCESS。
839
840- 如果callback为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
841
842
843### OH_VideoProcessingCallback_BindOnState()
844
845```
846VideoProcessing_ErrorCode OH_VideoProcessingCallback_BindOnState (VideoProcessing_Callback * callback, OH_VideoProcessingCallback_OnState onState )
847```
848
849**描述**
850
851绑定回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)到回调对象。
852
853**起始版本:** 12
854
855**参数:**
856
857| 名称 | 描述 |
858| -------- | -------- |
859| callback | 指向回调对象的指针。 |
860| onState | 回调函数。 |
861
862**返回:**
863
864视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
865
866- 如果函数绑定成功,返回VIDEO_PROCESSING_SUCCESS。
867
868- 如果callback为空或者onState为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
869
870
871### OH_VideoProcessingCallback_Create()
872
873```
874VideoProcessing_ErrorCode OH_VideoProcessingCallback_Create (VideoProcessing_Callback ** callback)
875```
876
877**描述**
878
879创建视频处理回调函数对象。
880
881**起始版本:** 12
882
883**参数:**
884
885| 名称 | 描述 |
886| -------- | -------- |
887| callback | 输出参数。\*callback是指向回调函数对象的指针。在创建回调函数对象之前\*callback必须为空指针。 |
888
889**返回:**
890
891视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
892
893- 如果回调函数对象创建成功,返回VIDEO_PROCESSING_SUCCESS。
894
895- 如果callback为空或者\*callback不为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
896
897- 如果内存不足,返回VIDEO_PROCESSING_ERROR_NO_MEMORY。
898
899
900### OH_VideoProcessingCallback_Destroy()
901
902```
903VideoProcessing_ErrorCode OH_VideoProcessingCallback_Destroy (VideoProcessing_Callback * callback)
904```
905
906**描述**
907
908销毁回调对象。
909
910回调对象在注册之后就可以销毁。
911
912**起始版本:** 12
913
914**参数:**
915
916| 名称 | 描述 |
917| -------- | -------- |
918| callback | 指向回调对象的指针,建议在回调对象销毁之后将其设置为空指针。 |
919
920**返回:**
921
922视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
923
924- 如果回调对象销毁成功,返回VIDEO_PROCESSING_SUCCESS。
925
926- 如果callback为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
927
928
929## 变量说明
930
931
932### VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL
933
934```
935const char* VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL
936```
937
938**描述**
939
940指定视频细节增强的质量等级。
941
942参阅 [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel)查看具体取值。 调用 [OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter)设置质量等级。 调用 [OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter)获取当前质量等级。
943
944**起始版本:** 12
945
946
947### VIDEO_PROCESSING_TYPE_COLOR_SPACE_CONVERSION
948
949```
950const int32_t VIDEO_PROCESSING_TYPE_COLOR_SPACE_CONVERSION
951```
952
953**描述**
954
955表示创建颜色空间转换视频处理实例。
956
957调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建颜色空间转换视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
958
959**起始版本:** 12
960
961
962### VIDEO_PROCESSING_TYPE_DETAIL_ENHANCER
963
964```
965const int32_t VIDEO_PROCESSING_TYPE_DETAIL_ENHANCER
966```
967
968**描述**
969
970表示创建细节增强视频处理实例。
971
972调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建细节增强视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
973
974**起始版本:** 12
975
976
977### VIDEO_PROCESSING_TYPE_METADATA_GENERATION
978
979```
980const int32_t VIDEO_PROCESSING_TYPE_METADATA_GENERATION
981```
982
983**描述**
984
985表示创建元数据生成视频处理实例。
986
987调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建元数据生成视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
988
989**起始版本:** 12
990