# MediaCodec.OnFrameRenderedListener

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

# MediaCodec.OnFrameRenderedListener

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/media/MediaCodec.OnFrameRenderedListener "View this page in Kotlin")\|Java

`
public
static


interface
MediaCodec.OnFrameRenderedListener
`  
`


`

|--------------------------------------------------|
| android.media.MediaCodec.OnFrameRenderedListener |

<br />

*** ** * ** ***

Listener to be called when an output frame has rendered on the output surface  
**See also:**

- [MediaCodec.setOnFrameRenderedListener(OnFrameRenderedListener, Handler)](https://developer.android.com/reference/android/media/MediaCodec#setOnFrameRenderedListener(android.media.MediaCodec.OnFrameRenderedListener,%20android.os.Handler))

## Summary

|                                                                                                                                                                                      ### Public methods                                                                                                                                                                                       ||
|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract void` | ` `[onFrameRendered](https://developer.android.com/reference/android/media/MediaCodec.OnFrameRenderedListener#onFrameRendered(android.media.MediaCodec,%20long,%20long))`(`[MediaCodec](https://developer.android.com/reference/android/media/MediaCodec)` codec, long presentationTimeUs, long nanoTime) ` Called when an output frame has rendered on the output surface. |

## Public methods

### onFrameRendered

Added in[API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public abstract void onFrameRendered (MediaCodec codec, 
                long presentationTimeUs, 
                long nanoTime)
```

Called when an output frame has rendered on the output surface.

**Note:** This callback is for informational purposes only: to get precise render timing samples, and can be significantly delayed and batched. Starting with Android[Build.VERSION_CODES.UPSIDE_DOWN_CAKE](https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE), a callback will always be received for each rendered frame providing the MediaCodec is still in the executing state when the callback is dispatched. Prior to Android[Build.VERSION_CODES.UPSIDE_DOWN_CAKE](https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE), some frames may have been rendered even if there was no callback generated.

<br />

|                                                                                                                                                                                                                                                           Parameters                                                                                                                                                                                                                                                           ||
|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `codec`              | `MediaCodec`: the MediaCodec instance This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `presentationTimeUs` | `long`: the presentation time (media time) of the frame rendered. This is usually the same as specified in[MediaCodec.queueInputBuffer(int, int, int, long, int)](https://developer.android.com/reference/android/media/MediaCodec#queueInputBuffer(int,%20int,%20int,%20long,%20int)); however, some codecs may alter the media time by applying some time-based transformation, such as frame rate conversion. In that case, presentation time corresponds to the actual output frame rendered. <br /> |
| `nanoTime`           | `long`: The system time when the frame was rendered. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                              |

**See also:**

- [System.nanoTime()](https://developer.android.com/reference/java/lang/System#nanoTime())