• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# lowpower_video_sink.h
2
3## Overview
4
5The file declares the native APIs provided by the LowPowerVideoSink. You can use the APIs to implement low-power video playback.
6
7**File to include**: <multimedia/player_framework/lowpower_video_sink.h>
8
9**Library**: liblowpower_avsink.so
10
11**System capability**: SystemCapability.Multimedia.Media.LowPowerAVSink
12
13**Since**: 20
14
15**Related module**: [LowPowerVideoSink](capi-lowpowervideosink.md)
16
17## Summary
18
19### Functions
20
21| Name| Description|
22| -- | -- |
23| [OH_LowPowerVideoSink* OH_LowPowerVideoSink_CreateByMime(const char* mime)](#oh_lowpowervideosink_createbymime) | Creates an OH_LowPowerVideoSink instance.|
24| [OH_AVErrCode OH_LowPowerVideoSink_Configure(OH_LowPowerVideoSink* sink, const OH_AVFormat* format)](#oh_lowpowervideosink_configure) | Configures an OH_LowPowerVideoSink instance. This function must be called before [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare).|
25| [OH_AVErrCode OH_LowPowerVideoSink_SetParameter(OH_LowPowerVideoSink* sink, const OH_AVFormat* format)](#oh_lowpowervideosink_setparameter) | Sets parameters for an OH_LowPowerVideoSink instance. The parameters can be dynamically set after [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare).|
26| [OH_AVErrCode OH_LowPowerVideoSink_GetParameter(OH_LowPowerVideoSink* sink, OH_AVFormat* format)](#oh_lowpowervideosink_getparameter) | Obtains the parameters of an OH_LowPowerVideoSink instance.|
27| [OH_AVErrCode OH_LowPowerVideoSink_SetVideoSurface(OH_LowPowerVideoSink* sink, const OHNativeWindow* surface)](#oh_lowpowervideosink_setvideosurface) | Sets the rendering window for an OH_LowPowerVideoSink instance. This function must be called before [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare).|
28| [OH_AVErrCode OH_LowPowerVideoSink_Prepare(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_prepare) | Prepares an OH_LowPowerVideoSink instance for decoding and rendering. This function must be called after [OH_LowPowerVideoSink_SetSyncAudioSink](#oh_lowpowervideosink_setsyncaudiosink).|
29| [OH_AVErrCode OH_LowPowerVideoSink_StartDecoder(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_startdecoder) | Starts an OH_LowPowerVideoSink instance for decoding. This function must be called after [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare) or if no video is playing, after [OH_LowPowerVideoSink_SetTargetStartFrame](#oh_lowpowervideosink_settargetstartframe).<br>After successful startup, the OH_LowPowerVideoSink instance starts reporting the [OH_LowPowerVideoSink_OnDataNeeded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ondataneeded) event.|
30| [OH_AVErrCode OH_LowPowerVideoSink_RenderFirstFrame(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_renderfirstframe) | Renders the first frame decoded by an OH_LowPowerVideoSink instance. This function must be called after [OH_LowPowerVideoSink_StartDecoder](#oh_lowpowervideosink_startdecoder).|
31| [OH_AVErrCode OH_LowPowerVideoSink_StartRenderer(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_startrenderer) | Starts an OH_LowPowerVideoSink instance for rendering. This function must be called after [OH_LowPowerVideoSink_StartDecoder](#oh_lowpowervideosink_startdecoder).|
32| [OH_AVErrCode OH_LowPowerVideoSink_Pause(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_pause) | Pauses an OH_LowPowerVideoSink instance. This function must be called after [OH_LowPowerVideoSink_StartRenderer](#oh_lowpowervideosink_startrenderer) or [OH_LowPowerVideoSink_Resume](#oh_lowpowervideosink_resume).<br>After successful pause, the OH_LowPowerVideoSink instance stops reporting the [OH_LowPowerVideoSink_OnDataNeeded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ondataneeded) event.|
33| [OH_AVErrCode OH_LowPowerVideoSink_Resume(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_resume) | Resumes an OH_LowPowerVideoSink instance. This function must be called after[OH_LowPowerVideoSink_Pause](#oh_lowpowervideosink_pause).<br>After successful resumption, the OH_LowPowerVideoSink instance resumes reporting the [OH_LowPowerVideoSink_OnDataNeeded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ondataneeded) event.|
34| [OH_AVErrCode OH_LowPowerVideoSink_Flush(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_flush) | Clears all input and output data from the decoders and render buffers of an OH_LowPowerVideoSink instance.<br>You are not advised to call this function after [OH_LowPowerVideoSink_StartRenderer](#oh_lowpowervideosink_startrenderer) or [OH_LowPowerVideoSink_Resume](#oh_lowpowervideosink_resume).<br>Note that if the decoder has previously received data, you must input the codec data again.|
35| [OH_AVErrCode OH_LowPowerVideoSink_Stop(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_stop) | Stops an OH_LowPowerVideoSink instance.|
36| [OH_AVErrCode OH_LowPowerVideoSink_Reset(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_reset) | Resets an OH_LowPowerVideoSink instance.<br>To reuse the instance, you must call [OH_LowPowerVideoSink_Configure](#oh_lowpowervideosink_configure) to configure the instance again.|
37| [OH_AVErrCode OH_LowPowerVideoSink_Destroy(OH_LowPowerVideoSink* sink)](#oh_lowpowervideosink_destroy) | Clears internal resources of an OH_LowPowerVideoSink instance and destroys the instance. You only need to call the function once.|
38| [OH_AVErrCode OH_LowPowerVideoSink_SetSyncAudioSink(OH_LowPowerVideoSink* videoSink, OH_LowPowerAudioSink* audioSink)](#oh_lowpowervideosink_setsyncaudiosink) | Sets an OH_LowPowerAudioSink instance for audio-video synchronization in an OH_LowPowerVideoSink instance.|
39| [OH_AVErrCode OH_LowPowerVideoSink_SetTargetStartFrame(OH_LowPowerVideoSink* sink, const int64_t framePts, OH_LowPowerVideoSink_OnTargetArrived onTargetArrived, const int64_t timeoutMs,void* userData)](#oh_lowpowervideosink_settargetstartframe) | Sets the target rendering frame for an OH_LowPowerVideoSink instance.|
40| [OH_AVErrCode OH_LowPowerVideoSink_SetPlaybackSpeed(OH_LowPowerVideoSink* sink, const float speed)](#oh_lowpowervideosink_setplaybackspeed) | Sets the playback speed for an OH_LowPowerVideoSink instance.|
41| [OH_AVErrCode OH_LowPowerVideoSink_ReturnSamples(OH_LowPowerVideoSink* sink, OH_AVSamplesBuffer* samples)](#oh_lowpowervideosink_returnsamples) | Provides a buffer to an OH_LowPowerVideoSink instance for procesing.|
42| [OH_AVErrCode OH_LowPowerVideoSink_RegisterCallback(OH_LowPowerVideoSink* sink, OH_LowPowerVideoSinkCallback* callback)](#oh_lowpowervideosink_registercallback) | Registers a callback for an OH_LowPowerVideoSink instance.|
43| [OH_LowPowerVideoSinkCallback* OH_LowPowerVideoSinkCallback_Create(void)](#oh_lowpowervideosinkcallback_create) | Creates an OH_LowPowerVideoSinkCallback instance.|
44| [OH_AVErrCode OH_LowPowerVideoSinkCallback_Destroy(OH_LowPowerVideoSinkCallback* callback)](#oh_lowpowervideosinkcallback_destroy) | Destroys an OH_LowPowerVideoSinkCallback instance.|
45| [OH_AVErrCode OH_LowPowerVideoSinkCallback_SetDataNeededListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnDataNeeded onDataNeeded, void* userData)](#oh_lowpowervideosinkcallback_setdataneededlistener) | Sets a data needed listener for an OH_LowPowerVideoSinkCallback instance.|
46| [OH_AVErrCode OH_LowPowerVideoSinkCallback_SetErrorListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnError onError, void* userData)](#oh_lowpowervideosinkcallback_seterrorlistener) | Sets an error listener for an OH_LowPowerVideoSinkCallback instance.|
47| [OH_AVErrCode OH_LowPowerVideoSinkCallback_SetRenderStartListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnRenderStarted onRenderStarted, void* userData)](#oh_lowpowervideosinkcallback_setrenderstartlistener) | Sets a render start listener for an OH_LowPowerVideoSinkCallback instance.|
48| [OH_AVErrCode OH_LowPowerVideoSinkCallback_SetStreamChangedListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnStreamChanged onStreamChanged, void* userData)](#oh_lowpowervideosinkcallback_setstreamchangedlistener) | Sets a stream change listener for an OH_LowPowerVideoSinkCallback instance.|
49| [OH_AVErrCode OH_LowPowerVideoSinkCallback_SetFirstFrameDecodedListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnFirstFrameDecoded onFirstFrameDecoded, void* userData)](#oh_lowpowervideosinkcallback_setfirstframedecodedlistener) | Sets a first-frame ready listener for an OH_LowPowerVideoSinkCallback instance.|
50| [OH_AVErrCode OH_LowPowerVideoSinkCallback_SetEosListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnEos onEos, void* userData)](#oh_lowpowervideosinkcallback_seteoslistener) | Sets an end-of-stream listener for an OH_LowPowerVideoSinkCallback instance.|
51
52## Function Description
53
54### OH_LowPowerVideoSink_CreateByMime()
55
56```
57OH_LowPowerVideoSink* OH_LowPowerVideoSink_CreateByMime(const char* mime)
58```
59
60**Description**
61
62Creates an OH_LowPowerVideoSink instance.
63
64**Since**: 20
65
66
67**Parameters**
68
69| Name| Description|
70| -- | -- |
71| const char* mime | Pointer to the MIME type of the video decoder. For details about the available options, see [AVCODEC_MIME_TYPE](../apis-avcodec-kit/_codec_base.md#variables).|
72
73**Returns**
74
75| Type| Description|
76| -- | -- |
77| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* | Pointer to the OH_LowPowerVideoSink instance created. If the operation fails, nullptr is returned.|
78
79### OH_LowPowerVideoSink_Configure()
80
81```
82OH_AVErrCode OH_LowPowerVideoSink_Configure(OH_LowPowerVideoSink* sink, const OH_AVFormat* format)
83```
84
85**Description**
86
87Configures an OH_LowPowerVideoSink instance. This function must be called before [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare).
88
89**Since**: 20
90
91
92**Parameters**
93
94| Name| Description|
95| -- | -- |
96| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
97| const [OH_AVFormat](../apis-avcodec-kit/_core.md#oh_avformat)* format | Pointer to an OH_AVFormat instance, which describes the parameters to be configured for the OH_LowPowerVideoSink instance.|
98
99**Returns**
100
101| Type| Description|
102| -- | -- |
103| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_UNSUPPORT**: The format is not supported.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
104
105### OH_LowPowerVideoSink_SetParameter()
106
107```
108OH_AVErrCode OH_LowPowerVideoSink_SetParameter(OH_LowPowerVideoSink* sink, const OH_AVFormat* format)
109```
110
111**Description**
112
113Sets parameters for an OH_LowPowerVideoSink instance. The parameters can be dynamically set after [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare).
114
115**Since**: 20
116
117
118**Parameters**
119
120| Name| Description|
121| -- | -- |
122| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
123| const [OH_AVFormat](../apis-avcodec-kit/_core.md#oh_avformat)* format | Pointer to an OH_AVFormat instance, which describes the parameters to be configured for the OH_LowPowerVideoSink instance.|
124
125**Returns**
126
127| Type| Description|
128| -- | -- |
129| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_UNSUPPORT**: The format is not supported.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
130
131### OH_LowPowerVideoSink_GetParameter()
132
133```
134OH_AVErrCode OH_LowPowerVideoSink_GetParameter(OH_LowPowerVideoSink* sink, OH_AVFormat* format)
135```
136
137**Description**
138
139Obtains the parameters of an OH_LowPowerVideoSink instance.
140
141**Since**: 20
142
143
144**Parameters**
145
146| Name| Description|
147| -- | -- |
148| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
149| [OH_AVFormat](../apis-avcodec-kit/_core.md#oh_avformat)* format | Pointer to an OH_AVFormat instance, which describes the parameters configured for an OH_LowPowerVideoSink instance.|
150
151**Returns**
152
153| Type| Description|
154| -- | -- |
155| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
156
157### OH_LowPowerVideoSink_SetVideoSurface()
158
159```
160OH_AVErrCode OH_LowPowerVideoSink_SetVideoSurface(OH_LowPowerVideoSink* sink, const OHNativeWindow* surface)
161```
162
163**Description**
164
165Sets the rendering window for an OH_LowPowerVideoSink instance. This function must be called before [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare).
166
167**Since**: 20
168
169
170**Parameters**
171
172| Name| Description|
173| -- | -- |
174| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
175| const [OHNativeWindow](../apis-avcodec-kit/_codec_base.md#ohnativewindow)* surface | Pointer to the OHNativeWindow instance.|
176
177**Returns**
178
179| Type| Description|
180| -- | -- |
181| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
182
183### OH_LowPowerVideoSink_Prepare()
184
185```
186OH_AVErrCode OH_LowPowerVideoSink_Prepare(OH_LowPowerVideoSink* sink)
187```
188
189**Description**
190
191Prepares an OH_LowPowerVideoSink instance for decoding and rendering. This function must be called after [OH_LowPowerVideoSink_SetSyncAudioSink](#oh_lowpowervideosink_setsyncaudiosink).
192
193**Since**: 20
194
195
196**Parameters**
197
198| Name| Description|
199| -- | -- |
200| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
201
202**Returns**
203
204| Type| Description|
205| -- | -- |
206| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_UNSUPPORT**: The format is not supported.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
207
208### OH_LowPowerVideoSink_StartDecoder()
209
210```
211OH_AVErrCode OH_LowPowerVideoSink_StartDecoder(OH_LowPowerVideoSink* sink)
212```
213
214**Description**
215
216Starts an OH_LowPowerVideoSink instance for decoding. This function must be called after [OH_LowPowerVideoSink_Prepare](#oh_lowpowervideosink_prepare) or if no video is playing, after [OH_LowPowerVideoSink_SetTargetStartFrame](#oh_lowpowervideosink_settargetstartframe).
217
218After successful startup, the OH_LowPowerVideoSink instance starts reporting the [OH_LowPowerVideoSink_OnDataNeeded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ondataneeded) event.
219
220**Since**: 20
221
222
223**Parameters**
224
225| Name| Description|
226| -- | -- |
227| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
228
229**Returns**
230
231| Type| Description|
232| -- | -- |
233| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_UNSUPPORT**: The format is not supported.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
234
235### OH_LowPowerVideoSink_RenderFirstFrame()
236
237```
238OH_AVErrCode OH_LowPowerVideoSink_RenderFirstFrame(OH_LowPowerVideoSink* sink)
239```
240
241**Description**
242
243Renders the first frame decoded by an OH_LowPowerVideoSink instance. This function must be called after [OH_LowPowerVideoSink_StartDecoder](#oh_lowpowervideosink_startdecoder).
244
245**Since**: 20
246
247
248**Parameters**
249
250| Name| Description|
251| -- | -- |
252| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
253
254**Returns**
255
256| Type| Description|
257| -- | -- |
258| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
259
260### OH_LowPowerVideoSink_StartRenderer()
261
262```
263OH_AVErrCode OH_LowPowerVideoSink_StartRenderer(OH_LowPowerVideoSink* sink)
264```
265
266**Description**
267
268Starts an OH_LowPowerVideoSink instance for rendering. This function must be called after [OH_LowPowerVideoSink_StartDecoder](#oh_lowpowervideosink_startdecoder).
269
270**Since**: 20
271
272
273**Parameters**
274
275| Name| Description|
276| -- | -- |
277| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
278
279**Returns**
280
281| Type| Description|
282| -- | -- |
283| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_UNSUPPORT**: The format is not supported.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
284
285### OH_LowPowerVideoSink_Pause()
286
287```
288OH_AVErrCode OH_LowPowerVideoSink_Pause(OH_LowPowerVideoSink* sink)
289```
290
291**Description**
292
293Pauses an OH_LowPowerVideoSink instance. This function must be called after [OH_LowPowerVideoSink_StartRenderer](#oh_lowpowervideosink_startrenderer) or [OH_LowPowerVideoSink_Resume](#oh_lowpowervideosink_resume).
294
295After successful pause, the OH_LowPowerVideoSink instance stops reporting the [OH_LowPowerVideoSink_OnDataNeeded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ondataneeded) event.
296
297**Since**: 20
298
299
300**Parameters**
301
302| Name| Description|
303| -- | -- |
304| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
305
306**Returns**
307
308| Type| Description|
309| -- | -- |
310| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
311
312### OH_LowPowerVideoSink_Resume()
313
314```
315OH_AVErrCode OH_LowPowerVideoSink_Resume(OH_LowPowerVideoSink* sink)
316```
317
318**Description**
319
320Resumes an OH_LowPowerVideoSink instance. This function must be called after[OH_LowPowerVideoSink_Pause](#oh_lowpowervideosink_pause).
321
322After successful resumption, the OH_LowPowerVideoSink instance resumes reporting the [OH_LowPowerVideoSink_OnDataNeeded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ondataneeded) event.
323
324**Since**: 20
325
326
327**Parameters**
328
329| Name| Description|
330| -- | -- |
331| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
332
333**Returns**
334
335| Type| Description|
336| -- | -- |
337| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
338
339### OH_LowPowerVideoSink_Flush()
340
341```
342OH_AVErrCode OH_LowPowerVideoSink_Flush(OH_LowPowerVideoSink* sink)
343```
344
345**Description**
346
347Clears all input and output data from the decoders and render buffers of an OH_LowPowerVideoSink instance.
348
349You are not advised to call this function after [OH_LowPowerVideoSink_StartRenderer](#oh_lowpowervideosink_startrenderer) or [OH_LowPowerVideoSink_Resume](#oh_lowpowervideosink_resume).
350
351Note that if the decoder has previously received data, you must input the codec data again.
352
353**Since**: 20
354
355
356**Parameters**
357
358| Name| Description|
359| -- | -- |
360| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
361
362**Returns**
363
364| Type| Description|
365| -- | -- |
366| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
367
368### OH_LowPowerVideoSink_Stop()
369
370```
371OH_AVErrCode OH_LowPowerVideoSink_Stop(OH_LowPowerVideoSink* sink)
372```
373
374**Description**
375
376Stops an OH_LowPowerVideoSink instance.
377
378**Since**: 20
379
380
381**Parameters**
382
383| Name| Description|
384| -- | -- |
385| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
386
387**Returns**
388
389| Type| Description|
390| -- | -- |
391| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
392
393### OH_LowPowerVideoSink_Reset()
394
395```
396OH_AVErrCode OH_LowPowerVideoSink_Reset(OH_LowPowerVideoSink* sink)
397```
398
399**Description**
400
401Resets an OH_LowPowerVideoSink instance.
402
403To reuse the instance, you must call [OH_LowPowerVideoSink_Configure](#oh_lowpowervideosink_configure) to configure the instance again.
404
405**Since**: 20
406
407
408**Parameters**
409
410| Name| Description|
411| -- | -- |
412| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
413
414**Returns**
415
416| Type| Description|
417| -- | -- |
418| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
419
420### OH_LowPowerVideoSink_Destroy()
421
422```
423OH_AVErrCode OH_LowPowerVideoSink_Destroy(OH_LowPowerVideoSink* sink)
424```
425
426**Description**
427
428Clears internal resources of an OH_LowPowerVideoSink instance and destroys the instance. You only need to call the function once.
429
430**Since**: 20
431
432
433**Parameters**
434
435| Name| Description|
436| -- | -- |
437| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
438
439**Returns**
440
441| Type| Description|
442| -- | -- |
443| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
444
445### OH_LowPowerVideoSink_SetSyncAudioSink()
446
447```
448OH_AVErrCode OH_LowPowerVideoSink_SetSyncAudioSink(OH_LowPowerVideoSink* videoSink, OH_LowPowerAudioSink* audioSink)
449```
450
451**Description**
452
453Sets an OH_LowPowerAudioSink instance for audio-video synchronization in an OH_LowPowerVideoSink instance.
454
455**Since**: 20
456
457
458**Parameters**
459
460| Name| Description|
461| -- | -- |
462| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* videoSink | Pointer to an OH_LowPowerVideoSink instance.|
463| [OH_LowPowerAudioSink](capi-lowpoweraudiosink-oh-lowpoweraudiosink.md)* audioSink | Pointer to an OH_LowPowerAudioSink instance.|
464
465**Returns**
466
467| Type| Description|
468| -- | -- |
469| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
470
471### OH_LowPowerVideoSink_SetTargetStartFrame()
472
473```
474OH_AVErrCode OH_LowPowerVideoSink_SetTargetStartFrame(OH_LowPowerVideoSink* sink,const int64_t framePts,OH_LowPowerVideoSink_OnTargetArrived onTargetArrived,const int64_t timeoutMs,void* userData)
475```
476
477**Description**
478
479Sets the target rendering frame for an OH_LowPowerVideoSink instance.
480
481**Since**: 20
482
483
484**Parameters**
485
486| Name| Description|
487| -- | -- |
488| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
489| const int64_t framePts | Presentation timestamp (PTS) of the target video frame to render.|
490| [OH_LowPowerVideoSink_OnTargetArrived](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ontargetarrived) onTargetArrived | OH_LowPowerVideoSink_OnTargetArrived, which is invoked when the target frame is rendered.|
491| const int64_t timeoutMs | Time wait for the first frame to finish rendering. If the first frame does not finish rendering within the specified time, the OH_LowPowerVideoSink_OnTargetArrived callback is directly invoked.|
492| void* userData | Pointer to the data on which the caller depends when executing the callback.|
493
494**Returns**
495
496| Type| Description|
497| -- | -- |
498| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
499
500### OH_LowPowerVideoSink_SetPlaybackSpeed()
501
502```
503OH_AVErrCode OH_LowPowerVideoSink_SetPlaybackSpeed(OH_LowPowerVideoSink* sink, const float speed)
504```
505
506**Description**
507
508Sets the playback speed for an OH_LowPowerVideoSink instance.
509
510**Since**: 20
511
512
513**Parameters**
514
515| Name| Description|
516| -- | -- |
517| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
518| const float speed | Playback speed, in the range [0.1, 4.0].|
519
520**Returns**
521
522| Type| Description|
523| -- | -- |
524| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
525
526### OH_LowPowerVideoSink_ReturnSamples()
527
528```
529OH_AVErrCode OH_LowPowerVideoSink_ReturnSamples(OH_LowPowerVideoSink* sink, OH_AVSamplesBuffer* samples)
530```
531
532**Description**
533
534Provides a buffer to an OH_LowPowerVideoSink instance for procesing.
535
536**Since**: 20
537
538
539**Parameters**
540
541| Name| Description|
542| -- | -- |
543| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
544| [OH_AVSamplesBuffer](capi-avsinkbase-oh-avsamplesbuffer.md)* samples | Pointer to the OH_AVSamplesBuffer instance to be provided. Batch input of samples is supported.|
545
546**Returns**
547
548| Type| Description|
549| -- | -- |
550| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
551
552### OH_LowPowerVideoSink_RegisterCallback()
553
554```
555OH_AVErrCode OH_LowPowerVideoSink_RegisterCallback(OH_LowPowerVideoSink* sink, OH_LowPowerVideoSinkCallback* callback)
556```
557
558**Description**
559
560Registers a callback for an OH_LowPowerVideoSink instance.
561
562**Since**: 20
563
564
565**Parameters**
566
567| Name| Description|
568| -- | -- |
569| [OH_LowPowerVideoSink](capi-lowpowervideosink-oh-lowpowervideosink.md)* sink | Pointer to an OH_LowPowerVideoSink instance.|
570| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
571
572**Returns**
573
574| Type| Description|
575| -- | -- |
576| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_SERVICE_DIED**: The media server is destroyed.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
577
578### OH_LowPowerVideoSinkCallback_Create()
579
580```
581OH_LowPowerVideoSinkCallback* OH_LowPowerVideoSinkCallback_Create(void)
582```
583
584**Description**
585
586Creates an OH_LowPowerVideoSinkCallback instance.
587
588**Since**: 20
589
590**Returns**
591
592| Type| Description|
593| -- | -- |
594| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* | Pointer to the OH_LowPowerVideoSinkCallback instance created. If the memory is insufficient, nullptr is returned.|
595
596### OH_LowPowerVideoSinkCallback_Destroy()
597
598```
599OH_AVErrCode OH_LowPowerVideoSinkCallback_Destroy(OH_LowPowerVideoSinkCallback* callback)
600```
601
602**Description**
603
604Destroys an OH_LowPowerVideoSinkCallback instance.
605
606**Since**: 20
607
608
609**Parameters**
610
611| Name| Description|
612| -- | -- |
613| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
614
615**Returns**
616
617| Type| Description|
618| -- | -- |
619| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.|
620
621### OH_LowPowerVideoSinkCallback_SetDataNeededListener()
622
623```
624OH_AVErrCode OH_LowPowerVideoSinkCallback_SetDataNeededListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnDataNeeded onDataNeeded, void* userData)
625```
626
627**Description**
628
629Sets a data needed listener for an OH_LowPowerVideoSinkCallback instance.
630
631**Since**: 20
632
633
634**Parameters**
635
636| Name| Description|
637| -- | -- |
638| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
639| [OH_LowPowerVideoSink_OnDataNeeded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_ondataneeded) onDataNeeded | OH_LowPowerVideoSink_OnDataNeeded, which is invoked when the OH_LowPowerVideoSink instance needs more data.|
640| void* userData | Pointer to the data on which the caller depends when executing the callback.|
641
642**Returns**
643
644| Type| Description|
645| -- | -- |
646| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
647
648### OH_LowPowerVideoSinkCallback_SetErrorListener()
649
650```
651OH_AVErrCode OH_LowPowerVideoSinkCallback_SetErrorListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnError onError, void* userData)
652```
653
654**Description**
655
656Sets an error listener for an OH_LowPowerVideoSinkCallback instance.
657
658**Since**: 20
659
660
661**Parameters**
662
663| Name| Description|
664| -- | -- |
665| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
666| [OH_LowPowerVideoSink_OnError](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_onerror) onError | OH_LowPowerVideoSink_OnError, which is invoked when an error occurs in the OH_LowPowerVideoSink instance.|
667| void* userData | Pointer to the data on which the caller depends when executing the callback.|
668
669**Returns**
670
671| Type| Description|
672| -- | -- |
673| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
674
675### OH_LowPowerVideoSinkCallback_SetRenderStartListener()
676
677```
678OH_AVErrCode OH_LowPowerVideoSinkCallback_SetRenderStartListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnRenderStarted onRenderStarted, void* userData)
679```
680
681**Description**
682
683Sets a render start listener for an OH_LowPowerVideoSinkCallback instance.
684
685**Since**: 20
686
687
688**Parameters**
689
690| Name| Description|
691| -- | -- |
692| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
693| [OH_LowPowerVideoSink_OnRenderStarted](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_onrenderstarted) onRenderStarted | OH_LowPowerVideoSink_OnRenderStarted, which is invoked when rendering starts in the OH_LowPowerVideoSink instance.|
694| void* userData | Pointer to the data on which the caller depends when executing the callback.|
695
696**Returns**
697
698| Type| Description|
699| -- | -- |
700| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
701
702### OH_LowPowerVideoSinkCallback_SetStreamChangedListener()
703
704```
705OH_AVErrCode OH_LowPowerVideoSinkCallback_SetStreamChangedListener(OH_LowPowerVideoSinkCallback* callback, OH_LowPowerVideoSink_OnStreamChanged onStreamChanged, void* userData)
706```
707
708**Description**
709
710Sets a stream change listener for an OH_LowPowerVideoSinkCallback instance.
711
712**Since**: 20
713
714
715**Parameters**
716
717| Name| Description|
718| -- | -- |
719| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
720| [OH_LowPowerVideoSink_OnStreamChanged](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_onstreamchanged) onStreamChanged | OH_LowPowerVideoSink_OnStreamChanged, which is invoked when the stream changes in the OH_LowPowerVideoSink instance.|
721| void* userData | Pointer to the data on which the caller depends when executing the callback.|
722
723**Returns**
724
725| Type| Description|
726| -- | -- |
727| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
728
729### OH_LowPowerVideoSinkCallback_SetFirstFrameDecodedListener()
730
731```
732OH_AVErrCode OH_LowPowerVideoSinkCallback_SetFirstFrameDecodedListener(OH_LowPowerVideoSinkCallback* callback,OH_LowPowerVideoSink_OnFirstFrameDecoded onFirstFrameDecoded,void* userData)
733```
734
735**Description**
736
737Sets a first-frame ready listener for an OH_LowPowerVideoSinkCallback instance.
738
739**Since**: 20
740
741
742**Parameters**
743
744| Name| Description|
745| -- | -- |
746| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
747| [OH_LowPowerVideoSink_OnFirstFrameDecoded](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_onfirstframedecoded) onFirstFrameDecoded | OH_LowPowerVideoSink_OnFirstFrameReady, which is invoked when the first frame is ready in the OH_LowPowerVideoSink instance.|
748| void* userData | Pointer to the data on which the caller depends when executing the callback.|
749
750**Returns**
751
752| Type| Description|
753| -- | -- |
754| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
755
756### OH_LowPowerVideoSinkCallback_SetEosListener()
757
758```
759OH_AVErrCode OH_LowPowerVideoSinkCallback_SetEosListener(OH_LowPowerVideoSinkCallback* callback,OH_LowPowerVideoSink_OnEos onEos, void* userData)
760```
761
762**Description**
763
764Sets an end-of-stream listener for an OH_LowPowerVideoSinkCallback instance.
765
766**Since**: 20
767
768
769**Parameters**
770
771| Name| Description|
772| -- | -- |
773| [OH_LowPowerVideoSinkCallback](capi-lowpowervideosink-oh-lowpowervideosinkcallback.md)* callback | Pointer to an OH_LowPowerVideoSinkCallback instance.|
774| [OH_LowPowerVideoSink_OnEos](capi-lowpower-video-sink-base-h.md#oh_lowpowervideosink_oneos) onEos | OH_LowPowerVideoSink_OnEos, which is invoked when playback is complete in the OH_LowPowerVideoSink instance.|
775| void* userData | Pointer to the data on which the caller depends when executing the callback.|
776
777**Returns**
778
779| Type| Description|
780| -- | -- |
781| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | **AV_ERR_OK**: The operation is successful.<br>**AV_ERR_INVALID_VAL**: An input parameter is nullptr or invalid.<br>**AV_ERR_OPERATE_NOT_PERMIT**: The operation is not supported.|
782