FFmpeg
Data Structures | Typedefs | Functions
mediacodec_wrapper.h File Reference
#include <stdint.h>
#include <sys/types.h>
#include "avcodec.h"
#include "mediacodec_surface.h"

Go to the source code of this file.

Data Structures

struct  FFAMediaFormat
 
struct  FFAMediaCodecBufferInfo
 
struct  FFAMediaCodec
 

Typedefs

typedef struct FFAMediaCodecCryptoInfo FFAMediaCodecCryptoInfo
 

Functions

int ff_AMediaCodecProfile_getProfileFromAVCodecContext (AVCodecContext *avctx)
 The following API around MediaCodec and MediaFormat is based on the NDK one provided by Google since Android 5.0. More...
 
char * ff_AMediaCodecList_getCodecNameByType (const char *mime, int profile, int encoder, void *log_ctx)
 
FFAMediaFormatff_AMediaFormat_new (int ndk)
 
static int ff_AMediaFormat_delete (FFAMediaFormat *format)
 
static char * ff_AMediaFormat_toString (FFAMediaFormat *format)
 
static int ff_AMediaFormat_getInt32 (FFAMediaFormat *format, const char *name, int32_t *out)
 
static int ff_AMediaFormat_getInt64 (FFAMediaFormat *format, const char *name, int64_t *out)
 
static int ff_AMediaFormat_getFloat (FFAMediaFormat *format, const char *name, float *out)
 
static int ff_AMediaFormat_getBuffer (FFAMediaFormat *format, const char *name, void **data, size_t *size)
 
static int ff_AMediaFormat_getString (FFAMediaFormat *format, const char *name, const char **out)
 
static int ff_AMediaFormat_getRect (FFAMediaFormat *format, const char *name, int32_t *left, int32_t *top, int32_t *right, int32_t *bottom)
 
static void ff_AMediaFormat_setInt32 (FFAMediaFormat *format, const char *name, int32_t value)
 
static void ff_AMediaFormat_setInt64 (FFAMediaFormat *format, const char *name, int64_t value)
 
static void ff_AMediaFormat_setFloat (FFAMediaFormat *format, const char *name, float value)
 
static void ff_AMediaFormat_setString (FFAMediaFormat *format, const char *name, const char *value)
 
static void ff_AMediaFormat_setBuffer (FFAMediaFormat *format, const char *name, void *data, size_t size)
 
static void ff_AMediaFormat_setRect (FFAMediaFormat *format, const char *name, int32_t left, int32_t top, int32_t right, int32_t bottom)
 
static char * ff_AMediaCodec_getName (FFAMediaCodec *codec)
 
FFAMediaCodecff_AMediaCodec_createCodecByName (const char *name, int ndk)
 
FFAMediaCodecff_AMediaCodec_createDecoderByType (const char *mime_type, int ndk)
 
FFAMediaCodecff_AMediaCodec_createEncoderByType (const char *mime_type, int ndk)
 
static int ff_AMediaCodec_configure (FFAMediaCodec *codec, const FFAMediaFormat *format, FFANativeWindow *surface, void *crypto, uint32_t flags)
 
