Name |
Date |
Size |
#Lines |
LOC |
||
---|---|---|---|---|---|---|
.. | - | - | ||||
interfaces/include/ | 12-May-2024 | - | 1,320 | 363 | ||
README.md | D | 12-May-2024 | 22.1 KiB | 269 | 244 | |
README_zh.md | D | 12-May-2024 | 20.9 KiB | 269 | 244 |
README.md
1 # Format<a name="EN-US_TOPIC_0000001131858907"></a> 2 3 - [Introduction](#section11660541593) 4 - [Directory Structure](#section161941989596) 5 - [Available APIs](#section1551164914237) 6 - [Usage](#section129654513264) 7 8 - [Repositories Involved](#section1371113476307) 9 10 ## Introduction<a name="section11660541593"></a> 11 12 This repository mainly defines and implements the Hardware Driver Interfaces \(HDIs\) of the format module, allowing upper-layer services to perform the following operations for media files: 13 14 - Creating and destroying a muxer and demuxer 15 - Starting and stopping a muxer and demuxer 16 - Obtaining the attributes of a media file 17 - Obtaining the data frame information of a media file 18 - Adding data streams and frames to a muxer 19 20 ## Directory Structure<a name="section161941989596"></a> 21 22 The source code directory structure is as follows: 23 24 ``` 25 /drivers/peripheral/format 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 32 The format module provides APIs that can be directly called by the framework layer to create or destroy a muxer and demuxer, start or stop a muxer and demuxer, obtain the attributes of a media file, read data frames from a media file, add data streams and frames to a muxer component, and set a callback. 33 34 [Table 1](#table1513255710559) describes major HDI APIs provided by the format module. 35 36 **Table 1** Major HDI APIs of the format 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="62.16621662166217%" 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="25.012501250125013%" 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="34" 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>format_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="62.16621662166217%" headers="mcps1.2.4.1.2 "><p id="p6264341172811"><a name="p6264341172811"></a><a name="p6264341172811"></a>void FormatInit(void);</p> 76 </td> 77 <td class="cellrowborder" valign="top" width="25.012501250125013%" headers="mcps1.2.4.1.3 "><p id="p13264114182817"><a name="p13264114182817"></a><a name="p13264114182817"></a>Initializes the format.</p> 78 </td> 79 </tr> 80 <tr id="row2661171172814"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p126514172811"><a name="p126514172811"></a><a name="p126514172811"></a>void FormatDeInit(void);</p> 81 </td> 82 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p15265164122819"><a name="p15265164122819"></a><a name="p15265164122819"></a>Deinitializes the format.</p> 83 </td> 84 </tr> 85 <tr id="row4385112822818"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p10265134111284"><a name="p10265134111284"></a><a name="p10265134111284"></a>int32_t FormatDemuxerCreate(const FormatSource *source, FormatHandle * const handle);</p> 86 </td> 87 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p726554110289"><a name="p726554110289"></a><a name="p726554110289"></a>Creates a demuxer and returns its context handle.</p> 88 </td> 89 </tr> 90 <tr id="row181371630162816"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p426517411284"><a name="p426517411284"></a><a name="p426517411284"></a>int32_t FormatDemuxerSetParameter(const FormatHandle handle, int32_t trackId, const ParameterItem *metaData, int32_t metaDataCnt);</p> 91 </td> 92 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1926512413287"><a name="p1926512413287"></a><a name="p1926512413287"></a>Sets demuxer attributes.</p> 93 </td> 94 </tr> 95 <tr id="row01531026142811"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p182651741162812"><a name="p182651741162812"></a><a name="p182651741162812"></a>int32_t FormatDemuxerGetParameter(const FormatHandle handle, int32_t trackId, ParameterItem *metaData);</p> 96 </td> 97 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p142651241152813"><a name="p142651241152813"></a><a name="p142651241152813"></a>Obtains demuxer attributes.</p> 98 </td> 99 </tr> 100 <tr id="row11460182372815"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1626534118284"><a name="p1626534118284"></a><a name="p1626534118284"></a>int32_t FormatDemuxerSetCallBack(const FormatHandle handle, const FormatCallback *callBack);</p> 101 </td> 102 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p72661241112817"><a name="p72661241112817"></a><a name="p72661241112817"></a>Sets a callback for the demuxer.</p> 103 </td> 104 </tr> 105 <tr id="row61462216285"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p526624122817"><a name="p526624122817"></a><a name="p526624122817"></a>int32_t FormatDemuxerSetBufferConfig(const FormatHandle handle, const FormatBufferSetting *setting);</p> 106 </td> 107 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p14266114119283"><a name="p14266114119283"></a><a name="p14266114119283"></a>(Optional) Sets buffer information for the demuxer.</p> 108 </td> 109 </tr> 110 <tr id="row791355812713"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15266144111283"><a name="p15266144111283"></a><a name="p15266144111283"></a>int32_t FormatDemuxerGetBufferConfig(const FormatHandle handle, FormatBufferSetting *setting);</p> 111 </td> 112 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p162661841172812"><a name="p162661841172812"></a><a name="p162661841172812"></a>(Optional) Obtains the buffer information of the demuxer.</p> 113 </td> 114 </tr> 115 <tr id="row3731175622711"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1526664162814"><a name="p1526664162814"></a><a name="p1526664162814"></a>int32_t FormatDemuxerPrepare(const FormatHandle handle);</p> 116 </td> 117 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6266941142816"><a name="p6266941142816"></a><a name="p6266941142816"></a>Makes preparations for the demuxer.</p> 118 </td> 119 </tr> 120 <tr id="row131131754172718"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p5266104113281"><a name="p5266104113281"></a><a name="p5266104113281"></a>int32_t FormatDemuxerGetFileInfo(const FormatHandle handle, FileInfo *info);</p> 121 </td> 122 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p13266341202815"><a name="p13266341202815"></a><a name="p13266341202815"></a>Obtains the attributes of a media file.</p> 123 </td> 124 </tr> 125 <tr id="row133541652202712"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1826619419281"><a name="p1826619419281"></a><a name="p1826619419281"></a>int32_t FormatDemuxerSelectTrack(const FormatHandle handle, int32_t programId, int32_t trackId);</p> 126 </td> 127 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p182671341102811"><a name="p182671341102811"></a><a name="p182671341102811"></a>Selects a specified media track from which the demuxer reads data frames by calling <strong id="b0679191319363"><a name="b0679191319363"></a><a name="b0679191319363"></a>FormatDemuxerReadFrame</strong>.)</p> 128 </td> 129 </tr> 130 <tr id="row148624820271"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p17267341102812"><a name="p17267341102812"></a><a name="p17267341102812"></a>int32_t FormatDemuxerUnselectTrack(const FormatHandle handle, int32_t programId, int32_t trackId);</p> 131 </td> 132 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1267141192812"><a name="p1267141192812"></a><a name="p1267141192812"></a>Unselects a specified media track from which the demuxer will not read data frames when calling <strong id="b183885214111"><a name="b183885214111"></a><a name="b183885214111"></a>FormatDemuxerReadFrame</strong>.</p> 133 </td> 134 </tr> 135 <tr id="row1676314450275"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p02671641122810"><a name="p02671641122810"></a><a name="p02671641122810"></a>int32_t FormatDemuxerStart(const FormatHandle handle);</p> 136 </td> 137 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p3267104112289"><a name="p3267104112289"></a><a name="p3267104112289"></a>Starts the demuxer. After being started, the caller can read data frames from the demuxer.</p> 138 </td> 139 </tr> 140 <tr id="row194281341102710"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1526719418280"><a name="p1526719418280"></a><a name="p1526719418280"></a>int32_t FormatDemuxerGetSelectedTrack(const FormatHandle handle, int32_t *programId, int32_t trackId[], int32_t *nums);</p> 141 </td> 142 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p142671441122820"><a name="p142671441122820"></a><a name="p142671441122820"></a>Obtains the ID of the media track selected by the demuxer for output.</p> 143 </td> 144 </tr> 145 <tr id="row560213915277"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1268641112812"><a name="p1268641112812"></a><a name="p1268641112812"></a>int32_t FormatDemuxerReadFrame(const FormatHandle handle, FormatFrame *frame, int32_t timeOutMs);</p> 146 </td> 147 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p18268174192819"><a name="p18268174192819"></a><a name="p18268174192819"></a>Reads data frames.</p> 148 </td> 149 </tr> 150 <tr id="row933244161410"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15483141102218"><a name="p15483141102218"></a><a name="p15483141102218"></a>int32_t FormatDemuxerFreeFrame(const FormatHandle handle, FormatFrame *frame);</p> 151 </td> 152 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p15484194152211"><a name="p15484194152211"></a><a name="p15484194152211"></a>Frees data frames.</p> 153 </td> 154 </tr> 155 <tr id="row182432045121416"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p0484241102215"><a name="p0484241102215"></a><a name="p0484241102215"></a>int32_t FormatDemuxerSeek(const FormatHandle handle, int32_t streamIndex, int64_t timeStampUs, FormatSeekMode mode);</p> 156 </td> 157 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p10484641162215"><a name="p10484641162215"></a><a name="p10484641162215"></a>Seeks for a specified position for the demuxer.</p> 158 </td> 159 </tr> 160 <tr id="row122643187161"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14842418228"><a name="p14842418228"></a><a name="p14842418228"></a>int32_t FormatDemuxerStop(const FormatHandle handle);</p> 161 </td> 162 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p9484124132212"><a name="p9484124132212"></a><a name="p9484124132212"></a>Stops the demuxer from working.</p> 163 </td> 164 </tr> 165 <tr id="row1168154414167"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p948418417222"><a name="p948418417222"></a><a name="p948418417222"></a>int32_t FormatDemuxerDestory(const FormatHandle handle);</p> 166 </td> 167 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6484174172215"><a name="p6484174172215"></a><a name="p6484174172215"></a>Destroys demuxer resources.</p> 168 </td> 169 </tr> 170 <tr id="row565634691619"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p124840414221"><a name="p124840414221"></a><a name="p124840414221"></a>int32_t FormatMuxerCreate(FormatHandle * const handle, const FormatOutputConfig *outputConfig);</p> 171 </td> 172 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p184841741192215"><a name="p184841741192215"></a><a name="p184841741192215"></a>Creates a muxer and returns its context handle.</p> 173 </td> 174 </tr> 175 <tr id="row1586205081614"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1348474117228"><a name="p1348474117228"></a><a name="p1348474117228"></a>int32_t FormatMuxerDestory(const FormatHandle handle);</p> 176 </td> 177 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p848464120229"><a name="p848464120229"></a><a name="p848464120229"></a>Destroys a muxer and releases its resources created by calling <strong id="b454274814618"><a name="b454274814618"></a><a name="b454274814618"></a>FormatMuxerCreate</strong>.</p> 178 </td> 179 </tr> 180 <tr id="row1815361272220"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1948574113229"><a name="p1948574113229"></a><a name="p1948574113229"></a>int32_t FormatMuxerAddTrack(const FormatHandle handle, const TrackSource *trackSource);</p> 181 </td> 182 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1248524162220"><a name="p1248524162220"></a><a name="p1248524162220"></a>Adds a media track source for the muxer.</p> 183 </td> 184 </tr> 185 <tr id="row14720016182214"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p12485184152211"><a name="p12485184152211"></a><a name="p12485184152211"></a>int32_t FormatMuxerSetCallBack(const FormatHandle handle, const FormatCallback *callBack);</p> 186 </td> 187 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p5485114114229"><a name="p5485114114229"></a><a name="p5485114114229"></a>Sets a callback for the muxer.</p> 188 </td> 189 </tr> 190 <tr id="row1466424191620"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p164854415224"><a name="p164854415224"></a><a name="p164854415224"></a>int32_t FormatMuxerSetOrientation(const FormatHandle handle, int degrees);</p> 191 </td> 192 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p948534113222"><a name="p948534113222"></a><a name="p948534113222"></a>Sets the orientation of the video track for the muxer.</p> 193 </td> 194 </tr> 195 <tr id="row99291794226"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p10485154119227"><a name="p10485154119227"></a><a name="p10485154119227"></a>int32_t FormatMuxerSetLocation(const FormatHandle handle, int latitude, int longitude);</p> 196 </td> 197 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p144851241102210"><a name="p144851241102210"></a><a name="p144851241102210"></a>Sets the geographical information for the output file of the muxer.</p> 198 </td> 199 </tr> 200 <tr id="row21561639131614"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p24851941172211"><a name="p24851941172211"></a><a name="p24851941172211"></a>int32_t FormatMuxerSetMaxFileSize(const FormatHandle handle, int64_t bytes);</p> 201 </td> 202 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p12485124132219"><a name="p12485124132219"></a><a name="p12485124132219"></a>Sets the maximum size (in bytes) for the output file of the muxer.</p> 203 </td> 204 </tr> 205 <tr id="row1024914496149"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p9485164152218"><a name="p9485164152218"></a><a name="p9485164152218"></a>int32_t FormatMuxerSetMaxFileDuration(const FormatHandle handle, int64_t durationUs);</p> 206 </td> 207 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1548519411228"><a name="p1548519411228"></a><a name="p1548519411228"></a>Sets the maximum duration (in seconds) for the output file.</p> 208 </td> 209 </tr> 210 <tr id="row5647191181614"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p948515417222"><a name="p948515417222"></a><a name="p948515417222"></a>int32_t FormatMuxerSetFileSplitDuration(const FormatHandle handle, ManualSplitType type, int64_t timestampUs, uint32_t durationUs);</p> 211 </td> 212 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p9486441142216"><a name="p9486441142216"></a><a name="p9486441142216"></a>Manually splits a file.</p> 213 </td> 214 </tr> 215 <tr id="row96242146164"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1448614116229"><a name="p1448614116229"></a><a name="p1448614116229"></a>int32_t FormatMuxerStart(const FormatHandle handle);</p> 216 </td> 217 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p448624162217"><a name="p448624162217"></a><a name="p448624162217"></a>Starts the muxer.</p> 218 </td> 219 </tr> 220 <tr id="row4719558166"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p448664112224"><a name="p448664112224"></a><a name="p448664112224"></a>int32_t FormatMuxerWriteFrame(const FormatHandle handle, const FormatFrame *frameData);</p> 221 </td> 222 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p114869411222"><a name="p114869411222"></a><a name="p114869411222"></a>Writes data frames into the muxer.</p> 223 </td> 224 </tr> 225 <tr id="row18785159171611"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p148624112222"><a name="p148624112222"></a><a name="p148624112222"></a>int32_t FormatMuxerSetNextOutputFile(const FormatHandle handle, int32_t fd);</p> 226 </td> 227 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6486164113221"><a name="p6486164113221"></a><a name="p6486164113221"></a>Sets the descriptor for the next output file.</p> 228 </td> 229 </tr> 230 <tr id="row119401052191419"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14486204116224"><a name="p14486204116224"></a><a name="p14486204116224"></a>int32_t FormatMuxerStop(const FormatHandle handle, bool block);</p> 231 </td> 232 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p648612417226"><a name="p648612417226"></a><a name="p648612417226"></a>Stops the muxer that was started by calling <strong id="b934812298562"><a name="b934812298562"></a><a name="b934812298562"></a>FormatMuxerStart</strong>.</p> 233 </td> 234 </tr> 235 <tr id="row1244610316169"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14861341192214"><a name="p14861341192214"></a><a name="p14861341192214"></a>int32_t FormatMuxerSetParameter(const FormatHandle handle, int32_t trackId, const ParameterItem *item, int32_t itemNum);</p> 236 </td> 237 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1486134102210"><a name="p1486134102210"></a><a name="p1486134102210"></a>Sets muxer attributes.</p> 238 </td> 239 </tr> 240 <tr id="row17305165551410"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1448654102214"><a name="p1448654102214"></a><a name="p1448654102214"></a>int32_t FormatMuxerGetParameter(const FormatHandle handle, int32_t trackId, ParameterItem *item, int32_t itemNum);</p> 241 </td> 242 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p348617419229"><a name="p348617419229"></a><a name="p348617419229"></a>Obtains muxer attributes.</p> 243 </td> 244 </tr> 245 </tbody> 246 </table> 247 248 ### Usage<a name="section129654513264"></a> 249 250 The core functionalities of this repository are as follows: 251 252 - Provides format HDIs that can be directly called by the framework layer to perform muxer and demuxer-related operations. 253 - 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. 254 255 For details about the invocation and implementation, see the API reference. 256 257 ## Repositories Involved<a name="section1371113476307"></a> 258 259 [Driver subsystem](https://gitee.com/openharmony/docs/blob/master/en/readme/driver.md) 260 261 [drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README.md) 262 263 [drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README.md) 264 265 [drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README.md) 266 267 [drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral) 268 269
README_zh.md
1 # Format<a name="ZH-CN_TOPIC_0000001131858907"></a> 2 3 - [简介](#section11660541593) 4 - [目录](#section161941989596) 5 - [接口说明](#section1551164914237) 6 - [使用说明](#section129654513264) 7 8 - [相关仓](#section1371113476307) 9 10 ## 简介<a name="section11660541593"></a> 11 12 该仓下主要包含Format模块HDI(Hardware Driver Interface)接口定义及其实现,对上层提供媒体文件复用和解复用的驱动能力接口,HDI接口主要提供如下功能: 13 14 - 创建、销毁复用和解复用器对象; 15 - 启停复用和解复用器 16 - 获取片源属性; 17 - 获取片源流数据帧信息 18 - 添加流和数据帧到复用器。 19 20 ## 目录<a name="section161941989596"></a> 21 22 该仓下源代码目录结构如下所示 23 24 ``` 25 /drivers/peripheral/format 26 ├── interfaces # format模块对上层服务提供的驱动能力接口 27 │ └── include # format模块对外提供的接口定义 28 ``` 29 30 ### 接口说明<a name="section1551164914237"></a> 31 32 Format驱动提供给framework层可直接调用的能力接口,主要功能有:创建、销毁复用器和解复用器对象,启停复用和解复用操作、获取片源属性、从片源读取数据帧处理、添加流和数据帧到复用器、事件上报等 33 34 提供的部分接口说明如[表1 Format HDI接口列表](#table1513255710559)所示: 35 36 **表 1** Format 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="62.16621662166217%" 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="25.012501250125013%" 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="34" 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>format_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="62.16621662166217%" headers="mcps1.2.4.1.2 "><p id="p6264341172811"><a name="p6264341172811"></a><a name="p6264341172811"></a>void FormatInit(void);</p> 76 </td> 77 <td class="cellrowborder" valign="top" width="25.012501250125013%" headers="mcps1.2.4.1.3 "><p id="p13264114182817"><a name="p13264114182817"></a><a name="p13264114182817"></a>模块初始化处理</p> 78 </td> 79 </tr> 80 <tr id="row2661171172814"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p126514172811"><a name="p126514172811"></a><a name="p126514172811"></a>void FormatDeInit(void);</p> 81 </td> 82 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p15265164122819"><a name="p15265164122819"></a><a name="p15265164122819"></a>模块去初始化处理</p> 83 </td> 84 </tr> 85 <tr id="row4385112822818"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p10265134111284"><a name="p10265134111284"></a><a name="p10265134111284"></a>int32_t FormatDemuxerCreate(const FormatSource *source, FormatHandle * const handle);</p> 86 </td> 87 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p726554110289"><a name="p726554110289"></a><a name="p726554110289"></a>创建解复用器对象</p> 88 </td> 89 </tr> 90 <tr id="row181371630162816"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p426517411284"><a name="p426517411284"></a><a name="p426517411284"></a>int32_t FormatDemuxerSetParameter(const FormatHandle handle, int32_t trackId, const ParameterItem *metaData, int32_t metaDataCnt);</p> 91 </td> 92 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1926512413287"><a name="p1926512413287"></a><a name="p1926512413287"></a>扩展接口,设置解复用器属性信息</p> 93 </td> 94 </tr> 95 <tr id="row01531026142811"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p182651741162812"><a name="p182651741162812"></a><a name="p182651741162812"></a>int32_t FormatDemuxerGetParameter(const FormatHandle handle, int32_t trackId, ParameterItem *metaData);</p> 96 </td> 97 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p142651241152813"><a name="p142651241152813"></a><a name="p142651241152813"></a>扩展接口,获取解复用器属性信息</p> 98 </td> 99 </tr> 100 <tr id="row11460182372815"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1626534118284"><a name="p1626534118284"></a><a name="p1626534118284"></a>int32_t FormatDemuxerSetCallBack(const FormatHandle handle, const FormatCallback *callBack);</p> 101 </td> 102 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p72661241112817"><a name="p72661241112817"></a><a name="p72661241112817"></a>设置回调函数接口,用于事件上报</p> 103 </td> 104 </tr> 105 <tr id="row61462216285"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p526624122817"><a name="p526624122817"></a><a name="p526624122817"></a>int32_t FormatDemuxerSetBufferConfig(const FormatHandle handle, const FormatBufferSetting *setting);</p> 106 </td> 107 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p14266114119283"><a name="p14266114119283"></a><a name="p14266114119283"></a>设置解复用器数据帧缓存大小信息(可选)</p> 108 </td> 109 </tr> 110 <tr id="row791355812713"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15266144111283"><a name="p15266144111283"></a><a name="p15266144111283"></a>int32_t FormatDemuxerGetBufferConfig(const FormatHandle handle, FormatBufferSetting *setting);</p> 111 </td> 112 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p162661841172812"><a name="p162661841172812"></a><a name="p162661841172812"></a>获取解复用器数据帧缓存大小信息(可选)</p> 113 </td> 114 </tr> 115 <tr id="row3731175622711"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1526664162814"><a name="p1526664162814"></a><a name="p1526664162814"></a>int32_t FormatDemuxerPrepare(const FormatHandle handle);</p> 116 </td> 117 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6266941142816"><a name="p6266941142816"></a><a name="p6266941142816"></a>准备工作处理,完成片源属性探测处理</p> 118 </td> 119 </tr> 120 <tr id="row131131754172718"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p5266104113281"><a name="p5266104113281"></a><a name="p5266104113281"></a>int32_t FormatDemuxerGetFileInfo(const FormatHandle handle, FileInfo *info);</p> 121 </td> 122 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p13266341202815"><a name="p13266341202815"></a><a name="p13266341202815"></a>获取片源属性。</p> 123 </td> 124 </tr> 125 <tr id="row133541652202712"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1826619419281"><a name="p1826619419281"></a><a name="p1826619419281"></a>int32_t FormatDemuxerSelectTrack(const FormatHandle handle, int32_t programId, int32_t trackId);</p> 126 </td> 127 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p182671341102811"><a name="p182671341102811"></a><a name="p182671341102811"></a>选择某个轨道。(通过FormatDemuxerReadFrame接口可以读取到对应轨道数据帧)</p> 128 </td> 129 </tr> 130 <tr id="row148624820271"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p17267341102812"><a name="p17267341102812"></a><a name="p17267341102812"></a>int32_t FormatDemuxerUnselectTrack(const FormatHandle handle, int32_t programId, int32_t trackId);</p> 131 </td> 132 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1267141192812"><a name="p1267141192812"></a><a name="p1267141192812"></a>不选择某个轨道。(通过FormatDemuxerReadFrame接口不会读取到对应轨道数据帧)</p> 133 </td> 134 </tr> 135 <tr id="row1676314450275"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p02671641122810"><a name="p02671641122810"></a><a name="p02671641122810"></a>int32_t FormatDemuxerStart(const FormatHandle handle);</p> 136 </td> 137 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p3267104112289"><a name="p3267104112289"></a><a name="p3267104112289"></a>启动工作。调用该接口后可读取到数据帧处理</p> 138 </td> 139 </tr> 140 <tr id="row194281341102710"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1526719418280"><a name="p1526719418280"></a><a name="p1526719418280"></a>int32_t FormatDemuxerGetSelectedTrack(const FormatHandle handle, int32_t *programId, int32_t trackId[], int32_t *nums);</p> 141 </td> 142 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p142671441122820"><a name="p142671441122820"></a><a name="p142671441122820"></a>获取当前已选择的轨道</p> 143 </td> 144 </tr> 145 <tr id="row560213915277"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1268641112812"><a name="p1268641112812"></a><a name="p1268641112812"></a>int32_t FormatDemuxerReadFrame(const FormatHandle handle, FormatFrame *frame, int32_t timeOutMs);</p> 146 </td> 147 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p18268174192819"><a name="p18268174192819"></a><a name="p18268174192819"></a>读取数据帧</p> 148 </td> 149 </tr> 150 <tr id="row933244161410"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p15483141102218"><a name="p15483141102218"></a><a name="p15483141102218"></a>int32_t FormatDemuxerFreeFrame(const FormatHandle handle, FormatFrame *frame);</p> 151 </td> 152 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p15484194152211"><a name="p15484194152211"></a><a name="p15484194152211"></a>释放数据帧</p> 153 </td> 154 </tr> 155 <tr id="row182432045121416"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p0484241102215"><a name="p0484241102215"></a><a name="p0484241102215"></a>int32_t FormatDemuxerSeek(const FormatHandle handle, int32_t streamIndex, int64_t timeStampUs, FormatSeekMode mode);</p> 156 </td> 157 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p10484641162215"><a name="p10484641162215"></a><a name="p10484641162215"></a>拖动到指定位置附近</p> 158 </td> 159 </tr> 160 <tr id="row122643187161"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14842418228"><a name="p14842418228"></a><a name="p14842418228"></a>int32_t FormatDemuxerStop(const FormatHandle handle);</p> 161 </td> 162 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p9484124132212"><a name="p9484124132212"></a><a name="p9484124132212"></a>解复用器停止工作</p> 163 </td> 164 </tr> 165 <tr id="row1168154414167"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p948418417222"><a name="p948418417222"></a><a name="p948418417222"></a>int32_t FormatDemuxerDestory(const FormatHandle handle);</p> 166 </td> 167 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6484174172215"><a name="p6484174172215"></a><a name="p6484174172215"></a>销毁解复用器对象</p> 168 </td> 169 </tr> 170 <tr id="row565634691619"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p124840414221"><a name="p124840414221"></a><a name="p124840414221"></a>int32_t FormatMuxerCreate(FormatHandle * const handle, const FormatOutputConfig *outputConfig);</p> 171 </td> 172 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p184841741192215"><a name="p184841741192215"></a><a name="p184841741192215"></a>创建复用器对象</p> 173 </td> 174 </tr> 175 <tr id="row1586205081614"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1348474117228"><a name="p1348474117228"></a><a name="p1348474117228"></a>int32_t FormatMuxerDestory(const FormatHandle handle);</p> 176 </td> 177 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p848464120229"><a name="p848464120229"></a><a name="p848464120229"></a>销毁复用器对象</p> 178 </td> 179 </tr> 180 <tr id="row1815361272220"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1948574113229"><a name="p1948574113229"></a><a name="p1948574113229"></a>int32_t FormatMuxerAddTrack(const FormatHandle handle, const TrackSource *trackSource);</p> 181 </td> 182 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1248524162220"><a name="p1248524162220"></a><a name="p1248524162220"></a>添加复用器流</p> 183 </td> 184 </tr> 185 <tr id="row14720016182214"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p12485184152211"><a name="p12485184152211"></a><a name="p12485184152211"></a>int32_t FormatMuxerSetCallBack(const FormatHandle handle, const FormatCallback *callBack);</p> 186 </td> 187 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p5485114114229"><a name="p5485114114229"></a><a name="p5485114114229"></a>设置复用器回调函数</p> 188 </td> 189 </tr> 190 <tr id="row1466424191620"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p164854415224"><a name="p164854415224"></a><a name="p164854415224"></a>int32_t FormatMuxerSetOrientation(const FormatHandle handle, int degrees);</p> 191 </td> 192 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p948534113222"><a name="p948534113222"></a><a name="p948534113222"></a>设置视频角度信息</p> 193 </td> 194 </tr> 195 <tr id="row99291794226"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p10485154119227"><a name="p10485154119227"></a><a name="p10485154119227"></a>int32_t FormatMuxerSetLocation(const FormatHandle handle, int latitude, int longitude);</p> 196 </td> 197 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p144851241102210"><a name="p144851241102210"></a><a name="p144851241102210"></a>设置地理位置信息</p> 198 </td> 199 </tr> 200 <tr id="row21561639131614"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p24851941172211"><a name="p24851941172211"></a><a name="p24851941172211"></a>int32_t FormatMuxerSetMaxFileSize(const FormatHandle handle, int64_t bytes);</p> 201 </td> 202 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p12485124132219"><a name="p12485124132219"></a><a name="p12485124132219"></a>设置复用器生成文件最大SIZE</p> 203 </td> 204 </tr> 205 <tr id="row1024914496149"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p9485164152218"><a name="p9485164152218"></a><a name="p9485164152218"></a>int32_t FormatMuxerSetMaxFileDuration(const FormatHandle handle, int64_t durationUs);</p> 206 </td> 207 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1548519411228"><a name="p1548519411228"></a><a name="p1548519411228"></a>设置复用器生成文件最大时长</p> 208 </td> 209 </tr> 210 <tr id="row5647191181614"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p948515417222"><a name="p948515417222"></a><a name="p948515417222"></a>int32_t FormatMuxerSetFileSplitDuration(const FormatHandle handle, ManualSplitType type, int64_t timestampUs, uint32_t durationUs);</p> 211 </td> 212 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p9486441142216"><a name="p9486441142216"></a><a name="p9486441142216"></a>设置手动切分片信息</p> 213 </td> 214 </tr> 215 <tr id="row96242146164"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1448614116229"><a name="p1448614116229"></a><a name="p1448614116229"></a>int32_t FormatMuxerStart(const FormatHandle handle);</p> 216 </td> 217 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p448624162217"><a name="p448624162217"></a><a name="p448624162217"></a>复用器启动工作</p> 218 </td> 219 </tr> 220 <tr id="row4719558166"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p448664112224"><a name="p448664112224"></a><a name="p448664112224"></a>int32_t FormatMuxerWriteFrame(const FormatHandle handle, const FormatFrame *frameData);</p> 221 </td> 222 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p114869411222"><a name="p114869411222"></a><a name="p114869411222"></a>写入数据帧</p> 223 </td> 224 </tr> 225 <tr id="row18785159171611"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p148624112222"><a name="p148624112222"></a><a name="p148624112222"></a>int32_t FormatMuxerSetNextOutputFile(const FormatHandle handle, int32_t fd);</p> 226 </td> 227 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p6486164113221"><a name="p6486164113221"></a><a name="p6486164113221"></a>设置下一个输出文件句柄fd</p> 228 </td> 229 </tr> 230 <tr id="row119401052191419"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14486204116224"><a name="p14486204116224"></a><a name="p14486204116224"></a>int32_t FormatMuxerStop(const FormatHandle handle, bool block);</p> 231 </td> 232 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p648612417226"><a name="p648612417226"></a><a name="p648612417226"></a>复用器停止工作</p> 233 </td> 234 </tr> 235 <tr id="row1244610316169"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p14861341192214"><a name="p14861341192214"></a><a name="p14861341192214"></a>int32_t FormatMuxerSetParameter(const FormatHandle handle, int32_t trackId, const ParameterItem *item, int32_t itemNum);</p> 236 </td> 237 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p1486134102210"><a name="p1486134102210"></a><a name="p1486134102210"></a>扩展接口,设置复用器属性</p> 238 </td> 239 </tr> 240 <tr id="row17305165551410"><td class="cellrowborder" valign="top" headers="mcps1.2.4.1.1 "><p id="p1448654102214"><a name="p1448654102214"></a><a name="p1448654102214"></a>int32_t FormatMuxerGetParameter(const FormatHandle handle, int32_t trackId, ParameterItem *item, int32_t itemNum);</p> 241 </td> 242 <td class="cellrowborder" valign="top" headers="mcps1.2.4.1.2 "><p id="p348617419229"><a name="p348617419229"></a><a name="p348617419229"></a>扩展接口,获取复用器属性</p> 243 </td> 244 </tr> 245 </tbody> 246 </table> 247 248 ### 使用说明<a name="section129654513264"></a> 249 250 该仓核心功能包括两个方面: 251 252 - 提供Format HDI接口供framework层调用,实现片源复用与解复用功能。 253 - 作为标准南向接口,保证南向OEM产商实现HDI-adapter的规范性,保证生态良性演进。 254 255 具体接口调用及实现,以接口注释为准。 256 257 ## 相关仓<a name="section1371113476307"></a> 258 259 [驱动子系统](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) 260 261 [drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README_zh.md) 262 263 [drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README_zh.md) 264 265 [drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README_zh.md) 266 267 [drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral) 268 269