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