FFmpeg
Functions
mediacodec.c File Reference
#include "config.h"
#include "libavutil/error.h"
#include "mediacodec.h"
#include <stdlib.h>

Go to the source code of this file.

Functions

AVMediaCodecContextav_mediacodec_alloc_context (void)
 Allocate and initialize a MediaCodec context. More...
 
int av_mediacodec_default_init (AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface)
 Convenience function that sets up the MediaCodec context. More...
 
void av_mediacodec_default_free (AVCodecContext *avctx)
 This function must be called to free the MediaCodec context initialized with av_mediacodec_default_init(). More...
 
int av_mediacodec_release_buffer (AVMediaCodecBuffer *buffer, int render)
 Release a MediaCodec buffer and render it to the surface that is associated with the decoder. More...
 
int av_mediacodec_render_buffer_at_time (AVMediaCodecBuffer *buffer, int64_t time)
 Release a MediaCodec buffer and render it at the given time to the surface that is associated with the decoder. More...
 

Function Documentation

◆ av_mediacodec_alloc_context()

AVMediaCodecContext* av_mediacodec_alloc_context ( void  )

Allocate and initialize a MediaCodec context.

When decoding with MediaCodec is finished, the caller must free the MediaCodec context with av_mediacodec_default_free.

Returns
a pointer to a newly allocated AVMediaCodecContext on success, NULL otherwise

Definition at line 125 of file mediacodec.c.

◆ av_mediacodec_default_init()

int av_mediacodec_default_init ( AVCodecContext avctx,
AVMediaCodecContext ctx,
void *  surface 
)

Convenience function that sets up the MediaCodec context.

Parameters
avctxcodec context
ctxMediaCodec context to initialize
surfacereference to an android/view/Surface
Returns
0 on success, < 0 otherwise

Definition at line 130 of file mediacodec.c.

◆ av_mediacodec_default_free()

void av_mediacodec_default_free ( AVCodecContext avctx)

This function must be called to free the MediaCodec context initialized with av_mediacodec_default_init().

Parameters
avctxcodec context

Definition at line 135 of file mediacodec.c.

◆ av_mediacodec_release_buffer()

int av_mediacodec_release_buffer ( AVMediaCodecBuffer *  buffer,
int  render 
)

Release a MediaCodec buffer and render it to the surface that is associated with the decoder.

This function should only be called once on a given buffer, once released the underlying buffer returns to the codec, thus subsequent calls to this function will have no effect.

Parameters
bufferthe buffer to render
render1 to release and render the buffer to the surface or 0 to discard the buffer
Returns
0 on success, < 0 otherwise

Definition at line 139 of file mediacodec.c.

◆ av_mediacodec_render_buffer_at_time()

int av_mediacodec_render_buffer_at_time ( AVMediaCodecBuffer *  buffer,
int64_t  time 
)

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.

Parameters
bufferthe buffer to render
timetimestamp in nanoseconds of when to render the buffer
Returns
0 on success, < 0 otherwise

Definition at line 144 of file mediacodec.c.