FFmpeg
Loading...
Searching...
No Matches
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  FFAMediaCodecOnAsyncNotifyCallback
 
struct  FFAMediaCodec
 

Typedefs

typedef struct FFAMediaCodecCryptoInfo FFAMediaCodecCryptoInfo
 

Enumerations

enum  FFAMediaFormatColorRange { COLOR_RANGE_UNSPECIFIED = 0x0 , COLOR_RANGE_FULL = 0x1 , COLOR_RANGE_LIMITED = 0x2 }
 
enum  FFAMediaFormatColorStandard {
  COLOR_STANDARD_UNSPECIFIED = 0x0 , COLOR_STANDARD_BT709 = 0x1 , COLOR_STANDARD_BT601_PAL = 0x2 , COLOR_STANDARD_BT601_NTSC = 0x4 ,
  COLOR_STANDARD_BT2020 = 0x6
}
 
enum  FFAMediaFormatColorTransfer {
  COLOR_TRANSFER_UNSPECIFIED = 0x0 , COLOR_TRANSFER_LINEAR = 0x1 , COLOR_TRANSFER_SDR_VIDEO = 0x3 , COLOR_TRANSFER_ST2084 = 0x6 ,
  COLOR_TRANSFER_HLG = 0x7
}
 

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.
 
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)
 
static int ff_AMediaCodec_setAsyncNotifyCallback (FFAMediaCodec *codec, const FFAMediaCodecOnAsyncNotifyCallback *callback, void *userdata)
 
int ff_Build_SDK_INT (AVCodecContext *avctx)
 
enum AVColorRange ff_AMediaFormatColorRange_to_AVColorRange (int color_range)
 Map MediaFormat color range to AVColorRange.
 
int ff_AMediaFormatColorRange_from_AVColorRange (enum AVColorRange color_range)
 Map AVColorRange to MediaFormat color range.
 
enum AVColorSpace ff_AMediaFormatColorStandard_to_AVColorSpace (int color_standard)
 Map MediaFormat color standard to AVColorSpace.
 
int ff_AMediaFormatColorStandard_from_AVColorSpace (enum AVColorSpace color_space)
 Map AVColorSpace to MediaFormat color standard.
 
enum AVColorPrimaries ff_AMediaFormatColorStandard_to_AVColorPrimaries (int color_standard)
 Map MediaFormat color standard to AVColorPrimaries.
 
enum AVColorTransferCharacteristic ff_AMediaFormatColorTransfer_to_AVColorTransfer (int color_transfer)
 Map MediaFormat color transfer to AVColorTransferCharacteristic.
 
int ff_AMediaFormatColorTransfer_from_AVColorTransfer (enum AVColorTransferCharacteristic color_transfer)
 Map AVColorTransferCharacteristic to MediaFormat color transfer.
 

Typedef Documentation

◆ FFAMediaCodecCryptoInfo

Definition at line 170 of file mediacodec_wrapper.h.

Enumeration Type Documentation

◆ FFAMediaFormatColorRange

Enumerator
COLOR_RANGE_UNSPECIFIED 
COLOR_RANGE_FULL 
COLOR_RANGE_LIMITED 

Definition at line 376 of file mediacodec_wrapper.h.

◆ FFAMediaFormatColorStandard

Enumerator
COLOR_STANDARD_UNSPECIFIED 
COLOR_STANDARD_BT709 
COLOR_STANDARD_BT601_PAL 
COLOR_STANDARD_BT601_NTSC 
COLOR_STANDARD_BT2020 

Definition at line 382 of file mediacodec_wrapper.h.

◆ FFAMediaFormatColorTransfer

Enumerator
COLOR_TRANSFER_UNSPECIFIED 
COLOR_TRANSFER_LINEAR 
COLOR_TRANSFER_SDR_VIDEO 
COLOR_TRANSFER_ST2084 
COLOR_TRANSFER_HLG 

Definition at line 390 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 309 of file mediacodec_wrapper.c.

Referenced by mediacodec_dec_get_video_codec(), and mediacodec_init().

◆ ff_AMediaCodecList_getCodecNameByType()

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

Definition at line 470 of file mediacodec_wrapper.c.

Referenced by mediacodec_dec_get_video_codec().

◆ ff_AMediaFormat_new()

FFAMediaFormat * ff_AMediaFormat_new ( int ndk)

Definition at line 2531 of file mediacodec_wrapper.c.

Referenced by mediacodec_decode_init(), and mediacodec_init().

◆ ff_AMediaFormat_delete()

◆ 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_video_format().

◆ ff_AMediaFormat_setInt32()

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

◆ 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

◆ ff_AMediaCodec_createCodecByName()

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

Definition at line 2538 of file mediacodec_wrapper.c.

Referenced by mediacodec_dec_get_video_codec(), and mediacodec_init().

◆ ff_AMediaCodec_createDecoderByType()

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

