1e41f4b71Sopenharmony_ci# NativeDisplaySoloist
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Overview
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciThe NativeDisplaySoloist module provides the native service that control the frame rate in threads other than the UI thread.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**Since**: 12
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci## Summary
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci### Files
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci| Name| Description| 
17e41f4b71Sopenharmony_ci| -------- | -------- |
18e41f4b71Sopenharmony_ci| [native_display_soloist.h](native__display__soloist_8h.md) | Declares the functions for obtaining and using native display soloist.| 
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci### Structs
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci| Name| Description| 
24e41f4b71Sopenharmony_ci| -------- | -------- |
25e41f4b71Sopenharmony_ci| struct  [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md) | Describes the expected frame rate range.| 
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci### Types
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci| Name| Description| 
31e41f4b71Sopenharmony_ci| -------- | -------- |
32e41f4b71Sopenharmony_ci| typedef struct [OH_DisplaySoloist](#oh_displaysoloist)  [OH_DisplaySoloist](#oh_displaysoloist) | Provides the declaration of an **OH_DisplaySoloist** struct.| 
33e41f4b71Sopenharmony_ci| typedef void(\* [OH_DisplaySoloist_FrameCallback](#oh_displaysoloist_framecallback)) (long long timestamp, long long targetTimestamp, void \*data) | Defines the pointer to an OH_DisplaySoloist callback function.| 
34e41f4b71Sopenharmony_ci| typedef struct [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md)  [DisplaySoloist_ExpectedRateRange](#displaysoloist_expectedraterange) | Defines a struct for the expected frame rate range.| 
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci### Functions
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci| Name| Description| 
40e41f4b71Sopenharmony_ci| -------- | -------- |
41e41f4b71Sopenharmony_ci| [OH_DisplaySoloist](#oh_displaysoloist) \* [OH_DisplaySoloist_Create](#oh_displaysoloist_create) (bool useExclusiveThread) | Creates an **OH_DisplaySoloist** instance. A new **OH_DisplaySoloist** instance is created each time this API is called.| 
42e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_Destroy](#oh_displaysoloist_destroy) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist) | Destroys an **OH_DisplaySoloist** object and reclaims the memory occupied.| 
43e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_Start](#oh_displaysoloist_start) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist, [OH_DisplaySoloist_FrameCallback](#oh_displaysoloist_framecallback) callback, void \*data) | Sets a callback function for each frame. The callback function is triggered each time a VSync signal arrives.| 
44e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_Stop](#oh_displaysoloist_stop) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist) | Stops requesting the next VSync signal and triggering the callback function.| 
45e41f4b71Sopenharmony_ci| int32_t [OH_DisplaySoloist_SetExpectedFrameRateRange](#oh_displaysoloist_setexpectedframeraterange) ([OH_DisplaySoloist](#oh_displaysoloist) \*displaySoloist, [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md) \*range) | Sets the expected frame rate range.| 
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci## Type Description
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci### DisplaySoloist_ExpectedRateRange
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci```
54e41f4b71Sopenharmony_citypedef struct DisplaySoloist_ExpectedRateRange DisplaySoloist_ExpectedRateRange
55e41f4b71Sopenharmony_ci```
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci**Description**
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ciDefines a struct for the expected frame rate range.
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci**Since**: 12
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_ci### OH_DisplaySoloist
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci```
67e41f4b71Sopenharmony_citypedef struct OH_DisplaySoloist OH_DisplaySoloist
68e41f4b71Sopenharmony_ci```
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci**Description**
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ciProvides the declaration of an **OH_DisplaySoloist** struct.
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci**Since**: 12
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci### OH_DisplaySoloist_FrameCallback
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci```
80e41f4b71Sopenharmony_citypedef void(* OH_DisplaySoloist_FrameCallback) (long long timestamp, long long targetTimestamp, void *data)
81e41f4b71Sopenharmony_ci```
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci**Description**
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ciDefines the pointer to an OH_DisplaySoloist callback function.
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci**Since**: 12
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci**Parameters**
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci| Name| Description| 
92e41f4b71Sopenharmony_ci| -------- | -------- |
93e41f4b71Sopenharmony_ci| timestamp | VSync timestamp.| 
94e41f4b71Sopenharmony_ci| targetTimestamp | Expected VSync timestamp of the next frame.| 
95e41f4b71Sopenharmony_ci| data | User-defined data.| 
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci## Function Description
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Create()
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci```
104e41f4b71Sopenharmony_ciOH_DisplaySoloist* OH_DisplaySoloist_Create (bool useExclusiveThread)
105e41f4b71Sopenharmony_ci```
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ci**Description**
108e41f4b71Sopenharmony_ci
109e41f4b71Sopenharmony_ciCreates an **OH_DisplaySoloist** instance. A new **OH_DisplaySoloist** instance is created each time this API is called.
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci**Since**: 12
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci**Parameters**
114e41f4b71Sopenharmony_ci
115e41f4b71Sopenharmony_ci| Name| Description| 
116e41f4b71Sopenharmony_ci| -------- | -------- |
117e41f4b71Sopenharmony_ci| useExclusiveThread | Whether the **OH_DisplaySoloist** instance exclusively occupies a thread. The value **true** means that the instance exclusively occupies a thread, and **false** means that the instance shares a thread with others.| 
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci**Returns**
120e41f4b71Sopenharmony_ci
121e41f4b71Sopenharmony_ciReturns the pointer to the [OH_DisplaySoloist](#oh_displaysoloist) instance created if the operation is successful; returns a null pointer otherwise. The failure cause may be out of memory.
122e41f4b71Sopenharmony_ci
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Destroy()
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci```
127e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_Destroy (OH_DisplaySoloist* displaySoloist)
128e41f4b71Sopenharmony_ci```
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci**Description**
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ciDestroys an **OH_DisplaySoloist** object and reclaims the memory occupied.
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci**Since**: 12
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci**Parameters**
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci| Name| Description| 
139e41f4b71Sopenharmony_ci| -------- | -------- |
140e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci**Returns**
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise.
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ci### OH_DisplaySoloist_SetExpectedFrameRateRange()
148e41f4b71Sopenharmony_ci
149e41f4b71Sopenharmony_ci```
150e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_SetExpectedFrameRateRange (OH_DisplaySoloist* displaySoloist, DisplaySoloist_ExpectedRateRange* range )
151e41f4b71Sopenharmony_ci```
152e41f4b71Sopenharmony_ci
153e41f4b71Sopenharmony_ci**Description**
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ciSets the expected frame rate range.
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci**Since**: 12
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci**Parameters**
160e41f4b71Sopenharmony_ci
161e41f4b71Sopenharmony_ci| Name| Description| 
162e41f4b71Sopenharmony_ci| -------- | -------- |
163e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 
164e41f4b71Sopenharmony_ci| range | Pointer to the expected frame rate range, which is a [DisplaySoloist_ExpectedRateRange](_display_soloist___expected_rate_range.md) instance.| 
165e41f4b71Sopenharmony_ci
166e41f4b71Sopenharmony_ci**Returns**
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise.
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Start()
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci```
174e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_Start (OH_DisplaySoloist* displaySoloist, OH_DisplaySoloist_FrameCallback callback, void* data )
175e41f4b71Sopenharmony_ci```
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci**Description**
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ciSets a callback function for each frame. The callback function is triggered each time a VSync signal arrives.
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci**Since**: 12
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci**Parameters**
184e41f4b71Sopenharmony_ci
185e41f4b71Sopenharmony_ci| Name| Description| 
186e41f4b71Sopenharmony_ci| -------- | -------- |
187e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 
188e41f4b71Sopenharmony_ci| callback | Callback function to be triggered when the next VSync signal arrives.| 
189e41f4b71Sopenharmony_ci| data | Pointer to the user-defined data struct. The type is void\*.| 
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ci**Returns**
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise.
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci### OH_DisplaySoloist_Stop()
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ci```
199e41f4b71Sopenharmony_ciint32_t OH_DisplaySoloist_Stop (OH_DisplaySoloist* displaySoloist)
200e41f4b71Sopenharmony_ci```
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci**Description**
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ciStops requesting the next VSync signal and triggering the callback function.
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**Since**: 12
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci**Parameters**
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci| Name| Description| 
211e41f4b71Sopenharmony_ci| -------- | -------- |
212e41f4b71Sopenharmony_ci| displaySoloist | Pointer to an [OH_DisplaySoloist](#oh_displaysoloist) instance.| 
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci**Returns**
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ciReturns **0** if the operation is successful; returns **-1** otherwise.
217