Loading...
Searching...
No Matches
mediacodec.h File Reference
`#include "libavcodec/avcodec.h"`

Go to the source code of this file.

## Data Structures

struct | AVMediaCodecContext
| This structure holds a reference to a android/view/Surface object that will be used as output by the decoder. More...

## Typedefs

typedef struct MediaCodecBuffer | AVMediaCodecBuffer
| Opaque structure representing a MediaCodec buffer to render.

## Functions

AVMediaCodecContext * | av_mediacodec_alloc_context (void)
| Allocate and initialize a MediaCodec context.
int | av_mediacodec_default_init (AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface)
| Convenience function that sets up the MediaCodec context.
void | av_mediacodec_default_free (AVCodecContext *avctx)
| This function must be called to free the MediaCodec context initialized with av_mediacodec_default_init().
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.
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.

## Typedef Documentation

## AVMediaCodecBuffer

typedef struct MediaCodecBuffer AVMediaCodecBuffer

Opaque structure representing a MediaCodec buffer to render.

Definition at line 73 of file mediacodec.h.

## 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

## av_mediacodec_default_init()

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

Convenience function that sets up the MediaCodec context.

Parameters

  avctx | codec context
  ctx | MediaCodec context to initialize
  surface | reference to an android/view/Surface

Returns
  0 on success, < 0 otherwise

## 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

  avctx | codec context

## 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

  buffer | the buffer to render
  render | 1 to release and render the buffer to the surface or 0 to discard the buffer

Returns
  0 on success, < 0 otherwise

## 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

  buffer | the buffer to render
  time | timestamp in nanoseconds of when to render the buffer

Returns
  0 on success, < 0 otherwise