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