From f6d48b618aadb7acea6539e3973c91e14164f531 Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Tue, 31 Jul 2018 18:34:15 -0700 Subject: avcodec/mediacodec: add av_mediacodec_render_buffer_at_time() The existing av_mediacodec_release_buffer allows the user to render or discard the Surface-backed frame. This new method allows the user to control exactly when the frame will be rendered to its SurfaceView. Available since Android API 21. Signed-off-by: Aman Gupta --- libavcodec/mediacodec.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'libavcodec/mediacodec.h') diff --git a/libavcodec/mediacodec.h b/libavcodec/mediacodec.h index 5606d24a1e..4c8545df03 100644 --- a/libavcodec/mediacodec.h +++ b/libavcodec/mediacodec.h @@ -85,4 +85,17 @@ typedef struct MediaCodecBuffer AVMediaCodecBuffer; */ int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render); +/** + * Release a MediaCodec buffer and render it at the given time to the surface + * that is associated with the decoder. The timestamp must be within one second + * of the current java/lang/System#nanoTime() (which is implemented using + * CLOCK_MONOTONIC on Android). See the Android MediaCodec documentation + * of android/media/MediaCodec#releaseOutputBuffer(int,long) for more details. + * + * @param buffer the buffer to render + * @param time timestamp in nanoseconds of when to render the buffer + * @return 0 on success, < 0 otherwise + */ +int av_mediacodec_render_buffer_at_time(AVMediaCodecBuffer *buffer, int64_t time); + #endif /* AVCODEC_MEDIACODEC_H */ -- cgit v1.2.3