1094332d3Sopenharmony_ci# Format<a name="EN-US_TOPIC_0000001131858907"></a> 2094332d3Sopenharmony_ci 3094332d3Sopenharmony_ci- [Introduction](#section11660541593) 4094332d3Sopenharmony_ci- [Directory Structure](#section161941989596) 5094332d3Sopenharmony_ci - [Available APIs](#section1551164914237) 6094332d3Sopenharmony_ci - [Usage](#section129654513264) 7094332d3Sopenharmony_ci 8094332d3Sopenharmony_ci- [Repositories Involved](#section1371113476307) 9094332d3Sopenharmony_ci 10094332d3Sopenharmony_ci## Introduction<a name="section11660541593"></a> 11094332d3Sopenharmony_ci 12094332d3Sopenharmony_ciThis 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: 13094332d3Sopenharmony_ci 14094332d3Sopenharmony_ci- Creating and destroying a muxer and demuxer 15094332d3Sopenharmony_ci- Starting and stopping a muxer and demuxer 16094332d3Sopenharmony_ci- Obtaining the attributes of a media file 17094332d3Sopenharmony_ci- Obtaining the data frame information of a media file 18094332d3Sopenharmony_ci- Adding data streams and frames to a muxer 19094332d3Sopenharmony_ci 20094332d3Sopenharmony_ci## Directory Structure<a name="section161941989596"></a> 21094332d3Sopenharmony_ci 22094332d3Sopenharmony_ciThe source code directory structure is as follows: 23094332d3Sopenharmony_ci 24094332d3Sopenharmony_ci``` 25094332d3Sopenharmony_ci/drivers/peripheral/format 26094332d3Sopenharmony_ci├── interfaces # Driver capability APIs provided for upper-layer services 27094332d3Sopenharmony_ci│ └── include # APIs exposed externally 28094332d3Sopenharmony_ci``` 29094332d3Sopenharmony_ci 30094332d3Sopenharmony_ci### Available APIs<a name="section1551164914237"></a> 31094332d3Sopenharmony_ci 32094332d3Sopenharmony_ciThe 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. 33094332d3Sopenharmony_ci 34094332d3Sopenharmony_ci[Table 1](#table1513255710559) describes major HDI APIs provided by the format module. 35094332d3Sopenharmony_ci 36094332d3Sopenharmony_ci**Table 1** Major HDI APIs of the format module 37094332d3Sopenharmony_ci 38094332d3Sopenharmony_ci<a name="table1513255710559"></a> 39094332d3Sopenharmony_ci<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> 40094332d3Sopenharmony_ci</th> 41094332d3Sopenharmony_ci<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> 42094332d3Sopenharmony_ci</th> 43094332d3Sopenharmony_ci<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> 44094332d3Sopenharmony_ci</th> 45094332d3Sopenharmony_ci</tr> 46094332d3Sopenharmony_ci</thead> 47094332d3Sopenharmony_ci<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> 48094332d3Sopenharmony_ci<p id="p169466917181"><a name="p169466917181"></a><a name="p169466917181"></a></p> 49094332d3Sopenharmony_ci<p id="p12106161012185"><a name="p12106161012185"></a><a name="p12106161012185"></a></p> 50094332d3Sopenharmony_ci<p id="p7255161017181"><a name="p7255161017181"></a><a name="p7255161017181"></a></p> 51094332d3Sopenharmony_ci<p id="p1839901041815"><a name="p1839901041815"></a><a name="p1839901041815"></a></p> 52094332d3Sopenharmony_ci<p id="p4540171015188"><a name="p4540171015188"></a><a name="p4540171015188"></a></p> 53094332d3Sopenharmony_ci<p id="p368816102189"><a name="p368816102189"></a><a name="p368816102189"></a></p> 54094332d3Sopenharmony_ci<p id="p679481051814"><a name="p679481051814"></a><a name="p679481051814"></a></p> 55094332d3Sopenharmony_ci<p id="p7399191241817"><a name="p7399191241817"></a><a name="p7399191241817"></a></p> 56094332d3Sopenharmony_ci<p id="p11902121271818"><a name="p11902121271818"></a><a name="p11902121271818"></a></p> 57094332d3Sopenharmony_ci<p id="p1296415129182"><a name="p1296415129182"></a><a name="p1296415129182"></a></p> 58094332d3Sopenharmony_ci<p id="p1742101311180"><a name="p1742101311180"></a><a name="p1742101311180"></a></p> 59094332d3Sopenharmony_ci<p id="p171041613101815"><a name="p171041613101815"></a><a name="p171041613101815"></a></p> 60094332d3Sopenharmony_ci<p id="p10172141314183"><a name="p10172141314183"></a><a name="p10172141314183"></a></p> 61094332d3Sopenharmony_ci<p id="p723216132180"><a name="p723216132180"></a><a name="p723216132180"></a></p> 62094332d3Sopenharmony_ci<p id="p825185015460"><a name="p825185015460"></a><a name="p825185015460"></a>format_interface.h</p> 63094332d3Sopenharmony_ci<p id="p2133757135510"><a name="p2133757135510"></a><a name="p2133757135510"></a></p> 64094332d3Sopenharmony_ci<p id="p14171441118"><a name="p14171441118"></a><a name="p14171441118"></a></p> 65094332d3Sopenharmony_ci<p id="p57063567463"><a name="p57063567463"></a><a name="p57063567463"></a></p> 66094332d3Sopenharmony_ci<p id="p1285144710118"><a name="p1285144710118"></a><a name="p1285144710118"></a></p> 67094332d3Sopenharmony_ci<p id="p854114711117"><a name="p854114711117"></a><a name="p854114711117"></a></p> 68094332d3Sopenharmony_ci<p id="p15741647517"><a name="p15741647517"></a><a name="p15741647517"></a></p> 69094332d3Sopenharmony_ci<p id="p7909447418"><a name="p7909447418"></a><a name="p7909447418"></a></p> 70094332d3Sopenharmony_ci<p id="p12525910165811"><a name="p12525910165811"></a><a name="p12525910165811"></a></p> 71094332d3Sopenharmony_ci<p id="p942322013262"><a name="p942322013262"></a><a name="p942322013262"></a></p> 72094332d3Sopenharmony_ci<p id="p1040515339526"><a name="p1040515339526"></a><a name="p1040515339526"></a></p> 73094332d3Sopenharmony_ci<p id="p19405533115216"><a name="p19405533115216"></a><a name="p19405533115216"></a></p> 74094332d3Sopenharmony_ci</td> 75094332d3Sopenharmony_ci<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> 76094332d3Sopenharmony_ci</td> 77094332d3Sopenharmony_ci<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> 78094332d3Sopenharmony_ci</td> 79094332d3Sopenharmony_ci</tr> 80094332d3Sopenharmony_ci<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> 81094332d3Sopenharmony_ci</td> 82094332d3Sopenharmony_ci<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> 83094332d3Sopenharmony_ci</td> 84094332d3Sopenharmony_ci</tr> 85094332d3Sopenharmony_ci<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> 86094332d3Sopenharmony_ci</td> 87094332d3Sopenharmony_ci<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> 88094332d3Sopenharmony_ci</td> 89094332d3Sopenharmony_ci</tr> 90094332d3Sopenharmony_ci<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> 91094332d3Sopenharmony_ci</td> 92094332d3Sopenharmony_ci<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> 93094332d3Sopenharmony_ci</td> 94094332d3Sopenharmony_ci</tr> 95094332d3Sopenharmony_ci<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> 96094332d3Sopenharmony_ci</td> 97094332d3Sopenharmony_ci<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> 98094332d3Sopenharmony_ci</td> 99094332d3Sopenharmony_ci</tr> 100094332d3Sopenharmony_ci<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> 101094332d3Sopenharmony_ci</td> 102094332d3Sopenharmony_ci<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> 103094332d3Sopenharmony_ci</td> 104094332d3Sopenharmony_ci</tr> 105094332d3Sopenharmony_ci<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> 106094332d3Sopenharmony_ci</td> 107094332d3Sopenharmony_ci<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> 108094332d3Sopenharmony_ci</td> 109094332d3Sopenharmony_ci</tr> 110094332d3Sopenharmony_ci<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> 111094332d3Sopenharmony_ci</td> 112094332d3Sopenharmony_ci<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> 113094332d3Sopenharmony_ci</td> 114094332d3Sopenharmony_ci</tr> 115094332d3Sopenharmony_ci<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> 116094332d3Sopenharmony_ci</td> 117094332d3Sopenharmony_ci<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> 118094332d3Sopenharmony_ci</td> 119094332d3Sopenharmony_ci</tr> 120094332d3Sopenharmony_ci<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> 121094332d3Sopenharmony_ci</td> 122094332d3Sopenharmony_ci<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> 123094332d3Sopenharmony_ci</td> 124094332d3Sopenharmony_ci</tr> 125094332d3Sopenharmony_ci<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> 126094332d3Sopenharmony_ci</td> 127094332d3Sopenharmony_ci<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> 128094332d3Sopenharmony_ci</td> 129094332d3Sopenharmony_ci</tr> 130094332d3Sopenharmony_ci<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> 131094332d3Sopenharmony_ci</td> 132094332d3Sopenharmony_ci<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> 133094332d3Sopenharmony_ci</td> 134094332d3Sopenharmony_ci</tr> 135094332d3Sopenharmony_ci<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> 136094332d3Sopenharmony_ci</td> 137094332d3Sopenharmony_ci<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> 138094332d3Sopenharmony_ci</td> 139094332d3Sopenharmony_ci</tr> 140094332d3Sopenharmony_ci<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> 141094332d3Sopenharmony_ci</td> 142094332d3Sopenharmony_ci<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> 143094332d3Sopenharmony_ci</td> 144094332d3Sopenharmony_ci</tr> 145094332d3Sopenharmony_ci<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> 146094332d3Sopenharmony_ci</td> 147094332d3Sopenharmony_ci<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> 148094332d3Sopenharmony_ci</td> 149094332d3Sopenharmony_ci</tr> 150094332d3Sopenharmony_ci<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> 151094332d3Sopenharmony_ci</td> 152094332d3Sopenharmony_ci<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> 153094332d3Sopenharmony_ci</td> 154094332d3Sopenharmony_ci</tr> 155094332d3Sopenharmony_ci<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> 156094332d3Sopenharmony_ci</td> 157094332d3Sopenharmony_ci<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> 158094332d3Sopenharmony_ci</td> 159094332d3Sopenharmony_ci</tr> 160094332d3Sopenharmony_ci<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> 161094332d3Sopenharmony_ci</td> 162094332d3Sopenharmony_ci<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> 163094332d3Sopenharmony_ci</td> 164094332d3Sopenharmony_ci</tr> 165094332d3Sopenharmony_ci<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> 166094332d3Sopenharmony_ci</td> 167094332d3Sopenharmony_ci<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> 168094332d3Sopenharmony_ci</td> 169094332d3Sopenharmony_ci</tr> 170094332d3Sopenharmony_ci<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> 171094332d3Sopenharmony_ci</td> 172094332d3Sopenharmony_ci<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> 173094332d3Sopenharmony_ci</td> 174094332d3Sopenharmony_ci</tr> 175094332d3Sopenharmony_ci<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> 176094332d3Sopenharmony_ci</td> 177094332d3Sopenharmony_ci<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> 178094332d3Sopenharmony_ci</td> 179094332d3Sopenharmony_ci</tr> 180094332d3Sopenharmony_ci<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> 181094332d3Sopenharmony_ci</td> 182094332d3Sopenharmony_ci<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> 183094332d3Sopenharmony_ci</td> 184094332d3Sopenharmony_ci</tr> 185094332d3Sopenharmony_ci<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> 186094332d3Sopenharmony_ci</td> 187094332d3Sopenharmony_ci<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> 188094332d3Sopenharmony_ci</td> 189094332d3Sopenharmony_ci</tr> 190094332d3Sopenharmony_ci<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> 191094332d3Sopenharmony_ci</td> 192094332d3Sopenharmony_ci<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> 193094332d3Sopenharmony_ci</td> 194094332d3Sopenharmony_ci</tr> 195094332d3Sopenharmony_ci<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> 196094332d3Sopenharmony_ci</td> 197094332d3Sopenharmony_ci<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> 198094332d3Sopenharmony_ci</td> 199094332d3Sopenharmony_ci</tr> 200094332d3Sopenharmony_ci<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> 201094332d3Sopenharmony_ci</td> 202094332d3Sopenharmony_ci<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> 203094332d3Sopenharmony_ci</td> 204094332d3Sopenharmony_ci</tr> 205094332d3Sopenharmony_ci<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> 206094332d3Sopenharmony_ci</td> 207094332d3Sopenharmony_ci<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> 208094332d3Sopenharmony_ci</td> 209094332d3Sopenharmony_ci</tr> 210094332d3Sopenharmony_ci<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> 211094332d3Sopenharmony_ci</td> 212094332d3Sopenharmony_ci<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> 213094332d3Sopenharmony_ci</td> 214094332d3Sopenharmony_ci</tr> 215094332d3Sopenharmony_ci<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> 216094332d3Sopenharmony_ci</td> 217094332d3Sopenharmony_ci<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> 218094332d3Sopenharmony_ci</td> 219094332d3Sopenharmony_ci</tr> 220094332d3Sopenharmony_ci<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> 221094332d3Sopenharmony_ci</td> 222094332d3Sopenharmony_ci<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> 223094332d3Sopenharmony_ci</td> 224094332d3Sopenharmony_ci</tr> 225094332d3Sopenharmony_ci<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> 226094332d3Sopenharmony_ci</td> 227094332d3Sopenharmony_ci<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> 228094332d3Sopenharmony_ci</td> 229094332d3Sopenharmony_ci</tr> 230094332d3Sopenharmony_ci<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> 231094332d3Sopenharmony_ci</td> 232094332d3Sopenharmony_ci<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> 233094332d3Sopenharmony_ci</td> 234094332d3Sopenharmony_ci</tr> 235094332d3Sopenharmony_ci<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> 236094332d3Sopenharmony_ci</td> 237094332d3Sopenharmony_ci<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> 238094332d3Sopenharmony_ci</td> 239094332d3Sopenharmony_ci</tr> 240094332d3Sopenharmony_ci<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> 241094332d3Sopenharmony_ci</td> 242094332d3Sopenharmony_ci<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> 243094332d3Sopenharmony_ci</td> 244094332d3Sopenharmony_ci</tr> 245094332d3Sopenharmony_ci</tbody> 246094332d3Sopenharmony_ci</table> 247094332d3Sopenharmony_ci 248094332d3Sopenharmony_ci### Usage<a name="section129654513264"></a> 249094332d3Sopenharmony_ci 250094332d3Sopenharmony_ciThe core functionalities of this repository are as follows: 251094332d3Sopenharmony_ci 252094332d3Sopenharmony_ci- Provides format HDIs that can be directly called by the framework layer to perform muxer and demuxer-related operations. 253094332d3Sopenharmony_ci- 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. 254094332d3Sopenharmony_ci 255094332d3Sopenharmony_ciFor details about the invocation and implementation, see the API reference. 256094332d3Sopenharmony_ci 257094332d3Sopenharmony_ci## Repositories Involved<a name="section1371113476307"></a> 258094332d3Sopenharmony_ci 259094332d3Sopenharmony_ci[Driver subsystem](https://gitee.com/openharmony/docs/blob/master/en/readme/driver.md) 260094332d3Sopenharmony_ci 261094332d3Sopenharmony_ci[drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README.md) 262094332d3Sopenharmony_ci 263094332d3Sopenharmony_ci[drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README.md) 264094332d3Sopenharmony_ci 265094332d3Sopenharmony_ci[drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README.md) 266094332d3Sopenharmony_ci 267094332d3Sopenharmony_ci[drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral) 268094332d3Sopenharmony_ci 269