1e41f4b71Sopenharmony_ci# VideoEncoder
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## 概述
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciVideoEncoder模块提供用于视频编码的接口。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.VideoEncoder
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**起始版本:** 9
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci接口在每个版本,对每种模式的支持情况说明,如下图所示。
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci![meaning](figures/meaning.PNG)
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci![desciption of encode api history](figures/video-encode-api.PNG)
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci## 汇总
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci### 文件
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci| 名称 | 描述 | 
24e41f4b71Sopenharmony_ci| -------- | -------- |
25e41f4b71Sopenharmony_ci| [native_avcodec_videoencoder.h](native__avcodec__videoencoder_8h.md) | 声明用于视频编码的接口。  |
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci### 类型定义
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci| 名称 | 描述 | 
31e41f4b71Sopenharmony_ci| -------- | -------- |
32e41f4b71Sopenharmony_ci| typedef void(\* [OH_VideoEncoder_OnNeedInputParameter](#oh_videoencoder_onneedinputparameter)) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index, OH_AVFormat \*parameter, void \*userData) | 配置随帧参数,当需要设置index对应帧的编码参数时,可以通过该接口设置。只在Surface模式生效。  | 
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci### 枚举
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci| 名称 | 描述 | 
37e41f4b71Sopenharmony_ci| -------- | -------- |
38e41f4b71Sopenharmony_ci| [OH_VideoEncodeBitrateMode](#oh_videoencodebitratemode) { CBR = 0, VBR = 1, CQ = 2 } | 视频编码器的码率控制模式。  | 
39e41f4b71Sopenharmony_ci
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci### 函数
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci| 名称 | 描述 | 
44e41f4b71Sopenharmony_ci| -------- | -------- |
45e41f4b71Sopenharmony_ci| [OH_AVCodec](_codec_base.md#oh_avcodec) \* [OH_VideoEncoder_CreateByMime](#oh_videoencoder_createbymime) (const char \*mime) | 根据MIME类型创建视频编码器实例,推荐使用。  |
46e41f4b71Sopenharmony_ci| [OH_AVCodec](_codec_base.md#oh_avcodec) \* [OH_VideoEncoder_CreateByName](#oh_videoencoder_createbyname) (const char \*name) | 根据视频编码器名称创建视频编码器实例。  |
47e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_Destroy](#oh_videoencoder_destroy) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 清理编码器内部资源,销毁编码器实例。  | 
48e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_SetCallback](#oh_videoencoder_setcallback) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md) callback, void \*userData) | 设置OH_AVCodecCallback回调函数,让应用可以响应视频编码器生成的事件。(API11废弃)  |
49e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_RegisterCallback](#oh_videoencoder_registercallback) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OH_AVCodecCallback](_o_h___a_v_codec_callback.md) callback, void \*userData) | 注册OH_AVCodecCallback回调函数,让应用可以响应视频编码器生成的事件。  | 
50e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_RegisterParameterCallback](#oh_videoencoder_registerparametercallback) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OH_VideoEncoder_OnNeedInputParameter](#oh_videoencoder_onneedinputparameter) onInputParameter, void \*userData) | 注册OH_AVCodecCallback输入参数回调函数,让应用可以响应视频编码器生成的事件。  | 
51e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_Configure](#oh_videoencoder_configure) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, OH_AVFormat \*format) | 配置视频编码器的编码参数,通常需要配置要编码的视频轨的描述信息,如宽、高、像素格式等。  |
52e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_Prepare](#oh_videoencoder_prepare) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 准备编码器的内部资源。  | 
53e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_Start](#oh_videoencoder_start) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 调用OH_VideoEncoder_Prepare接口成功后调用此接口启动编码器。  |
54e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_Stop](#oh_videoencoder_stop) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 停止编码器,释放输入输出buffer。  |
55e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_Flush](#oh_videoencoder_flush) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 清除编码器中缓存的输入和输出数据及参数集如H264格式的PPS/SPS。  |
56e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_Reset](#oh_videoencoder_reset) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 重置编码器,编码器回到初始化状态。  |
57e41f4b71Sopenharmony_ci| OH_AVFormat \* [OH_VideoEncoder_GetOutputDescription](#oh_videoencoder_getoutputdescription) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 获取编码器输出数据的OH_AVFormat信息。  |
58e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_SetParameter](#oh_videoencoder_setparameter) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, OH_AVFormat \*format) | 在编码器运行时设置编码器参数。  | 
59e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_GetSurface](#oh_videoencoder_getsurface) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, [OHNativeWindow](_codec_base.md#ohnativewindow) \*\*window) | 从视频编码器获取输入surface。  |
60e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_FreeOutputData](#oh_videoencoder_freeoutputdata) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将处理后的输出缓冲区返回给编码器。(API11废弃)   |
61e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_NotifyEndOfStream](#oh_videoencoder_notifyendofstream) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 通知视频编码器输入流已结束。  | 
62e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_PushInputData](#oh_videoencoder_pushinputdata) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) attr) | 将填入数据的输入缓冲区提交给视频编码器。(API11废弃)   |
63e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_PushInputBuffer](#oh_videoencoder_pushinputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | Buffer模式下,将index对应的OH_AVBuffer送入编码器编码。  |
64e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_PushInputParameter](#oh_videoencoder_pushinputparameter) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | Surface模式下,将index对应帧的编码参数送入编码器编码。  | 
65e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_FreeOutputBuffer](#oh_videoencoder_freeoutputbuffer) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, uint32_t index) | 将处理后的index对应的OH_AVBuffer返回给编码器。  | 
66e41f4b71Sopenharmony_ci| OH_AVFormat \* [OH_VideoEncoder_GetInputDescription](#oh_videoencoder_getinputdescription) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec) | 编码器接收到的图像的描述信息。  |
67e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_VideoEncoder_IsValid](#oh_videoencoder_isvalid) ([OH_AVCodec](_codec_base.md#oh_avcodec) \*codec, bool \*isValid) | 检查当前编码实例是否有效。  | 
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci## 类型定义说明
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci### OH_VideoEncoder_OnNeedInputParameter
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci```
75e41f4b71Sopenharmony_citypedef void(* OH_VideoEncoder_OnNeedInputParameter) (OH_AVCodec *codec, uint32_t index, OH_AVFormat *parameter, void *userData)
76e41f4b71Sopenharmony_ci```
77e41f4b71Sopenharmony_ci**描述**
78e41f4b71Sopenharmony_ci配置随帧参数,当需要设置index对应帧的编码参数时,可以通过该接口设置。只在Surface模式生效。 
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci该接口只能在Surface模式下使用,使用前需要调用OH_VideoEncoder_RegisterParameterCallback接口注册。
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ci在Buffer模式下,OH_AVBuffer可以直接携带帧的编码参数,当前可以支持的随帧参数有帧级QPMin/QPMax,指定LTR设置参考帧。
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci**起始版本:** 12
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci**参数:**
89e41f4b71Sopenharmony_ci
90e41f4b71Sopenharmony_ci| 名称 | 描述 | 
91e41f4b71Sopenharmony_ci| -------- | -------- |
92e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
93e41f4b71Sopenharmony_ci| index | 对应编码帧的index。  | 
94e41f4b71Sopenharmony_ci| parameter | 编码参数。  | 
95e41f4b71Sopenharmony_ci| userData | 调用者执行回调所依赖的数据。  |
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci## 枚举类型说明
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci### OH_VideoEncodeBitrateMode
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci```
104e41f4b71Sopenharmony_cienum OH_VideoEncodeBitrateMode
105e41f4b71Sopenharmony_ci```
106e41f4b71Sopenharmony_ci**描述**
107e41f4b71Sopenharmony_ci视频编码器的码率控制模式。
108e41f4b71Sopenharmony_ci
109e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci**起始版本:** 9
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 
114e41f4b71Sopenharmony_ci| -------- | -------- |
115e41f4b71Sopenharmony_ci| CBR  | 恒定码率模式。   | 
116e41f4b71Sopenharmony_ci| VBR  | 可变码率模式。   | 
117e41f4b71Sopenharmony_ci| CQ  | 恒定QP模式。   | 
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci## 函数说明
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci
123e41f4b71Sopenharmony_ci### OH_VideoEncoder_Configure()
124e41f4b71Sopenharmony_ci
125e41f4b71Sopenharmony_ci```
126e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_Configure (OH_AVCodec *codec, OH_AVFormat *format )
127e41f4b71Sopenharmony_ci```
128e41f4b71Sopenharmony_ci**描述**
129e41f4b71Sopenharmony_ci配置视频编码器的编码参数,通常需要配置要编码的视频轨的描述信息,如宽、高、像素格式等。必须在调用OH_VideoEncoder_Prepare接口之前,调用此接口。
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci该接口对配置参数进行合法性校验,部分非法参数不会强校验,使用默认值或直接丢弃。部分非法参数会强校验,具体规则如下:
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ci以下参数的配置范围可通过[能力查询](../../media/avcodec/obtain-supported-codecs.md)获取,OH_MD_KEY_I_FRAME_INTERVAL暂不支持。
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci设置OH_MD_KEY_VIDEO_ENCODER_ENABLE_TEMPORAL_SCALABILITY、OH_MD_KEY_VIDEO_ENCODER_LTR_FRAME_COUNT接口时如果当前平台不支持,不报错,走正常编码流程。
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ci参数校验:
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ci| Key                                                                       | 配置正常范围的值 | 配置超出范围的值 | 不配置该参数 |
140e41f4b71Sopenharmony_ci| ------------------------------------------------------------------------- | -------- | -------- | ------ |
141e41f4b71Sopenharmony_ci| OH_MD_KEY_WIDTH                                                           | AV_ERR_OK       | AV_ERR_INVALID_VAL       | AV_ERR_INVALID_VAL     |
142e41f4b71Sopenharmony_ci| OH_MD_KEY_HEIGHT                                                          | AV_ERR_OK       | AV_ERR_INVALID_VAL       | AV_ERR_INVALID_VAL     |
143e41f4b71Sopenharmony_ci| OH_MD_KEY_PIXEL_FORMAT 请参阅[OH_AVPixelFormat](_core.md#oh_avpixelformat) | AV_ERR_OK       | AV_ERR_UNSUPPORT       | AV_ERR_OK    |
144e41f4b71Sopenharmony_ci| OH_MD_KEY_FRAME_RATE                                                       | AV_ERR_OK       | AV_ERR_INVALID_VAL       |AV_ERR_OK        |
145e41f4b71Sopenharmony_ci| OH_MD_KEY_PROFILE 请参阅[OH_MD_KEY_PROFILE](_codec_base.md#oh_md_key_profile)    | AV_ERR_OK       | AV_ERR_INVALID_VAL       |AV_ERR_OK       |
146e41f4b71Sopenharmony_ci| OH_MD_KEY_I_FRAME_INTERVAL                                                 | AV_ERR_OK       | \\       | AV_ERR_OK       |
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci| OH_MD_KEY_<br>BITRATE | OH_MD_KEY_<br>QUALITY | OH_MD_KEY_<br>VIDEO_ENCODER_BITRATE_MODE | 返回值 | 说明                     |
149e41f4b71Sopenharmony_ci| :-------------------- | :-------------------- | :--------------------------------------- | ---- | ---------------------- |
150e41f4b71Sopenharmony_ci| \\                    | \\                    | \\                                       |  AV_ERR_OK    | 使用编码器默认值               |
151e41f4b71Sopenharmony_ci| 超出范围                  | 超出范围                  | 不支持的模式                                   | AV_ERR_INVALID_VAL   | 异常值均报错                 |
152e41f4b71Sopenharmony_ci| 正常值                   | 正常值                   | \\                                       | AV_ERR_INVALID_VAL   | Bitrate 与 Quality 冲突   |
153e41f4b71Sopenharmony_ci| 正常值                   | \\                    | \\                                       | AV_ERR_OK     | 使能默认码控模式               |
154e41f4b71Sopenharmony_ci| 正常值                   | \\                    | VBR、CBR                                  | AV_ERR_OK     |                        |
155e41f4b71Sopenharmony_ci| 正常值                   | \\                    | CQ                                       | AV_ERR_INVALID_VAL   | Bitrate 与 CQ 模式冲突      |
156e41f4b71Sopenharmony_ci| \\                    | 正常值                   | \\                                       | AV_ERR_OK     | 使能 CQ 模式               |
157e41f4b71Sopenharmony_ci| \\                    | 正常值                   | CQ                                       | AV_ERR_OK     |                        |
158e41f4b71Sopenharmony_ci| \\                    | 正常值                   | VBR、CBR                                  | AV_ERR_INVALID_VAL   | Quality 与 VBR、CBR 模式冲突 |
159e41f4b71Sopenharmony_ci| \\                    | \\                    | VBR、CBR                                  | AV_ERR_OK     | 使用编码器默认码率              |
160e41f4b71Sopenharmony_ci| \\                    | \\                    | CQ                                       | AV_ERR_OK    | 使用默认quality  |
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci**起始版本:** 9
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci**参数:**
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci| 名称 | 描述 | 
170e41f4b71Sopenharmony_ci| -------- | -------- |
171e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
172e41f4b71Sopenharmony_ci| format | 指向OH_AVFormat的指针,用于给出要编码的视频轨的描述。  | 
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci**返回:**
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci返回接口结果:
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci    1. 输入的codec指针为非编码器实例,或者为空指针;
185e41f4b71Sopenharmony_ci    2. 输入format参数不支持。
186e41f4b71Sopenharmony_ci
187e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
188e41f4b71Sopenharmony_ci
189e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:本接口必须在OH_VideoEncoder_Prepare接口前调用,如果在其他状态时调用,则返回此错误码。
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci### OH_VideoEncoder_CreateByMime()
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci```
197e41f4b71Sopenharmony_ciOH_AVCodec* OH_VideoEncoder_CreateByMime (const char *mime)
198e41f4b71Sopenharmony_ci```
199e41f4b71Sopenharmony_ci**描述**
200e41f4b71Sopenharmony_ci根据MIME类型创建视频编码器实例,推荐使用。
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci**起始版本:** 9
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**参数:**
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci| 名称 | 描述 | 
209e41f4b71Sopenharmony_ci| -------- | -------- |
210e41f4b71Sopenharmony_ci| mime | MIME类型描述字符串,请参阅[AVCODEC_MIMETYPE](_codec_base.md#变量)。 | 
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**返回:**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci成功则返回一个指向视频编码实例的指针。如果输入为不支持的编码器类型或内存不足时,则返回NULL。
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci
217e41f4b71Sopenharmony_ci### OH_VideoEncoder_CreateByName()
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci```
220e41f4b71Sopenharmony_ciOH_AVCodec* OH_VideoEncoder_CreateByName (const char *name)
221e41f4b71Sopenharmony_ci```
222e41f4b71Sopenharmony_ci**描述**
223e41f4b71Sopenharmony_ci根据视频编码器名称创建视频编码器实例。使用此接口的前提是知道编码器的确切名称,编码器的名称可以通过能力查询获取。
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_ci**起始版本:** 9
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci**参数:**
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci| 名称 | 描述 | 
232e41f4b71Sopenharmony_ci| -------- | -------- |
233e41f4b71Sopenharmony_ci| name | 视频编码器名称。  | 
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ci**返回:**
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_ci成功则返回一个指向视频编码实例的指针。如果输入是不支持编码器名称或者内存资源不足,则返回NULL。
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci
240e41f4b71Sopenharmony_ci### OH_VideoEncoder_Destroy()
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci```
243e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_Destroy (OH_AVCodec *codec)
244e41f4b71Sopenharmony_ci```
245e41f4b71Sopenharmony_ci**描述**
246e41f4b71Sopenharmony_ci清理编码器内部资源,销毁编码器实例。不能重复销毁。
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci**起始版本:** 9
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci**参数:**
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci| 名称 | 描述 | 
255e41f4b71Sopenharmony_ci| -------- | -------- |
256e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci**返回:**
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci返回接口结果:
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
267e41f4b71Sopenharmony_ci
268e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
269e41f4b71Sopenharmony_ci
270e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci### OH_VideoEncoder_Flush()
274e41f4b71Sopenharmony_ci
275e41f4b71Sopenharmony_ci```
276e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_Flush (OH_AVCodec *codec)
277e41f4b71Sopenharmony_ci```
278e41f4b71Sopenharmony_ci**描述**
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_ci清除编码器中缓存的输入和输出数据及参数集如H264格式的PPS/SPS281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ci调用此接口后,以前通过异步回调上报的所有缓冲区index都将失效,请确保不要访问这些index对应的缓冲区。该接口不能连续调用。
283e41f4b71Sopenharmony_ci
284e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
285e41f4b71Sopenharmony_ci
286e41f4b71Sopenharmony_ci**起始版本:** 9
287e41f4b71Sopenharmony_ci
288e41f4b71Sopenharmony_ci**参数:**
289e41f4b71Sopenharmony_ci
290e41f4b71Sopenharmony_ci| 名称 | 描述 | 
291e41f4b71Sopenharmony_ci| -------- | -------- |
292e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci**返回:**
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci返回接口结果:
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci
311e41f4b71Sopenharmony_ci### OH_VideoEncoder_FreeOutputBuffer()
312e41f4b71Sopenharmony_ci
313e41f4b71Sopenharmony_ci```
314e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_FreeOutputBuffer (OH_AVCodec *codec, uint32_t index )
315e41f4b71Sopenharmony_ci```
316e41f4b71Sopenharmony_ci**描述**
317e41f4b71Sopenharmony_ci将处理后的index对应的OH_AVBuffer退回给编码器。调用者使用完需要及时调用此接口释放输出缓存区,否则会阻塞编码流程。
318e41f4b71Sopenharmony_ci
319e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci**起始版本:** 11
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci**参数:**
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci| 名称 | 描述 | 
326e41f4b71Sopenharmony_ci| -------- | -------- |
327e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
328e41f4b71Sopenharmony_ci| index | 输出缓冲区对应的索引值。 由[OH_AVCodecOnNewOutputBuffer](_codec_base.md#oh_avcodeconnewoutputbuffer)给出。 |
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci**返回:**
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci返回接口结果:
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci    1. 输入的codec指针为非编码器实例,或者为空指针;
341e41f4b71Sopenharmony_ci    2. 输入format参数不支持;
342e41f4b71Sopenharmony_ci    3. index非法或者连续给同一个index,该错误不影响后续编码流程
343e41f4b71Sopenharmony_ci
344e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
345e41f4b71Sopenharmony_ci
346e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
347e41f4b71Sopenharmony_ci
348e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci### OH_VideoEncoder_GetInputDescription()
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci```
354e41f4b71Sopenharmony_ciOH_AVFormat* OH_VideoEncoder_GetInputDescription (OH_AVCodec *codec)
355e41f4b71Sopenharmony_ci```
356e41f4b71Sopenharmony_ci**描述**
357e41f4b71Sopenharmony_ci编码器接收到的图像的描述信息。调用[OH_VideoEncoder_Configure](#oh_videoencoder_configure)后调用此接口。 
358e41f4b71Sopenharmony_ci
359e41f4b71Sopenharmony_ci需要注意的是,返回指针所指向的OH_AVFormat实例的生命周期需要由调用者通过调用OH_AVFormat_Destroy接口释放,请参阅[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)。
360e41f4b71Sopenharmony_ci
361e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci**起始版本:** 10
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci**参数:**
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ci| 名称 | 描述 | 
368e41f4b71Sopenharmony_ci| -------- | -------- |
369e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
370e41f4b71Sopenharmony_ci
371e41f4b71Sopenharmony_ci**返回:**
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_ci返回指向OH_AVFormat实例的指针。当codec指针非编码实例,或者为空指针,则返回NULL。
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci### OH_VideoEncoder_GetOutputDescription()
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci```
379e41f4b71Sopenharmony_ciOH_AVFormat* OH_VideoEncoder_GetOutputDescription (OH_AVCodec *codec)
380e41f4b71Sopenharmony_ci```
381e41f4b71Sopenharmony_ci**描述**
382e41f4b71Sopenharmony_ci获取编码器输出数据的OH_AVFormat信息。
383e41f4b71Sopenharmony_ci
384e41f4b71Sopenharmony_ci需要注意的是,返回值指向的OH_AVFormat实例的生命周期需要调用者通过调用接口OH_AVFormat_Destroy()释放。
385e41f4b71Sopenharmony_ci
386e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci**起始版本:** 9
389e41f4b71Sopenharmony_ci
390e41f4b71Sopenharmony_ci**参数:**
391e41f4b71Sopenharmony_ci
392e41f4b71Sopenharmony_ci| 名称 | 描述 | 
393e41f4b71Sopenharmony_ci| -------- | -------- |
394e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci**返回:**
397e41f4b71Sopenharmony_ci
398e41f4b71Sopenharmony_ci返回指向OH_AVFormat实例的指针。当输入的codec指针非编码实例,或者为空指针,则返回NULL。
399e41f4b71Sopenharmony_ci
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ci### OH_VideoEncoder_GetSurface()
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_ci```
404e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_GetSurface (OH_AVCodec *codec, OHNativeWindow ** window )
405e41f4b71Sopenharmony_ci```
406e41f4b71Sopenharmony_ci**描述**
407e41f4b71Sopenharmony_ci从视频编码器获取输入surface,必须在调用OH_VideoEncoder_Prepare接口之前调用此接口。
408e41f4b71Sopenharmony_ci
409e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
410e41f4b71Sopenharmony_ci
411e41f4b71Sopenharmony_ci**起始版本:** 9
412e41f4b71Sopenharmony_ci
413e41f4b71Sopenharmony_ci**参数:**
414e41f4b71Sopenharmony_ci
415e41f4b71Sopenharmony_ci| 名称 | 描述 | 
416e41f4b71Sopenharmony_ci| -------- | -------- |
417e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
418e41f4b71Sopenharmony_ci| window | 指向OHNativeWindow实例的指针, 请参阅[OHNativeWindow](_codec_base.md#ohnativewindow)。 应用负责管理window的生命周期,结束时调用OH_NativeWindow_DestroyNativeWindow释放。  | 
419e41f4b71Sopenharmony_ci
420e41f4b71Sopenharmony_ci**返回:**
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci返回接口结果:
423e41f4b71Sopenharmony_ci
424e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
425e41f4b71Sopenharmony_ci
426e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
427e41f4b71Sopenharmony_ci
428e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
429e41f4b71Sopenharmony_ci
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci### OH_VideoEncoder_IsValid()
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci```
434e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_IsValid (OH_AVCodec *codec, bool *isValid )
435e41f4b71Sopenharmony_ci```
436e41f4b71Sopenharmony_ci**描述**
437e41f4b71Sopenharmony_ci检查当前编码实例是否有效。
438e41f4b71Sopenharmony_ci
439e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
440e41f4b71Sopenharmony_ci
441e41f4b71Sopenharmony_ci**起始版本:** 10
442e41f4b71Sopenharmony_ci
443e41f4b71Sopenharmony_ci**参数:**
444e41f4b71Sopenharmony_ci
445e41f4b71Sopenharmony_ci| 名称 | 描述 | 
446e41f4b71Sopenharmony_ci| -------- | -------- |
447e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
448e41f4b71Sopenharmony_ci| isValid | 输出参数,指向布尔类型的指针。指向布尔实例的指针,如果编码器实例有效,则为true,如果编码器实例无效,则为false。建议调用者将isValid初始化为false。  |
449e41f4b71Sopenharmony_ci
450e41f4b71Sopenharmony_ci**返回:**
451e41f4b71Sopenharmony_ci
452e41f4b71Sopenharmony_ci返回接口结果:
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_ci
459e41f4b71Sopenharmony_ci### OH_VideoEncoder_NotifyEndOfStream()
460e41f4b71Sopenharmony_ci
461e41f4b71Sopenharmony_ci```
462e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_NotifyEndOfStream (OH_AVCodec *codec)
463e41f4b71Sopenharmony_ci```
464e41f4b71Sopenharmony_ci**描述**
465e41f4b71Sopenharmony_ci通知视频编码器输入流已结束。建议使用此接口进行通知。该接口只在Surface模式下使用,Buffer模式通过OH_AVBuffer携带EOS信息,通知输入流的结束。
466e41f4b71Sopenharmony_ci
467e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
468e41f4b71Sopenharmony_ci
469e41f4b71Sopenharmony_ci**起始版本:** 9
470e41f4b71Sopenharmony_ci
471e41f4b71Sopenharmony_ci**参数:**
472e41f4b71Sopenharmony_ci
473e41f4b71Sopenharmony_ci| 名称 | 描述 | 
474e41f4b71Sopenharmony_ci| -------- | -------- |
475e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
476e41f4b71Sopenharmony_ci
477e41f4b71Sopenharmony_ci**返回:**
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci返回接口结果:
480e41f4b71Sopenharmony_ci
481e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
482e41f4b71Sopenharmony_ci
483e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
484e41f4b71Sopenharmony_ci
485e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
486e41f4b71Sopenharmony_ci
487e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
488e41f4b71Sopenharmony_ci
489e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
490e41f4b71Sopenharmony_ci
491e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
492e41f4b71Sopenharmony_ci
493e41f4b71Sopenharmony_ci
494e41f4b71Sopenharmony_ci### OH_VideoEncoder_Prepare()
495e41f4b71Sopenharmony_ci
496e41f4b71Sopenharmony_ci```
497e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_Prepare (OH_AVCodec *codec)
498e41f4b71Sopenharmony_ci```
499e41f4b71Sopenharmony_ci**描述**
500e41f4b71Sopenharmony_ci准备编码器的内部资源,在OH_VideoEncoder_Configure接口后调用。
501e41f4b71Sopenharmony_ci
502e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
503e41f4b71Sopenharmony_ci
504e41f4b71Sopenharmony_ci**起始版本:** 9
505e41f4b71Sopenharmony_ci
506e41f4b71Sopenharmony_ci**参数:**
507e41f4b71Sopenharmony_ci
508e41f4b71Sopenharmony_ci| 名称 | 描述 | 
509e41f4b71Sopenharmony_ci| -------- | -------- |
510e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
511e41f4b71Sopenharmony_ci
512e41f4b71Sopenharmony_ci**返回:**
513e41f4b71Sopenharmony_ci
514e41f4b71Sopenharmony_ci返回接口结果:
515e41f4b71Sopenharmony_ci
516e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
517e41f4b71Sopenharmony_ci
518e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
519e41f4b71Sopenharmony_ci
520e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
521e41f4b71Sopenharmony_ci
522e41f4b71Sopenharmony_ci
523e41f4b71Sopenharmony_ci### OH_VideoEncoder_PushInputBuffer()
524e41f4b71Sopenharmony_ci
525e41f4b71Sopenharmony_ci```
526e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_PushInputBuffer (OH_AVCodec *codec, uint32_t index )
527e41f4b71Sopenharmony_ci```
528e41f4b71Sopenharmony_ci**描述**
529e41f4b71Sopenharmony_ciBuffer模式下,将index对应的OH_AVBuffer送入编码器编码。
530e41f4b71Sopenharmony_ci
531e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
532e41f4b71Sopenharmony_ci
533e41f4b71Sopenharmony_ci**起始版本:** 11
534e41f4b71Sopenharmony_ci
535e41f4b71Sopenharmony_ci**参数:**
536e41f4b71Sopenharmony_ci
537e41f4b71Sopenharmony_ci| 名称 | 描述 | 
538e41f4b71Sopenharmony_ci| -------- | -------- |
539e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
540e41f4b71Sopenharmony_ci| index | 输入缓冲区对应的索引值。由[OH_AVCodecOnNeedInputBuffer](_codec_base.md#oh_avcodeconneedinputbuffer)给出。 | 
541e41f4b71Sopenharmony_ci
542e41f4b71Sopenharmony_ci**返回:**
543e41f4b71Sopenharmony_ci
544e41f4b71Sopenharmony_ci返回接口结果:
545e41f4b71Sopenharmony_ci
546e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
547e41f4b71Sopenharmony_ci
548e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
549e41f4b71Sopenharmony_ci
550e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:
551e41f4b71Sopenharmony_ci
552e41f4b71Sopenharmony_ci    1. 输入的codec指针为非编码器实例,或者为空指针;
553e41f4b71Sopenharmony_ci    2. 输入format参数不支持。
554e41f4b71Sopenharmony_ci
555e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
556e41f4b71Sopenharmony_ci
557e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
558e41f4b71Sopenharmony_ci
559e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
560e41f4b71Sopenharmony_ci
561e41f4b71Sopenharmony_ci
562e41f4b71Sopenharmony_ci### OH_VideoEncoder_PushInputParameter()
563e41f4b71Sopenharmony_ci
564e41f4b71Sopenharmony_ci```
565e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_PushInputParameter (OH_AVCodec *codec, uint32_t index)
566e41f4b71Sopenharmony_ci```
567e41f4b71Sopenharmony_ci**描述**
568e41f4b71Sopenharmony_ciSurface模式下,将index对应帧的编码参数送入编码器编码。
569e41f4b71Sopenharmony_ci
570e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
571e41f4b71Sopenharmony_ci
572e41f4b71Sopenharmony_ci**起始版本:** 12
573e41f4b71Sopenharmony_ci
574e41f4b71Sopenharmony_ci**参数:**
575e41f4b71Sopenharmony_ci
576e41f4b71Sopenharmony_ci| 名称 | 描述 | 
577e41f4b71Sopenharmony_ci| -------- | -------- |
578e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
579e41f4b71Sopenharmony_ci| index | 输入参数缓冲区对应的索引值。由[OH_VideoEncoder_OnNeedInputParameter](#oh_videoencoder_onneedinputparameter)给出。  | 
580e41f4b71Sopenharmony_ci
581e41f4b71Sopenharmony_ci**返回:**
582e41f4b71Sopenharmony_ci
583e41f4b71Sopenharmony_ci返回接口结果:
584e41f4b71Sopenharmony_ci
585e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
586e41f4b71Sopenharmony_ci
587e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
588e41f4b71Sopenharmony_ci
589e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
590e41f4b71Sopenharmony_ci
591e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
592e41f4b71Sopenharmony_ci
593e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
594e41f4b71Sopenharmony_ci
595e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
596e41f4b71Sopenharmony_ci
597e41f4b71Sopenharmony_ci
598e41f4b71Sopenharmony_ci### OH_VideoEncoder_RegisterCallback()
599e41f4b71Sopenharmony_ci
600e41f4b71Sopenharmony_ci```
601e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_RegisterCallback (OH_AVCodec *codec, OH_AVCodecCallback callback, void *userData )
602e41f4b71Sopenharmony_ci```
603e41f4b71Sopenharmony_ci**描述**
604e41f4b71Sopenharmony_ci注册OH_AVCodecCallback回调函数,让应用可以响应视频编码器生成的事件。在调用OH_VideoEncoder_Prepare接口之前,必须调用此接口。
605e41f4b71Sopenharmony_ci
606e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
607e41f4b71Sopenharmony_ci
608e41f4b71Sopenharmony_ci**起始版本:** 11
609e41f4b71Sopenharmony_ci
610e41f4b71Sopenharmony_ci**参数:**
611e41f4b71Sopenharmony_ci
612e41f4b71Sopenharmony_ci| 名称 | 描述 | 
613e41f4b71Sopenharmony_ci| -------- | -------- |
614e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
615e41f4b71Sopenharmony_ci| callback | 所有回调函数的集合,请参阅[OH_AVCodecCallback](_o_h___a_v_codec_callback.md)。  | 
616e41f4b71Sopenharmony_ci| userData | 调用者执行回调所依赖的数据。  | 
617e41f4b71Sopenharmony_ci
618e41f4b71Sopenharmony_ci**返回:**
619e41f4b71Sopenharmony_ci
620e41f4b71Sopenharmony_ci返回接口结果:
621e41f4b71Sopenharmony_ci
622e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
623e41f4b71Sopenharmony_ci
624e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
625e41f4b71Sopenharmony_ci
626e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
627e41f4b71Sopenharmony_ci
628e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
629e41f4b71Sopenharmony_ci
630e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
631e41f4b71Sopenharmony_ci
632e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:本接口必须在OH_VideoEncoder_Prepare接口前调用,如果在其他状态时调用,则返回此错误码。
633e41f4b71Sopenharmony_ci
634e41f4b71Sopenharmony_ci
635e41f4b71Sopenharmony_ci### OH_VideoEncoder_RegisterParameterCallback()
636e41f4b71Sopenharmony_ci
637e41f4b71Sopenharmony_ci```
638e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_RegisterParameterCallback (OH_AVCodec *codec, OH_VideoEncoder_OnNeedInputParameter onInputParameter, void *userData)
639e41f4b71Sopenharmony_ci```
640e41f4b71Sopenharmony_ci**描述**
641e41f4b71Sopenharmony_ci注册OH_AVCodecCallback输入参数回调函数,让应用可以响应视频编码器生成的事件。编码Surface模式,需要设置随帧参数时,须使用该接口。
642e41f4b71Sopenharmony_ci
643e41f4b71Sopenharmony_ci如果使用该接口,必须在[OH_VideoEncoder_Configure](#oh_videoencoder_configure)之前调用该接口。
644e41f4b71Sopenharmony_ci
645e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
646e41f4b71Sopenharmony_ci
647e41f4b71Sopenharmony_ci**起始版本:** 12
648e41f4b71Sopenharmony_ci
649e41f4b71Sopenharmony_ci**参数:**
650e41f4b71Sopenharmony_ci
651e41f4b71Sopenharmony_ci| 名称 | 描述 | 
652e41f4b71Sopenharmony_ci| -------- | -------- |
653e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
654e41f4b71Sopenharmony_ci| onInputParameter | 输入参数回调指针, 请参阅[OH_VideoEncoder_OnNeedInputParameter](#oh_videoencoder_onneedinputparameter)。  | 
655e41f4b71Sopenharmony_ci| userData | 调用者执行回调所依赖的数据。  |
656e41f4b71Sopenharmony_ci
657e41f4b71Sopenharmony_ci**返回:**
658e41f4b71Sopenharmony_ci
659e41f4b71Sopenharmony_ci返回接口结果:
660e41f4b71Sopenharmony_ci
661e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
662e41f4b71Sopenharmony_ci
663e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
664e41f4b71Sopenharmony_ci
665e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
666e41f4b71Sopenharmony_ci
667e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
668e41f4b71Sopenharmony_ci
669e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
670e41f4b71Sopenharmony_ci
671e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:本接口必须在OH_VideoEncoder_Prepare接口前调用,如果在其他状态时调用,则返回此错误码。
672e41f4b71Sopenharmony_ci
673e41f4b71Sopenharmony_ci
674e41f4b71Sopenharmony_ci### OH_VideoEncoder_Reset()
675e41f4b71Sopenharmony_ci
676e41f4b71Sopenharmony_ci```
677e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_Reset (OH_AVCodec *codec)
678e41f4b71Sopenharmony_ci```
679e41f4b71Sopenharmony_ci**描述**
680e41f4b71Sopenharmony_ci重置编码器,编码器回到初始化状态。如果要继续编码,需要再次调用OH_VideoEncoder_Configure接口配置编码器实例。
681e41f4b71Sopenharmony_ci
682e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
683e41f4b71Sopenharmony_ci
684e41f4b71Sopenharmony_ci**起始版本:** 9
685e41f4b71Sopenharmony_ci
686e41f4b71Sopenharmony_ci**参数:**
687e41f4b71Sopenharmony_ci
688e41f4b71Sopenharmony_ci| 名称 | 描述 | 
689e41f4b71Sopenharmony_ci| -------- | -------- |
690e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
691e41f4b71Sopenharmony_ci
692e41f4b71Sopenharmony_ci**返回:**
693e41f4b71Sopenharmony_ci
694e41f4b71Sopenharmony_ci返回接口结果:
695e41f4b71Sopenharmony_ci
696e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
697e41f4b71Sopenharmony_ci
698e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
699e41f4b71Sopenharmony_ci
700e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
701e41f4b71Sopenharmony_ci
702e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
703e41f4b71Sopenharmony_ci
704e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
705e41f4b71Sopenharmony_ci
706e41f4b71Sopenharmony_ci
707e41f4b71Sopenharmony_ci### OH_VideoEncoder_SetParameter()
708e41f4b71Sopenharmony_ci
709e41f4b71Sopenharmony_ci```
710e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_SetParameter (OH_AVCodec *codec, OH_AVFormat *format )
711e41f4b71Sopenharmony_ci```
712e41f4b71Sopenharmony_ci**描述**
713e41f4b71Sopenharmony_ci在编码器运行时设置编码器参数。 
714e41f4b71Sopenharmony_ci
715e41f4b71Sopenharmony_ci注意,此接口只有在编码器启动后才能调用。 同时,不正确的参数设置可能会导致编码失败。
716e41f4b71Sopenharmony_ci
717e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
718e41f4b71Sopenharmony_ci
719e41f4b71Sopenharmony_ci**起始版本:** 9
720e41f4b71Sopenharmony_ci
721e41f4b71Sopenharmony_ci**参数:**
722e41f4b71Sopenharmony_ci
723e41f4b71Sopenharmony_ci| 名称 | 描述 | 
724e41f4b71Sopenharmony_ci| -------- | -------- |
725e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
726e41f4b71Sopenharmony_ci| format | 指向OH_AVFormat实例的指针。  | 
727e41f4b71Sopenharmony_ci
728e41f4b71Sopenharmony_ci**返回:**
729e41f4b71Sopenharmony_ci
730e41f4b71Sopenharmony_ci返回接口结果:
731e41f4b71Sopenharmony_ci
732e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
733e41f4b71Sopenharmony_ci
734e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
735e41f4b71Sopenharmony_ci
736e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:
737e41f4b71Sopenharmony_ci
738e41f4b71Sopenharmony_ci    1. 输入的codec指针为非编码器实例,或者为空指针;
739e41f4b71Sopenharmony_ci    2. 输入format参数不支持。
740e41f4b71Sopenharmony_ci
741e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
742e41f4b71Sopenharmony_ci
743e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
744e41f4b71Sopenharmony_ci
745e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
746e41f4b71Sopenharmony_ci
747e41f4b71Sopenharmony_ci
748e41f4b71Sopenharmony_ci### OH_VideoEncoder_Start()
749e41f4b71Sopenharmony_ci
750e41f4b71Sopenharmony_ci```
751e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_Start (OH_AVCodec *codec)
752e41f4b71Sopenharmony_ci```
753e41f4b71Sopenharmony_ci**描述**
754e41f4b71Sopenharmony_ci调用OH_VideoEncoder_Prepare接口成功后调用此接口启动解码器。成功启动后,编码器将开始报告注册的回调事件。
755e41f4b71Sopenharmony_ci
756e41f4b71Sopenharmony_ciSurface模式下,在surface中有正确的输入后,每完成一帧编码会触发OnNewOutputBuffer。
757e41f4b71Sopenharmony_ci
758e41f4b71Sopenharmony_ciBuffer模式下,编码器会立即触发输入回调,调用者每完成一次输入,编码器执行编码,每完成一帧编码会触发OnNewOutputBuffer。
759e41f4b71Sopenharmony_ci
760e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
761e41f4b71Sopenharmony_ci
762e41f4b71Sopenharmony_ci**起始版本:** 9
763e41f4b71Sopenharmony_ci
764e41f4b71Sopenharmony_ci**参数:**
765e41f4b71Sopenharmony_ci
766e41f4b71Sopenharmony_ci| 名称 | 描述 | 
767e41f4b71Sopenharmony_ci| -------- | -------- |
768e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
769e41f4b71Sopenharmony_ci
770e41f4b71Sopenharmony_ci**返回:**
771e41f4b71Sopenharmony_ci
772e41f4b71Sopenharmony_ci返回接口结果:
773e41f4b71Sopenharmony_ci
774e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
775e41f4b71Sopenharmony_ci
776e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
777e41f4b71Sopenharmony_ci
778e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
779e41f4b71Sopenharmony_ci
780e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
781e41f4b71Sopenharmony_ci
782e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
783e41f4b71Sopenharmony_ci
784e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
785e41f4b71Sopenharmony_ci
786e41f4b71Sopenharmony_ci
787e41f4b71Sopenharmony_ci### OH_VideoEncoder_Stop()
788e41f4b71Sopenharmony_ci
789e41f4b71Sopenharmony_ci```
790e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_Stop (OH_AVCodec *codec)
791e41f4b71Sopenharmony_ci```
792e41f4b71Sopenharmony_ci**描述**
793e41f4b71Sopenharmony_ci停止编码器,释放输入输出buffer。停止之后,可以通过调用OH_VideoEncoder_Start接口重新进入Running状态。
794e41f4b71Sopenharmony_ci
795e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
796e41f4b71Sopenharmony_ci
797e41f4b71Sopenharmony_ci**起始版本:** 9
798e41f4b71Sopenharmony_ci
799e41f4b71Sopenharmony_ci**参数:**
800e41f4b71Sopenharmony_ci
801e41f4b71Sopenharmony_ci| 名称 | 描述 | 
802e41f4b71Sopenharmony_ci| -------- | -------- |
803e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
804e41f4b71Sopenharmony_ci
805e41f4b71Sopenharmony_ci**返回:**
806e41f4b71Sopenharmony_ci
807e41f4b71Sopenharmony_ci返回接口结果:
808e41f4b71Sopenharmony_ci
809e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
810e41f4b71Sopenharmony_ci
811e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
812e41f4b71Sopenharmony_ci
813e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
814e41f4b71Sopenharmony_ci
815e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
816e41f4b71Sopenharmony_ci
817e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
818e41f4b71Sopenharmony_ci
819e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
820e41f4b71Sopenharmony_ci
821e41f4b71Sopenharmony_ci
822e41f4b71Sopenharmony_ci## 废弃函数说明
823e41f4b71Sopenharmony_ci
824e41f4b71Sopenharmony_ci
825e41f4b71Sopenharmony_ci### OH_VideoEncoder_SetCallback()
826e41f4b71Sopenharmony_ci
827e41f4b71Sopenharmony_ci```
828e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_SetCallback (OH_AVCodec *codec, OH_AVCodecAsyncCallback callback, void *userData )
829e41f4b71Sopenharmony_ci```
830e41f4b71Sopenharmony_ci**描述**
831e41f4b71Sopenharmony_ci设置OH_AVCodecCallback回调函数,让应用可以响应视频编码器生成的事件。在调用OH_VideoEncoder_Prepare接口之前,必须调用此接口。
832e41f4b71Sopenharmony_ci
833e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
834e41f4b71Sopenharmony_ci
835e41f4b71Sopenharmony_ci**起始版本:** 9
836e41f4b71Sopenharmony_ci
837e41f4b71Sopenharmony_ci**废弃版本:** 11
838e41f4b71Sopenharmony_ci
839e41f4b71Sopenharmony_ci**替代接口:**[OH_VideoEncoder_RegisterCallback](#oh_videoencoder_registercallback)
840e41f4b71Sopenharmony_ci
841e41f4b71Sopenharmony_ci**参数:**
842e41f4b71Sopenharmony_ci
843e41f4b71Sopenharmony_ci| 名称 | 描述 | 
844e41f4b71Sopenharmony_ci| -------- | -------- |
845e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
846e41f4b71Sopenharmony_ci| callback | 所有回调函数的集合,请参阅[OH_AVCodecAsyncCallback](_o_h___a_v_codec_async_callback.md)。  | 
847e41f4b71Sopenharmony_ci| userData | 调用者执行回调所依赖的数据。  |
848e41f4b71Sopenharmony_ci
849e41f4b71Sopenharmony_ci**返回:**
850e41f4b71Sopenharmony_ci
851e41f4b71Sopenharmony_ci返回接口结果:
852e41f4b71Sopenharmony_ci
853e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
854e41f4b71Sopenharmony_ci
855e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
856e41f4b71Sopenharmony_ci
857e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
858e41f4b71Sopenharmony_ci
859e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
860e41f4b71Sopenharmony_ci
861e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
862e41f4b71Sopenharmony_ci
863e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:本接口必须在OH_VideoEncoder_Prepare接口前调用,如果在其他状态时调用,则返回此错误码。
864e41f4b71Sopenharmony_ci
865e41f4b71Sopenharmony_ci
866e41f4b71Sopenharmony_ci### OH_VideoEncoder_PushInputData()
867e41f4b71Sopenharmony_ci
868e41f4b71Sopenharmony_ci```
869e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_PushInputData (OH_AVCodec *codec, uint32_t index, OH_AVCodecBufferAttr attr )
870e41f4b71Sopenharmony_ci```
871e41f4b71Sopenharmony_ci**描述**
872e41f4b71Sopenharmony_ci将填入数据的输入缓冲区提交给视频编码器。
873e41f4b71Sopenharmony_ci
874e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
875e41f4b71Sopenharmony_ci
876e41f4b71Sopenharmony_ci**起始版本:** 10
877e41f4b71Sopenharmony_ci
878e41f4b71Sopenharmony_ci**废弃版本:** 11
879e41f4b71Sopenharmony_ci
880e41f4b71Sopenharmony_ci**替代接口:**[OH_VideoEncoder_PushInputBuffer](#oh_videoencoder_pushinputbuffer)
881e41f4b71Sopenharmony_ci
882e41f4b71Sopenharmony_ci**参数:**
883e41f4b71Sopenharmony_ci
884e41f4b71Sopenharmony_ci| 名称 | 描述 | 
885e41f4b71Sopenharmony_ci| -------- | -------- |
886e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
887e41f4b71Sopenharmony_ci| index | 输入缓冲区对应的索引值。由[OH_AVCodecOnNeedInputData](_codec_base.md#oh_avcodeconneedinputdata)给出。  | 
888e41f4b71Sopenharmony_ci| attr | 缓冲区中包含数据的描述信息。  | 
889e41f4b71Sopenharmony_ci
890e41f4b71Sopenharmony_ci**返回:**
891e41f4b71Sopenharmony_ci
892e41f4b71Sopenharmony_ci返回接口结果:
893e41f4b71Sopenharmony_ci
894e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
895e41f4b71Sopenharmony_ci
896e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
897e41f4b71Sopenharmony_ci
898e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
899e41f4b71Sopenharmony_ci
900e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
901e41f4b71Sopenharmony_ci
902e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
903e41f4b71Sopenharmony_ci
904e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。
905e41f4b71Sopenharmony_ci
906e41f4b71Sopenharmony_ci
907e41f4b71Sopenharmony_ci### OH_VideoEncoder_FreeOutputData()
908e41f4b71Sopenharmony_ci
909e41f4b71Sopenharmony_ci```
910e41f4b71Sopenharmony_ciOH_AVErrCode OH_VideoEncoder_FreeOutputData (OH_AVCodec *codec, uint32_t index )
911e41f4b71Sopenharmony_ci```
912e41f4b71Sopenharmony_ci**描述**
913e41f4b71Sopenharmony_ci将处理后的输出缓冲区返回给编码器。
914e41f4b71Sopenharmony_ci
915e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoEncoder
916e41f4b71Sopenharmony_ci
917e41f4b71Sopenharmony_ci**起始版本:** 9
918e41f4b71Sopenharmony_ci
919e41f4b71Sopenharmony_ci**废弃版本:** 11
920e41f4b71Sopenharmony_ci
921e41f4b71Sopenharmony_ci**替代接口:**[OH_VideoEncoder_FreeOutputBuffer](#oh_videoencoder_freeoutputbuffer)
922e41f4b71Sopenharmony_ci
923e41f4b71Sopenharmony_ci**参数:**
924e41f4b71Sopenharmony_ci
925e41f4b71Sopenharmony_ci| 名称 | 描述 | 
926e41f4b71Sopenharmony_ci| -------- | -------- |
927e41f4b71Sopenharmony_ci| codec | 指向视频编码实例的指针。  | 
928e41f4b71Sopenharmony_ci| index | 输出缓冲区对应的索引值。由[OH_AVCodecOnNewOutputData](_codec_base.md#oh_avcodeconnewoutputdata)给出。  | 
929e41f4b71Sopenharmony_ci
930e41f4b71Sopenharmony_ci**返回:**
931e41f4b71Sopenharmony_ci
932e41f4b71Sopenharmony_ci返回接口结果:
933e41f4b71Sopenharmony_ci
934e41f4b71Sopenharmony_ciAV_ERR_OK:执行成功。
935e41f4b71Sopenharmony_ci
936e41f4b71Sopenharmony_ciAV_ERR_NO_MEMORY:输入的编码实例内部异常,如内部出现异常空指针。
937e41f4b71Sopenharmony_ci
938e41f4b71Sopenharmony_ciAV_ERR_INVALID_VAL:输入的codec指针为非编码器实例,或者为空指针。
939e41f4b71Sopenharmony_ci
940e41f4b71Sopenharmony_ciAV_ERR_UNKNOWN:未知错误。
941e41f4b71Sopenharmony_ci
942e41f4b71Sopenharmony_ciAV_ERR_OPERATE_NOT_PERMIT:内部执行错误。
943e41f4b71Sopenharmony_ci
944e41f4b71Sopenharmony_ciAV_ERR_INVALID_STATE:编码器状态不支持调用本接口时调用。