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