• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ICodecComponent
2
3
4## 概述
5
6Codec组件接口定义。
7
8主要提供以下功能:
9
10- 获取组件的版本
11
12- 组件参数配置的获取和设置
13
14- 发送命令至组件及获取组件状态
15
16- 设置回调函数
17
18- 设置/释放组件使用的buffer
19
20- 编解码输入输出buffer处理 具体方法使用详见函数说明。
21
22**起始版本:** 3.2
23
24**相关模块:**[Codec](_codec_v10.md)
25
26
27## 汇总
28
29
30### Public 成员函数
31
32| 名称 | 描述 |
33| -------- | -------- |
34| [GetComponentVersion](#getcomponentversion) ([out] struct [CompVerInfo](_comp_ver_info_v10.md) verInfo) | 获取Codec组件版本号。  |
35| [SendCommand](#sendcommand) ([in] enum OMX_COMMANDTYPE cmd, [in] unsigned int param, [in] byte[] cmdData) | 发送命令给组件。  |
36| [GetParameter](#getparameter) ([in] unsigned int index, [in] byte[] inParamStruct, [out] byte[] outParamStruct) | 获取组件参数设置。  |
37| [SetParameter](#setparameter) ([in] unsigned int index, [in] byte[] paramStruct) | 设置组件需要的参数。  |
38| [GetConfig](#getconfig) ([in] unsigned int index, [in] byte[] inCfgStruct, [out] byte[] outCfgStruct) | 获取组件的配置。  |
39| [SetConfig](#setconfig) ([in] unsigned int index, [in] byte[] cfgStruct) | 设置组件的配置。  |
40| [GetExtensionIndex](#getextensionindex) ([in] String paramName, [out] unsigned int indexType) | 根据字符串获取组件的扩展索引。  |
41| [GetState](#getstate) ([out] enum OMX_STATETYPE state) | 获取组件的当前状态。  |
42| [ComponentTunnelRequest](#componenttunnelrequest) ([in] unsigned int port, [in] int tunneledComp, [in] unsigned int tunneledPort, [in] struct [OMX_TUNNELSETUPTYPE](_o_m_x___t_u_n_n_e_l_s_e_t_u_p_t_y_p_e_v10.md) inTunnelSetup, [out] struct [OMX_TUNNELSETUPTYPE](_o_m_x___t_u_n_n_e_l_s_e_t_u_p_t_y_p_e_v10.md) outTunnelSetup) | 设置组件采用Tunnel方式通信。  |
43| [UseBuffer](#usebuffer) ([in] unsigned int portIndex, [in] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) inBuffer, [out] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) outBuffer) | 指定组件端口的buffer。  |
44| [AllocateBuffer](#allocatebuffer) ([in] unsigned int portIndex, [in] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) inBuffer, [out] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) outBuffer) | 向组件申请端口buffer。  |
45| [FreeBuffer](#freebuffer) ([in] unsigned int portIndex, [in] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) buffer) | 释放buffer。  |
46| [EmptyThisBuffer](#emptythisbuffer) ([in] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) buffer) | 编解码输入待处理buffer。  |
47| [FillThisBuffer](#fillthisbuffer) ([in] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) buffer) | 编解码输出填充buffer。  |
48| [SetCallbacks](#setcallbacks) ([in] [ICodecCallback](interface_i_codec_callback_v10.md) callbacks, [in] long appData) | 设置Codec组件的回调函数。  |
49| [ComponentDeInit](#componentdeinit) () | 组件去初始化。  |
50| [UseEglImage](#useeglimage) ([in] unsigned int portIndex, [in] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) inBuffer, [out] struct [OmxCodecBuffer](_omx_codec_buffer_v10.md) outBuffer, [in] byte[] eglImage) | 使用已在EGL中申请的空间。  |
51| [ComponentRoleEnum](#componentroleenum) ([out] unsigned char[] role, [in] unsigned int index) | 获取组件角色。  |
52
53
54## 成员函数说明
55
56
57### AllocateBuffer()
58
59```
60ICodecComponent::AllocateBuffer ([in] unsigned int portIndex, [in] struct OmxCodecBuffer inBuffer, [out] struct OmxCodecBuffer outBuffer )
61```
62**描述**
63向组件申请端口buffer。
64
65向组件申请分配新的buffer,此接口在以下情况下使用:
66
67- 当组件处于OMX_StateLoaded状态,并且用户已经向组件发送OMX_StateIdle状态转换请求。
68
69- 当组件处于OMX_StateWaitForResources状态,所需的资源可用,并且组件已准备好进入OMX_StateIdle状态。
70
71- 在去使能端口上,组件处于OMX_StateExecuting、OMX_StatePause或OMX_StateIdle状态。 更多组件状态的说明请详见**OMX_STATETYPE**。
72
73**起始版本:** 3.2
74
75**参数:**
76
77| 名称 | 描述 |
78| -------- | -------- |
79| portIndex | 指定的组件端口。  |
80| inBuffer | 指向要申请的buffer结构的体指针,结构体介绍详见[OmxCodecBuffer](_omx_codec_buffer_v10.md)。  |
81| outBuffer | 指向要申请的buffer结构的体指针,结构体介绍详见[OmxCodecBuffer](_omx_codec_buffer_v10.md)。 |
82
83**返回:**
84
85HDF_SUCCESS 表示申请buffer成功。
86
87HDF_ERR_INVALID_PARAM 表示参数无效,申请buffer失败。
88
89HDF_FAILURE 表示执行失败。
90
91其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
92
93
94### ComponentDeInit()
95
96```
97ICodecComponent::ComponentDeInit ()
98```
99**描述**
100组件去初始化。
101
102调用此接口使组件去初始化,当组件处于OMX_StateLoaded状态时,将直接关闭组件,更多组件状态的说明请详见**OMX_STATETYPE**。
103
104**起始版本:** 3.2
105
106**返回:**
107
108HDF_SUCCESS 表示去初始化成功。
109
110HDF_ERR_INVALID_PARAM 表示参数无效,去初始化失败。
111
112HDF_FAILURE 表示执行失败。
113
114其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
115
116
117### ComponentRoleEnum()
118
119```
120ICodecComponent::ComponentRoleEnum ([out] unsigned char[] role, [in] unsigned int index )
121```
122**描述**
123获取组件角色。
124
125根据组件角色索引获取对应组件角色。
126
127**起始版本:** 3.2
128
129**参数:**
130
131| 名称 | 描述 |
132| -------- | -------- |
133| role | 角色名称。  |
134| index | 角色的索引,一个组件可能支持多种角色。 |
135
136**返回:**
137
138HDF_SUCCESS 表示获取角色成功。
139
140HDF_ERR_INVALID_PARAM 表示参数无效,获取角色失败。
141
142HDF_FAILURE 表示执行失败。
143
144其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
145
146
147### ComponentTunnelRequest()
148
149```
150ICodecComponent::ComponentTunnelRequest ([in] unsigned int port, [in] int tunneledComp, [in] unsigned int tunneledPort, [in] struct OMX_TUNNELSETUPTYPE inTunnelSetup, [out] struct OMX_TUNNELSETUPTYPE outTunnelSetup )
151```
152**描述**
153设置组件采用Tunnel方式通信。
154
155当组件处于OMX_StateLoaded状态时(表示组件已加载),用户通过调用此接口确定组件是否可以进行Tunnel传输,如果可以则设置组件的Tunnel传输。 更多组件状态的说明请详见**OMX_STATETYPE**。
156
157**起始版本:** 3.2
158
159**参数:**
160
161| 名称 | 描述 |
162| -------- | -------- |
163| port | 组件设置的端口。  |
164| tunneledComp | 组件的tunnel组件句柄。  |
165| tunneledPort | 组件用来Tunnel通信的端口。  |
166| inTunnelSetup | 指向Tunnel设置的结构体[OMX_TUNNELSETUPTYPE](_o_m_x___t_u_n_n_e_l_s_e_t_u_p_t_y_p_e_v10.md)指针。  |
167| outTunnelSetup | 指向Tunnel设置的结构体[OMX_TUNNELSETUPTYPE](_o_m_x___t_u_n_n_e_l_s_e_t_u_p_t_y_p_e_v10.md)指针。 |
168
169**返回:**
170
171HDF_SUCCESS 表示设置成功。
172
173HDF_ERR_INVALID_PARAM 表示参数无效,设置失败。
174
175HDF_FAILURE 表示执行失败。
176
177其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
178
179
180### EmptyThisBuffer()
181
182```
183ICodecComponent::EmptyThisBuffer ([in] struct OmxCodecBuffer buffer)
184```
185**描述**
186编解码输入待处理buffer。
187
188此接口在组件处于OMX_StateExecuting或者OMX_StatePause状态时调用,更多组件状态的说明请详见**OMX_STATETYPE**。
189
190**起始版本:** 3.2
191
192**参数:**
193
194| 名称 | 描述 |
195| -------- | -------- |
196| buffer | 指向要输入的buffer结构体的指针,结构体介绍详见[OmxCodecBuffer](_omx_codec_buffer_v10.md)。 |
197
198**返回:**
199
200HDF_SUCCESS 表示输入buffer成功。
201
202HDF_ERR_INVALID_PARAM 表示参数无效,输入buffer失败。
203
204HDF_FAILURE 表示执行失败。
205
206其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
207
208
209### FillThisBuffer()
210
211```
212ICodecComponent::FillThisBuffer ([in] struct OmxCodecBuffer buffer)
213```
214**描述**
215编解码输出填充buffer。
216
217此接口在组件处于OMX_StateExecuting或者OMX_StatePause状态时调用,更多组件状态的说明请详见**OMX_STATETYPE**。
218
219**起始版本:** 3.2
220
221**参数:**
222
223| 名称 | 描述 |
224| -------- | -------- |
225| buffer | 指向要填充的buffer结构体的指针,结构体介绍详见[OmxCodecBuffer](_omx_codec_buffer_v10.md)。 |
226
227**返回:**
228
229HDF_SUCCESS 表示填充buffer成功。
230
231HDF_ERR_INVALID_PARAM 表示参数无效,填充buffer失败。
232
233HDF_FAILURE 表示执行失败。
234
235其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
236
237
238### FreeBuffer()
239
240```
241ICodecComponent::FreeBuffer ([in] unsigned int portIndex, [in] struct OmxCodecBuffer buffer )
242```
243**描述**
244释放buffer。
245
246此接口在以下情况下使用:
247
248- 当组件处于OMX_StateIdle状态,并且已经向组件发送OMX_StateLoaded状态转换请求。
249
250- 在去使能端口上,组件处于OMX_StateExecuting、OMX_StatePause或OMX_StateIdle时调用。 更多组件状态的说明请详见**OMX_STATETYPE**。
251
252- 此接口调用可随时进行,但是如果未在上述情况下执行,可能会导致组件上报OMX_ErrorPortUnpopulated事件。
253
254**起始版本:** 3.2
255
256**参数:**
257
258| 名称 | 描述 |
259| -------- | -------- |
260| portIndex | 指定的组件端口。  |
261| buffer | 指向要释放的buffer结构体的结构体的指针,结构体介绍详见[OmxCodecBuffer](_omx_codec_buffer_v10.md)。 |
262
263**返回:**
264
265HDF_SUCCESS 表示释放buffer成功。
266
267HDF_ERR_INVALID_PARAM 表示参数无效,释放buffer失败。
268
269HDF_FAILURE 表示执行失败。
270
271其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
272
273
274### GetComponentVersion()
275
276```
277ICodecComponent::GetComponentVersion ([out] struct CompVerInfo verInfo)
278```
279**描述**
280获取Codec组件版本号。
281
282通过查询组件,返回组件版本信息。
283
284**起始版本:** 3.2
285
286**参数:**
287
288| 名称 | 描述 |
289| -------- | -------- |
290| verInfo | 指向组件版本信息的对象,详见[CompVerInfo](_comp_ver_info_v10.md)。 |
291
292**返回:**
293
294HDF_SUCCESS 表示获取版本号成功。
295
296HDF_ERR_INVALID_PARAM 表示参数无效,获取版本号失败。
297
298HDF_FAILURE 表示执行失败。
299
300其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
301
302
303### GetConfig()
304
305```
306ICodecComponent::GetConfig ([in] unsigned int index, [in] byte[] inCfgStruct, [out] byte[] outCfgStruct )
307```
308**描述**
309获取组件的配置。
310
311加载组件后可以随时调用此接口获取组件的配置。
312
313**起始版本:** 3.2
314
315**参数:**
316
317| 名称 | 描述 |
318| -------- | -------- |
319| index | 待填充结构的索引,详见**OMX_INDEXTYPE**。  |
320| inCfgStruct | 指向由组件填充的应用程序分配的结构体指针。  |
321| outCfgStruct | 指向由组件填充的应用程序分配的结构体指针。 |
322
323**返回:**
324
325HDF_SUCCESS 表示获取配置成功。
326
327HDF_ERR_INVALID_PARAM 表示参数无效,获取配置失败。
328
329HDF_FAILURE 表示执行失败。
330
331其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
332
333
334### GetExtensionIndex()
335
336```
337ICodecComponent::GetExtensionIndex ([in] String paramName, [out] unsigned int indexType )
338```
339**描述**
340根据字符串获取组件的扩展索引。
341
342将扩展字符串转换为Openmax IL结构索引,此索引可用于获取([GetParameter](#getparameter))或者设置([SetParameter](#setparameter))组件参数。
343
344**起始版本:** 3.2
345
346**参数:**
347
348| 名称 | 描述 |
349| -------- | -------- |
350| paramName | 组件用来转换为配置索引的字符串。  |
351| indexType | 由paramName转换的配置索引,详见**OMX_INDEXTYPE**。 |
352
353**返回:**
354
355HDF_SUCCESS 表示获取扩展索引成功。
356
357HDF_ERR_INVALID_PARAM 表示参数无效,获取扩展索引失败。
358
359HDF_FAILURE 表示执行失败。
360
361其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
362
363
364### GetParameter()
365
366```
367ICodecComponent::GetParameter ([in] unsigned int index, [in] byte[] inParamStruct, [out] byte[] outParamStruct )
368```
369**描述**
370获取组件参数设置。
371
372当组件处于除了OMX_StateInvalid(组件状态异常)之外的其他状态,用户可通过此接口获取组件参数,组件状态详见**OMX_STATETYPE**。
373
374**起始版本:** 3.2
375
376**参数:**
377
378| 名称 | 描述 |
379| -------- | -------- |
380| index | 待填充结构的索引,详见OMX IL定义的OMX_INDEXTYPE。  |
381| inParamStruct | 指向由组件填充的应用程序分配的结构体指针。  |
382| outParamStruct | 指向由组件填充的应用程序分配的结构体指针。 |
383
384**返回:**
385
386HDF_SUCCESS 表示获取参数成功。
387
388HDF_ERR_INVALID_PARAM 表示参数无效,获取参数失败。
389
390HDF_FAILURE 表示执行失败。
391
392其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
393
394
395### GetState()
396
397```
398ICodecComponent::GetState ([out] enum OMX_STATETYPE state)
399```
400**描述**
401获取组件的当前状态。
402
403用户可调用此接口获取组件的当前状态。
404
405**起始版本:** 3.2
406
407**参数:**
408
409| 名称 | 描述 |
410| -------- | -------- |
411| state | 指向获取到的状态指针,组件状态详见**OMX_STATETYPE**。 |
412
413**返回:**
414
415HDF_SUCCESS 表示获取状态成功。
416
417HDF_ERR_INVALID_PARAM 表示参数无效,获取状态失败。
418
419HDF_FAILURE 表示执行失败。
420
421其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
422
423
424### SendCommand()
425
426```
427ICodecComponent::SendCommand ([in] enum OMX_COMMANDTYPE cmd, [in] unsigned int param, [in] byte[] cmdData )
428```
429**描述**
430发送命令给组件。
431
432发送命令给组件,当命令为设置状态时,会有事件回调通知结果给上层,其他命令则没有事件上报。
433
434**起始版本:** 3.2
435
436**参数:**
437
438| 名称 | 描述 |
439| -------- | -------- |
440| cmd | 组件要执行的命令,详见**OMX_COMMANDTYPE**。  |
441| param | 组件要执行的命令携带的参数。<br/>- 当cmd为OMX_CommandStateSet时,param的值详见**OMX_STATETYPE**。<br/>- 当cmd为OMX_CommandFlush、OMX_CommandPortDisable、OMX_CommandPortEnable、OMX_CommandMarkBuffer时,param为目标端口。  |
442| cmdData | 当cmd为OMX_CommandMarkBuffer时,指向OMX_MARKTYPE结构体指针。 |
443
444**返回:**
445
446HDF_SUCCESS 表示发送命令成功。
447
448HDF_ERR_INVALID_PARAM 表示参数无效,发送命令失败。
449
450HDF_FAILURE 表示执行失败。
451
452其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
453
454
455### SetCallbacks()
456
457```
458ICodecComponent::SetCallbacks ([in] ICodecCallback callbacks, [in] long appData )
459```
460**描述**
461设置Codec组件的回调函数。
462
463当组件处于OMX_StateLoaded状态时,使用此回调函数向上通知事件以及上报可用的输入输出信息。更多组件状态的说明请详见**OMX_STATETYPE**。
464
465**起始版本:** 3.2
466
467**参数:**
468
469| 名称 | 描述 |
470| -------- | -------- |
471| callbacks | 指向回调函数[ICodecCallback](interface_i_codec_callback_v10.md)对象的指针。  |
472| appData | 指向应用程序定义的值的指针,该值将在回调期间返回。 |
473
474**返回:**
475
476HDF_SUCCESS 表示设置回调成功。
477
478HDF_ERR_INVALID_PARAM 表示参数无效,设置回调失败。
479
480HDF_FAILURE 表示执行失败。
481
482其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
483
484
485### SetConfig()
486
487```
488ICodecComponent::SetConfig ([in] unsigned int index, [in] byte[] cfgStruct )
489```
490**描述**
491设置组件的配置。
492
493加载组件后可以随时调用此接口设置组件的配置。
494
495**起始版本:** 3.2
496
497**参数:**
498
499| 名称 | 描述 |
500| -------- | -------- |
501| index | 要设置的结构索引,详见**OMX_INDEXTYPE**。  |
502| cfgStruct | 指向组件用于初始化的应用程序分配结构的指针。 |
503
504**返回:**
505
506HDF_SUCCESS 表示设置配置成功。
507
508HDF_ERR_INVALID_PARAM 表示参数无效,设置失败。
509
510HDF_FAILURE 表示执行失败。
511
512其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
513
514
515### SetParameter()
516
517```
518ICodecComponent::SetParameter ([in] unsigned int index, [in] byte[] paramStruct )
519```
520**描述**
521设置组件需要的参数。
522
523当出现如下情况时,用户可以通过此接口设置组件参数。
524
525- 当组件处于OMX_StateLoaded(表示组件已加载)。
526
527- 当组件处于OMX_StateWaitForResources(表示组件等待所需要的资源)。
528
529- 当状态或者端口是去使能状态,用户可通过此接口设置组件参数。 更多组件状态的说明请详见**OMX_STATETYPE**。
530
531**起始版本:** 3.2
532
533**参数:**
534
535| 名称 | 描述 |
536| -------- | -------- |
537| index | 要设置的结构索引,详见OMX IL定义的OMX_INDEXTYPE。  |
538| paramStruct | 指向组件用于初始化的应用程序分配结构的指针。 |
539
540**返回:**
541
542HDF_SUCCESS 表示设置参数成功。
543
544HDF_ERR_INVALID_PARAM 表示参数无效,设置参数失败。
545
546HDF_FAILURE 表示执行失败。
547
548其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
549
550
551### UseBuffer()
552
553```
554ICodecComponent::UseBuffer ([in] unsigned int portIndex, [in] struct OmxCodecBuffer inBuffer, [out] struct OmxCodecBuffer outBuffer )
555```
556**描述**
557指定组件端口的buffer。
558
559此接口在以下情况下使用:
560
561- 当组件处于OMX_StateLoaded状态(表示组件已加载),并且用户已经向组件发送OMX_StateIdle状态转换请求。
562
563- 当组件处于OMX_StateWaitForResources状态,所需的资源可用,并且组件已准备好进入OMX_StateIdle状态。
564
565- 在去使能端口上,组件处于OMX_StateExecuting、OMX_StatePause或OMX_StateIdle状态。 更多组件状态的说明请详见**OMX_STATETYPE**。
566
567**起始版本:** 3.2
568
569**参数:**
570
571| 名称 | 描述 |
572| -------- | -------- |
573| portIndex | 指定的组件端口。  |
574| inBuffer | 指向要使用的buffer结构体的指针,结构体介绍详见[OmxCodecBuffer](_omx_codec_buffer_v10.md)。  |
575| outBuffer | 指向要使用的buffer结构体的指针,结构体介绍详见[OmxCodecBuffer](_omx_codec_buffer_v10.md)。 |
576
577**返回:**
578
579HDF_SUCCESS 表示指定成功。
580
581HDF_ERR_INVALID_PARAM 表示参数无效,指定失败。
582
583HDF_FAILURE 表示执行失败。
584
585其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
586
587
588### UseEglImage()
589
590```
591ICodecComponent::UseEglImage ([in] unsigned int portIndex, [in] struct OmxCodecBuffer inBuffer, [out] struct OmxCodecBuffer outBuffer, [in] byte[] eglImage )
592```
593**描述**
594使用已在EGL中申请的空间。
595
596此接口在以下情况下使用:
597
598- 当组件处于OMX_StateLoaded状态,并且已经向组件发送OMX_StateIdle状态转换请求。
599
600- 当组件处于OMX_StateWaitForResources状态,所需的资源可用,并且组件已准备好进入OMX_StateIdle状态。
601
602- 在去使能端口上,组件处于OMX_StateExecuting、OMX_StatePause或OMX_StateIdle状态。 更多组件状态的说明请详见**OMX_STATETYPE**。
603
604**起始版本:** 3.2
605
606**参数:**
607
608| 名称 | 描述 |
609| -------- | -------- |
610| portIndex | 指定的组件端口。  |
611| inBuffer | 指向[OmxCodecBuffer](_omx_codec_buffer_v10.md)结构体的指针。  |
612| outBuffer | 指向[OmxCodecBuffer](_omx_codec_buffer_v10.md)结构体的指针。  |
613| eglImage | EGL申请的图像指针。 |
614
615**返回:**
616
617HDF_SUCCESS 表示使用成功。
618
619HDF_ERR_INVALID_PARAM 表示参数无效,使用失败。
620
621HDF_FAILURE 表示执行失败。
622
623其他值表示底层返回失败,具体错误码详见OpenMAX IL定义的OMX_ERRORTYPE。
624