• Home
Name Date Size #Lines LOC

..--

hdi_service/12-May-2024-3,4652,965

interfaces/include/12-May-2024-787319

README.mdD12-May-202413.1 KiB184159

README_zh.mdD12-May-202412.6 KiB184159

README.md

1# Codec<a name="EN-US_TOPIC_0000001131751215"></a>
2
3-   [Introduction](#section11660541593)
4-   [Directory Structure](#section161941989596)
5    -   [Available APIs](#section1551164914237)
6    -   [Usage Guidelines](#section129654513264)
7
8-   [Repositories Involved](#section1371113476307)
9
10## Introduction<a name="section11660541593"></a>
11
12This repository mainly defines and implements the Hardware Driver Interfaces \(HDIs\) of the codec module, allowing upper-layer services to perform the following operations:
13
14-   Creating and destroying a codec
15-   Starting and stopping the codec
16-   Encoding original code streams into compressed code streams
17-   Decoding compressed code streams into original code streams
18-   Flushing the cache
19
20## Directory Structure<a name="section161941989596"></a>
21
22The source code directory structure is as follows:
23
24```
25/drivers/peripheral/codec
26├── interfaces         # Driver capability APIs provided for upper-layer services
27│   └── include       # APIs exposed externally
28```
29
30### Available APIs<a name="section1551164914237"></a>
31
32The codec module provides APIs that can be directly called by the framework layer to create or destroy a codec, start or stop a codec, perform encoding or decoding operations, flush the cache, and set a callback.
33
34[Table 1](#table1513255710559)  describes major HDI APIs provided by the codec module.
35
36**Table  1**  Major HDI APIs of the codec module
37
38<a name="table1513255710559"></a>
39<table><thead align="left"><tr id="row171321857155517"><th class="cellrowborder" align="center" valign="top" width="12.821282128212822%" id="mcps1.2.4.1.1"><p id="p6132957115511"><a name="p6132957115511"></a><a name="p6132957115511"></a>Header File</p>
40</th>
41<th class="cellrowborder" align="center" valign="top" width="63.61636163616362%" id="mcps1.2.4.1.2"><p id="p14132125715552"><a name="p14132125715552"></a><a name="p14132125715552"></a>API</p>
42</th>
43<th class="cellrowborder" align="center" valign="top" width="23.562356235623565%" id="mcps1.2.4.1.3"><p id="p18132205755516"><a name="p18132205755516"></a><a name="p18132205755516"></a>Description</p>
44</th>
45</tr>
46</thead>
47<tbody><tr id="row1267017500274"><td class="cellrowborder" rowspan="17" align="left" valign="top" width="12.821282128212822%" headers="mcps1.2.4.1.1 "><p id="p15674038913"><a name="p15674038913"></a><a name="p15674038913"></a></p>
48<p id="p169466917181"><a name="p169466917181"></a><a name="p169466917181"></a></p>
49<p id="p12106161012185"><a name="p12106161012185"></a><a name="p12106161012185"></a></p>
50<p id="p7255161017181"><a name="p7255161017181"></a><a name="p7255161017181"></a></p>
51<p id="p1839901041815"><a name="p1839901041815"></a><a name="p1839901041815"></a></p>
52<p id="p4540171015188"><a name="p4540171015188"></a><a name="p4540171015188"></a></p>
53<p id="p368816102189"><a name="p368816102189"></a><a name="p368816102189"></a></p>
54<p id="p679481051814"><a name="p679481051814"></a><a name="p679481051814"></a></p>
55<p id="p7399191241817"><a name="p7399191241817"></a><a name="p7399191241817"></a></p>
56<p id="p11902121271818"><a name="p11902121271818"></a><a name="p11902121271818"></a></p>
57<p id="p1296415129182"><a name="p1296415129182"></a><a name="p1296415129182"></a></p>
58<p id="p1742101311180"><a name="p1742101311180"></a><a name="p1742101311180"></a></p>
59<p id="p171041613101815"><a name="p171041613101815"></a><a name="p171041613101815"></a></p>
60<p id="p10172141314183"><a name="p10172141314183"></a><a name="p10172141314183"></a></p>
61<p id="p723216132180"><a name="p723216132180"></a><a name="p723216132180"></a></p>
62<p id="p825185015460"><a name="p825185015460"></a><a name="p825185015460"></a>codec_interface.h</p>
63<p id="p2133757135510"><a name="p2133757135510"></a><a name="p2133757135510"></a></p>
64<p id="p14171441118"><a name="p14171441118"></a><a name="p14171441118"></a></p>
65<p id="p57063567463"><a name="p57063567463"></a><a name="p57063567463"></a></p>
66<p id="p1285144710118"><a name="p1285144710118"></a><a name="p1285144710118"></a></p>
67<p id="p854114711117"><a name="p854114711117"></a><a name="p854114711117"></a></p>
68<p id="p15741647517"><a name="p15741647517"></a><a name="p15741647517"></a></p>
69<p id="p7909447418"><a name="p7909447418"></a><a name="p7909447418"></a></p>
70<p id="p12525910165811"><a name="p12525910165811"></a><a name="p12525910165811"></a></p>
71<p id="p942322013262"><a name="p942322013262"></a><a name="p942322013262"></a></p>
72<p id="p1040515339526"><a name="p1040515339526"></a><a name="p1040515339526"></a></p>
73<p id="p19405533115216"><a name="p19405533115216"></a><a name="p19405533115216"></a></p>
74</td>
75<td class="cellrowborder" valign="top" width="63.61636163616362%" headers="mcps1.2.4.1.2 "><p id="p174121125175619"><a name="p174121125175619"></a><a name="p174121125175619"></a>int32_t CodecInit();</p>
76</td>
77<td class="cellrowborder" valign="top" width="23.562356235623565%" headers="mcps1.2.4.1.3 "><p id="p114126258569"><a name="p114126258569"></a><a name="p114126258569"></a>Initializes the internal audio and video submodules of the codec.</p>
78</td>
79</tr>
80<tr id="row2661171172814"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1341212595610"><a name="p1341212595610"></a><a name="p1341212595610"></a>int32_t CodecDeinit();</p>
81</td>
82<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1341272515610"><a name="p1341272515610"></a><a name="p1341272515610"></a>Deinitializes the internal audio and video submodules of the codec.</p>
83</td>
84</tr>
85<tr id="row4385112822818"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14413122555620"><a name="p14413122555620"></a><a name="p14413122555620"></a>int32_t CodecEnumerateCapbility(uint32_t index, CodecCapbility *cap);</p>
86</td>
87<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1141372575614"><a name="p1141372575614"></a><a name="p1141372575614"></a>Obtains the capabilities of a specified media type based on an index.</p>
88</td>
89</tr>
90<tr id="row181371630162816"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1941362515561"><a name="p1941362515561"></a><a name="p1941362515561"></a>int32_t CodecGetCapbility(AvCodecMime mime, CodecType type, uint32_t flags, CodecCapbility *cap);</p>
91</td>
92<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p44131025115619"><a name="p44131025115619"></a><a name="p44131025115619"></a>Obtains the capabilities of a specified media type.</p>
93</td>
94</tr>
95<tr id="row01531026142811"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p241312251562"><a name="p241312251562"></a><a name="p241312251562"></a>int32_t CodecCreate(const char* name, const Param *attr, int len, CODEC_HANDLETYPE *handle);</p>
96</td>
97<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p12413525135615"><a name="p12413525135615"></a><a name="p12413525135615"></a>Creates a specific codec component and returns the component context through a handle.</p>
98</td>
99</tr>
100<tr id="row11460182372815"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p44133252564"><a name="p44133252564"></a><a name="p44133252564"></a>int32_t CodecDestroy(CODEC_HANDLETYPE handle);</p>
101</td>
102<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p041392535610"><a name="p041392535610"></a><a name="p041392535610"></a>Destroys a codec component.</p>
103</td>
104</tr>
105<tr id="row61462216285"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p84134251566"><a name="p84134251566"></a><a name="p84134251566"></a>int32_t CodecSetPortMode(CODEC_HANDLETYPE handle, DirectionType type, BufferMode mode);</p>
106</td>
107<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p204131258569"><a name="p204131258569"></a><a name="p204131258569"></a>Sets the input or output buffer mode.</p>
108</td>
109</tr>
110<tr id="row791355812713"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p10413112575617"><a name="p10413112575617"></a><a name="p10413112575617"></a>int32_t CodecSetParameter(CODEC_HANDLETYPE handle, const Param *params, int paramCnt);</p>
111</td>
112<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p94138253562"><a name="p94138253562"></a><a name="p94138253562"></a>Sets parameters required by a codec component.</p>
113</td>
114</tr>
115<tr id="row3731175622711"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p441318251564"><a name="p441318251564"></a><a name="p441318251564"></a>int32_t CodecGetParameter(CODEC_HANDLETYPE handle, Param *params, int paramCnt);</p>
116</td>
117<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p74132257566"><a name="p74132257566"></a><a name="p74132257566"></a>Obtains parameters from a codec component.</p>
118</td>
119</tr>
120<tr id="row131131754172718"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14132257567"><a name="p14132257567"></a><a name="p14132257567"></a>int32_t CodecStart(CODEC_HANDLETYPE handle);</p>
121</td>
122<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1741382510566"><a name="p1741382510566"></a><a name="p1741382510566"></a>Starts a codec component.</p>
123</td>
124</tr>
125<tr id="row133541652202712"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p11413125185617"><a name="p11413125185617"></a><a name="p11413125185617"></a>int32_t CodecStop(CODEC_HANDLETYPE handle);</p>
126</td>
127<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p154137256566"><a name="p154137256566"></a><a name="p154137256566"></a>Stops a codec component.</p>
128</td>
129</tr>
130<tr id="row148624820271"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p124141425125610"><a name="p124141425125610"></a><a name="p124141425125610"></a>int32_t CodecFlush(CODEC_HANDLETYPE handle, DirectionType directType);</p>
131</td>
132<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p64141258565"><a name="p64141258565"></a><a name="p64141258565"></a>Clears the cache when the codec component is the running state.</p>
133</td>
134</tr>
135<tr id="row1676314450275"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p144141225165615"><a name="p144141225165615"></a><a name="p144141225165615"></a>int32_t CodecQueueInput(CODEC_HANDLETYPE handle, const InputInfo *inputData, uint32_t timeoutMs);</p>
136</td>
137<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6414182535616"><a name="p6414182535616"></a><a name="p6414182535616"></a>Queues input data.</p>
138</td>
139</tr>
140<tr id="row194281341102710"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15414112510561"><a name="p15414112510561"></a><a name="p15414112510561"></a>int32_t CodecDequeInput(CODEC_HANDLETYPE handle, uint32_t timeoutMs, InputInfo *inputData);</p>
141</td>
142<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p341492555613"><a name="p341492555613"></a><a name="p341492555613"></a>Dequeues input data that has been used.</p>
143</td>
144</tr>
145<tr id="row560213915277"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p8414525145610"><a name="p8414525145610"></a><a name="p8414525145610"></a>int32_t CodecQueueOutput(CODEC_HANDLETYPE handle, OutputInfo *outInfo, uint32_t timeoutMs, int releaseFenceFd);</p>
146</td>
147<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1241442513569"><a name="p1241442513569"></a><a name="p1241442513569"></a>Queues output data.</p>
148</td>
149</tr>
150<tr id="row933244161410"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p6414425185619"><a name="p6414425185619"></a><a name="p6414425185619"></a>int32_t CodecDequeueOutput(CODEC_HANDLETYPE handle, uint32_t timeoutMs, int *acquireFd, OutputInfo *outInfo);</p>
151</td>
152<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p16414112518560"><a name="p16414112518560"></a><a name="p16414112518560"></a>Dequeues output data.</p>
153</td>
154</tr>
155<tr id="row182432045121416"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p104148252565"><a name="p104148252565"></a><a name="p104148252565"></a>int32_t CodecSetCallback(CODEC_HANDLETYPE handle, const CodecCallback *cb, UINTPTR instance);</p>
156</td>
157<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p20414172595617"><a name="p20414172595617"></a><a name="p20414172595617"></a>Sets the callback function.</p>
158</td>
159</tr>
160</tbody>
161</table>
162
163### Usage Guidelines<a name="section129654513264"></a>
164
165The core functionalities of this repository are as follows:
166
167-   Provides codec HDIs that can be directly called by the framework layer to perform encoding and decoding-related operations.
168-   Provides standard interfaces for device developers to ensure that the OEM vendors comply with the HDI adapter standard. This promises a healthy evolution of the ecosystem.
169
170For details about the invocation and implementation, see the API reference.
171
172## Repositories Involved<a name="section1371113476307"></a>
173
174[Driver subsystem](https://gitee.com/openharmony/docs/blob/master/en/readme/driver-subsystem.md)
175
176[drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README.md)
177
178[drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README.md)
179
180[drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README.md)
181
182drivers\_peripheral
183
184

README_zh.md

1# Codec<a name="ZH-CN_TOPIC_0000001131751215"></a>
2
3-   [简介](#section11660541593)
4-   [目录](#section161941989596)
5    -   [接口说明](#section1551164914237)
6    -   [使用说明](#section129654513264)
7
8-   [相关仓](#section1371113476307)
9
10## 简介<a name="section11660541593"></a>
11
12该仓下主要包含Codec模块HDI(Hardware Driver Interface)接口定义及其实现,对上层提供媒体编解码的驱动能力接口,HDI接口主要提供如下功能:
13
14-   创建、销毁编解码器对象;
15-   启停编解码器
16-   原始码流编码为压缩码流;
17-   压缩码流恢复为原始码流
18-   清除编解码缓存。
19
20## 目录<a name="section161941989596"></a>
21
22该仓下源代码目录结构如下所示
23
24```
25/drivers/peripheral/codec
26├── interfaces         # codec模块对上层服务提供的驱动能力接口
27│   └── include       # codec模块对外提供的接口定义
28```
29
30### 接口说明<a name="section1551164914237"></a>
31
32Codec驱动提供给framework层可直接调用的能力接口,主要功能有:创建、销毁编解码器对象,启停编解码器操作,编解码处理、清除缓存、事件上报等
33
34提供的部分接口说明如[表1 Codec HDI接口列表](#table1513255710559)所示:
35
36**表 1**  Codec HDI接口列表
37
38<a name="table1513255710559"></a>
39<table><thead align="left"><tr id="row171321857155517"><th class="cellrowborder" align="center" valign="top" width="12.821282128212822%" id="mcps1.2.4.1.1"><p id="p6132957115511"><a name="p6132957115511"></a><a name="p6132957115511"></a>头文件</p>
40</th>
41<th class="cellrowborder" align="center" valign="top" width="63.61636163616362%" id="mcps1.2.4.1.2"><p id="p14132125715552"><a name="p14132125715552"></a><a name="p14132125715552"></a>接口名称</p>
42</th>
43<th class="cellrowborder" align="center" valign="top" width="23.562356235623565%" id="mcps1.2.4.1.3"><p id="p18132205755516"><a name="p18132205755516"></a><a name="p18132205755516"></a>功能描述</p>
44</th>
45</tr>
46</thead>
47<tbody><tr id="row1267017500274"><td class="cellrowborder" rowspan="17" align="left" valign="top" width="12.821282128212822%" headers="mcps1.2.4.1.1 "><p id="p15674038913"><a name="p15674038913"></a><a name="p15674038913"></a></p>
48<p id="p169466917181"><a name="p169466917181"></a><a name="p169466917181"></a></p>
49<p id="p12106161012185"><a name="p12106161012185"></a><a name="p12106161012185"></a></p>
50<p id="p7255161017181"><a name="p7255161017181"></a><a name="p7255161017181"></a></p>
51<p id="p1839901041815"><a name="p1839901041815"></a><a name="p1839901041815"></a></p>
52<p id="p4540171015188"><a name="p4540171015188"></a><a name="p4540171015188"></a></p>
53<p id="p368816102189"><a name="p368816102189"></a><a name="p368816102189"></a></p>
54<p id="p679481051814"><a name="p679481051814"></a><a name="p679481051814"></a></p>
55<p id="p7399191241817"><a name="p7399191241817"></a><a name="p7399191241817"></a></p>
56<p id="p11902121271818"><a name="p11902121271818"></a><a name="p11902121271818"></a></p>
57<p id="p1296415129182"><a name="p1296415129182"></a><a name="p1296415129182"></a></p>
58<p id="p1742101311180"><a name="p1742101311180"></a><a name="p1742101311180"></a></p>
59<p id="p171041613101815"><a name="p171041613101815"></a><a name="p171041613101815"></a></p>
60<p id="p10172141314183"><a name="p10172141314183"></a><a name="p10172141314183"></a></p>
61<p id="p723216132180"><a name="p723216132180"></a><a name="p723216132180"></a></p>
62<p id="p825185015460"><a name="p825185015460"></a><a name="p825185015460"></a>codec_interface.h</p>
63<p id="p2133757135510"><a name="p2133757135510"></a><a name="p2133757135510"></a></p>
64<p id="p14171441118"><a name="p14171441118"></a><a name="p14171441118"></a></p>
65<p id="p57063567463"><a name="p57063567463"></a><a name="p57063567463"></a></p>
66<p id="p1285144710118"><a name="p1285144710118"></a><a name="p1285144710118"></a></p>
67<p id="p854114711117"><a name="p854114711117"></a><a name="p854114711117"></a></p>
68<p id="p15741647517"><a name="p15741647517"></a><a name="p15741647517"></a></p>
69<p id="p7909447418"><a name="p7909447418"></a><a name="p7909447418"></a></p>
70<p id="p12525910165811"><a name="p12525910165811"></a><a name="p12525910165811"></a></p>
71<p id="p942322013262"><a name="p942322013262"></a><a name="p942322013262"></a></p>
72<p id="p1040515339526"><a name="p1040515339526"></a><a name="p1040515339526"></a></p>
73<p id="p19405533115216"><a name="p19405533115216"></a><a name="p19405533115216"></a></p>
74</td>
75<td class="cellrowborder" valign="top" width="63.61636163616362%" headers="mcps1.2.4.1.2 "><p id="p174121125175619"><a name="p174121125175619"></a><a name="p174121125175619"></a>int32_t CodecInit();</p>
76</td>
77<td class="cellrowborder" valign="top" width="23.562356235623565%" headers="mcps1.2.4.1.3 "><p id="p114126258569"><a name="p114126258569"></a><a name="p114126258569"></a>codec模块初始化处理</p>
78</td>
79</tr>
80<tr id="row2661171172814"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1341212595610"><a name="p1341212595610"></a><a name="p1341212595610"></a>int32_t CodecDeinit();</p>
81</td>
82<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1341272515610"><a name="p1341272515610"></a><a name="p1341272515610"></a>codec模块去初始化处理</p>
83</td>
84</tr>
85<tr id="row4385112822818"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14413122555620"><a name="p14413122555620"></a><a name="p14413122555620"></a>int32_t CodecEnumerateCapbility(uint32_t index, CodecCapbility *cap);</p>
86</td>
87<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1141372575614"><a name="p1141372575614"></a><a name="p1141372575614"></a>获取某一个编解码能力</p>
88</td>
89</tr>
90<tr id="row181371630162816"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1941362515561"><a name="p1941362515561"></a><a name="p1941362515561"></a>int32_t CodecGetCapbility(AvCodecMime mime, CodecType type, uint32_t flags, CodecCapbility *cap);</p>
91</td>
92<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p44131025115619"><a name="p44131025115619"></a><a name="p44131025115619"></a>获取指定编解码能力</p>
93</td>
94</tr>
95<tr id="row01531026142811"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p241312251562"><a name="p241312251562"></a><a name="p241312251562"></a>int32_t CodecCreate(const char* name, const Param *attr, int len, CODEC_HANDLETYPE *handle);</p>
96</td>
97<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p12413525135615"><a name="p12413525135615"></a><a name="p12413525135615"></a>创建编解码对象</p>
98</td>
99</tr>
100<tr id="row11460182372815"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p44133252564"><a name="p44133252564"></a><a name="p44133252564"></a>int32_t CodecDestroy(CODEC_HANDLETYPE handle);</p>
101</td>
102<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p041392535610"><a name="p041392535610"></a><a name="p041392535610"></a>销毁编解码对象</p>
103</td>
104</tr>
105<tr id="row61462216285"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p84134251566"><a name="p84134251566"></a><a name="p84134251566"></a>int32_t CodecSetPortMode(CODEC_HANDLETYPE handle, DirectionType type, BufferMode mode);</p>
106</td>
107<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p204131258569"><a name="p204131258569"></a><a name="p204131258569"></a>设置端口buffer模式:内部buffer或外部buffer</p>
108</td>
109</tr>
110<tr id="row791355812713"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p10413112575617"><a name="p10413112575617"></a><a name="p10413112575617"></a>int32_t CodecSetParameter(CODEC_HANDLETYPE handle, const Param *params, int paramCnt);</p>
111</td>
112<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p94138253562"><a name="p94138253562"></a><a name="p94138253562"></a>扩展接口。设置编解码属性</p>
113</td>
114</tr>
115<tr id="row3731175622711"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p441318251564"><a name="p441318251564"></a><a name="p441318251564"></a>int32_t CodecGetParameter(CODEC_HANDLETYPE handle, Param *params, int paramCnt);</p>
116</td>
117<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p74132257566"><a name="p74132257566"></a><a name="p74132257566"></a>扩展接口。获取编解码属性</p>
118</td>
119</tr>
120<tr id="row131131754172718"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14132257567"><a name="p14132257567"></a><a name="p14132257567"></a>int32_t CodecStart(CODEC_HANDLETYPE handle);</p>
121</td>
122<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1741382510566"><a name="p1741382510566"></a><a name="p1741382510566"></a>启动工作。</p>
123</td>
124</tr>
125<tr id="row133541652202712"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p11413125185617"><a name="p11413125185617"></a><a name="p11413125185617"></a>int32_t CodecStop(CODEC_HANDLETYPE handle);</p>
126</td>
127<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p154137256566"><a name="p154137256566"></a><a name="p154137256566"></a>停止工作</p>
128</td>
129</tr>
130<tr id="row148624820271"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p124141425125610"><a name="p124141425125610"></a><a name="p124141425125610"></a>int32_t CodecFlush(CODEC_HANDLETYPE handle, DirectionType directType);</p>
131</td>
132<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p64141258565"><a name="p64141258565"></a><a name="p64141258565"></a>清除缓存处理</p>
133</td>
134</tr>
135<tr id="row1676314450275"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p144141225165615"><a name="p144141225165615"></a><a name="p144141225165615"></a>int32_t CodecQueueInput(CODEC_HANDLETYPE handle, const InputInfo *inputData, uint32_t timeoutMs);</p>
136</td>
137<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6414182535616"><a name="p6414182535616"></a><a name="p6414182535616"></a>送入输入buffer</p>
138</td>
139</tr>
140<tr id="row194281341102710"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15414112510561"><a name="p15414112510561"></a><a name="p15414112510561"></a>int32_t CodecDequeInput(CODEC_HANDLETYPE handle, uint32_t timeoutMs, InputInfo *inputData);</p>
141</td>
142<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p341492555613"><a name="p341492555613"></a><a name="p341492555613"></a>取出输入buffer</p>
143</td>
144</tr>
145<tr id="row560213915277"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p8414525145610"><a name="p8414525145610"></a><a name="p8414525145610"></a>int32_t CodecQueueOutput(CODEC_HANDLETYPE handle, OutputInfo *outInfo, uint32_t timeoutMs, int releaseFenceFd);</p>
146</td>
147<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1241442513569"><a name="p1241442513569"></a><a name="p1241442513569"></a>送入输出buffer</p>
148</td>
149</tr>
150<tr id="row933244161410"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p6414425185619"><a name="p6414425185619"></a><a name="p6414425185619"></a>int32_t CodecDequeueOutput(CODEC_HANDLETYPE handle, uint32_t timeoutMs, int *acquireFd, OutputInfo *outInfo);</p>
151</td>
152<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p16414112518560"><a name="p16414112518560"></a><a name="p16414112518560"></a>取出输出buffer</p>
153</td>
154</tr>
155<tr id="row182432045121416"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p104148252565"><a name="p104148252565"></a><a name="p104148252565"></a>int32_t CodecSetCallback(CODEC_HANDLETYPE handle, const CodecCallback *cb, UINTPTR instance);</p>
156</td>
157<td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p20414172595617"><a name="p20414172595617"></a><a name="p20414172595617"></a>设置回调函数</p>
158</td>
159</tr>
160</tbody>
161</table>
162
163### 使用说明<a name="section129654513264"></a>
164
165该仓核心功能包括两个方面:
166
167-   提供Codec HDI接口供framework层调用,实现编码和解码基本功能。
168-   作为标准南向接口,保证南向OEM产商实现HDI-adapter的规范性,保证生态良性演进。
169
170具体接口调用及实现,以接口注释为准。
171
172## 相关仓<a name="section1371113476307"></a>
173
174[驱动子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E9%A9%B1%E5%8A%A8%E5%AD%90%E7%B3%BB%E7%BB%9F.md)
175
176[drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README_zh.md)
177
178[drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README_zh.md)
179
180[drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README_zh.md)
181
182drivers\_peripheral
183
184