# VideoProcessing
## 概述
提供用于视频处理的API函数。
提供视频处理能力,包括颜色空间转换、元数据生成和视频缩放。
**起始版本:** 12
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [video_processing.h](video__processing_8h.md) | 声明视频处理函数。 |
| [video_processing_types.h](video__processing__types_8h.md) | 视频处理类型定义。 |
### 结构体
| 名称 | 描述 |
| -------- | -------- |
| struct [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) | 视频颜色空间信息数据结构。 |
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| typedef struct [OH_VideoProcessing](#oh_videoprocessing-1) [OH_VideoProcessing](#oh_videoprocessing) | 定义视频处理对象。 |
| typedef struct NativeWindow [OHNativeWindow](#ohnativewindow) | 定义NativeWindow对象。 |
| typedef struct [OH_AVFormat](#oh_avformat-1) [OH_AVFormat](#oh_avformat) | 定义OH_AVFormat对象。 |
| typedef struct [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) [VideoProcessing_ColorSpaceInfo](#videoprocessing_colorspaceinfo) | 视频颜色空间信息数据结构。 |
| typedef enum [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel-1) [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel) | 用于细节增强的质量等级。 |
| typedef enum [VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) [VideoProcessing_ErrorCode](#videoprocessing_errorcode) | 视频处理错误码。 |
| typedef enum [VideoProcessing_State](#videoprocessing_state-1) [VideoProcessing_State](#videoprocessing_state) | 视频处理状态。 |
| typedef struct [VideoProcessing_Callback](#videoprocessing_callback) [VideoProcessing_Callback](#videoprocessing_callback) | 视频处理回调对象类型。 |
| typedef void(\* [OH_VideoProcessingCallback_OnError](#oh_videoprocessingcallback_onerror)) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [VideoProcessing_ErrorCode](#videoprocessing_errorcode) error, void \*userData) | 视频处理过程中报告错误的回调函数指针。 |
| typedef void(\* [OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [VideoProcessing_State](#videoprocessing_state) state, void \*userData) | 报告视频处理状态的回调函数指针。 |
| typedef void(\* [OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer)) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, uint32_t index, void \*userData) | 报告输出buffer已填充好数据的回调函数指针。 |
### 枚举
| 名称 | 描述 |
| -------- | -------- |
| [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel-1) {
VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_NONE,
VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_LOW,
VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_MEDIUM,
VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_HIGH } | 用于细节增强的质量等级。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) {
VIDEO_PROCESSING_SUCCESS,
VIDEO_PROCESSING_ERROR_INVALID_PARAMETER = 401,
VIDEO_PROCESSING_ERROR_UNKNOWN = 29210001,
VIDEO_PROCESSING_ERROR_INITIALIZE_FAILED,
VIDEO_PROCESSING_ERROR_CREATE_FAILED,
VIDEO_PROCESSING_ERROR_PROCESS_FAILED,
VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING,
VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED,
VIDEO_PROCESSING_ERROR_NO_MEMORY,
VIDEO_PROCESSING_ERROR_INVALID_INSTANCE,
VIDEO_PROCESSING_ERROR_INVALID_VALUE
} | 视频处理错误码。 |
| [VideoProcessing_State](#videoprocessing_state-1) {
VIDEO_PROCESSING_STATE_RUNNING,
VIDEO_PROCESSING_STATE_STOPPED } | 视频处理状态。 |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment) (void) | 初始化视频处理全局环境。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_DeinitializeEnvironment](#oh_videoprocessing_deinitializeenvironment) (void) | 释放视频处理全局环境。 |
| 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) | 查询是否支持视频颜色空间转换。 |
| bool [OH_VideoProcessing_IsMetadataGenerationSupported](#oh_videoprocessing_ismetadatagenerationsupported) (const [VideoProcessing_ColorSpaceInfo](_video_processing___color_space_info.md) \*sourceVideoInfo) | 查询是否支持视频元数据生成。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Create](#oh_videoprocessing_create) ([OH_VideoProcessing](#oh_videoprocessing) \*\*videoProcessor, int type) | 创建视频处理实例。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Destroy](#oh_videoprocessing_destroy) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor) | 销毁视频处理实例。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_RegisterCallback](#oh_videoprocessing_registercallback) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, const [VideoProcessing_Callback](#videoprocessing_callback) \*callback, void \*userData) | 注册回调函数。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_SetSurface](#oh_videoprocessing_setsurface) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, const [OHNativeWindow](#ohnativewindow) \*window) | 设置视频处理输出surface。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_GetSurface](#oh_videoprocessing_getsurface) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [OHNativeWindow](#ohnativewindow) \*\*window) | 创建surface。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, const [OH_AVFormat](#oh_avformat) \*parameter) | 设置视频处理输出参数。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, [OH_AVFormat](#oh_avformat) \*parameter) | 获取视频处理参数。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Start](#oh_videoprocessing_start) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor) | 启动视频处理。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_Stop](#oh_videoprocessing_stop) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor) | 停止视频处理。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessing_RenderOutputBuffer](#oh_videoprocessing_renderoutputbuffer) ([OH_VideoProcessing](#oh_videoprocessing) \*videoProcessor, uint32_t index) | 渲染处理并输出buffer。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessingCallback_Create](#oh_videoprocessingcallback_create) ([VideoProcessing_Callback](#videoprocessing_callback) \*\*callback) | 创建视频处理回调函数对象。 |
| [VideoProcessing_ErrorCode](#videoprocessing_errorcode) [OH_VideoProcessingCallback_Destroy](#oh_videoprocessingcallback_destroy) ([VideoProcessing_Callback](#videoprocessing_callback) \*callback) | 销毁回调对象。 |
| [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)到回调对象。 |
| [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)到回调对象。 |
| [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)到回调对象。 |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| const int32_t [VIDEO_PROCESSING_TYPE_COLOR_SPACE_CONVERSION](#video_processing_type_color_space_conversion) | 表示创建颜色空间转换视频处理实例。 |
| const int32_t [VIDEO_PROCESSING_TYPE_METADATA_GENERATION](#video_processing_type_metadata_generation) | 表示创建元数据生成视频处理实例。 |
| const int32_t [VIDEO_PROCESSING_TYPE_DETAIL_ENHANCER](#video_processing_type_detail_enhancer) | 表示创建细节增强视频处理实例。 |
| const char \* [VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL](#video_detail_enhancer_parameter_key_quality_level) | 指定视频细节增强的质量等级。 |
## 类型定义说明
### OH_AVFormat
```
typedef struct OH_AVFormatOH_AVFormat
```
**描述**
定义OH_AVFormat对象。
**起始版本:** 12
### OH_VideoProcessing
```
typedef struct OH_VideoProcessingOH_VideoProcessing
```
**描述**
定义视频处理对象。
定义一个OH_VideoProcessing空指针,调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建视频处理实例,该指针在创建实例之前必须为空。 用户可以对不同的处理类型创建不同的视频处理实例。
**起始版本:** 12
### OH_VideoProcessingCallback_OnError
```
typedef void(* OH_VideoProcessingCallback_OnError) (OH_VideoProcessing *videoProcessor, VideoProcessing_ErrorCode error, void *userData)
```
**描述**
视频处理过程中报告错误的回调函数指针。
错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING,不支持的处理,比如不支持输入输出的颜色空间类型转换。
- VIDEO_PROCESSING_ERROR_INVALID_VALUE,无效的视频属性,比如视频的颜色空间无效。
- VIDEO_PROCESSING_ERROR_NO_MEMORY, 内存不足。
- VIDEO_PROCESSING_ERROR_PROCESS_FAILED,处理过程中出错。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 视频处理实例。 |
| error | 报告给用户的错误码。 |
| userData | 用户的自定义数据。 |
### OH_VideoProcessingCallback_OnNewOutputBuffer
```
typedef void(* OH_VideoProcessingCallback_OnNewOutputBuffer) (OH_VideoProcessing *videoProcessor, uint32_t index, void *userData)
```
**描述**
报告输出buffer已填充好数据的回调函数指针。
每个新输出buffer填充好数据之后该buffer的索引就会报告给用户。调用[OH_VideoProcessing_RenderOutputBuffer](#oh_videoprocessing_renderoutputbuffer)根据索引来处理渲染并输出该buffer。 如果未注册该函数,则输出buffer填充好数据后不会报告用户,而是直接进行处理渲染并输出。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 视频处理实例。 |
| index | 新输出buffer的索引。 |
| userData | 用户自定义的数据。 |
### OH_VideoProcessingCallback_OnState
```
typedef void(* OH_VideoProcessingCallback_OnState) (OH_VideoProcessing *videoProcessor, VideoProcessing_State state, void *userData)
```
**描述**
报告视频处理状态的回调函数指针。
[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)。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 视频处理实例。 |
| state | 参阅 [VideoProcessing_State](#videoprocessing_state)。 |
| userData | 用户的自定义数据。 |
### OHNativeWindow
```
typedef struct NativeWindow OHNativeWindow
```
**描述**
定义NativeWindow对象。
**起始版本:** 12
### VideoDetailEnhancer_QualityLevel
```
typedef enum VideoDetailEnhancer_QualityLevelVideoDetailEnhancer_QualityLevel
```
**描述**
用于细节增强的质量等级。
参数[VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL](#video_detail_enhancer_parameter_key_quality_level)的具体取值,设置方法详见开发指南。
**参见:**[OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter)、[OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter)
**起始版本:** 12
### VideoProcessing_Callback
```
typedef struct VideoProcessing_CallbackVideoProcessing_Callback
```
**描述**
视频处理回调对象类型。
定义一个VideoProcessing_Callback空指针,调用[OH_VideoProcessingCallback_Create](#oh_videoprocessingcallback_create)来创建一个回调对象。创建之前该指针必须为空。 通过调用[OH_VideoProcessing_RegisterCallback](#oh_videoprocessing_registercallback)来向视频处理实例注册回调对象。
**起始版本:** 12
### VideoProcessing_ColorSpaceInfo
```
typedef struct VideoProcessing_ColorSpaceInfoVideoProcessing_ColorSpaceInfo
```
**描述**
视频颜色空间信息数据结构。
**参见:**[OH_VideoProcessing_IsColorSpaceConversionSupported](#oh_videoprocessing_iscolorspaceconversionsupported)
**起始版本:** 12
### VideoProcessing_ErrorCode
```
typedef enum VideoProcessing_ErrorCodeVideoProcessing_ErrorCode
```
**描述**
视频处理错误码。
**起始版本:** 12
### VideoProcessing_State
```
typedef enum VideoProcessing_StateVideoProcessing_State
```
**描述**
视频处理状态。
视频处理状态通过回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)进行报告。
**起始版本:** 12
## 枚举类型说明
### VideoDetailEnhancer_QualityLevel
```
enum VideoDetailEnhancer_QualityLevel
```
**描述**
用于细节增强的质量等级。
参数[VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL](#video_detail_enhancer_parameter_key_quality_level)的具体取值,设置方法详见开发指南。
**参见:**[OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter)、[OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter)
**起始版本:** 12
| 枚举值 | 描述 |
| -------- | -------- |
| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_NONE | 无细节增强。 |
| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_LOW | 低质量等级细节增强,速度较快,默认设置。 |
| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_MEDIUM | 中等质量等级细节增强,速度适中。 |
| VIDEO_DETAIL_ENHANCER_QUALITY_LEVEL_HIGH | 高质量等级细节增强,速度相对较慢。 |
### VideoProcessing_ErrorCode
```
enum VideoProcessing_ErrorCode
```
**描述**
视频处理错误码。
**起始版本:** 12
| 枚举值 | 描述 |
| -------- | -------- |
| VIDEO_PROCESSING_SUCCESS | 处理成功。 |
| VIDEO_PROCESSING_ERROR_INVALID_PARAMETER | 输入参数无效。以下情况都会返回该错误码:
1 - 无效的输入或输出视频buffer,视频buffer为空。
2 - 无效的参数,参数为空。
3 - 无效的处理类型。 |
| VIDEO_PROCESSING_ERROR_UNKNOWN | 未知错误,比如GPU计算失败或memcpy失败。 |
| VIDEO_PROCESSING_ERROR_INITIALIZE_FAILED | 视频处理全局环境初始化失败,比如初始化GPU环境失败。 |
| VIDEO_PROCESSING_ERROR_CREATE_FAILED | 创建视频处理实例失败,比如实例总数超出上限。 |
| VIDEO_PROCESSING_ERROR_PROCESS_FAILED | 处理过程失败,比如处理时间超时。 |
| VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING | 不支持的处理类型,可以调用 OH_VideoProcessing_IsXXXSupported来检查是否支持这种处理。 |
| VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED | 不允许的操作,比如不满足调用接口所需的运行状态下调用该接口。 |
| VIDEO_PROCESSING_ERROR_NO_MEMORY | 内存不足。 |
| VIDEO_PROCESSING_ERROR_INVALID_INSTANCE | 视频处理实例无效,比如视频处理实例为空实例。 |
| VIDEO_PROCESSING_ERROR_INVALID_VALUE | 输入值无效,以下情况都会造成这种错误:
1 - 视频buffer宽高太大或者颜色空间错误。
2 - 参数包含无效的值,比如细节增强的质量等级错误。 |
### VideoProcessing_State
```
enum VideoProcessing_State
```
**描述**
视频处理状态。
视频处理状态通过回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)进行报告。
**起始版本:** 12
| 枚举值 | 描述 |
| -------- | -------- |
| VIDEO_PROCESSING_STATE_RUNNING | 视频处理进行中。 |
| VIDEO_PROCESSING_STATE_STOPPED | 视频处理已停止。 |
## 函数说明
### OH_VideoProcessing_Create()
```
VideoProcessing_ErrorCode OH_VideoProcessing_Create (OH_VideoProcessing ** videoProcessor, int type )
```
**描述**
创建视频处理实例。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 输出参数。指向视频处理对象的指针的指针。 输入前\*videoProcessor必须是空指针。 |
| type | 使用VIDEO_PROCESSING_TYPE_XXX来指定处理类型。实例的处理类型不能改变。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果视频处理实例创建成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果处理类型不支持,返回VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING,
例如,如果不支持元数据生成就返回VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
- 如果创建视频处理实例失败,返回VIDEO_PROCESSING_ERROR_CREATE_FAILED。
- 如果实例为空或实例的指针非空,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果处理类型无效,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
### OH_VideoProcessing_DeinitializeEnvironment()
```
VideoProcessing_ErrorCode OH_VideoProcessing_DeinitializeEnvironment (void )
```
**描述**
释放视频处理全局环境。
调用前,必须调用[OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment)初始化。 通常在主进程即将退出时调用该函数来释放通过调用[OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment)函数初始化的全局环境。 如果仍有视频处理的实例运行中,就不能调用该函数。
**起始版本:** 12
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果还有视频处理的实例没有销毁或者没有调用[OH_VideoProcessing_InitializeEnvironment](#oh_videoprocessing_initializeenvironment),返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
### OH_VideoProcessing_Destroy()
```
VideoProcessing_ErrorCode OH_VideoProcessing_Destroy (OH_VideoProcessing * videoProcessor)
```
**描述**
销毁视频处理实例。
销毁之前先停止实例,参阅[OH_VideoProcessing_Stop](#oh_videoprocessing_stop)。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针,建议在实例销毁之后将其设置为空指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果实例销毁成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果实例仍在运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
### OH_VideoProcessing_GetParameter()
```
VideoProcessing_ErrorCode OH_VideoProcessing_GetParameter (OH_VideoProcessing * videoProcessor, OH_AVFormat * parameter )
```
**描述**
获取视频处理参数。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
| parameter | 指向视频处理参数实例的指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果参数获取成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果参数为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
### OH_VideoProcessing_GetSurface()
```
VideoProcessing_ErrorCode OH_VideoProcessing_GetSurface (OH_VideoProcessing * videoProcessor, OHNativeWindow ** window )
```
**描述**
创建surface。
在视频处理启动之前创建输入surface。调用[OH_NativeWindow_DestroyNativeWindow](../apis-arkgraphics2d/_native_window.md#oh_nativewindow_destroynativewindow)销毁输入surface。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
| window | 指向输入surface的指针。例如,此输入surface指针可以指向视频解码器输出surface。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果window为空指针或指向window的指针不为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
- 如果创建surface失败,或者输入surface已经创建,或者视频处理实例还在运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
### OH_VideoProcessing_InitializeEnvironment()
```
VideoProcessing_ErrorCode OH_VideoProcessing_InitializeEnvironment (void )
```
**描述**
初始化视频处理全局环境。
该函数是可选的。 该函数只在主进程启动时被调用一次,用于初始化视频处理全局环境,这样可以减少[OH_VideoProcessing_Create](#oh_videoprocessing_create)的时间。 调用[OH_VideoProcessing_DeinitializeEnvironment](#oh_videoprocessing_deinitializeenvironment)释放视频处理全局环境。 初始化后,必须释放视频处理全局环境,释放方式及时机详见[OH_VideoProcessing_DeinitializeEnvironment](#oh_videoprocessing_deinitializeenvironment)。
**起始版本:** 12
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
如果初始化成功,返回VIDEO_PROCESSING_SUCCESS,否则返回VIDEO_PROCESSING_ERROR_INITIALIZE_FAILED。
如果失败,应用需要检查GPU是否正常工作。
### OH_VideoProcessing_IsColorSpaceConversionSupported()
```
bool OH_VideoProcessing_IsColorSpaceConversionSupported (const VideoProcessing_ColorSpaceInfo * sourceVideoInfo, const VideoProcessing_ColorSpaceInfo * destinationVideoInfo )
```
**描述**
查询是否支持视频颜色空间转换。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| sourceVideoInfo | 输入视频颜色空间信息。 |
| destinationVideoInfo | 输出视频颜色空间信息。 |
**返回:**
如果支持视频颜色空间转换返回**true**,否则返回**false**。
### OH_VideoProcessing_IsMetadataGenerationSupported()
```
bool OH_VideoProcessing_IsMetadataGenerationSupported (const VideoProcessing_ColorSpaceInfo * sourceVideoInfo)
```
**描述**
查询是否支持视频元数据生成。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| sourceVideoInfo | 输入视频颜色空间信息。 |
**返回:**
如果支持视频元数据生成返回**true**,否则返回**false**。
### OH_VideoProcessing_RegisterCallback()
```
VideoProcessing_ErrorCode OH_VideoProcessing_RegisterCallback (OH_VideoProcessing * videoProcessor, const VideoProcessing_Callback * callback, void * userData )
```
**描述**
注册回调函数。
在开始视频处理之前注册回调函数,视频处理过程中无法注册回调函数。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
| callback | 回调函数指针。 |
| userData | 指向用户特定数据的指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果回调函数注册成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果回调函数指针为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
- 如果实例仍在运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
### OH_VideoProcessing_RenderOutputBuffer()
```
VideoProcessing_ErrorCode OH_VideoProcessing_RenderOutputBuffer (OH_VideoProcessing * videoProcessor, uint32_t index )
```
**描述**
渲染处理并输出buffer。
如果设置了回调函数[OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer),当输出buffer准备好之后会通过回调函数把buffer的索引返回给用户。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
| index | 输出buffer的索引。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果索引值无效,输出VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
- 如果没有设置回调函数[OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer)或者实例已经停止运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
### OH_VideoProcessing_SetParameter()
```
VideoProcessing_ErrorCode OH_VideoProcessing_SetParameter (OH_VideoProcessing * videoProcessor, const OH_AVFormat * parameter )
```
**描述**
设置视频处理输出参数。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
| parameter | 指向视频处理参数实例的指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果参数设置成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果参数为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
- 如果参数的某些属性无效,返回VIDEO_PROCESSING_ERROR_INVALID_VALUE,例如,包含不支持的参数值。
- 如果内存分配失败,返回VIDEO_PROCESSING_ERROR_NO_MEMORY。
### OH_VideoProcessing_SetSurface()
```
VideoProcessing_ErrorCode OH_VideoProcessing_SetSurface (OH_VideoProcessing * videoProcessor, const OHNativeWindow * window )
```
**描述**
设置视频处理输出surface。
在视频处理启动之前设置输出surface。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
| window | 指向输出surface的指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果输出surface设置成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果window为空指针,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
### OH_VideoProcessing_Start()
```
VideoProcessing_ErrorCode OH_VideoProcessing_Start (OH_VideoProcessing * videoProcessor)
```
**描述**
启动视频处理。
成功启动后,回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)会报告VIDEO_PROCESSING_STATE_RUNNING状态,状态说明参阅[VideoProcessing_State](#videoprocessing_state)。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果没有设置输出surface,或者没有创建输入surface,或者实例已经运行,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
### OH_VideoProcessing_Stop()
```
VideoProcessing_ErrorCode OH_VideoProcessing_Stop (OH_VideoProcessing * videoProcessor)
```
**描述**
停止视频处理。
成功停止后,回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)会报告VIDEO_PROCESSING_STATE_STOPPED状态,状态说明参阅[VideoProcessing_State](#videoprocessing_state)。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| videoProcessor | 指向视频处理实例的指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果执行成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果实例为空或者不是一个视频处理实例,返回VIDEO_PROCESSING_ERROR_INVALID_INSTANCE。
- 如果实例已经停止,返回VIDEO_PROCESSING_ERROR_OPERATION_NOT_PERMITTED。
### OH_VideoProcessingCallback_BindOnError()
```
VideoProcessing_ErrorCode OH_VideoProcessingCallback_BindOnError (VideoProcessing_Callback * callback, OH_VideoProcessingCallback_OnError onError )
```
**描述**
绑定回调函数[OH_VideoProcessingCallback_OnError](#oh_videoprocessingcallback_onerror)到回调对象。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 指向回调对象的指针。 |
| onError | 回调函数。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果函数绑定成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果callback为空或者onError为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
### OH_VideoProcessingCallback_BindOnNewOutputBuffer()
```
VideoProcessing_ErrorCode OH_VideoProcessingCallback_BindOnNewOutputBuffer (VideoProcessing_Callback * callback, OH_VideoProcessingCallback_OnNewOutputBuffer onNewOutputBuffer )
```
**描述**
绑定回调函数[OH_VideoProcessingCallback_OnNewOutputBuffer](#oh_videoprocessingcallback_onnewoutputbuffer)到回调对象。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 指向回调对象的指针。 |
| onNewOutputBuffer | 回调函数。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果函数绑定成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果callback为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
### OH_VideoProcessingCallback_BindOnState()
```
VideoProcessing_ErrorCode OH_VideoProcessingCallback_BindOnState (VideoProcessing_Callback * callback, OH_VideoProcessingCallback_OnState onState )
```
**描述**
绑定回调函数[OH_VideoProcessingCallback_OnState](#oh_videoprocessingcallback_onstate)到回调对象。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 指向回调对象的指针。 |
| onState | 回调函数。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果函数绑定成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果callback为空或者onState为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
### OH_VideoProcessingCallback_Create()
```
VideoProcessing_ErrorCode OH_VideoProcessingCallback_Create (VideoProcessing_Callback ** callback)
```
**描述**
创建视频处理回调函数对象。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 输出参数。\*callback是指向回调函数对象的指针。在创建回调函数对象之前\*callback必须为空指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果回调函数对象创建成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果callback为空或者\*callback不为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
- 如果内存不足,返回VIDEO_PROCESSING_ERROR_NO_MEMORY。
### OH_VideoProcessingCallback_Destroy()
```
VideoProcessing_ErrorCode OH_VideoProcessingCallback_Destroy (VideoProcessing_Callback * callback)
```
**描述**
销毁回调对象。
回调对象在注册之后就可以销毁。
**起始版本:** 12
**参数:**
| 名称 | 描述 |
| -------- | -------- |
| callback | 指向回调对象的指针,建议在回调对象销毁之后将其设置为空指针。 |
**返回:**
视频处理错误码[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1):
- 如果回调对象销毁成功,返回VIDEO_PROCESSING_SUCCESS。
- 如果callback为空,返回VIDEO_PROCESSING_ERROR_INVALID_PARAMETER。
## 变量说明
### VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL
```
const char* VIDEO_DETAIL_ENHANCER_PARAMETER_KEY_QUALITY_LEVEL
```
**描述**
指定视频细节增强的质量等级。
参阅 [VideoDetailEnhancer_QualityLevel](#videodetailenhancer_qualitylevel)查看具体取值。 调用 [OH_VideoProcessing_SetParameter](#oh_videoprocessing_setparameter)设置质量等级。 调用 [OH_VideoProcessing_GetParameter](#oh_videoprocessing_getparameter)获取当前质量等级。
**起始版本:** 12
### VIDEO_PROCESSING_TYPE_COLOR_SPACE_CONVERSION
```
const int32_t VIDEO_PROCESSING_TYPE_COLOR_SPACE_CONVERSION
```
**描述**
表示创建颜色空间转换视频处理实例。
调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建颜色空间转换视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
**起始版本:** 12
### VIDEO_PROCESSING_TYPE_DETAIL_ENHANCER
```
const int32_t VIDEO_PROCESSING_TYPE_DETAIL_ENHANCER
```
**描述**
表示创建细节增强视频处理实例。
调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建细节增强视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
**起始版本:** 12
### VIDEO_PROCESSING_TYPE_METADATA_GENERATION
```
const int32_t VIDEO_PROCESSING_TYPE_METADATA_GENERATION
```
**描述**
表示创建元数据生成视频处理实例。
调用[OH_VideoProcessing_Create](#oh_videoprocessing_create)创建元数据生成视频处理实例,如果不支持该能力返回[VideoProcessing_ErrorCode](#videoprocessing_errorcode-1) VIDEO_PROCESSING_ERROR_UNSUPPORTED_PROCESSING。
**起始版本:** 12