◆ ff_AMediaCodec_createEncoderByType()

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

Definition at line 2552 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 254 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 262 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 267 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_close(), and mediacodec_close().

◆ ff_AMediaCodec_flush()

static int ff_AMediaCodec_flush ( FFAMediaCodec * codec)
inlinestatic

◆ ff_AMediaCodec_delete()

static int ff_AMediaCodec_delete ( FFAMediaCodec * codec)
inlinestatic

Definition at line 277 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 282 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 287 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 297 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 302 of file mediacodec_wrapper.h.

Referenced by ff_mediacodec_dec_receive(), and mediacodec_get_output_index().

◆ 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 317 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 327 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 332 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 337 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 347 of file mediacodec_wrapper.h.

Referenced by mediacodec_receive().

◆ ff_AMediaCodec_getConfigureFlagEncode()

static int ff_AMediaCodec_getConfigureFlagEncode ( FFAMediaCodec * codec)
inlinestatic

Definition at line 352 of file mediacodec_wrapper.h.

Referenced by mediacodec_init().

◆ ff_AMediaCodec_cleanOutputBuffers()

static int ff_AMediaCodec_cleanOutputBuffers ( FFAMediaCodec * codec)
inlinestatic

Definition at line 357 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 362 of file mediacodec_wrapper.h.

Referenced by mediacodec_send().

◆ ff_AMediaCodec_setAsyncNotifyCallback()

static int ff_AMediaCodec_setAsyncNotifyCallback ( FFAMediaCodec * codec,
const FFAMediaCodecOnAsyncNotifyCallback * callback,
void * userdata )
inlinestatic

Definition at line 367 of file mediacodec_wrapper.h.

Referenced by mediacodec_init().

◆ ff_Build_SDK_INT()

int ff_Build_SDK_INT ( AVCodecContext * avctx)

Definition at line 2559 of file mediacodec_wrapper.c.

Referenced by mediacodec_decode_init().

◆ ff_AMediaFormatColorRange_to_AVColorRange()

enum AVColorRange ff_AMediaFormatColorRange_to_AVColorRange ( int color_range)

Map MediaFormat color range to AVColorRange.

return AVCOL_RANGE_UNSPECIFIED when failed.

Definition at line 2630 of file mediacodec_wrapper.c.

Referenced by mediacodec_dec_parse_video_format().

◆ ff_AMediaFormatColorRange_from_AVColorRange()

int ff_AMediaFormatColorRange_from_AVColorRange ( enum AVColorRange color_range)

Map AVColorRange to MediaFormat color range.

return COLOR_RANGE_UNSPECIFIED when failed.

Definition at line 2639 of file mediacodec_wrapper.c.

Referenced by mediacodec_init().

◆ ff_AMediaFormatColorStandard_to_AVColorSpace()

enum AVColorSpace ff_AMediaFormatColorStandard_to_AVColorSpace ( int color_standard)

Map MediaFormat color standard to AVColorSpace.

return AVCOL_SPC_UNSPECIFIED when failed.

Definition at line 2647 of file mediacodec_wrapper.c.

Referenced by mediacodec_dec_parse_video_format().

◆ ff_AMediaFormatColorStandard_from_AVColorSpace()

int ff_AMediaFormatColorStandard_from_AVColorSpace ( enum AVColorSpace color_space)

Map AVColorSpace to MediaFormat color standard.

return COLOR_STANDARD_UNSPECIFIED when failed.

Definition at line 2656 of file mediacodec_wrapper.c.

Referenced by mediacodec_init().

◆ ff_AMediaFormatColorStandard_to_AVColorPrimaries()

enum AVColorPrimaries ff_AMediaFormatColorStandard_to_AVColorPrimaries ( int color_standard)

Map MediaFormat color standard to AVColorPrimaries.

return AVCOL_PRI_UNSPECIFIED when failed.

Definition at line 2665 of file mediacodec_wrapper.c.

Referenced by mediacodec_dec_parse_video_format().

◆ ff_AMediaFormatColorTransfer_to_AVColorTransfer()

enum AVColorTransferCharacteristic ff_AMediaFormatColorTransfer_to_AVColorTransfer ( int color_transfer)

Map MediaFormat color transfer to AVColorTransferCharacteristic.

return AVCOL_TRC_UNSPECIFIED when failed.

Definition at line 2675 of file mediacodec_wrapper.c.

Referenced by mediacodec_dec_parse_video_format().

◆ ff_AMediaFormatColorTransfer_from_AVColorTransfer()

int ff_AMediaFormatColorTransfer_from_AVColorTransfer ( enum AVColorTransferCharacteristic color_transfer)

Map AVColorTransferCharacteristic to MediaFormat color transfer.

return COLOR_TRANSFER_UNSPECIFIED when failed.

Definition at line 2684 of file mediacodec_wrapper.c.

Referenced by mediacodec_init().