static int ff_AMediaCodec_start (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_stop (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_flush (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_delete (FFAMediaCodec *codec)
 
static uint8_t * ff_AMediaCodec_getInputBuffer (FFAMediaCodec *codec, size_t idx, size_t *out_size)
 
static uint8_t * ff_AMediaCodec_getOutputBuffer (FFAMediaCodec *codec, size_t idx, size_t *out_size)
 
static ssize_t ff_AMediaCodec_dequeueInputBuffer (FFAMediaCodec *codec, int64_t timeoutUs)
 
static int ff_AMediaCodec_queueInputBuffer (FFAMediaCodec *codec, size_t idx, off_t offset, size_t size, uint64_t time, uint32_t flags)
 
static ssize_t ff_AMediaCodec_dequeueOutputBuffer (FFAMediaCodec *codec, FFAMediaCodecBufferInfo *info, int64_t timeoutUs)
 
static FFAMediaFormatff_AMediaCodec_getOutputFormat (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_releaseOutputBuffer (FFAMediaCodec *codec, size_t idx, int render)
 
static int ff_AMediaCodec_releaseOutputBufferAtTime (FFAMediaCodec *codec, size_t idx, int64_t timestampNs)
 
static int ff_AMediaCodec_infoTryAgainLater (FFAMediaCodec *codec, ssize_t idx)
 
static int ff_AMediaCodec_infoOutputBuffersChanged (FFAMediaCodec *codec, ssize_t idx)
 
static int ff_AMediaCodec_infoOutputFormatChanged (FFAMediaCodec *codec, ssize_t idx)
 
static int ff_AMediaCodec_getBufferFlagCodecConfig (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_getBufferFlagEndOfStream (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_getBufferFlagKeyFrame (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_getConfigureFlagEncode (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_cleanOutputBuffers (FFAMediaCodec *codec)
 
static int ff_AMediaCodec_signalEndOfInputStream (FFAMediaCodec *codec)
 
int ff_Build_SDK_INT (AVCodecContext *avctx)
 

Typedef Documentation

◆ FFAMediaCodecCryptoInfo

Definition at line 170 of file mediacodec_wrapper.h.

Function Documentation

◆ ff_AMediaCodecProfile_getProfileFromAVCodecContext()

int ff_AMediaCodecProfile_getProfileFromAVCodecContext ( AVCodecContext avctx)

The following API around MediaCodec and MediaFormat is based on the NDK one provided by Google since Android 5.0.

Differences from the NDK API:

Buffers returned by ff_AMediaFormat_toString and ff_AMediaFormat_getString are newly allocated buffer and must be freed by the user after use.

The MediaCrypto API is not implemented.

ff_AMediaCodec_infoTryAgainLater, ff_AMediaCodec_infoOutputBuffersChanged, ff_AMediaCodec_infoOutputFormatChanged, ff_AMediaCodec_cleanOutputBuffers ff_AMediaCodec_getName and ff_AMediaCodec_getBufferFlagEndOfStream are not part of the original NDK API and are convenience functions to hide JNI implementation.

The API around MediaCodecList is not part of the NDK (and is lacking as we still need to retrieve the codec name to work around faulty decoders and encoders).

For documentation, please refers to NdkMediaCodec.h NdkMediaFormat.h and http://developer.android.com/reference/android/media/MediaCodec.html.

Definition at line 303 of file mediacodec_wrapper.c.

Referenced by ff_mediacodec_dec_init(), and mediacodec_init().

◆ ff_AMediaCodecList_getCodecNameByType()

char* ff_AMediaCodecList_getCodecNameByType ( const char *  mime,
int  profile,
int  encoder,
void *  log_ctx 
)

Definition at line 365 of file mediacodec_wrapper.c.

Referenced by ff_mediacodec_dec_init().

◆ ff_AMediaFormat_new()

FFAMediaFormat* ff_AMediaFormat_new ( int  ndk)

Definition at line 2485 of file mediacodec_wrapper.c.

Referenced by mediacodec_decode_init(), and mediacodec_init().

◆ ff_AMediaFormat_delete()

static int ff_AMediaFormat_delete ( FFAMediaFormat format)
inlinestatic

◆ ff_AMediaFormat_toString()

static char* ff_AMediaFormat_toString ( FFAMediaFormat format)
inlinestatic

◆ ff_AMediaFormat_getInt32()

static int ff_AMediaFormat_getInt32 ( FFAMediaFormat format,
const char *  name,
int32_t out 
)
inlinestatic

Definition at line 102 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_getInt64()

static int ff_AMediaFormat_getInt64 ( FFAMediaFormat format,
const char *  name,
int64_t *  out 
)
inlinestatic

Definition at line 107 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_getFloat()

static int ff_AMediaFormat_getFloat ( FFAMediaFormat format,
const char *  name,
float out 
)
inlinestatic

Definition at line 112 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_getBuffer()

static int ff_AMediaFormat_getBuffer ( FFAMediaFormat format,
const char *  name,
void **  data,
size_t *  size 
)
inlinestatic

Definition at line 117 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_getString()

static int ff_AMediaFormat_getString ( FFAMediaFormat format,
const char *  name,
const char **  out 
)
inlinestatic

Definition at line 122 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_getRect()

static int ff_AMediaFormat_getRect ( FFAMediaFormat format,
const char *  name,
int32_t left,
int32_t top,
int32_t right,
int32_t bottom 
)
inlinestatic

Definition at line 127 of file mediacodec_wrapper.h.

Referenced by mediacodec_dec_parse_format().

◆ ff_AMediaFormat_setInt32()

static void ff_AMediaFormat_setInt32 ( FFAMediaFormat format,
const char *  name,
int32_t  value 
)
inlinestatic

Definition at line 135 of file mediacodec_wrapper.h.

Referenced by mediacodec_decode_init(), and mediacodec_init().

◆ ff_AMediaFormat_setInt64()

static void ff_AMediaFormat_setInt64 ( FFAMediaFormat format,
const char *  name,
int64_t  value 
)
inlinestatic

Definition at line 140 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_setFloat()

static void ff_AMediaFormat_setFloat ( FFAMediaFormat format,
const char *  name,
float  value 
)
inlinestatic

Definition at line 145 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_setString()

static void ff_AMediaFormat_setString ( FFAMediaFormat format,
const char *  name,
const char *  value 
)
inlinestatic

Definition at line 150 of file mediacodec_wrapper.h.

Referenced by mediacodec_decode_init(), and mediacodec_init().

◆ ff_AMediaFormat_setBuffer()

static void ff_AMediaFormat_setBuffer ( FFAMediaFormat format,
const char *  name,
void *  data,
size_t  size 
)
inlinestatic

Definition at line 155 of file mediacodec_wrapper.h.

◆ ff_AMediaFormat_setRect()

static void ff_AMediaFormat_setRect ( FFAMediaFormat format,
const char *  name,
int32_t  left,
int32_t  top,
int32_t  right,
int32_t  bottom 
)
inlinestatic

Definition at line 160 of file mediacodec_wrapper.h.

◆ ff_AMediaCodec_getName()

static char* ff_AMediaCodec_getName ( FFAMediaCodec codec)
inlinestatic

Definition at line 224 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_init(), and mediacodec_output_format().

◆ ff_AMediaCodec_createCodecByName()

FFAMediaCodec* ff_AMediaCodec_createCodecByName ( const char *  name,
int  ndk 
)

Definition at line 2492 of file mediacodec_wrapper.c.

Referenced by ff_mediacodec_dec_init(), and mediacodec_init().

◆ ff_AMediaCodec_createDecoderByType()

FFAMediaCodec* ff_AMediaCodec_createDecoderByType ( const char *  mime_type,
int  ndk 
)

Definition at line 2499 of file mediacodec_wrapper.c.

Referenced by ff_mediacodec_dec_init().

◆ ff_AMediaCodec_createEncoderByType()

FFAMediaCodec* ff_AMediaCodec_createEncoderByType ( const char *  mime_type,
int  ndk 
)

Definition at line 2506 of file mediacodec_wrapper.c.

Referenced by mediacodec_init().

◆ ff_AMediaCodec_configure()

static int ff_AMediaCodec_configure ( FFAMediaCodec codec,
const FFAMediaFormat format,
FFANativeWindow surface,
void *  crypto,
uint32_t  flags 
)
inlinestatic

Definition at line 233 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_init(), and mediacodec_init().

◆ ff_AMediaCodec_start()

static int ff_AMediaCodec_start ( FFAMediaCodec codec)
inlinestatic

Definition at line 241 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_init(), and mediacodec_init().

◆ ff_AMediaCodec_stop()

static int ff_AMediaCodec_stop ( FFAMediaCodec codec)
inlinestatic

Definition at line 246 of file mediacodec_wrapper.h.

Referenced by mediacodec_close().

◆ ff_AMediaCodec_flush()

static int ff_AMediaCodec_flush ( FFAMediaCodec codec)
inlinestatic

Definition at line 251 of file mediacodec_wrapper.h.

Referenced by mediacodec_dec_flush_codec().

◆ ff_AMediaCodec_delete()

static int ff_AMediaCodec_delete ( FFAMediaCodec codec)
inlinestatic

Definition at line 256 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_unref(), and mediacodec_close().

◆ ff_AMediaCodec_getInputBuffer()

static uint8_t* ff_AMediaCodec_getInputBuffer ( FFAMediaCodec codec,
size_t  idx,
size_t *  out_size 
)
inlinestatic

Definition at line 261 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_send(), and mediacodec_send().

◆ ff_AMediaCodec_getOutputBuffer()

static uint8_t* ff_AMediaCodec_getOutputBuffer ( FFAMediaCodec codec,
size_t  idx,
size_t *  out_size 
)
inlinestatic

Definition at line 266 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_receive(), and mediacodec_receive().

◆ ff_AMediaCodec_dequeueInputBuffer()

static ssize_t ff_AMediaCodec_dequeueInputBuffer ( FFAMediaCodec codec,
int64_t  timeoutUs 
)
inlinestatic

◆ ff_AMediaCodec_queueInputBuffer()

static int ff_AMediaCodec_queueInputBuffer ( FFAMediaCodec codec,
size_t  idx,
off_t  offset,
size_t  size,
uint64_t  time,
uint32_t  flags 
)
inlinestatic

Definition at line 276 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_send(), and mediacodec_send().

◆ ff_AMediaCodec_dequeueOutputBuffer()

static ssize_t ff_AMediaCodec_dequeueOutputBuffer ( FFAMediaCodec codec,
FFAMediaCodecBufferInfo info,
int64_t  timeoutUs 
)
inlinestatic

Definition at line 281 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_receive(), and mediacodec_receive().

◆ ff_AMediaCodec_getOutputFormat()

static FFAMediaFormat* ff_AMediaCodec_getOutputFormat ( FFAMediaCodec codec)
inlinestatic

◆ ff_AMediaCodec_releaseOutputBuffer()

static int ff_AMediaCodec_releaseOutputBuffer ( FFAMediaCodec codec,
size_t  idx,
int  render 
)
inlinestatic

◆ ff_AMediaCodec_releaseOutputBufferAtTime()

static int ff_AMediaCodec_releaseOutputBufferAtTime ( FFAMediaCodec codec,
size_t  idx,
int64_t  timestampNs 
)
inlinestatic

Definition at line 296 of file mediacodec_wrapper.h.

◆ ff_AMediaCodec_infoTryAgainLater()

static int ff_AMediaCodec_infoTryAgainLater ( FFAMediaCodec codec,
ssize_t  idx 
)
inlinestatic

◆ ff_AMediaCodec_infoOutputBuffersChanged()

static int ff_AMediaCodec_infoOutputBuffersChanged ( FFAMediaCodec codec,
ssize_t  idx 
)
inlinestatic

Definition at line 306 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_receive(), and mediacodec_receive().

◆ ff_AMediaCodec_infoOutputFormatChanged()

static int ff_AMediaCodec_infoOutputFormatChanged ( FFAMediaCodec codec,
ssize_t  idx 
)
inlinestatic

Definition at line 311 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_receive(), and mediacodec_receive().

◆ ff_AMediaCodec_getBufferFlagCodecConfig()

static int ff_AMediaCodec_getBufferFlagCodecConfig ( FFAMediaCodec codec)
inlinestatic

Definition at line 316 of file mediacodec_wrapper.h.

Referenced by mediacodec_receive().

◆ ff_AMediaCodec_getBufferFlagEndOfStream()

static int ff_AMediaCodec_getBufferFlagEndOfStream ( FFAMediaCodec codec)
inlinestatic

◆ ff_AMediaCodec_getBufferFlagKeyFrame()

static int ff_AMediaCodec_getBufferFlagKeyFrame ( FFAMediaCodec codec)
inlinestatic

Definition at line 326 of file mediacodec_wrapper.h.

Referenced by mediacodec_receive().

◆ ff_AMediaCodec_getConfigureFlagEncode()

static int ff_AMediaCodec_getConfigureFlagEncode ( FFAMediaCodec codec)
inlinestatic

Definition at line 331 of file mediacodec_wrapper.h.

Referenced by mediacodec_init().

◆ ff_AMediaCodec_cleanOutputBuffers()

static int ff_AMediaCodec_cleanOutputBuffers ( FFAMediaCodec codec)
inlinestatic

Definition at line 336 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_receive(), and mediacodec_receive().

◆ ff_AMediaCodec_signalEndOfInputStream()

static int ff_AMediaCodec_signalEndOfInputStream ( FFAMediaCodec codec)
inlinestatic

Definition at line 341 of file mediacodec_wrapper.h.

Referenced by mediacodec_send().

◆ ff_Build_SDK_INT()

int ff_Build_SDK_INT ( AVCodecContext avctx)

Definition at line 2513 of file mediacodec_wrapper.c.

Referenced by mediacodec_decode_init().