Media

摘要

枚举

匿名枚举 114{
  AMEDIACODEC_BUFFER_FLAG_KEY_FRAME = 1,
  AMEDIACODEC_BUFFER_FLAG_CODEC_CONFIG = 2,
  AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM = 4,
  AMEDIACODEC_BUFFER_FLAG_PARTIAL_FRAME = 8,
  AMEDIACODEC_BUFFER_FLAG_MUXER_DATA = 16,
  AMEDIACODEC_BUFFER_FLAG_DECODE_ONLY = 32
}
枚举
NdkMediaCodec 操作的每缓冲区标志定义。
匿名枚举 115{
  AMEDIACODEC_CONFIGURE_FLAG_ENCODE = 1,
  AMEDIACODEC_INFO_OUTPUT_BUFFERS_CHANGED = -3,
  AMEDIACODEC_INFO_OUTPUT_FORMAT_CHANGED = -2,
  AMEDIACODEC_INFO_TRY_AGAIN_LATER = -1
}
枚举
匿名枚举 116{
  AMEDIAEXTRACTOR_SAMPLE_FLAG_SYNC = 1,
  AMEDIAEXTRACTOR_SAMPLE_FLAG_ENCRYPTED = 2
}
枚举
ABitrateMode{
  ABITRATE_MODE_CQ = 0,
  ABITRATE_MODE_VBR = 1,
  ABITRATE_MODE_CBR = 2,
  ABITRATE_MODE_CBR_FD = 3
}
枚举
编码器比特率模式。
AIMAGE_FORMATS{
  AIMAGE_FORMAT_RGBA_8888 = 0x1,
  AIMAGE_FORMAT_RGBX_8888 = 0x2,
  AIMAGE_FORMAT_RGB_888 = 0x3,
  AIMAGE_FORMAT_RGB_565 = 0x4,
  AIMAGE_FORMAT_RGBA_FP16 = 0x16,
  AIMAGE_FORMAT_YUV_420_888 = 0x23,
  AIMAGE_FORMAT_JPEG = 0x100,
  AIMAGE_FORMAT_RAW16 = 0x20,
  AIMAGE_FORMAT_RAW_PRIVATE = 0x24,
  AIMAGE_FORMAT_RAW10 = 0x25,
  AIMAGE_FORMAT_RAW12 = 0x26,
  AIMAGE_FORMAT_DEPTH16 = 0x44363159,
  AIMAGE_FORMAT_DEPTH_POINT_CLOUD = 0x101,
  AIMAGE_FORMAT_PRIVATE = 0x22,
  AIMAGE_FORMAT_Y8 = 0x20203859,
  AIMAGE_FORMAT_HEIC = 0x48454946,
  AIMAGE_FORMAT_DEPTH_JPEG = 0x69656963
}
枚举
AImage 支持的格式:AImageReader 只保证支持此处列出的格式。
AMediaCodecKind{
  AMediaCodecKind_INVALID = 0,
  AMediaCodecKind_DECODER = 1,
  AMediaCodecKind_ENCODER = 2
}
枚举
AMediaCodecType{
  AMediaCodecType_INVALID_CODEC_INFO = 0,
  AMediaCodecType_SOFTWARE_ONLY = 1,
  AMediaCodecType_HARDWARE_ACCELERATED = 2,
  AMediaCodecType_SOFTWARE_WITH_DEVICE_ACCESS = 3
}
枚举
编解码器类型。
AMediaDrmEventType{
  EVENT_PROVISION_REQUIRED = 1,
  EVENT_KEY_REQUIRED = 2,
  EVENT_KEY_EXPIRED = 3,
  EVENT_VENDOR_DEFINED = 4,
  EVENT_SESSION_RECLAIMED = 5
}
枚举
AMediaDrmKeyRequestType{
  KEY_REQUEST_TYPE_INITIAL,
  KEY_REQUEST_TYPE_RENEWAL,
  KEY_REQUEST_TYPE_RELEASE,
  KEY_REQUEST_TYPE_NONE,
  KEY_REQUEST_TYPE_UPDATE
}
枚举
在 API 33 中引入。
AMediaDrmKeyType{
  KEY_TYPE_STREAMING = 1,
  KEY_TYPE_OFFLINE = 2,
  KEY_TYPE_RELEASE = 3
}
枚举
AMediaKeyStatusType{
  KEY_STATUS_TYPE_USABLE,
  KEY_STATUS_TYPE_EXPIRED,
  KEY_STATUS_TYPE_OUTPUTNOTALLOWED,
  KEY_STATUS_TYPE_STATUSPENDING,
  KEY_STATUS_TYPE_INTERNALERROR
}
枚举
AppendMode{
  AMEDIAMUXER_APPEND_IGNORE_LAST_VIDEO_GOP = 0,
  AMEDIAMUXER_APPEND_TO_EXISTING_DATA = 1
}
枚举
OutputFormat{
  AMEDIAMUXER_OUTPUT_FORMAT_MPEG_4 = 0,
  AMEDIAMUXER_OUTPUT_FORMAT_WEBM = 1,
  AMEDIAMUXER_OUTPUT_FORMAT_THREE_GPP = 2,
  AMEDIAMUXER_OUTPUT_FORMAT_HEIF = 3,
  AMEDIAMUXER_OUTPUT_FORMAT_OGG = 4
}
枚举
定义输出格式。
SeekMode{
  AMEDIAEXTRACTOR_SEEK_PREVIOUS_SYNC,
  AMEDIAEXTRACTOR_SEEK_NEXT_SYNC,
  AMEDIAEXTRACTOR_SEEK_CLOSEST_SYNC
}
枚举
cryptoinfo_mode_t{
  AMEDIACODECRYPTOINFO_MODE_CLEAR = 0,
  AMEDIACODECRYPTOINFO_MODE_AES_CTR = 1,
  AMEDIACODECRYPTOINFO_MODE_AES_WV = 2,
  AMEDIACODECRYPTOINFO_MODE_AES_CBC = 3
}
枚举
media_status_t{
  AMEDIA_OK = 0,
  AMEDIACODEC_ERROR_INSUFFICIENT_RESOURCE = 1100,
  AMEDIACODEC_ERROR_RECLAIMED = 1101,
  AMEDIA_ERROR_BASE = -10000,
  AMEDIA_ERROR_UNKNOWN = AMEDIA_ERROR_BASE,
  AMEDIA_ERROR_MALFORMED = AMEDIA_ERROR_BASE - 1,
  AMEDIA_ERROR_UNSUPPORTED = AMEDIA_ERROR_BASE - 2,
  AMEDIA_ERROR_INVALID_OBJECT = AMEDIA_ERROR_BASE - 3,
  AMEDIA_ERROR_INVALID_PARAMETER = AMEDIA_ERROR_BASE - 4,
  AMEDIA_ERROR_INVALID_OPERATION = AMEDIA_ERROR_BASE - 5,
  AMEDIA_ERROR_END_OF_STREAM = AMEDIA_ERROR_BASE - 6,
  AMEDIA_ERROR_IO = AMEDIA_ERROR_BASE - 7,
  AMEDIA_ERROR_WOULD_BLOCK = AMEDIA_ERROR_BASE - 8,
  AMEDIA_DRM_ERROR_BASE = -20000,
  AMEDIA_DRM_NOT_PROVISIONED = AMEDIA_DRM_ERROR_BASE - 1,
  AMEDIA_DRM_RESOURCE_BUSY = AMEDIA_DRM_ERROR_BASE - 2,
  AMEDIA_DRM_DEVICE_REVOKED = AMEDIA_DRM_ERROR_BASE - 3,
  AMEDIA_DRM_SHORT_BUFFER = AMEDIA_DRM_ERROR_BASE - 4,
  AMEDIA_DRM_SESSION_NOT_OPENED = AMEDIA_DRM_ERROR_BASE - 5,
  AMEDIA_DRM_TAMPER_DETECTED = AMEDIA_DRM_ERROR_BASE - 6,
  AMEDIA_DRM_VERIFY_FAILED = AMEDIA_DRM_ERROR_BASE - 7,
  AMEDIA_DRM_NEED_KEY = AMEDIA_DRM_ERROR_BASE - 8,
  AMEDIA_DRM_LICENSE_EXPIRED = AMEDIA_DRM_ERROR_BASE - 9,
  AMEDIA_IMGREADER_ERROR_BASE = -30000,
  AMEDIA_IMGREADER_NO_BUFFER_AVAILABLE = AMEDIA_IMGREADER_ERROR_BASE - 1,
  AMEDIA_IMGREADER_MAX_IMAGES_ACQUIRED = AMEDIA_IMGREADER_ERROR_BASE - 2,
  AMEDIA_IMGREADER_CANNOT_LOCK_IMAGE = AMEDIA_IMGREADER_ERROR_BASE - 3,
  AMEDIA_IMGREADER_CANNOT_UNLOCK_IMAGE = AMEDIA_IMGREADER_ERROR_BASE - 4,
  AMEDIA_IMGREADER_IMAGE_NOT_LOCKED = AMEDIA_IMGREADER_ERROR_BASE - 5
}
枚举
NDK 媒体函数返回的媒体错误消息类型。

类型定义

ABitrateMode typedef
编码器比特率模式。
ACodecAudioCapabilities typedef
struct ACodecAudioCapabilities
ACodecEncoderCapabilities typedef
struct ACodecEncoderCapabilities
ACodecPerformancePoint typedef
struct ACodecPerformancePoint
ACodecVideoCapabilities typedef
struct ACodecVideoCapabilities
ADoubleRange typedef
struct ADoubleRange
描述两个双精度浮点数值范围的实用结构。
AImage typedef
struct AImage
AImage 是一种不透明类型,提供对 AImageReader 生成图像的访问。
AImageCropRect typedef
描述由 AImage_getCropRect 返回的裁剪矩形的数据类型。
AImageReader typedef
struct AImageReader
AImage 是一种不透明类型,允许应用直接访问渲染到 ANativeWindow 中的图像数据。
AImageReader_BufferRemovedCallback)(void *context, AImageReader *reader, AHardwareBuffer *buffer) typedef
void(*
AImageReader 即将移除缓冲区时调用的回调函数签名。
AImageReader_BufferRemovedListener typedef
AHardwareBuffer 移除事件的监听器,使用 AImageReader_setBufferRemovedListener 向 AImageReader 注册监听器对象。
AImageReader_ImageCallback)(void *context, AImageReader *reader) typedef
void(*
AImageReader 有新图像可用时调用的回调函数签名。
AImageReader_ImageListener typedef
AIntRange typedef
struct AIntRange
描述两个整数值范围的实用结构。
AMediaCodec typedef
struct AMediaCodec
AMediaCodecBufferInfo typedef
AMediaCodecCryptoInfo typedef
struct AMediaCodecCryptoInfo
AMediaCodecInfo typedef
struct AMediaCodecInfo
AMediaCodecKind typedef
AMediaCodecOnAsyncError)(AMediaCodec *codec, void *userdata, media_status_t error, int32_t actionCode, const char *detail) typedef
void(*
当 MediaCodec 遇到错误时调用。
AMediaCodecOnAsyncFormatChanged)(AMediaCodec *codec, void *userdata, AMediaFormat *format) typedef
void(*
当输出格式发生变化时调用。
AMediaCodecOnAsyncInputAvailable)(AMediaCodec *codec, void *userdata, int32_t index) typedef
void(*
当输入缓冲区可用时调用。
AMediaCodecOnAsyncNotifyCallback typedef
AMediaCodecOnAsyncOutputAvailable)(AMediaCodec *codec, void *userdata, int32_t index, AMediaCodecBufferInfo *bufferInfo) typedef
void(*
当输出缓冲区可用时调用。
AMediaCodecOnFrameRendered)(AMediaCodec *codec, void *userdata, int64_t mediaTimeUs, int64_t systemNano) typedef
void(*
当输出帧在输出表面上渲染时调用。
AMediaCodecSupportedMediaType typedef
媒体类型定义,包含位字段指示解码器/编码器/两者是否支持该类型。
AMediaCodecType typedef
编解码器类型。
AMediaCrypto typedef
struct AMediaCrypto
AMediaDataSource typedef
struct AMediaDataSource
AMediaDataSourceClose)(void *userdata) typedef
void(*
调用以关闭数据源,解除读取阻塞,并释放相关资源。
AMediaDataSourceGetAvailableSize)(void *userdata, off64_t offset) typedef
ssize_t(*
调用以获取从该数据源的 offset 开始无需阻塞 I/O 即可读取的字节数估算值。
AMediaDataSourceGetSize)(void *userdata) typedef
ssize_t(*
调用以获取数据源的大小。
AMediaDataSourceReadAt)(void *userdata, off64_t offset, void *buffer, size_t size) typedef
ssize_t(*
调用以请求从给定 offset 的数据。
AMediaDrm typedef
struct AMediaDrm
AMediaDrmEventListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, AMediaDrmEventType eventType, int extra, const uint8_t *data, size_t dataSize) typedef
void(*
AMediaDrmEventType typedef
AMediaDrmExpirationUpdateListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, int64_t expiryTimeInMS) typedef
void(*
AMediaDrmKeyId typedef
AMediaDrmKeyRequestType typedef
在 API 33 中引入。
AMediaDrmKeySetId typedef
AMediaDrmKeyStatus typedef
AMediaDrmKeyStatusType typedef
AMediaDrmKeyType typedef
AMediaDrmKeyValue typedef
包含 {key, value} 对的数据类型。
AMediaDrmKeysChangeListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, const AMediaDrmKeyStatus *keyStatus, size_t numKeys, bool hasNewUsableKey) typedef
void(*
AMediaDrmScope typedef
AMediaDrmSecureStop typedef
AMediaDrmSessionId typedef
AMediaExtractor typedef
struct AMediaExtractor
AMediaFormat typedef
struct AMediaFormat
AMediaMuxer typedef
struct AMediaMuxer
AMediaUUID[16] typedef
uint8_t
ANativeWindow typedef
struct ANativeWindow
PsshEntry typedef
struct PsshEntry
加密方案 UUID 到该方案特定数据的映射
PsshInfo typedef
struct PsshInfo
加密方案列表及其数据

变量

AMEDIACODEC_KEY_HDR10_PLUS_INFO
const char *
AMEDIACODEC_KEY_LOW_LATENCY
const char *
AMEDIACODEC_KEY_OFFSET_TIME
const char *
AMEDIACODEC_KEY_REQUEST_SYNC_FRAME
const char *
AMEDIACODEC_KEY_SUSPEND
const char *
AMEDIACODEC_KEY_SUSPEND_TIME
const char *
AMEDIACODEC_KEY_VIDEO_BITRATE
const char *
AMEDIAFORMAT_KEY_AAC_DRC_ATTENUATION_FACTOR
const char *
AMEDIAFORMAT_KEY_AAC_DRC_BOOST_FACTOR
const char *
AMEDIAFORMAT_KEY_AAC_DRC_HEAVY_COMPRESSION
const char *
AMEDIAFORMAT_KEY_AAC_DRC_TARGET_REFERENCE_LEVEL
const char *
AMEDIAFORMAT_KEY_AAC_ENCODED_TARGET_LEVEL
const char *
AMEDIAFORMAT_KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT
const char *
AMEDIAFORMAT_KEY_AAC_PROFILE
const char *
AMEDIAFORMAT_KEY_AAC_SBR_MODE
const char *
AMEDIAFORMAT_KEY_ALBUM
const char *
AMEDIAFORMAT_KEY_ALBUMART
const char *
AMEDIAFORMAT_KEY_ALBUMARTIST
const char *
AMEDIAFORMAT_KEY_ALLOW_FRAME_DROP
const char *
应用选择退出允许 Surface 丢弃未显示/未消耗的帧以追赶进度的键。
AMEDIAFORMAT_KEY_ARTIST
const char *
AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_INFO
const char *
AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_PRESENTATION_ID
const char *
AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_PROGRAM_ID
const char *
AMEDIAFORMAT_KEY_AUDIO_SESSION_ID
const char *
AMEDIAFORMAT_KEY_AUTHOR
const char *
AMEDIAFORMAT_KEY_BITRATE_MODE
const char *
AMEDIAFORMAT_KEY_BITS_PER_SAMPLE
const char *
AMEDIAFORMAT_KEY_BIT_RATE
const char *
AMEDIAFORMAT_KEY_BUFFER_BATCH_MAX_OUTPUT_SIZE
const char *
AMEDIAFORMAT_KEY_BUFFER_BATCH_THRESHOLD_OUTPUT_SIZE
const char *
AMEDIAFORMAT_KEY_CAPTURE_RATE
const char *
AMEDIAFORMAT_KEY_CDTRACKNUMBER
const char *
AMEDIAFORMAT_KEY_CHANNEL_COUNT
const char *
AMEDIAFORMAT_KEY_CHANNEL_MASK
const char *
AMEDIAFORMAT_KEY_COLOR_FORMAT
const char *
AMEDIAFORMAT_KEY_COLOR_RANGE
const char *
AMEDIAFORMAT_KEY_COLOR_STANDARD
const char *
AMEDIAFORMAT_KEY_COLOR_TRANSFER
const char *
AMEDIAFORMAT_KEY_COMPILATION
const char *
AMEDIAFORMAT_KEY_COMPLEXITY
const char *
AMEDIAFORMAT_KEY_COMPOSER
const char *
AMEDIAFORMAT_KEY_CREATE_INPUT_SURFACE_SUSPENDED
const char *
AMEDIAFORMAT_KEY_CRYPTO_DEFAULT_IV_SIZE
const char *
AMEDIAFORMAT_KEY_CRYPTO_ENCRYPTED_BYTE_BLOCK
const char *
AMEDIAFORMAT_KEY_CRYPTO_ENCRYPTED_SIZES
const char *
AMEDIAFORMAT_KEY_CRYPTO_IV
const char *
AMEDIAFORMAT_KEY_CRYPTO_KEY
const char *
AMEDIAFORMAT_KEY_CRYPTO_MODE
const char *
AMEDIAFORMAT_KEY_CRYPTO_PLAIN_SIZES
const char *
AMEDIAFORMAT_KEY_CRYPTO_SKIP_BYTE_BLOCK
const char *
AMEDIAFORMAT_KEY_CSD
const char *
AMEDIAFORMAT_KEY_CSD_0
const char *
AMEDIAFORMAT_KEY_CSD_1
const char *
AMEDIAFORMAT_KEY_CSD_2
const char *
AMEDIAFORMAT_KEY_CSD_AVC
const char *
AMEDIAFORMAT_KEY_CSD_HEVC
const char *
AMEDIAFORMAT_KEY_D263
const char *
AMEDIAFORMAT_KEY_DATE
const char *
AMEDIAFORMAT_KEY_DISCNUMBER
const char *
AMEDIAFORMAT_KEY_DISPLAY_CROP
const char *
AMEDIAFORMAT_KEY_DISPLAY_HEIGHT
const char *
AMEDIAFORMAT_KEY_DISPLAY_WIDTH
const char *
AMEDIAFORMAT_KEY_DURATION
const char *
AMEDIAFORMAT_KEY_ENCODER_DELAY
const char *
AMEDIAFORMAT_KEY_ENCODER_PADDING
const char *
AMEDIAFORMAT_KEY_ESDS
const char *
AMEDIAFORMAT_KEY_EXIF_OFFSET
const char *
AMEDIAFORMAT_KEY_EXIF_SIZE
const char *
AMEDIAFORMAT_KEY_FLAC_COMPRESSION_LEVEL
const char *
AMEDIAFORMAT_KEY_FRAME_COUNT
const char *
AMEDIAFORMAT_KEY_FRAME_RATE
const char *
AMEDIAFORMAT_KEY_GENRE
const char *
AMEDIAFORMAT_KEY_GRID_COLUMNS
const char *
AMEDIAFORMAT_KEY_GRID_ROWS
const char *
AMEDIAFORMAT_KEY_HAPTIC_CHANNEL_COUNT
const char *
AMEDIAFORMAT_KEY_HDR10_PLUS_INFO
const char *
AMEDIAFORMAT_KEY_HDR_STATIC_INFO
const char *
AMEDIAFORMAT_KEY_HEIGHT
const char *
AMEDIAFORMAT_KEY_ICC_PROFILE
const char *
AMEDIAFORMAT_KEY_IMPORTANCE
const char *
AMEDIAFORMAT_KEY_INTRA_REFRESH_PERIOD
const char *
AMEDIAFORMAT_KEY_IS_ADTS
const char *
AMEDIAFORMAT_KEY_IS_AUTOSELECT
const char *
AMEDIAFORMAT_KEY_IS_DEFAULT
const char *
AMEDIAFORMAT_KEY_IS_FORCED_SUBTITLE
const char *
AMEDIAFORMAT_KEY_IS_SYNC_FRAME
const char *
AMEDIAFORMAT_KEY_I_FRAME_INTERVAL
const char *
AMEDIAFORMAT_KEY_LANGUAGE
const char *
AMEDIAFORMAT_KEY_LAST_SAMPLE_INDEX_IN_CHUNK
const char *
AMEDIAFORMAT_KEY_LATENCY
const char *
AMEDIAFORMAT_KEY_LEVEL
const char *
AMEDIAFORMAT_KEY_LOCATION
const char *
AMEDIAFORMAT_KEY_LOOP
const char *
AMEDIAFORMAT_KEY_LOW_LATENCY
const char *
描述低延迟解码模式的可选键。
AMEDIAFORMAT_KEY_LYRICIST
const char *
AMEDIAFORMAT_KEY_MANUFACTURER
const char *
AMEDIAFORMAT_KEY_MAX_BIT_RATE
const char *
AMEDIAFORMAT_KEY_MAX_B_FRAMES
const char *
描述 I 帧或 P 帧之间 B 帧最大数量的键,由视频编码器使用。
AMEDIAFORMAT_KEY_MAX_FPS_TO_ENCODER
const char *
AMEDIAFORMAT_KEY_MAX_HEIGHT
const char *
AMEDIAFORMAT_KEY_MAX_INPUT_SIZE
const char *
AMEDIAFORMAT_KEY_MAX_PTS_GAP_TO_ENCODER
const char *
AMEDIAFORMAT_KEY_MAX_WIDTH
const char *
AMEDIAFORMAT_KEY_MIME
const char *
AMEDIAFORMAT_KEY_MPEG2_STREAM_HEADER
const char *
AMEDIAFORMAT_KEY_MPEGH_COMPATIBLE_SETS
const char *
MPEG-H 音频配置文件和级别兼容性。
AMEDIAFORMAT_KEY_MPEGH_PROFILE_LEVEL_INDICATION
const char *
MPEG-H 音频配置文件级别指示。
AMEDIAFORMAT_KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT
const char *
MPEG-H 音频参考声道布局。
AMEDIAFORMAT_KEY_MPEG_USER_DATA
const char *
AMEDIAFORMAT_KEY_OPERATING_RATE
const char *
AMEDIAFORMAT_KEY_PCM_BIG_ENDIAN
const char *
AMEDIAFORMAT_KEY_PCM_ENCODING
const char *
AMEDIAFORMAT_KEY_PICTURE_TYPE
const char *
AMEDIAFORMAT_KEY_PRIORITY
const char *
AMEDIAFORMAT_KEY_PROFILE
const char *
AMEDIAFORMAT_KEY_PSSH
const char *
AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP
const char *
AMEDIAFORMAT_KEY_REPEAT_PREVIOUS_FRAME_AFTER
const char *
AMEDIAFORMAT_KEY_ROTATION
const char *
AMEDIAFORMAT_KEY_SAMPLE_FILE_OFFSET
const char *
AMEDIAFORMAT_KEY_SAMPLE_RATE
const char *
AMEDIAFORMAT_KEY_SAMPLE_TIME_BEFORE_APPEND
const char *
AMEDIAFORMAT_KEY_SAR_HEIGHT
const char *
AMEDIAFORMAT_KEY_SAR_WIDTH
const char *
AMEDIAFORMAT_KEY_SEI
const char *
AMEDIAFORMAT_KEY_SLICE_HEIGHT
const char *
AMEDIAFORMAT_KEY_SLOW_MOTION_MARKERS
const char *
AMEDIAFORMAT_KEY_STRIDE
const char *
AMEDIAFORMAT_KEY_TARGET_TIME
const char *
AMEDIAFORMAT_KEY_TEMPORAL_LAYERING
const char *
AMEDIAFORMAT_KEY_TEMPORAL_LAYER_COUNT
const char *
AMEDIAFORMAT_KEY_TEMPORAL_LAYER_ID
const char *
AMEDIAFORMAT_KEY_TEXT_FORMAT_DATA
const char *
AMEDIAFORMAT_KEY_THUMBNAIL_CSD_AV1C
const char *
AMEDIAFORMAT_KEY_THUMBNAIL_CSD_HEVC
const char *
AMEDIAFORMAT_KEY_THUMBNAIL_HEIGHT
const char *
AMEDIAFORMAT_KEY_THUMBNAIL_TIME
const char *
AMEDIAFORMAT_KEY_THUMBNAIL_WIDTH
const char *
AMEDIAFORMAT_KEY_TILE_HEIGHT
const char *
AMEDIAFORMAT_KEY_TILE_WIDTH
const char *
AMEDIAFORMAT_KEY_TIME_US
const char *
AMEDIAFORMAT_KEY_TITLE
const char *
AMEDIAFORMAT_KEY_TRACK_ID
const char *
AMEDIAFORMAT_KEY_TRACK_INDEX
const char *
AMEDIAFORMAT_KEY_VALID_SAMPLES
const char *
AMEDIAFORMAT_KEY_VIDEO_ENCODING_STATISTICS_LEVEL
const char *
AMEDIAFORMAT_KEY_VIDEO_QP_AVERAGE
const char *
AMEDIAFORMAT_KEY_WIDTH
const char *
AMEDIAFORMAT_KEY_XMP_OFFSET
const char *
AMEDIAFORMAT_KEY_XMP_SIZE
const char *
AMEDIAFORMAT_KEY_YEAR
const char *
AMEDIAFORMAT_VIDEO_QP_B_MAX
const char *
AMEDIAFORMAT_VIDEO_QP_B_MIN
const char *
AMEDIAFORMAT_VIDEO_QP_I_MAX
const char *
AMEDIAFORMAT_VIDEO_QP_I_MIN
const char *
AMEDIAFORMAT_VIDEO_QP_MAX
const char *
AMEDIAFORMAT_VIDEO_QP_MIN
const char *
AMEDIAFORMAT_VIDEO_QP_P_MAX
const char *
AMEDIAFORMAT_VIDEO_QP_P_MIN
const char *
AMediaCodecInfo_FEATURE_AdaptivePlayback
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_DetachedSurface
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_DynamicColorAspects
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_DynamicTimestamp
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_EncodingStatistics
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_FrameParsing
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_HdrEditing
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_HlgEditing
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_IntraRefresh
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_LowLatency
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_MultipleFrames
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_PartialFrame
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_QpBounds
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_Roi
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_SecurePlayback
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。
AMediaCodecInfo_FEATURE_TunneledPlayback
const char *_Nonnull
用于 AMediaCodecInfo_isFeature* 方法的特性常量。

函数

ACodecAudioCapabilities_getBitrateRange(const ACodecAudioCapabilities *_Nonnull audioCaps, AIntRange *_Nonnull outRange)
获取支持的码率范围,单位为比特/秒。
ACodecAudioCapabilities_getInputChannelCountRanges(const ACodecAudioCapabilities *_Nonnull audioCaps, const AIntRange *_Nullable *_Nonnull outArrayPtr, size_t *_Nonnull outCount)
获取表示支持的输入声道数范围的数组。
ACodecAudioCapabilities_getMaxInputChannelCount(const ACodecAudioCapabilities *_Nonnull audioCaps)
int32_t
返回支持的最大输入声道数。
ACodecAudioCapabilities_getMinInputChannelCount(const ACodecAudioCapabilities *_Nonnull audioCaps)
int32_t
返回支持的最小输入声道数。
ACodecAudioCapabilities_getSupportedSampleRateRanges(const ACodecAudioCapabilities *_Nonnull audioCaps, const AIntRange *_Nullable *_Nonnull outArrayPtr, size_t *_Nonnull outCount)
获取支持的采样率范围数组。
ACodecAudioCapabilities_getSupportedSampleRates(const ACodecAudioCapabilities *_Nonnull audioCaps, const int *_Nullable *_Nonnull outArrayPtr, size_t *_Nonnull outCount)
获取支持的采样率数组。
ACodecAudioCapabilities_isSampleRateSupported(const ACodecAudioCapabilities *_Nonnull audioCaps, int32_t sampleRate)
int32_t
查询编解码器是否支持该采样率。
ACodecEncoderCapabilities_getComplexityRange(const ACodecEncoderCapabilities *_Nonnull encoderCaps, AIntRange *_Nonnull outRange)
获取支持的编码器复杂度值范围。
ACodecEncoderCapabilities_getQualityRange(const ACodecEncoderCapabilities *_Nonnull encoderCaps, AIntRange *_Nonnull outRange)
获取支持的质量值范围。
ACodecEncoderCapabilities_isBitrateModeSupported(const ACodecEncoderCapabilities *_Nonnull encoderCaps, ABitrateMode mode)
int32_t
查询是否支持某种码率模式。
ACodecPerformancePoint_covers(const ACodecPerformancePoint *_Nonnull one, const ACodecPerformancePoint *_Nonnull another)
int32_t
检查一个性能点是否覆盖另一个性能点。
ACodecPerformancePoint_coversFormat(const ACodecPerformancePoint *_Nonnull performancePoint, const AMediaFormat *_Nonnull format)
int32_t
检查性能点是否覆盖某种媒体格式。
ACodecPerformancePoint_create(int32_t width, int32_t height, int32_t frameRate)
ACodecPerformancePoint *_Nonnull
为给定的帧尺寸和帧率创建一个性能点。
ACodecPerformancePoint_destroy(ACodecPerformancePoint *_Nullable performancePoint)
void
删除已创建的性能点。
ACodecPerformancePoint_equals(const ACodecPerformancePoint *_Nonnull one, const ACodecPerformancePoint *_Nonnull another)
int32_t
检查两个性能点是否相等。
ACodecVideoCapabilities_areSizeAndRateSupported(const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, int32_t height, double frameRate)
int32_t
获取是否支持给定的视频尺寸和帧率组合。
ACodecVideoCapabilities_getAchievableFrameRatesFor(const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, int32_t height, ADoubleRange *_Nonnull outRange)
获取给定视频尺寸的可达视频帧率范围。
ACodecVideoCapabilities_getBitrateRange(const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange)
获取支持的码率范围,单位为比特/秒。
ACodecVideoCapabilities_getHeightAlignment(const ACodecVideoCapabilities *_Nonnull videoCaps)
int32_t
返回视频高度(像素)的对齐要求。
ACodecVideoCapabilities_getNextSupportedPerformancePoint(const ACodecVideoCapabilities *_Nonnull videoCaps, const ACodecPerformancePoint *_Nullable *_Nonnull outPerformancePoint)
获取支持的性能点。
ACodecVideoCapabilities_getSupportedFrameRates(const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange)
获取支持的帧率范围。
ACodecVideoCapabilities_getSupportedFrameRatesFor(const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, int32_t height, ADoubleRange *_Nonnull outRange)
获取给定视频尺寸的支持视频帧率范围。
ACodecVideoCapabilities_getSupportedHeights(const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange)
获取支持的视频高度范围。
ACodecVideoCapabilities_getSupportedHeightsFor(const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, AIntRange *_Nonnull outRange)
获取给定视频宽度的支持视频高度范围。
ACodecVideoCapabilities_getSupportedWidths(const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange)
获取支持的视频宽度范围。
ACodecVideoCapabilities_getSupportedWidthsFor(const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t height, AIntRange *_Nonnull outRange)
获取给定视频高度的支持视频宽度范围。
ACodecVideoCapabilities_getWidthAlignment(const ACodecVideoCapabilities *_Nonnull videoCaps)
int32_t
获取视频宽度(像素)的对齐要求。
ACodecVideoCapabilities_isSizeSupported(const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, int32_t height)
int32_t
获取是否支持给定的视频尺寸。
AImageReader_acquireLatestImage(AImageReader *reader, AImage **image)
从图像读取器队列中获取最新的 AImage,丢弃旧图像。
AImageReader_acquireLatestImageAsync(AImageReader *reader, AImage **image, int *acquireFenceFd)
从图像读取器队列中异步获取最新的 AImage,丢弃旧图像。
AImageReader_acquireNextImage(AImageReader *reader, AImage **image)
从图像读取器队列中获取下一个 AImage
AImageReader_acquireNextImageAsync(AImageReader *reader, AImage **image, int *acquireFenceFd)
从图像读取器队列中异步获取下一个 AImage
AImageReader_delete(AImageReader *reader)
void
删除一个 AImageReader,并将该读取器生成的所有图像返回给系统。
AImageReader_getFormat(const AImageReader *reader, int32_t *format)
查询此读取器生成的 AImage 的格式。
AImageReader_getHeight(const AImageReader *reader, int32_t *height)
查询此读取器生成的 AImage 的默认高度(像素)。
AImageReader_getMaxImages(const AImageReader *reader, int32_t *maxImages)
查询此读取器同时获取的 AImage 的最大数量。
AImageReader_getWidth(const AImageReader *reader, int32_t *width)
查询此读取器生成的 AImage 的默认宽度(像素)。
AImageReader_getWindow(AImageReader *reader, ANativeWindow **window)
获取一个 ANativeWindow,可用于为此图像读取器生成 AImage
AImageReader_getWindowNativeHandle(AImageReader *reader, native_handle_t **handle)
AImageReader_new(int32_t width, int32_t height, int32_t format, int32_t maxImages, AImageReader **reader)
为所需尺寸和格式的图像创建一个新的读取器。
AImageReader_newWithDataSpace(int32_t width, int32_t height, uint64_t usage, int32_t maxImages, uint32_t hardwareBufferFormat, int32_t dataSpace, AImageReader **reader)
AImageReader 构造函数,类似于 AImageReader_newWithUsage,接受两个额外参数来构建图像格式。
AImageReader_newWithUsage(int32_t width, int32_t height, int32_t format, uint64_t usage, int32_t maxImages, AImageReader **reader)
AImageReader 构造函数,类似于 AImageReader_new,接受一个额外的参数用于消费者使用情况。
AImageReader_setBufferRemovedListener(AImageReader *reader, AImageReader_BufferRemovedListener *listener)
设置此图像读取器的 onBufferRemoved 监听器。
AImageReader_setImageListener(AImageReader *reader, AImageReader_ImageListener *listener)
设置此图像读取器的 onImageAvailable 监听器。
AImage_delete(AImage *image)
void
将图像返回给系统并从内存中删除 AImage 对象。
AImage_deleteAsync(AImage *image, int releaseFenceFd)
void
将图像异步返回给系统并从内存中删除 AImage 对象。
AImage_getCropRect(const AImage *image, AImageCropRect *rect)
查询输入 AImage 的裁剪矩形。
AImage_getDataSpace(const AImage *image, int32_t *dataSpace)
查询输入 AImage 的数据空间。
AImage_getFormat(const AImage *image, int32_t *format)
查询输入 AImage 的格式。
AImage_getHardwareBuffer(const AImage *image, AHardwareBuffer **buffer)
获取输入图像的硬件缓冲区句柄,用于 GPU 和/或硬件访问。
AImage_getHeight(const AImage *image, int32_t *height)
查询输入 AImage 的高度。
AImage_getNumberOfPlanes(const AImage *image, int32_t *numPlanes)
查询输入 AImage 的平面数量。
AImage_getPlaneData(const AImage *image, int planeIdx, uint8_t **data, int *dataLength)
获取输入图像的数据指针,用于应用直接访问。
AImage_getPlanePixelStride(const AImage *image, int planeIdx, int32_t *pixelStride)
查询输入 AImage 的像素步长。
AImage_getPlaneRowStride(const AImage *image, int planeIdx, int32_t *rowStride)
查询输入 AImage 的行步长。
AImage_getTimestamp(const AImage *image, int64_t *timestampNs)
查询输入 AImage 的时间戳。
AImage_getWidth(const AImage *image, int32_t *width)
查询输入 AImage 的宽度。
AMediaCodecActionCode_isRecoverable(int32_t actionCode)
bool
如果编解码器无法继续,但可以通过停止、配置并再次启动来恢复,则返回 true。
AMediaCodecActionCode_isTransient(int32_t actionCode)
bool
如果编解码器错误是瞬时问题,可能是由于资源限制,并且该方法(或编码/解码)可以在以后重试,则返回 true。
AMediaCodecCryptoInfo_delete(AMediaCodecCryptoInfo *)
删除之前使用 AMediaCodecCryptoInfo_new 创建或从 AMediaExtractor 获取的 AMediaCodecCryptoInfo。
AMediaCodecCryptoInfo_getClearBytes(AMediaCodecCryptoInfo *, size_t *dst)
每个子样本中前导未加密字节的数量。
AMediaCodecCryptoInfo_getEncryptedBytes(AMediaCodecCryptoInfo *, size_t *dst)
每个子样本中尾部加密字节的数量。
AMediaCodecCryptoInfo_getIV(AMediaCodecCryptoInfo *, uint8_t *dst)
一个 16 字节的初始化向量。
AMediaCodecCryptoInfo_getKey(AMediaCodecCryptoInfo *, uint8_t *dst)
一个 16 字节的不透明密钥。
AMediaCodecCryptoInfo_getMode(AMediaCodecCryptoInfo *)
cryptoinfo_mode_t
已应用的加密类型,为 AMEDIACODECRYPTOINFO_MODE_CLEAR 或 AMEDIACODECRYPTOINFO_MODE_AES_CTR 之一。
AMediaCodecCryptoInfo_getNumSubSamples(AMediaCodecCryptoInfo *)
size_t
构成缓冲区内容的子样本数量。
AMediaCodecCryptoInfo_new(int numsubsamples, uint8_t key[16], uint8_t iv[16], cryptoinfo_mode_t mode, size_t *clearbytes, size_t *encryptedbytes)
AMediaCodecCryptoInfo *
从头开始创建一个 AMediaCodecCryptoInfo。
AMediaCodecCryptoInfo_setPattern(AMediaCodecCryptoInfo *info, cryptoinfo_pattern_t *pattern)
void
在 AMediaCryptoInfo 对象上设置加密模式。
AMediaCodecInfo_getAudioCapabilities(const AMediaCodecInfo *_Nonnull info, const ACodecAudioCapabilities *_Nullable *_Nonnull outAudioCaps)
从给定的 AMediaCodecInfo 获取 ACodecAudioCapabilities。
AMediaCodecInfo_getCanonicalName(const AMediaCodecInfo *_Nonnull info)
const char *_Nullable
获取编解码器的规范名称。
AMediaCodecInfo_getEncoderCapabilities(const AMediaCodecInfo *_Nonnull info, const ACodecEncoderCapabilities *_Nullable *_Nonnull outEncoderCaps)
从给定的 AMediaCodecInfo 获取 ACodecEncoderCapabilities。
AMediaCodecInfo_getKind(const AMediaCodecInfo *_Nonnull info)
查询编解码器的类型。
AMediaCodecInfo_getMaxSupportedInstances(const AMediaCodecInfo *_Nonnull info)
int32_t
获取支持的最大并发编解码器实例数量。
AMediaCodecInfo_getMediaCodecInfoType(const AMediaCodecInfo *_Nonnull info)
查询编解码器是 SOFTWARE_ONLY、HARDWARE_ACCELERATED 还是 SOFTWARE_WITH_DEVICE_ACCESS 类型。
AMediaCodecInfo_getMediaType(const AMediaCodecInfo *_Nonnull info)
const char *_Nullable
获取编解码器支持的媒体类型。
AMediaCodecInfo_getVideoCapabilities(const AMediaCodecInfo *_Nonnull info, const ACodecVideoCapabilities *_Nullable *_Nonnull outVideoCaps)
从给定的 AMediaCodecInfo 获取 ACodecVideoCapabilities。
AMediaCodecInfo_isFeatureRequired(const AMediaCodecInfo *_Nonnull info, const char *_Nonnull featureName)
int32_t
查询编解码器特性要求。
AMediaCodecInfo_isFeatureSupported(const AMediaCodecInfo *_Nonnull info, const char *_Nonnull featureName)
int32_t
查询编解码器特性能力。
AMediaCodecInfo_isFormatSupported(const AMediaCodecInfo *_Nonnull info, const AMediaFormat *_Nonnull format)
int32_t
查询编解码器是否支持给定格式。
AMediaCodecInfo_isVendor(const AMediaCodecInfo *_Nonnull info)
int32_t
查询编解码器是由 Android 平台还是设备制造商提供。
AMediaCodecStore_findNextDecoderForFormat(const AMediaFormat *_Nonnull format, const AMediaCodecInfo *_Nullable *_Nonnull outCodecInfo)
获取支持该格式的下一个解码器信息。
AMediaCodecStore_findNextEncoderForFormat(const AMediaFormat *_Nonnull format, const AMediaCodecInfo *_Nullable *_Nonnull outCodecInfo)
获取支持该格式的下一个编码器信息。
AMediaCodecStore_getCodecInfo(const char *_Nonnull name, const AMediaCodecInfo *_Nullable *_Nonnull outCodecInfo)
获取与给定编解码器名称对应的 codecInfo。
AMediaCodecStore_getSupportedMediaTypes(const AMediaCodecSupportedMediaType *_Nullable *_Nonnull outMediaTypes, size_t *_Nonnull outCount)
获取设备支持的所有媒体类型的数组。
AMediaCodec_configure(AMediaCodec *, const AMediaFormat *format, ANativeWindow *surface, AMediaCrypto *crypto, uint32_t flags)
配置编解码器。
AMediaCodec_createCodecByName(const char *name)
AMediaCodec *
按名称创建编解码器。
AMediaCodec_createDecoderByType(const char *mime_type)
AMediaCodec *
按 MIME 类型创建编解码器。
AMediaCodec_createEncoderByType(const char *mime_type)
AMediaCodec *
按 MIME 类型创建编码器。
AMediaCodec_createInputSurface(AMediaCodec *mData, ANativeWindow **surface)
创建一个 Surface,可用作编码器的输入,替代输入缓冲区。
AMediaCodec_createPersistentInputSurface(ANativeWindow **surface)
创建一个可持久化的 Surface,可用作编码器的输入。
AMediaCodec_delete(AMediaCodec *)
删除编解码器并释放其资源。
AMediaCodec_dequeueInputBuffer(AMediaCodec *, int64_t timeoutUs)
ssize_t
获取下一个可用输入缓冲区的索引。
AMediaCodec_dequeueOutputBuffer(AMediaCodec *, AMediaCodecBufferInfo *info, int64_t timeoutUs)
ssize_t
获取下一个可用已处理数据缓冲区的索引。
AMediaCodec_flush(AMediaCodec *)
AMediaCodec_getBufferFormat(AMediaCodec *, size_t index)
AMediaFormat *
获取缓冲区的格式。
AMediaCodec_getInputBuffer(AMediaCodec *, size_t idx, size_t *out_size)
uint8_t *
获取输入缓冲区。
AMediaCodec_getInputFormat(AMediaCodec *)
AMediaFormat *
AMediaCodec_configure() 成功返回后调用此函数,以获取编解码器接受的输入格式。
AMediaCodec_getName(AMediaCodec *, char **out_name)
获取组件名称。
AMediaCodec_getOutputBuffer(AMediaCodec *, size_t idx, size_t *out_size)
uint8_t *
获取输出缓冲区。
AMediaCodec_getOutputFormat(AMediaCodec *)
AMediaFormat *
返回编解码器的输出格式。
AMediaCodec_queueInputBuffer(AMediaCodec *, size_t idx, _off_t_compat offset, size_t size, uint64_t time, uint32_t flags)
将指定的缓冲区发送给编解码器进行处理。
AMediaCodec_queueSecureInputBuffer(AMediaCodec *, size_t idx, _off_t_compat offset, AMediaCodecCryptoInfo *, uint64_t time, uint32_t flags)
将指定的缓冲区发送给编解码器进行处理。
AMediaCodec_releaseCrypto(AMediaCodec *)
如果适用,释放加密对象。
AMediaCodec_releaseName(AMediaCodec *, char *name)
void
释放由 AMediaCodec_getName 返回的 name 指针指向的内存。
AMediaCodec_releaseOutputBuffer(AMediaCodec *, size_t idx, bool render)
如果您已完成使用缓冲区,请使用此调用将缓冲区返回给编解码器。
AMediaCodec_releaseOutputBufferAtTime(AMediaCodec *mData, size_t idx, int64_t timestampNs)
如果您已完成使用缓冲区,请使用此调用更新其 surface 时间戳并将其返回给编解码器以在输出 surface 上渲染。
AMediaCodec_setAsyncNotifyCallback(AMediaCodec *, AMediaCodecOnAsyncNotifyCallback callback, void *userdata)
为可操作的 AMediaCodec 事件设置异步回调。
AMediaCodec_setInputSurface(AMediaCodec *mData, ANativeWindow *surface)
设置一个可持久化的 surface,可用作编码器的输入,替代输入缓冲区。
AMediaCodec_setOnFrameRenderedCallback(AMediaCodec *, AMediaCodecOnFrameRendered callback, void *userdata)
注册一个回调,当输出帧在输出 surface 上渲染时调用。
AMediaCodec_setOutputSurface(AMediaCodec *, ANativeWindow *surface)
动态设置编解码器的输出 surface。
AMediaCodec_setParameters(AMediaCodec *mData, const AMediaFormat *params)
向编解码器实例发送附加参数信号。
AMediaCodec_signalEndOfInputStream(AMediaCodec *mData)
发送输入流结束信号。
AMediaCodec_start(AMediaCodec *)
启动编解码器。
AMediaCodec_stop(AMediaCodec *)
停止编解码器。
AMediaCrypto_delete(AMediaCrypto *crypto)
void
自 API level 21 开始可用。
AMediaCrypto_isCryptoSchemeSupported(const AMediaUUID uuid)
bool
自 API level 21 开始可用。
AMediaCrypto_new(const AMediaUUID uuid, const void *initData, size_t initDataSize)
AMediaCrypto *
自 API level 21 开始可用。
AMediaCrypto_requiresSecureDecoderComponent(const char *mime)
bool
自 API level 21 开始可用。
AMediaDataSource_close(AMediaDataSource *)
void
关闭数据源,解除读取阻塞,并释放相关资源。
AMediaDataSource_delete(AMediaDataSource *)
void
删除之前创建的媒体数据源。
AMediaDataSource_new()
AMediaDataSource *
创建新的媒体数据源。
AMediaDataSource_newUri(const char *uri, int numheaders, const char *const *key_values)
AMediaDataSource *
创建新的媒体数据源。
AMediaDataSource_setClose(AMediaDataSource *, AMediaDataSourceClose)
void
设置一个自定义回调,以便在数据源关闭时接收来自 NDK 媒体框架的信号。
AMediaDataSource_setGetAvailableSize(AMediaDataSource *, AMediaDataSourceGetAvailableSize)
void
设置一个自定义回调,用于提供从该数据源的某个偏移量开始无需阻塞 I/O 即可读取的字节数估算值。
AMediaDataSource_setGetSize(AMediaDataSource *, AMediaDataSourceGetSize)
void
设置一个自定义回调,用于向 NDK 媒体框架提供数据源的大小。
AMediaDataSource_setReadAt(AMediaDataSource *, AMediaDataSourceReadAt)
void
设置一个自定义回调,用于向 NDK 媒体框架提供随机访问媒体数据。
AMediaDataSource_setUserdata(AMediaDataSource *, void *userdata)
void
设置用户提供的不透明句柄。
AMediaDrm_closeSession(AMediaDrm *, const AMediaDrmSessionId *sessionId)
关闭 MediaDrm 对象上之前通过 AMediaDrm_openSession 打开的会话。
AMediaDrm_createByUUID(const uint8_t *uuid)
AMediaDrm *
从 UUID 创建 MediaDrm 实例。
AMediaDrm_decrypt(AMediaDrm *, const AMediaDrmSessionId *sessionId, const char *cipherAlgorithm, uint8_t *keyId, uint8_t *iv, const uint8_t *input, uint8_t *output, size_t dataSize)
AMediaDrm_encrypt(AMediaDrm *, const AMediaDrmSessionId *sessionId, const char *cipherAlgorithm, uint8_t *keyId, uint8_t *iv, const uint8_t *input, uint8_t *output, size_t dataSize)
除了支持解密 DASH Common Encrypted Media 外,MediaDrm API 还提供了基于工厂安装的信任根,将会话密钥从运营商的会话密钥服务器安全地传输到客户端设备的能力,然后使用会话密钥对任意用户数据执行加密、解密、签名和验证操作。
AMediaDrm_getKeyRequest(AMediaDrm *, const AMediaDrmScope *scope, const uint8_t *init, size_t initSize, const char *mimeType, AMediaDrmKeyType keyType, const AMediaDrmKeyValue *optionalParameters, size_t numOptionalParameters, const uint8_t **keyRequest, size_t *keyRequestSize)
应用和许可证服务器之间发生密钥请求/响应交换,以获取或释放用于解密加密内容的密钥。
AMediaDrm_getKeyRequestWithDefaultUrlAndType(AMediaDrm *, const AMediaDrmScope *scope, const uint8_t *init, size_t initSize, const char *mimeType, AMediaDrmKeyType keyType, const AMediaDrmKeyValue *optionalParameters, size_t numOptionalParameters, const uint8_t **keyRequest, size_t *keyRequestSize, const char **defaultUrl, AMediaDrmKeyRequestType *keyRequestType)
应用和许可证服务器之间发生密钥请求/响应交换,以获取或释放用于解密加密内容的密钥。
AMediaDrm_getPropertyByteArray(AMediaDrm *, const char *propertyName, AMediaDrmByteArray *propertyValue)
给定属性名称字符串,读取 DRM 引擎插件字节数组属性值。
AMediaDrm_getPropertyString(AMediaDrm *, const char *propertyName, const char **propertyValue)
给定属性名称字符串,读取 DRM 引擎插件 String 属性值。
AMediaDrm_getProvisionRequest(AMediaDrm *, const uint8_t **provisionRequest, size_t *provisionRequestSize, const char **serverUrl)
应用和配置服务器之间发生配置请求/响应交换,以检索设备证书。
AMediaDrm_getSecureStops(AMediaDrm *, AMediaDrmSecureStop *secureStops, size_t *numSecureStops)
通过 SecureStop 提供了一种跨设备强制限制每个订阅者并发流数量的方法。
AMediaDrm_isCryptoSchemeSupported(const uint8_t *uuid, const char *mimeType)
bool
查询此设备是否支持由 UUID 标识的给定方案,以及 DRM 插件是否能够处理 mimeType 指定的媒体容器格式。
AMediaDrm_openSession(AMediaDrm *, AMediaDrmSessionId *sessionId)
使用 MediaDrm 对象打开新会话。
AMediaDrm_provideKeyResponse(AMediaDrm *, const AMediaDrmScope *scope, const uint8_t *response, size_t responseSize, AMediaDrmKeySetId *keySetId)
应用从许可证服务器接收到密钥响应,然后使用 provideKeyResponse 将其提供给 DRM 引擎插件。
AMediaDrm_provideProvisionResponse(AMediaDrm *, const uint8_t *response, size_t responseSize)
应用接收到配置响应后,使用此方法将其提供给 DRM 引擎插件。
AMediaDrm_queryKeyStatus(AMediaDrm *, const AMediaDrmSessionId *sessionId, AMediaDrmKeyValue *keyValuePairs, size_t *numPairs)
请求会话密钥状态的说明性描述。
AMediaDrm_release(AMediaDrm *)
void
释放 MediaDrm 对象。
AMediaDrm_releaseSecureStops(AMediaDrm *, const AMediaDrmSecureStop *ssRelease)
处理 SecureStop 服务器响应消息 ssRelease。
AMediaDrm_removeKeys(AMediaDrm *, const AMediaDrmSessionId *keySetId)
从会话中移除当前密钥。
AMediaDrm_restoreKeys(AMediaDrm *, const AMediaDrmSessionId *sessionId, const AMediaDrmKeySetId *keySetId)
将持久化的离线密钥恢复到新会话中。
AMediaDrm_setOnEventListener(AMediaDrm *, AMediaDrmEventListener listener)
注册一个回调,以便在事件发生时调用。
AMediaDrm_setOnExpirationUpdateListener(AMediaDrm *, AMediaDrmExpirationUpdateListener listener)
注册一个回调,以便在到期更新事件发生时调用。
AMediaDrm_setOnKeysChangeListener(AMediaDrm *, AMediaDrmKeysChangeListener listener)
注册一个回调,以便在密钥状态更改事件发生时调用。
AMediaDrm_setPropertyByteArray(AMediaDrm *, const char *propertyName, const uint8_t *value, size_t valueSize)
设置 DRM 引擎插件字节数组属性值。
AMediaDrm_setPropertyString(AMediaDrm *, const char *propertyName, const char *value)
设置 DRM 引擎插件 String 属性值。
AMediaDrm_sign(AMediaDrm *, const AMediaDrmSessionId *sessionId, const char *macAlgorithm, uint8_t *keyId, uint8_t *message, size_t messageSize, uint8_t *signature, size_t *signatureSize)
AMediaDrm_verify(AMediaDrm *, const AMediaDrmSessionId *sessionId, const char *macAlgorithm, uint8_t *keyId, const uint8_t *message, size_t messageSize, const uint8_t *signature, size_t signatureSize)
AMediaExtractor_advance(AMediaExtractor *)
bool
前进到下一个样本。
AMediaExtractor_delete(AMediaExtractor *)
删除之前创建的媒体提取器。
AMediaExtractor_getCachedDuration(AMediaExtractor *)
int64_t
返回从网络数据源(使用带有“http(s)”URI 的 AMediaExtractor_setDataSource)下载的缓存媒体样本的持续时间,单位为微秒。
AMediaExtractor_getFileFormat(AMediaExtractor *)
AMediaFormat *
返回提取器的格式。
AMediaExtractor_getPsshInfo(AMediaExtractor *)
如果存在,获取 PSSH 信息。
AMediaExtractor_getSampleCryptoInfo(AMediaExtractor *)
AMediaCodecCryptoInfo *
自 API level 21 开始可用。
AMediaExtractor_getSampleFlags(AMediaExtractor *)
uint32_t
读取当前样本的标志。
AMediaExtractor_getSampleFormat(AMediaExtractor *ex, AMediaFormat *fmt)
将当前样本的元数据格式读入 fmt
AMediaExtractor_getSampleSize(AMediaExtractor *)
ssize_t
返回当前样本的大小(字节),或在没有样本可用时返回 -1(流结束)。
AMediaExtractor_getSampleTime(AMediaExtractor *)
int64_t
返回当前样本的显示时间,单位为微秒。
AMediaExtractor_getSampleTrackIndex(AMediaExtractor *)
int
返回当前样本所属的轨道索引(如果没有更多样本可用则返回 -1)
AMediaExtractor_getTrackCount(AMediaExtractor *)
size_t
返回先前指定的媒体文件中的轨道数量。
AMediaExtractor_getTrackFormat(AMediaExtractor *, size_t idx)
AMediaFormat *
返回指定轨道的格式。
AMediaExtractor_new()
AMediaExtractor *
创建新的媒体提取器。
AMediaExtractor_readSampleData(AMediaExtractor *, uint8_t *buffer, size_t capacity)
ssize_t
读取当前样本。
AMediaExtractor_seekTo(AMediaExtractor *, int64_t seekPosUs, SeekMode mode)
自 API level 21 开始可用。
AMediaExtractor_selectTrack(AMediaExtractor *, size_t idx)
选择指定的轨道。
AMediaExtractor_setDataSource(AMediaExtractor *, const char *location)
设置提取器将从中读取的 URI。
AMediaExtractor_setDataSourceCustom(AMediaExtractor *, AMediaDataSource *src)
设置提取器将从中读取的自定义数据源实现。
AMediaExtractor_setDataSourceFd(AMediaExtractor *, int fd, off64_t offset, off64_t length)
设置提取器将从中读取的文件描述符。
AMediaExtractor_unselectTrack(AMediaExtractor *, size_t idx)
取消选择指定的轨道。
AMediaFormat_clear(AMediaFormat *)
void
从给定的 AMediaFormat 中移除所有键/值对。
AMediaFormat_copy(AMediaFormat *to, AMediaFormat *from)
将一个 AMediaFormat 复制到另一个。
AMediaFormat_delete(AMediaFormat *)
自 API level 21 开始可用。
AMediaFormat_getBuffer(AMediaFormat *, const char *name, void **data, size_t *size)
bool
返回的数据由格式所有,只要命名的条目是格式的一部分,就保持有效。
AMediaFormat_getDouble(AMediaFormat *, const char *name, double *out)
bool
自 API level 28 开始可用。
AMediaFormat_getFloat(AMediaFormat *, const char *name, float *out)
bool
自 API level 21 开始可用。
AMediaFormat_getInt32(AMediaFormat *, const char *name, int32_t *out)
bool
自 API level 21 开始可用。
AMediaFormat_getInt64(AMediaFormat *, const char *name, int64_t *out)
bool
自 API level 21 开始可用。
AMediaFormat_getRect(AMediaFormat *, const char *name, int32_t *left, int32_t *top, int32_t *right, int32_t *bottom)
bool
自 API level 28 开始可用。
AMediaFormat_getSize(AMediaFormat *, const char *name, size_t *out)
bool
自 API level 21 开始可用。
AMediaFormat_getString(AMediaFormat *, const char *name, const char **out)
bool
返回的字符串由格式所有,直到下次调用 getString 或格式被删除之前保持有效。
AMediaFormat_new()
AMediaFormat *
自 API level 21 开始可用。
AMediaFormat_setBuffer(AMediaFormat *, const char *name, const void *data, size_t size)
void
提供的数据被复制到格式中。
AMediaFormat_setDouble(AMediaFormat *, const char *name, double value)
void
自 API level 28 开始可用。
AMediaFormat_setFloat(AMediaFormat *, const char *name, float value)
void
自 API level 21 开始可用。
AMediaFormat_setInt32(AMediaFormat *, const char *name, int32_t value)
void
自 API level 21 开始可用。
AMediaFormat_setInt64(AMediaFormat *, const char *name, int64_t value)
void
自 API level 21 开始可用。
AMediaFormat_setRect(AMediaFormat *, const char *name, int32_t left, int32_t top, int32_t right, int32_t bottom)
void
自 API level 28 开始可用。
AMediaFormat_setSize(AMediaFormat *, const char *name, size_t value)
void
自 API level 28 开始可用。
AMediaFormat_setString(AMediaFormat *, const char *name, const char *value)
void
提供的字符串被复制到格式中。
AMediaFormat_toString(AMediaFormat *)
const char *
格式的人类可读表示。
AMediaMuxer_addTrack(AMediaMuxer *, const AMediaFormat *format)
ssize_t
添加具有指定格式的轨道。
AMediaMuxer_append(int fd, AppendMode mode)
AMediaMuxer *
创建一个新的媒体混合器,用于向现有 MPEG4 文件追加数据。
AMediaMuxer_delete(AMediaMuxer *)
删除之前创建的媒体混合器。
AMediaMuxer_getTrackCount(AMediaMuxer *)
ssize_t
返回传递给 AMediaMuxer_new 的文件中添加的轨道数量,或传递给 AMediaMuxer_append 的文件中已有的轨道数量。
AMediaMuxer_getTrackFormat(AMediaMuxer *muxer, size_t idx)
AMediaFormat *
返回传递给 AMediaMuxer_new 的文件中索引为 idx 的已添加轨道的 AMediaFormat,或传递给 AMediaMuxer_append 的文件中索引为 idx 的现有轨道的 AMediaFormat。
AMediaMuxer_new(int fd, OutputFormat format)
AMediaMuxer *
创建新的媒体混合器。
AMediaMuxer_setLocation(AMediaMuxer *, float latitude, float longitude)
在输出文件中设置并存储地理数据(纬度和经度)。
AMediaMuxer_setOrientationHint(AMediaMuxer *, int degrees)
设置输出视频播放的定向提示。
AMediaMuxer_start(AMediaMuxer *)
启动混合器。
AMediaMuxer_stop(AMediaMuxer *)
停止混合器。
AMediaMuxer_writeSampleData(AMediaMuxer *muxer, size_t trackIdx, const uint8_t *data, const AMediaCodecBufferInfo *info)
将编码后的样本写入混合器。

结构体

ADoubleRange

描述两个双精度浮点数值范围的实用结构。

AImageCropRect

描述由 AImage_getCropRect 返回的裁剪矩形的数据类型。

AImageReader_BufferRemovedListener

AHardwareBuffer 移除事件的监听器,使用 AImageReader_setBufferRemovedListener 向 AImageReader 注册监听器对象。

AImageReader_ImageListener
AIntRange

描述两个整数值范围的实用结构。

AMediaCodecBufferInfo
AMediaCodecOnAsyncNotifyCallback
AMediaCodecSupportedMediaType

媒体类型定义,包含位字段指示解码器/编码器/两者是否支持该类型。

AMediaDrmByteArray
AMediaDrmKeyStatus
AMediaDrmKeyValuePair

包含 {key, value} 对的数据类型。

PsshEntry

加密方案 UUID 到该方案特定数据的映射

PsshInfo

加密方案列表及其数据

cryptoinfo_pattern_t

枚举

匿名枚举 114

声明于 media/NdkMediaCodec.h
 Anonymous Enum 114

NdkMediaCodec 操作的每缓冲区标志定义。

这些枚举的语义与 android.media.MediaCodec 中同名枚举的语义一致。

属性
AMEDIACODEC_BUFFER_FLAG_CODEC_CONFIG
AMEDIACODEC_BUFFER_FLAG_DECODE_ONLY

这表明缓冲区已被解码并更新了解码器的内部状态,但未产生任何输出缓冲区。

语义与 android.media.MediaCodec#BUFFER_FLAG_DECODE_ONLY 相同。

AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM
AMEDIACODEC_BUFFER_FLAG_KEY_FRAME

这表明标记为此标志的(编码)缓冲区包含关键帧的数据。

语义与 android.media.MediaCodec#BUFFER_FLAG_KEY_FRAME 相同。

AMEDIACODEC_BUFFER_FLAG_MUXER_DATA

这表明缓冲区包含非媒体数据供混合器处理。

语义与 android.media.MediaCodec#BUFFER_FLAG_MUXER_DATA 相同。

AMEDIACODEC_BUFFER_FLAG_PARTIAL_FRAME

匿名枚举 116

声明于 media/NdkMediaExtractor.h
 Anonymous Enum 116

ABitrateMode

声明于 media/NdkMediaCodecInfo.h
 ABitrateMode

AIMAGE_FORMATS

声明于 media/NdkImage.h
 AIMAGE_FORMATS

AImage 支持的格式:AImageReader 只保证支持此处列出的格式。

属性
AIMAGE_FORMAT_DEPTH16

Android 稠密深度图像格式。

每个像素为 16 位,表示来自深度相机或类似传感器的深度测量值。16 位样本由置信度值和实际测距值组成。

置信度值是对该样本正确性的估计。它编码在样本的最高 3 位中,值为 0 表示 100% 置信度,值为 1 表示 0% 置信度,值为 2 表示 1/7,值为 3 表示 2/7,依此类推。

例如,以下示例从 DEPTH16 格式 AImage 的第一个像素中提取范围和置信度,并将置信度转换为 0 到 1.f(含)之间的浮点值,其中 1.f 表示最大置信度。

   uint16_t* data;
   int dataLength;
   AImage_getPlaneData(image, 0, (uint8_t**)&data, &dataLength);
   uint16_t depthSample = data[0];
   uint16_t depthRange = (depthSample & 0x1FFF);
   uint16_t depthConfidence = ((depthSample >> 13) & 0x7);
   float depthPercentage = depthConfidence == 0 ? 1.f : (depthConfidence - 1) / 7.f;

此格式假定

  • 偶数宽度
  • 偶数高度
  • 水平步长是 16 像素的倍数

 y_size = stride * height 

由相机生成时,范围的单位为毫米。

AIMAGE_FORMAT_DEPTH_JPEG

深度增强压缩 JPEG 格式。

JPEG 压缩主图像以及遵循 ISO 16684-1:2011(E) 的 XMP 嵌入深度元数据。

AIMAGE_FORMAT_DEPTH_POINT_CLOUD

Android 稀疏深度点云格式。

一个可变长度的 3D 点列表加上一个置信度值,每个点由四个浮点数表示;首先是 X、Y、Z 位置坐标,然后是置信度值。

点数量 = (缓冲区大小(字节)) / 16。

位置值的坐标系和单位取决于点云数据的来源。置信度值介于 0.f 和 1.f(含)之间,其中 0 表示 0% 置信度,1.f 表示对测量位置值的 100% 置信度。

例如,以下代码提取 DEPTH_POINT_CLOUD 格式 AImage 中的第一个深度点。

   float* data;
   int dataLength;
   AImage_getPlaneData(image, 0, (uint8_t**)&data, &dataLength);
   float x = data[0];
   float y = data[1];
   float z = data[2];
   float confidence = data[3];

AIMAGE_FORMAT_HEIC

压缩 HEIC 格式。

此格式定义了 ISO/IEC 23008-12 中描述的高效率图像文件格式的 HEIC 品牌。

AIMAGE_FORMAT_JPEG

压缩 JPEG 格式。

此格式始终受 android Camera2 NDK API 支持作为输出格式。

AIMAGE_FORMAT_PRIVATE

Android 私有不透明图像格式。

实际格式和像素数据布局的选择完全取决于设备特定和框架内部实现,并且即使对于同一设备,也可能因用例而异。另请注意,应用无法直接访问这些缓冲区的内容。

AImageReader 获取此格式的 AImage 时,AImage_getNumberOfPlanes() 方法将返回零。

AIMAGE_FORMAT_RAW10

Android 10 位原始格式。

这是一种单平面、每像素 10 位、紧密打包(每行)、未处理的格式,通常表示来自图像传感器的原始 Bayer 模式图像。

在此格式的图像缓冲区中,从每行的第一个像素开始,每 4 个连续像素被打包到 5 个字节(40 位)中。前 4 个字节的每个字节包含每个像素的最高 8 位,第五个字节包含这 4 个像素的最低 2 位,每个 4 个连续像素的确切布局数据如下所示(Pi[j] 代表第 i 个像素的第 j 位)。

第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位
字节 0 P0[9] P0[8] P0[7] P0[6] P0[5] P0[4] P0[3] P0[2]
字节 1 P1[9] P1[8] P1[7] P1[6] P1[5] P1[4] P1[3] P1[2]
字节 2 P2[9] P2[8] P2[7] P2[6] P2[5] P2[4] P2[3] P2[2]
字节 3 P3[9] P3[8] P3[7] P3[6] P3[5] P3[4] P3[3] P3[2]
字节 4 P3[1] P3[0] P2[1] P2[0] P1[1] P1[0] P0[1] P0[0]

此格式假定

  • 宽度为 4 像素的倍数
  • 偶数高度

size = row stride * height
其中行步幅以 字节 为单位,而不是像素。

由于这是一种紧密打包的格式,像素步幅始终为 0。应用程序必须使用上面表格中定义的像素数据布局来访问每行数据。当行步幅等于 (宽度 * (10 / 8)) 时,每行末尾将没有填充字节,整个图像数据是紧密打包的。当步幅大于 (宽度 * (10 / 8)) 时,每行末尾将存在填充字节。

例如,AImage 对象可以通过 AImageReader 对象从 ACameraDevice(如果支持)提供此格式的数据。AImage_getNumberOfPlanes 返回的平面数将始终为 1。像素步幅未定义(AImage_getPlanePixelStride 将返回 AMEDIA_ERROR_UNSUPPORTED),并且 AImage_getPlaneRowStride 描述了相邻行之间垂直相邻像素的距离(以字节为单位)。

另请参阅: AImage 另请参阅: AImageReader 另请参阅: ACameraDevice

AIMAGE_FORMAT_RAW12

Android 12 位原始格式。

这是一种单平面、每像素 12 位、紧密打包(每行内)的未处理格式,通常表示来自图像传感器的原始 Bayer 模式图像。

在此格式的图像缓冲区中,从每行的第一个像素开始,每两个连续像素被打包成 3 个字节(24 位)。第一个和第二个字节包含第一个和第二个像素的最高 8 位。第三个字节包含这两个像素的最低 4 位,下面说明了每两个连续像素的确切布局数据(Pi[j] 表示第 i 个像素的第 j 位)

第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位
字节 0 P0[11] P0[10] P0[ 9] P0[ 8] P0[ 7] P0[ 6] P0[ 5] P0[ 4]
字节 1 P1[11] P1[10] P1[ 9] P1[ 8] P1[ 7] P1[ 6] P1[ 5] P1[ 4]
字节 2 P1[ 3] P1[ 2] P1[ 1] P1[ 0] P0[ 3] P0[ 2] P0[ 1] P0[ 0]

此格式假定

  • 宽度为 4 像素的倍数
  • 偶数高度

size = row stride * height
其中行步幅以 字节 为单位,而不是像素。

由于这是一种紧密打包的格式,像素步幅始终为 0。应用程序必须使用上面表格中定义的像素数据布局来访问每行数据。当行步幅等于 (宽度 * (12 / 8)) 时,每行末尾将没有填充字节,整个图像数据是紧密打包的。当步幅大于 (宽度 * (12 / 8)) 时,每行末尾将存在填充字节。

例如,AImage 对象可以通过 AImageReader 对象从 ACameraDevice(如果支持)提供此格式的数据。AImage_getNumberOfPlanes 返回的平面数将始终为 1。像素步幅未定义(AImage_getPlanePixelStride 将返回 AMEDIA_ERROR_UNSUPPORTED),并且 AImage_getPlaneRowStride 描述了相邻行之间垂直相邻像素的距离(以字节为单位)。

另请参阅: AImage 另请参阅: AImageReader 另请参阅: ACameraDevice

AIMAGE_FORMAT_RAW16

每像素 16 位的原始相机传感器图像格式,通常表示单通道 Bayer 模式图像。

颜色模式的布局、原始像素数据的最大和最小编码值、图像的色彩空间以及解释原始传感器图像所需的所有其他信息,必须从生成该图像的 ACameraDevice 中查询。

AIMAGE_FORMAT_RAW_PRIVATE

私有原始相机传感器图像格式,一种具有实现依赖的像素布局的单通道图像。

AIMAGE_FORMAT_RAW_PRIVATE 是用于来自图像传感器的未经处理的原始图像缓冲区的格式。此格式缓冲区的实际结构取决于实现。

AIMAGE_FORMAT_RGBA_8888

32 位 RGBA 格式,每个通道 8 位。

对应的格式

  • AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM
  • Vulkan: VK_FORMAT_R8G8B8A8_UNORM
  • OpenGL ES: GL_RGBA8

另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer

AIMAGE_FORMAT_RGBA_FP16

64 位 RGBA 格式,每个通道 16 位。

对应的格式

  • AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT
  • Vulkan: VK_FORMAT_R16G16B16A16_SFLOAT
  • OpenGL ES: GL_RGBA16F

另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer

AIMAGE_FORMAT_RGBX_8888

32 位 RGBX 格式,每个通道 8 位。

忽略 Alpha 通道位的值(图像被假定为不透明)。

对应的格式

  • AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM
  • Vulkan: VK_FORMAT_R8G8B8A8_UNORM
  • OpenGL ES: GL_RGB8

另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer

AIMAGE_FORMAT_RGB_565

16 位 RGB 格式,红色通道 5 位,绿色通道 6 位,蓝色通道 5 位。

对应的格式

  • AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM
  • Vulkan: VK_FORMAT_R5G6B5_UNORM_PACK16
  • OpenGL ES: GL_RGB565

另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer

AIMAGE_FORMAT_RGB_888

24 位 RGB 格式,每个通道 8 位。

对应的格式

  • AHardwareBuffer: AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM
  • Vulkan: VK_FORMAT_R8G8B8_UNORM
  • OpenGL ES: GL_RGB8

另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer

AIMAGE_FORMAT_Y8

Android Y8 格式。

Y8 是一种平面格式,仅包含一个 WxH 的 Y 平面,每个像素由 8 位表示。

此格式假定

  • 偶数宽度
  • 偶数高度
  • 水平步长是 16 像素的倍数

 size = stride * height 

例如,AImage 对象可以通过 AImageReader 对象从 ACameraDevice(如果支持)提供此格式的数据。AImage_getNumberOfPlanes 返回的平面数将始终为 1。AImage_getPlanePixelStride 返回的像素步幅将始终为 1,并且 AImage_getPlaneRowStride 描述了相邻行之间垂直相邻像素的距离(以字节为单位)。

AIMAGE_FORMAT_YUV_420_888

多平面 Android YUV 420 格式。

此格式是一种通用的 YCbCr 格式,能够描述任何 4:2:0 色度子采样的平面或半平面缓冲区(但不完全交错),每个颜色样本 8 位。

此格式的图像始终由三个单独的数据缓冲区表示,每个颜色平面一个。缓冲区始终附带额外信息,描述每个平面的行步幅和像素步幅。

平面的顺序是保证的,其中平面 #0 始终是 Y,平面 #1 始终是 U (Cb),平面 #2 始终是 V (Cr)。

Y 平面保证不与 U/V 平面交错(特别是,AImage_getPlanePixelStride 中的像素步幅始终为 1)。

U/V 平面保证具有相同的行步幅和像素步幅,也就是说,U/V 平面的 AImage_getPlaneRowStride 返回值保证相同,并且 U/V 平面的 AImage_getPlanePixelStride 返回值也保证相同。

例如,AImage 对象可以通过 AImageReader 对象从 ACameraDevice 提供此格式的数据。

此格式始终受 android Camera2 NDK API 支持作为输出格式。

另请参阅: AImage 另请参阅: AImageReader 另请参阅: ACameraDevice

AMediaCodecKind

声明于 media/NdkMediaCodecInfo.h
 AMediaCodecKind
属性
AMediaCodecKind_DECODER

解码器

AMediaCodecKind_ENCODER

编码器

AMediaCodecKind_INVALID

无效的媒体编解码器信息

AMediaCodecType

声明于 media/NdkMediaCodecInfo.h
 AMediaCodecType

编解码器类型。

属性
AMediaCodecType_HARDWARE_ACCELERATED

硬件加速编解码器。

硬件编解码器通常比软件编解码器具有更高的性能或更低的功耗,但由于它们特定于每个设备,实际的性能细节可能会有所不同。

AMediaCodecType_INVALID_CODEC_INFO

非编解码器类型。

用于指示发生了无效操作。

AMediaCodecType_SOFTWARE_ONLY

软件编解码器。

纯软件编解码器由于在更严格的安全沙箱中运行而更加安全。另一方面,纯软件编解码器不提供任何性能保证。

AMediaCodecType_SOFTWARE_WITH_DEVICE_ACCESS

软件编解码器但具有设备访问权限。

主要指供应商提供的软件编解码器。

AMediaDrmEventType

media/NdkMediaDrm.h 中声明
 AMediaDrmEventType
属性
EVENT_KEY_EXPIRED

此事件类型表示会话中密钥的许可使用期限已过期。

密钥不再有效。

EVENT_KEY_REQUIRED

此事件类型表示应用需要从许可证服务器请求密钥。

使用 AMediaDrm_getKeyRequest 获取请求消息数据。

EVENT_PROVISION_REQUIRED

此事件类型表示应用需要从预配服务器请求证书。

使用 AMediaDrm_getProvisionRequest 获取请求消息数据。

EVENT_SESSION_RECLAIMED

此事件表明应用打开的会话已被资源管理器回收。

EVENT_VENDOR_DEFINED

此事件可能表示某些特定的供应商定义条件,详细信息请参阅您的 DRM 提供商文档。

AMediaDrmKeyRequestType

media/NdkMediaDrm.h 中声明
 AMediaDrmKeyRequestType

在 API 33 中引入。

属性
KEY_REQUEST_TYPE_INITIAL

密钥请求类型是初始许可证请求。

加载密钥需要初始许可证请求。

KEY_REQUEST_TYPE_NONE

密钥已加载并可供使用。

无需许可证请求,也不会返回密钥请求数据。

KEY_REQUEST_TYPE_RELEASE

密钥请求类型是许可证释放。

许可证释放请求表明密钥已被移除。

KEY_REQUEST_TYPE_RENEWAL

密钥请求类型是许可证续订。

防止密钥过期需要续订许可证请求。

KEY_REQUEST_TYPE_UPDATE

密钥已加载,但需要额外的许可证请求来更新其值。

AMediaDrmKeyType

media/NdkMediaDrm.h 中声明
 AMediaDrmKeyType
属性
KEY_TYPE_OFFLINE

此密钥请求类型指定密钥将用于离线使用,它们将被保存到设备上,以便在设备未连接网络时使用。

KEY_TYPE_RELEASE

此密钥请求类型指定应释放先前保存的离线密钥。

KEY_TYPE_STREAMING

此密钥请求类型指定密钥将用于在线使用,它们不会保存到设备上以供设备未连接网络时后续使用。

AMediaKeyStatusType

media/NdkMediaDrm.h 中声明
 AMediaKeyStatusType
属性
KEY_STATUS_TYPE_EXPIRED

密钥已过期,无法再用于解密媒体数据。

KEY_STATUS_TYPE_INTERNALERROR

由于与输入参数无关的内部处理错误,密钥当前无法用于解密媒体数据。

KEY_STATUS_TYPE_OUTPUTNOTALLOWED

由于无法满足其当前输出要求,密钥当前无法用于解密媒体数据。

KEY_STATUS_TYPE_STATUSPENDING

密钥状态未知,正在确定中。

KEY_STATUS_TYPE_USABLE

密钥当前可用,可用于解密媒体数据。

AppendMode

声明在 media/NdkMediaMuxer.h
 AppendMode

OutputFormat

声明在 media/NdkMediaMuxer.h
 OutputFormat

定义输出格式。

这些常量与构造函数一起使用。

这些枚举与 android.media.MediaMuxer.OutputFormat 中使用的枚举匹配

属性
AMEDIAMUXER_OUTPUT_FORMAT_HEIF

HEIF 媒体文件格式。

AMEDIAMUXER_OUTPUT_FORMAT_MPEG_4

MPEG4 媒体文件格式。

AMEDIAMUXER_OUTPUT_FORMAT_OGG

Ogg 媒体文件格式。

AMEDIAMUXER_OUTPUT_FORMAT_THREE_GPP

3GPP 媒体文件格式

AMEDIAMUXER_OUTPUT_FORMAT_WEBM

WEBM 媒体文件格式。

media_status_t

声明在 media/NdkMediaError.h
 media_status_t

NDK 媒体函数返回的媒体错误消息类型。

属性
AMEDIACODEC_ERROR_INSUFFICIENT_RESOURCE

这表示无法分配所需资源。

AMEDIACODEC_ERROR_RECLAIMED

这表示资源管理器已回收编解码器使用的媒体资源。

出现此错误时,编解码器必须被释放,因为它已进入终止状态。

AMEDIA_DRM_DEVICE_REVOKED
AMEDIA_DRM_ERROR_BASE
AMEDIA_DRM_LICENSE_EXPIRED
AMEDIA_DRM_NEED_KEY
AMEDIA_DRM_NOT_PROVISIONED
AMEDIA_DRM_RESOURCE_BUSY
AMEDIA_DRM_SESSION_NOT_OPENED
AMEDIA_DRM_SHORT_BUFFER
AMEDIA_DRM_TAMPER_DETECTED
AMEDIA_DRM_VERIFY_FAILED
AMEDIA_ERROR_BASE
AMEDIA_ERROR_END_OF_STREAM

处理请求的操作时,媒体流结束。

AMEDIA_ERROR_INVALID_OBJECT

函数调用中使用了无效(或已关闭)的对象。

AMEDIA_ERROR_INVALID_OPERATION

媒体对象不处于所需操作的正确状态。

AMEDIA_ERROR_INVALID_PARAMETER

至少有一个无效参数被使用。

AMEDIA_ERROR_IO

媒体对象执行 I/O 操作时发生错误。

AMEDIA_ERROR_MALFORMED

输入媒体数据损坏或不完整。

AMEDIA_ERROR_UNKNOWN

调用的媒体函数因未知错误而失败。

AMEDIA_ERROR_UNSUPPORTED

不支持所需的操作或媒体格式。

AMEDIA_ERROR_WOULD_BLOCK

所需的操作将被阻塞(在 I/O 或其他方面),但阻塞未启用。

AMEDIA_IMGREADER_CANNOT_LOCK_IMAGE

无法锁定所需的图像缓冲区进行读取。

AMEDIA_IMGREADER_CANNOT_UNLOCK_IMAGE

无法解锁媒体数据或缓冲区。

AMEDIA_IMGREADER_ERROR_BASE
声明在 media/NdkImageReader.h

AMEDIA_IMGREADER_IMAGE_NOT_LOCKED

需要锁定媒体/缓冲区才能执行所需操作。

AMEDIA_IMGREADER_MAX_IMAGES_ACQUIRED

AImage 对象已用完允许的最大图像缓冲区。

AMEDIA_IMGREADER_NO_BUFFER_AVAILABLE

没有更多图像缓冲区可用于读/写图像数据。

AMEDIA_OK

类型定义

ABitrateMode

声明于 media/NdkMediaCodecInfo.h
enum ABitrateMode ABitrateMode

编码器比特率模式。

ACodecAudioCapabilities

声明于 media/NdkMediaCodecInfo.h
struct ACodecAudioCapabilities ACodecAudioCapabilities

ACodecEncoderCapabilities

声明于 media/NdkMediaCodecInfo.h
struct ACodecEncoderCapabilities ACodecEncoderCapabilities

ACodecPerformancePoint

声明于 media/NdkMediaCodecInfo.h
struct ACodecPerformancePoint ACodecPerformancePoint

ACodecVideoCapabilities

声明于 media/NdkMediaCodecInfo.h
struct ACodecVideoCapabilities ACodecVideoCapabilities

ADoubleRange

声明于 media/NdkMediaCodecInfo.h
struct ADoubleRange ADoubleRange

描述两个双精度浮点数值范围的实用结构。

AImage

声明于 media/NdkImage.h
struct AImage AImage

AImage 是一种不透明类型,提供对 AImageReader 生成图像的访问。

AImageCropRect

声明于 media/NdkImage.h
struct AImageCropRect AImageCropRect

描述由 AImage_getCropRect 返回的裁剪矩形的数据类型。

请求的媒体操作成功完成。

AImageReader

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
struct AImageReader AImageReader

AImage 是一种不透明类型,允许应用直接访问渲染到 ANativeWindow 中的图像数据。

AImageReader_BufferRemovedCallback

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
void(* AImageReader_BufferRemovedCallback)(void *context, AImageReader *reader, AHardwareBuffer *buffer)

AImageReader 即将移除缓冲区时调用的回调函数签名。

详情
参数
context
用户在 AImageReader_setBufferRemovedListener 中提供的可选应用上下文。
reader
所需的 AImageReader
buffer
正从该图像读取器中移除的 AHardwareBuffer

AImageReader_BufferRemovedListener

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
struct AImageReader_BufferRemovedListener AImageReader_BufferRemovedListener

AHardwareBuffer 移除事件的监听器,使用 AImageReader_setBufferRemovedListener 向 AImageReader 注册监听器对象。

AImageReader_ImageCallback

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
void(* AImageReader_ImageCallback)(void *context, AImageReader *reader)

AImageReader 有新图像可用时调用的回调函数签名。

详情
参数
context
用户在 AImageReader_setImageListener 中提供的可选应用上下文。
session
状态正在改变的相机捕获会话。

AImageReader_ImageListener

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
struct AImageReader_ImageListener AImageReader_ImageListener

AIntRange

声明于 media/NdkMediaCodecInfo.h
struct AIntRange AIntRange

描述两个整数值范围的实用结构。

AMediaCodec

声明于 media/NdkMediaCodec.h
struct AMediaCodec AMediaCodec

AMediaCodecBufferInfo

声明于 media/NdkMediaCodec.h
struct AMediaCodecBufferInfo AMediaCodecBufferInfo

AMediaCodecCryptoInfo

声明于 media/NdkMediaCodec.h
struct AMediaCodecCryptoInfo AMediaCodecCryptoInfo

AMediaCodecInfo

声明于 media/NdkMediaCodecInfo.h
struct AMediaCodecInfo AMediaCodecInfo

AMediaCodecKind

声明于 media/NdkMediaCodecInfo.h
enum AMediaCodecKind AMediaCodecKind

AMediaCodecOnAsyncError

声明于 media/NdkMediaCodec.h
void(* AMediaCodecOnAsyncError)(AMediaCodec *codec, void *userdata, media_status_t error, int32_t actionCode, const char *detail)

当 MediaCodec 遇到错误时调用。

指定的 actionCode 表示客户端可以采取的可能操作,可以通过调用 AMediaCodecActionCode_isRecoverable()AMediaCodecActionCode_isTransient() 进行检查。如果 AMediaCodecActionCode_isRecoverable()AMediaCodecActionCode_isTransient() 都返回 false,则编解码器错误是致命的,必须删除该编解码器。指定的 detail 可能包含有关此错误的更详细消息。

AMediaCodecOnAsyncFormatChanged

声明于 media/NdkMediaCodec.h
void(* AMediaCodecOnAsyncFormatChanged)(AMediaCodec *codec, void *userdata, AMediaFormat *format)

当输出格式发生变化时调用。

指定的 format 包含新的输出格式。

AMediaCodecOnAsyncInputAvailable

声明于 media/NdkMediaCodec.h
void(* AMediaCodecOnAsyncInputAvailable)(AMediaCodec *codec, void *userdata, int32_t index)

当输入缓冲区可用时调用。

指定的 index 是可用输入缓冲区的索引。

AMediaCodecOnAsyncNotifyCallback

声明于 media/NdkMediaCodec.h
struct AMediaCodecOnAsyncNotifyCallback AMediaCodecOnAsyncNotifyCallback

AMediaCodecOnAsyncOutputAvailable

声明于 media/NdkMediaCodec.h
void(* AMediaCodecOnAsyncOutputAvailable)(AMediaCodec *codec, void *userdata, int32_t index, AMediaCodecBufferInfo *bufferInfo)

当输出缓冲区可用时调用。

指定的 index 是可用输出缓冲区的索引。指定的 bufferInfo 包含有关可用输出缓冲区的信息。

AMediaCodecOnFrameRendered

声明于 media/NdkMediaCodec.h
void(* AMediaCodecOnFrameRendered)(AMediaCodec *codec, void *userdata, int64_t mediaTimeUs, int64_t systemNano)

当输出帧在输出表面上渲染时调用。

详情
参数
codec
生成此通知的编解码器对象。
userdata
在 AMediaCodec_setOnFrameRenderedCallback 处设置的用户数据。
mediaTimeUs
渲染的帧的演示时间(媒体时间)。这通常与在 AMediaCodec_queueInputBuffer 中指定的时间相同,但某些编解码器可能会通过应用一些基于时间的转换(例如帧速率转换)来更改媒体时间。在这种情况下,演示时间对应于实际渲染的输出帧。
systemNano
渲染帧时的系统时间。

AMediaCodecSupportedMediaType

声明在 media/NdkMediaCodecStore.h
struct AMediaCodecSupportedMediaType AMediaCodecSupportedMediaType

媒体类型定义,包含位字段指示解码器/编码器/两者是否支持该类型。

AMediaCodecType

声明于 media/NdkMediaCodecInfo.h
enum AMediaCodecType AMediaCodecType

编解码器类型。

AMediaCrypto

声明在 media/NdkMediaCrypto.h
struct AMediaCrypto AMediaCrypto

AMediaDataSource

声明在 media/NdkMediaDataSource.h
struct AMediaDataSource AMediaDataSource

AMediaDataSourceClose

声明在 media/NdkMediaDataSource.h
void(* AMediaDataSourceClose)(void *userdata)

调用以关闭数据源,解除读取阻塞,并释放相关资源。

NDK 媒体框架保证,在第一次调用 close 之后,数据源上不会再调用任何回调,除了 close 本身。

关闭数据源允许之前因等待 I/O 数据而被阻塞的 readAt 调用立即返回。

将 AMediaDataSource 用作 AMediaExtractor 的输入时,关闭操作可以解除 setDataSource 和 readSampleData 内部的缓慢读取的阻塞。

AMediaDataSourceGetAvailableSize

声明在 media/NdkMediaDataSource.h
ssize_t(* AMediaDataSourceGetAvailableSize)(void *userdata, off64_t offset)

调用以获取从该数据源的 offset 开始无需阻塞 I/O 即可读取的字节数估算值。

如果无法进行此类估算,则返回 -1。

AMediaDataSourceGetSize

声明在 media/NdkMediaDataSource.h
ssize_t(* AMediaDataSourceGetSize)(void *userdata)

调用以获取数据源的大小。

返回数据源的大小(以字节为单位),如果大小未知,则返回 -1。

AMediaDataSourceReadAt

声明在 media/NdkMediaDataSource.h
ssize_t(* AMediaDataSourceReadAt)(void *userdata, off64_t offset, void *buffer, size_t size)

调用以请求从给定 offset 的数据。

实现应将最多 size 字节写入 buffer,并返回写入的字节数。

如果 size 为零(因此未读取任何字节),则返回 0。

返回 -1 表示已到达流的末尾。

AMediaDrm

media/NdkMediaDrm.h 中声明
struct AMediaDrm AMediaDrm

AMediaDrmEventListener

media/NdkMediaDrm.h 中声明
void(* AMediaDrmEventListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, AMediaDrmEventType eventType, int extra, const uint8_t *data, size_t dataSize)

AMediaDrmEventType

media/NdkMediaDrm.h 中声明
enum AMediaDrmEventType AMediaDrmEventType

AMediaDrmExpirationUpdateListener

media/NdkMediaDrm.h 中声明
void(* AMediaDrmExpirationUpdateListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, int64_t expiryTimeInMS)

AMediaDrmKeyId

media/NdkMediaDrm.h 中声明
AMediaDrmByteArray AMediaDrmKeyId

AMediaDrmKeyRequestType

media/NdkMediaDrm.h 中声明
enum AMediaDrmKeyRequestType AMediaDrmKeyRequestType

在 API 33 中引入。

AMediaDrmKeySetId

media/NdkMediaDrm.h 中声明
AMediaDrmByteArray AMediaDrmKeySetId

AMediaDrmKeyStatus

media/NdkMediaDrm.h 中声明
struct AMediaDrmKeyStatus AMediaDrmKeyStatus

AMediaDrmKeyStatusType

media/NdkMediaDrm.h 中声明
enum AMediaKeyStatusType AMediaDrmKeyStatusType

AMediaDrmKeyType

media/NdkMediaDrm.h 中声明
enum AMediaDrmKeyType AMediaDrmKeyType

AMediaDrmKeyValue

media/NdkMediaDrm.h 中声明
struct AMediaDrmKeyValuePair AMediaDrmKeyValue

包含 {key, value} 对的数据类型。

AMediaDrmKeysChangeListener

media/NdkMediaDrm.h 中声明
void(* AMediaDrmKeysChangeListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, const AMediaDrmKeyStatus *keyStatus, size_t numKeys, bool hasNewUsableKey)

AMediaDrmScope

media/NdkMediaDrm.h 中声明
AMediaDrmByteArray AMediaDrmScope

AMediaDrmSecureStop

media/NdkMediaDrm.h 中声明
AMediaDrmByteArray AMediaDrmSecureStop

AMediaDrmSessionId

media/NdkMediaDrm.h 中声明
AMediaDrmByteArray AMediaDrmSessionId

AMediaExtractor

声明于 media/NdkMediaExtractor.h
struct AMediaExtractor AMediaExtractor

AMediaFormat

声明在 media/NdkMediaFormat.h
struct AMediaFormat AMediaFormat

AMediaMuxer

声明在 media/NdkMediaMuxer.h
struct AMediaMuxer AMediaMuxer

AMediaUUID

声明在 media/NdkMediaCrypto.h
uint8_t AMediaUUID[16]

ANativeWindow

声明于 media/NdkMediaCodec.h
struct ANativeWindow ANativeWindow

PsshEntry

声明于 media/NdkMediaExtractor.h
struct PsshEntry PsshEntry

加密方案 UUID 到该方案特定数据的映射

PsshInfo

声明于 media/NdkMediaExtractor.h
struct PsshInfo PsshInfo

加密方案列表及其数据

变量

AMEDIACODEC_KEY_HDR10_PLUS_INFO

声明于 media/NdkMediaCodec.h
const char * AMEDIACODEC_KEY_HDR10_PLUS_INFO

AMEDIACODEC_KEY_LOW_LATENCY

声明于 media/NdkMediaCodec.h
const char * AMEDIACODEC_KEY_LOW_LATENCY

AMEDIACODEC_KEY_OFFSET_TIME

声明于 media/NdkMediaCodec.h
const char * AMEDIACODEC_KEY_OFFSET_TIME

AMEDIACODEC_KEY_REQUEST_SYNC_FRAME

声明于 media/NdkMediaCodec.h
const char * AMEDIACODEC_KEY_REQUEST_SYNC_FRAME

AMEDIACODEC_KEY_SUSPEND

声明于 media/NdkMediaCodec.h
const char * AMEDIACODEC_KEY_SUSPEND

AMEDIACODEC_KEY_SUSPEND_TIME

声明于 media/NdkMediaCodec.h
const char * AMEDIACODEC_KEY_SUSPEND_TIME

AMEDIACODEC_KEY_VIDEO_BITRATE

声明于 media/NdkMediaCodec.h
const char * AMEDIACODEC_KEY_VIDEO_BITRATE

AMEDIAFORMAT_KEY_AAC_DRC_ATTENUATION_FACTOR

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_DRC_ATTENUATION_FACTOR

AMEDIAFORMAT_KEY_AAC_DRC_BOOST_FACTOR

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_DRC_BOOST_FACTOR

AMEDIAFORMAT_KEY_AAC_DRC_HEAVY_COMPRESSION

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_DRC_HEAVY_COMPRESSION

AMEDIAFORMAT_KEY_AAC_DRC_TARGET_REFERENCE_LEVEL

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_DRC_TARGET_REFERENCE_LEVEL

AMEDIAFORMAT_KEY_AAC_ENCODED_TARGET_LEVEL

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_ENCODED_TARGET_LEVEL

AMEDIAFORMAT_KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_MAX_OUTPUT_CHANNEL_COUNT

AMEDIAFORMAT_KEY_AAC_PROFILE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_PROFILE

AMEDIAFORMAT_KEY_AAC_SBR_MODE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AAC_SBR_MODE

AMEDIAFORMAT_KEY_ALBUM

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ALBUM

AMEDIAFORMAT_KEY_ALBUMART

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ALBUMART

AMEDIAFORMAT_KEY_ALBUMARTIST

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ALBUMARTIST

AMEDIAFORMAT_KEY_ALLOW_FRAME_DROP

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ALLOW_FRAME_DROP

应用选择退出允许 Surface 丢弃未显示/未消耗的帧以追赶进度的键。

语义与 android.media.MediaFormat#KEY_ALLOW_FRAME_DROP 的语义匹配

AMEDIAFORMAT_KEY_ARTIST

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ARTIST

AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_INFO

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_INFO

AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_PRESENTATION_ID

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_PRESENTATION_ID

AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_PROGRAM_ID

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AUDIO_PRESENTATION_PROGRAM_ID

AMEDIAFORMAT_KEY_AUDIO_SESSION_ID

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AUDIO_SESSION_ID

AMEDIAFORMAT_KEY_AUTHOR

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_AUTHOR

AMEDIAFORMAT_KEY_BITRATE_MODE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_BITRATE_MODE

AMEDIAFORMAT_KEY_BITS_PER_SAMPLE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_BITS_PER_SAMPLE

AMEDIAFORMAT_KEY_BIT_RATE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_BIT_RATE

AMEDIAFORMAT_KEY_BUFFER_BATCH_MAX_OUTPUT_SIZE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_BUFFER_BATCH_MAX_OUTPUT_SIZE

AMEDIAFORMAT_KEY_BUFFER_BATCH_THRESHOLD_OUTPUT_SIZE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_BUFFER_BATCH_THRESHOLD_OUTPUT_SIZE

AMEDIAFORMAT_KEY_CAPTURE_RATE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CAPTURE_RATE

AMEDIAFORMAT_KEY_CDTRACKNUMBER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CDTRACKNUMBER

AMEDIAFORMAT_KEY_CHANNEL_COUNT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CHANNEL_COUNT

AMEDIAFORMAT_KEY_CHANNEL_MASK

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CHANNEL_MASK

AMEDIAFORMAT_KEY_COLOR_FORMAT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_COLOR_FORMAT

AMEDIAFORMAT_KEY_COLOR_RANGE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_COLOR_RANGE

AMEDIAFORMAT_KEY_COLOR_STANDARD

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_COLOR_STANDARD

AMEDIAFORMAT_KEY_COLOR_TRANSFER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_COLOR_TRANSFER

AMEDIAFORMAT_KEY_COMPILATION

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_COMPILATION

AMEDIAFORMAT_KEY_COMPLEXITY

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_COMPLEXITY

AMEDIAFORMAT_KEY_COMPOSER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_COMPOSER

AMEDIAFORMAT_KEY_CREATE_INPUT_SURFACE_SUSPENDED

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CREATE_INPUT_SURFACE_SUSPENDED

AMEDIAFORMAT_KEY_CRYPTO_DEFAULT_IV_SIZE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_DEFAULT_IV_SIZE

AMEDIAFORMAT_KEY_CRYPTO_ENCRYPTED_BYTE_BLOCK

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_ENCRYPTED_BYTE_BLOCK

AMEDIAFORMAT_KEY_CRYPTO_ENCRYPTED_SIZES

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_ENCRYPTED_SIZES

AMEDIAFORMAT_KEY_CRYPTO_IV

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_IV

AMEDIAFORMAT_KEY_CRYPTO_KEY

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_KEY

AMEDIAFORMAT_KEY_CRYPTO_MODE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_MODE

AMEDIAFORMAT_KEY_CRYPTO_PLAIN_SIZES

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_PLAIN_SIZES

AMEDIAFORMAT_KEY_CRYPTO_SKIP_BYTE_BLOCK

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CRYPTO_SKIP_BYTE_BLOCK

AMEDIAFORMAT_KEY_CSD

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CSD

AMEDIAFORMAT_KEY_CSD_0

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CSD_0

AMEDIAFORMAT_KEY_CSD_1

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CSD_1

AMEDIAFORMAT_KEY_CSD_2

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CSD_2

AMEDIAFORMAT_KEY_CSD_AVC

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CSD_AVC

AMEDIAFORMAT_KEY_CSD_HEVC

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_CSD_HEVC

AMEDIAFORMAT_KEY_D263

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_D263

AMEDIAFORMAT_KEY_DATE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_DATE

AMEDIAFORMAT_KEY_DISCNUMBER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_DISCNUMBER

AMEDIAFORMAT_KEY_DISPLAY_CROP

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_DISPLAY_CROP

AMEDIAFORMAT_KEY_DISPLAY_HEIGHT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_DISPLAY_HEIGHT

AMEDIAFORMAT_KEY_DISPLAY_WIDTH

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_DISPLAY_WIDTH

AMEDIAFORMAT_KEY_DURATION

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_DURATION

AMEDIAFORMAT_KEY_ENCODER_DELAY

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ENCODER_DELAY

AMEDIAFORMAT_KEY_ENCODER_PADDING

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ENCODER_PADDING

AMEDIAFORMAT_KEY_ESDS

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ESDS

AMEDIAFORMAT_KEY_EXIF_OFFSET

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_EXIF_OFFSET

AMEDIAFORMAT_KEY_EXIF_SIZE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_EXIF_SIZE

AMEDIAFORMAT_KEY_FLAC_COMPRESSION_LEVEL

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_FLAC_COMPRESSION_LEVEL

AMEDIAFORMAT_KEY_FRAME_COUNT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_FRAME_COUNT

AMEDIAFORMAT_KEY_FRAME_RATE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_FRAME_RATE

AMEDIAFORMAT_KEY_GENRE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_GENRE

AMEDIAFORMAT_KEY_GRID_COLUMNS

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_GRID_COLUMNS

AMEDIAFORMAT_KEY_GRID_ROWS

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_GRID_ROWS

AMEDIAFORMAT_KEY_HAPTIC_CHANNEL_COUNT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_HAPTIC_CHANNEL_COUNT

AMEDIAFORMAT_KEY_HDR10_PLUS_INFO

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_HDR10_PLUS_INFO

AMEDIAFORMAT_KEY_HDR_STATIC_INFO

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_HDR_STATIC_INFO

AMEDIAFORMAT_KEY_HEIGHT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_HEIGHT

AMEDIAFORMAT_KEY_ICC_PROFILE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ICC_PROFILE

AMEDIAFORMAT_KEY_IMPORTANCE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_IMPORTANCE

AMEDIAFORMAT_KEY_INTRA_REFRESH_PERIOD

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_INTRA_REFRESH_PERIOD

AMEDIAFORMAT_KEY_IS_ADTS

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_IS_ADTS

AMEDIAFORMAT_KEY_IS_AUTOSELECT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_IS_AUTOSELECT

AMEDIAFORMAT_KEY_IS_DEFAULT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_IS_DEFAULT

AMEDIAFORMAT_KEY_IS_FORCED_SUBTITLE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_IS_FORCED_SUBTITLE

AMEDIAFORMAT_KEY_IS_SYNC_FRAME

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_IS_SYNC_FRAME

AMEDIAFORMAT_KEY_I_FRAME_INTERVAL

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_I_FRAME_INTERVAL

AMEDIAFORMAT_KEY_LANGUAGE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LANGUAGE

AMEDIAFORMAT_KEY_LAST_SAMPLE_INDEX_IN_CHUNK

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LAST_SAMPLE_INDEX_IN_CHUNK

AMEDIAFORMAT_KEY_LATENCY

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LATENCY

AMEDIAFORMAT_KEY_LEVEL

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LEVEL

AMEDIAFORMAT_KEY_LOCATION

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LOCATION

AMEDIAFORMAT_KEY_LOOP

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LOOP

AMEDIAFORMAT_KEY_LOW_LATENCY

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LOW_LATENCY

描述低延迟解码模式的可选键。

这是一个可选参数,仅适用于解码器。如果启用,解码器不会持有超出编解码器标准要求的输入和输出数据。关联的值是一个整数(0 或 1):启用低延迟解码时为 1,否则为 0。默认值为 0。

从 API level 30 开始可用。

AMEDIAFORMAT_KEY_LYRICIST

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_LYRICIST

AMEDIAFORMAT_KEY_MANUFACTURER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MANUFACTURER

AMEDIAFORMAT_KEY_MAX_BIT_RATE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MAX_BIT_RATE

AMEDIAFORMAT_KEY_MAX_B_FRAMES

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MAX_B_FRAMES

描述 I 帧或 P 帧之间 B 帧最大数量的键,由视频编码器使用。

语义与 android.media.MediaFormat#KEY_MAX_B_FRAMES 的语义匹配

AMEDIAFORMAT_KEY_MAX_FPS_TO_ENCODER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MAX_FPS_TO_ENCODER

AMEDIAFORMAT_KEY_MAX_HEIGHT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MAX_HEIGHT

AMEDIAFORMAT_KEY_MAX_INPUT_SIZE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MAX_INPUT_SIZE

AMEDIAFORMAT_KEY_MAX_PTS_GAP_TO_ENCODER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MAX_PTS_GAP_TO_ENCODER

AMEDIAFORMAT_KEY_MAX_WIDTH

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MAX_WIDTH

AMEDIAFORMAT_KEY_MIME

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MIME

AMEDIAFORMAT_KEY_MPEG2_STREAM_HEADER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MPEG2_STREAM_HEADER

AMEDIAFORMAT_KEY_MPEGH_COMPATIBLE_SETS

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MPEGH_COMPATIBLE_SETS

MPEG-H 音频配置文件和级别兼容性。

请参阅 ISO_IEC_23008-3;2019 MHAProfileAndLevelCompatibilitySetBox 的 FDAmd_2。

从 API level 32 开始可用。

AMEDIAFORMAT_KEY_MPEGH_PROFILE_LEVEL_INDICATION

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MPEGH_PROFILE_LEVEL_INDICATION

MPEG-H 音频配置文件级别指示。

请参阅 ISO_IEC_23008-3;2019 MHADecoderConfigurationRecord mpegh3daProfileLevelIndication。

从 API level 32 开始可用。

AMEDIAFORMAT_KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MPEGH_REFERENCE_CHANNEL_LAYOUT

MPEG-H 音频参考声道布局。

请参阅 ISO_IEC_23008-3;2019 MHADecoderConfigurationRecord referenceChannelLayout 和 ISO_IEC_23001‐8 ChannelConfiguration 值。

从 API level 32 开始可用。

AMEDIAFORMAT_KEY_MPEG_USER_DATA

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_MPEG_USER_DATA

AMEDIAFORMAT_KEY_OPERATING_RATE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_OPERATING_RATE

AMEDIAFORMAT_KEY_PCM_BIG_ENDIAN

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_PCM_BIG_ENDIAN

AMEDIAFORMAT_KEY_PCM_ENCODING

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_PCM_ENCODING

AMEDIAFORMAT_KEY_PICTURE_TYPE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_PICTURE_TYPE

AMEDIAFORMAT_KEY_PRIORITY

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_PRIORITY

AMEDIAFORMAT_KEY_PROFILE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_PROFILE

AMEDIAFORMAT_KEY_PSSH

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_PSSH

AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_PUSH_BLANK_BUFFERS_ON_STOP

AMEDIAFORMAT_KEY_REPEAT_PREVIOUS_FRAME_AFTER

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_REPEAT_PREVIOUS_FRAME_AFTER

AMEDIAFORMAT_KEY_ROTATION

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_ROTATION

AMEDIAFORMAT_KEY_SAMPLE_FILE_OFFSET

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SAMPLE_FILE_OFFSET

AMEDIAFORMAT_KEY_SAMPLE_RATE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SAMPLE_RATE

AMEDIAFORMAT_KEY_SAMPLE_TIME_BEFORE_APPEND

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SAMPLE_TIME_BEFORE_APPEND

AMEDIAFORMAT_KEY_SAR_HEIGHT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SAR_HEIGHT

AMEDIAFORMAT_KEY_SAR_WIDTH

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SAR_WIDTH

AMEDIAFORMAT_KEY_SEI

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SEI

AMEDIAFORMAT_KEY_SLICE_HEIGHT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SLICE_HEIGHT

AMEDIAFORMAT_KEY_SLOW_MOTION_MARKERS

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_SLOW_MOTION_MARKERS

AMEDIAFORMAT_KEY_STRIDE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_STRIDE

AMEDIAFORMAT_KEY_TARGET_TIME

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TARGET_TIME

AMEDIAFORMAT_KEY_TEMPORAL_LAYERING

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TEMPORAL_LAYERING

AMEDIAFORMAT_KEY_TEMPORAL_LAYER_COUNT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TEMPORAL_LAYER_COUNT

AMEDIAFORMAT_KEY_TEMPORAL_LAYER_ID

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TEMPORAL_LAYER_ID

AMEDIAFORMAT_KEY_TEXT_FORMAT_DATA

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TEXT_FORMAT_DATA

AMEDIAFORMAT_KEY_THUMBNAIL_CSD_AV1C

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_THUMBNAIL_CSD_AV1C

AMEDIAFORMAT_KEY_THUMBNAIL_CSD_HEVC

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_THUMBNAIL_CSD_HEVC

AMEDIAFORMAT_KEY_THUMBNAIL_HEIGHT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_THUMBNAIL_HEIGHT

AMEDIAFORMAT_KEY_THUMBNAIL_TIME

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_THUMBNAIL_TIME

AMEDIAFORMAT_KEY_THUMBNAIL_WIDTH

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_THUMBNAIL_WIDTH

AMEDIAFORMAT_KEY_TILE_HEIGHT

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TILE_HEIGHT

AMEDIAFORMAT_KEY_TILE_WIDTH

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TILE_WIDTH

AMEDIAFORMAT_KEY_TIME_US

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TIME_US

AMEDIAFORMAT_KEY_TITLE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TITLE

AMEDIAFORMAT_KEY_TRACK_ID

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TRACK_ID

AMEDIAFORMAT_KEY_TRACK_INDEX

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_TRACK_INDEX

AMEDIAFORMAT_KEY_VALID_SAMPLES

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_VALID_SAMPLES

AMEDIAFORMAT_KEY_VIDEO_ENCODING_STATISTICS_LEVEL

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_VIDEO_ENCODING_STATISTICS_LEVEL

AMEDIAFORMAT_KEY_VIDEO_QP_AVERAGE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_VIDEO_QP_AVERAGE

AMEDIAFORMAT_KEY_WIDTH

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_WIDTH

AMEDIAFORMAT_KEY_XMP_OFFSET

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_XMP_OFFSET

AMEDIAFORMAT_KEY_XMP_SIZE

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_XMP_SIZE

AMEDIAFORMAT_KEY_YEAR

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_KEY_YEAR

AMEDIAFORMAT_VIDEO_QP_B_MAX

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_B_MAX

AMEDIAFORMAT_VIDEO_QP_B_MIN

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_B_MIN

AMEDIAFORMAT_VIDEO_QP_I_MAX

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_I_MAX

AMEDIAFORMAT_VIDEO_QP_I_MIN

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_I_MIN

AMEDIAFORMAT_VIDEO_QP_MAX

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_MAX

AMEDIAFORMAT_VIDEO_QP_MIN

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_MIN

AMEDIAFORMAT_VIDEO_QP_P_MAX

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_P_MAX

AMEDIAFORMAT_VIDEO_QP_P_MIN

声明在 media/NdkMediaFormat.h
const char * AMEDIAFORMAT_VIDEO_QP_P_MIN

AMediaCodecInfo_FEATURE_AdaptivePlayback

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_AdaptivePlayback

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频解码器:编解码器支持无缝分辨率更改。

AMediaCodecInfo_FEATURE_DetachedSurface

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_DetachedSurface

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频解码器:编解码器在 Surface 模式下支持分离输出 Surface。如果为 true,则可以在没有实际 Surface 的情况下(在分离 Surface 模式下)配置编解码器。另请参阅:MediaCodec::CONFIGURE_FLAG_DETACHED_SURFACE

AMediaCodecInfo_FEATURE_DynamicColorAspects

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_DynamicColorAspects

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频解码器:编解码器支持动态更改颜色方面。

如果为 true,编解码器可以在解码期间传播颜色方面更改。这仅在会话边界处有意义,例如在新 IDR 之前处理图像参数集时。颜色方面可能来自位流,也可能通过使用 MediaCodec#setParameters 调用提供。

如果编解码器同时支持 8 位和 10 位配置文件,此功能表示编解码器可以动态地在 8 位和 10 位配置文件之间切换,但这仅限于 Surface 模式。

如果设备支持 HDR 传输功能,则还支持在 SDR 和 HDR 传输之间切换。结合上一条规定,这意味着在 Surface 模式下支持在 SDR 和 HDR 会话之间切换,因为 SDR 通常编码为 8 位,而 HDR 通常编码为 10 位。

AMediaCodecInfo_FEATURE_DynamicTimestamp

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_DynamicTimestamp

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

每个输出缓冲区的 timestamp 都源自生成该输出的输入缓冲区的 timestamp。如果为 false,则每个输出缓冲区的 timestamp 源自第一个输入缓冲区的 timestamp。

AMediaCodecInfo_FEATURE_EncodingStatistics

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_EncodingStatistics

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频编码器:编解码器支持导出编码统计信息。具有此功能的编码器可以向应用客户端提供关于帧的编码统计信息。编码统计信息的范围由 MediaFormat#KEY_VIDEO_ENCODING_STATISTICS_LEVEL 控制。

另请参阅:MediaFormat::KEY_VIDEO_ENCODING_STATISTICS_LEVEL

AMediaCodecInfo_FEATURE_FrameParsing

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_FrameParsing

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅解码器:编解码器支持每个输入缓冲区包含部分(包括多个)访问单元。

AMediaCodecInfo_FEATURE_HdrEditing

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_HdrEditing

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频编码器:编解码器支持 HDR 编辑。

HDR 编辑支持意味着编解码器接受 10 位 HDR 输入 Surface,并且能够在元数据不存在时从 YUV 和 RGB 输入生成所需的任何 HDR 元数据。此功能仅在使用支持 HDR 的配置文件(以及 10 位 HDR 输入)时有意义。

此功能意味着编解码器能够编码至少一种 HDR 格式,并且支持 RGBA_1010102 和 P010,以及可选的 RGBA_FP16 输入格式,并且编码器可以为所有支持的 HDR 输入格式生成 HDR 元数据。

AMediaCodecInfo_FEATURE_HlgEditing

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_HlgEditing

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频编码器:编解码器支持 HLG 编辑。

HLG 编辑支持意味着编解码器接受 YUV 和 RGB 像素格式的 10 位 HDR 输入 Surface。此功能仅在使用 10 位 (HLG) 配置文件和 10 位输入时有意义。

此功能意味着编解码器能够编码 10 位格式,并且支持 RGBA_1010102 和 P010,以及可选的 RGBA_FP16 输入格式。

此功能与 FEATURE_HdrEditing 之间的区别在于,HLG 不需要生成 HDR 元数据,并且不使用显式 HDR 配置文件。

AMediaCodecInfo_FEATURE_IntraRefresh

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_IntraRefresh

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频编码器:编解码器支持内部刷新。

AMediaCodecInfo_FEATURE_LowLatency

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_LowLatency

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅解码器:编解码器支持低延迟解码。如果支持,客户端可以为解码器启用低延迟模式。启用该模式后,解码器不会持有超出编解码器标准要求的输入和输出数据。

AMediaCodecInfo_FEATURE_MultipleFrames

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_MultipleFrames

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

编解码器支持多个访问单元(用于解码,或用于编码器输出)。如果为 false,则编解码器仅支持单个访问单元。为输出生成多个访问单元是一个可选功能。

AMediaCodecInfo_FEATURE_PartialFrame

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_PartialFrame

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频解码器:编解码器支持部分帧排队。

AMediaCodecInfo_FEATURE_QpBounds

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_QpBounds

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频编码器:编解码器支持量化参数范围。另请参阅:MediaFormat::KEY_VIDEO_QP_MAX 另请参阅:MediaFormat::KEY_VIDEO_QP_MIN

AMediaCodecInfo_FEATURE_Roi

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_Roi

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频编码器:编解码器支持感兴趣区域编码。

感兴趣区域编码支持意味着编解码器接受信息,该信息指定每个视频帧不同部分的相对重要性。这使得编码器能够将视频帧分成关键区域和非关键区域,并使用更多比特(更好的质量)表示关键区域,同时降低非关键区域的优先级。换句话说,编码器为关键部分选择负的 qp 偏差,为非关键部分选择零或正的 qp 偏差。

在基本层面,如果编码器决定使用统一量化值 'qpFrame' 对每个帧进行编码,并且为帧的 LCU 选择/建议了 'qpBias',那么 LCU 的实际 qp 将是 'qpFrame + qpBias',尽管该值可以根据当前编码会话的最小-最大配置 qp 界限进行限制。

在一个镜头中,如果一组 LCU 快速平移出画面,可以将它们标记为非关键区域,从而使编码器在编码期间分配更少的比特。相反,在画面中停留时间较长的 LCU 可以在一帧中以更好的质量进行编码,从而为所有未来帧建立优秀的长期参考。

请注意,通过偏移每个 LCU 的量化,总体比特分配将与最初估计的比特分配不同,编码器将调整后续帧的帧量化以达到比特率目标。有效选择关键区域可以建立一个“黄金参考”,这可以弥补由于以更好质量编码感兴趣区域而引入的比特负担。另一方面,无效选择关键区域可能会提高图像某些部分的质量,但这可能会损害后续帧的质量。

另请参阅:MediaCodec::PARAMETER_KEY_QP_OFFSET_MAP 另请参阅:MediaCodec::PARAMETER_KEY_QP_OFFSET_RECTS

AMediaCodecInfo_FEATURE_SecurePlayback

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_SecurePlayback

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频解码器:编解码器支持安全解密。

AMediaCodecInfo_FEATURE_TunneledPlayback

声明于 media/NdkMediaCodecInfo.h
const char *_Nonnull AMediaCodecInfo_FEATURE_TunneledPlayback

用于 AMediaCodecInfo_isFeature* 方法的特性常量。

仅视频或音频解码器:编解码器支持隧道回放。

函数

ACodecAudioCapabilities_getBitrateRange

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecAudioCapabilities_getBitrateRange(
  const ACodecAudioCapabilities *_Nonnull audioCaps,
  AIntRange *_Nonnull outRange
)

获取支持的码率范围,单位为比特/秒。

详情
参数
outRange
支持的比特率范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
audioCaps
outRange
无效。
返回值
如果成功获取比特率,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecAudioCapabilities_getInputChannelCountRanges

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecAudioCapabilities_getInputChannelCountRanges(
  const ACodecAudioCapabilities *_Nonnull audioCaps,
  const AIntRange *_Nullable *_Nonnull outArrayPtr,
  size_t *_Nonnull outCount
)

获取表示支持的输入声道数范围的数组。

编解码器支持在此范围内的任何输入声道数。对于许多编解码器,这将是单个范围 [1..N],其中 N 是某个值。

数组按升序排序,并且范围是不同的(不相交)。

详情
参数
outArrayPtr
指向输入声道范围输出数组的指针。该数组由框架拥有,具有无限生命周期。
outCount
输出数组的大小。
参数
audioCaps
返回值
如果成功获取输入声道数组,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecAudioCapabilities_getMaxInputChannelCount

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecAudioCapabilities_getMaxInputChannelCount(
  const ACodecAudioCapabilities *_Nonnull audioCaps
)

返回支持的最大输入声道数。

详情
参数
audioCaps
无效。
返回值
如果 audioCaps

ACodecAudioCapabilities_getMinInputChannelCount

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecAudioCapabilities_getMinInputChannelCount(
  const ACodecAudioCapabilities *_Nonnull audioCaps
)

返回支持的最小输入声道数。

这通常是 1,但对于某些 mime 类型会有所不同。

详情
参数
audioCaps
无效。
返回值
如果 audioCaps

ACodecAudioCapabilities_getSupportedSampleRateRanges

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecAudioCapabilities_getSupportedSampleRateRanges(
  const ACodecAudioCapabilities *_Nonnull audioCaps,
  const AIntRange *_Nullable *_Nonnull outArrayPtr,
  size_t *_Nonnull outCount
)

获取支持的采样率范围数组。

数组按升序排序,并且范围是不同的(不相交)。

详情
参数
outArrayPtr
指向输出采样率范围数组的指针。该数组由框架拥有,具有无限生命周期。
outCount
输出数组的大小。
参数
audioCaps
返回值
如果成功获取采样率范围,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecAudioCapabilities_getSupportedSampleRates

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecAudioCapabilities_getSupportedSampleRates(
  const ACodecAudioCapabilities *_Nonnull audioCaps,
  const int *_Nullable *_Nonnull outArrayPtr,
  size_t *_Nonnull outCount
)

获取支持的采样率数组。

数组按升序排序。

详情
参数
outArrayPtr
指向输出采样率数组的指针。该数组由框架拥有,具有无限生命周期。
outCount
输出数组的大小。
参数
audioCaps
返回值
如果编解码器仅支持离散值,则返回 AMEDIA_OK。否则,返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果以下任何一个 audioCapsoutRange

ACodecAudioCapabilities_isSampleRateSupported

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecAudioCapabilities_isSampleRateSupported(
  const ACodecAudioCapabilities *_Nonnull audioCaps,
  int32_t sampleRate
)

查询编解码器是否支持该采样率。

详情
参数
audioCaps
无效。
返回值
如果支持采样率,则返回 1。
返回值
如果不支持采样率,则返回 0。
返回值
如果 audioCaps

ACodecEncoderCapabilities_getComplexityRange

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecEncoderCapabilities_getComplexityRange(
  const ACodecEncoderCapabilities *_Nonnull encoderCaps,
  AIntRange *_Nonnull outRange
)

获取支持的编码器复杂度值范围。

一些编解码器可能支持多个复杂度级别,其中较高的复杂度值使用更多的编码工具(例如执行更密集的计算)来提高质量或压缩比。使用较低的值可以节省功耗和/或时间。

详情
参数
outRange
指向编码器复杂度值范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取复杂度范围,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecEncoderCapabilities_getQualityRange

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecEncoderCapabilities_getQualityRange(
  const ACodecEncoderCapabilities *_Nonnull encoderCaps,
  AIntRange *_Nonnull outRange
)

获取支持的质量值范围。

质量是实现特定的。通常,较高的质量设置会带来更好的图像质量和较低的压缩比。

详情
参数
outRange
指向质量值范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取质量范围,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecEncoderCapabilities_isBitrateModeSupported

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecEncoderCapabilities_isBitrateModeSupported(
  const ACodecEncoderCapabilities *_Nonnull encoderCaps,
  ABitrateMode mode
)

查询是否支持某种码率模式。

详情
参数
encoderCaps
无效。
返回值
如果支持比特率模式,则返回 1。
返回值
如果不支持比特率模式,则返回 0。
返回值
如果 audioCaps

ACodecPerformancePoint_covers

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecPerformancePoint_covers(
  const ACodecPerformancePoint *_Nonnull one,
  const ACodecPerformancePoint *_Nonnull another
)

检查一个性能点是否覆盖另一个性能点。

使用此方法确定编解码器宣称的性能点是否涵盖所需的性能点。此方法也可用作宽松排序,因为此方法是可传递的。

性能点表示一个上限。这意味着它涵盖所有像素数、像素率和帧率较低的性能点。

详情
参数
一个
覆盖
另一个。
参数
一个
不覆盖
另一个。
参数
一个
另一个
无效。
返回值
如果 one
返回值
如果 one
返回值
如果 audioCaps

ACodecPerformancePoint_coversFormat

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecPerformancePoint_coversFormat(
  const ACodecPerformancePoint *_Nonnull performancePoint,
  const AMediaFormat *_Nonnull format
)

检查性能点是否覆盖某种媒体格式。

详情
参数
format
考虑的流格式。
参数
performancePoint
format
无效。
返回值
如果性能点涵盖该格式,则返回 1。
返回值
如果性能点不涵盖该格式,则返回 0。
返回值
如果 audioCaps

ACodecPerformancePoint_create

声明于 media/NdkMediaCodecInfo.h
ACodecPerformancePoint *_Nonnull ACodecPerformancePoint_create(
  int32_t width,
  int32_t height,
  int32_t frameRate
)

为给定的帧尺寸和帧率创建一个性能点。

视频性能点是由像素数、像素率和帧率定义的一组标准性能点。性能点表示一个上限。这意味着它涵盖所有像素数、像素率和帧率较低的性能点。

使用后,用户负责调用 ACodecPerformancePoint_destroy(ACodecPerformancePoint *performancePoint)。

详情
参数
width
帧的宽度(以像素为单位)
height
帧的高度(以像素为单位)
frameRate
帧率(每秒帧数)

ACodecPerformancePoint_destroy

声明于 media/NdkMediaCodecInfo.h
void ACodecPerformancePoint_destroy(
  ACodecPerformancePoint *_Nullable performancePoint
)

删除已创建的性能点。

ACodecPerformancePoint_equals

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecPerformancePoint_equals(
  const ACodecPerformancePoint *_Nonnull one,
  const ACodecPerformancePoint *_Nonnull another
)

检查两个性能点是否相等。

详情
参数
一个
另一个
相等。
参数
一个
另一个
不相等。
参数
一个
另一个
无效。
返回值
如果 one
返回值
如果 one
返回值
如果 audioCaps

ACodecVideoCapabilities_areSizeAndRateSupported

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecVideoCapabilities_areSizeAndRateSupported(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  int32_t width,
  int32_t height,
  double frameRate
)

获取是否支持给定的视频尺寸和帧率组合。

详情
参数
videoCaps
无效。
返回值
如果支持尺寸和速率,则返回 1。
返回值
如果不支持,则返回 0。
返回值
如果 audioCaps

ACodecVideoCapabilities_getAchievableFrameRatesFor

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getAchievableFrameRatesFor(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  int32_t width,
  int32_t height,
  ADoubleRange *_Nonnull outRange
)

获取给定视频尺寸的可达视频帧率范围。

这基于制造商对此设备和编解码器的性能测量。并非所有编解码器或设备都可能提供测量数据。

详情
参数
outRange
指向帧率范围的指针。用户负责分配有效的 ADoubleRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取可实现的视频帧率,则返回 AMEDIA_OK。
返回值
如果编解码器未发布任何测量数据,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getBitrateRange

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getBitrateRange(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  AIntRange *_Nonnull outRange
)

获取支持的码率范围,单位为比特/秒。

详情
参数
outRange
指向输出比特率范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取支持的比特率,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getHeightAlignment

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecVideoCapabilities_getHeightAlignment(
  const ACodecVideoCapabilities *_Nonnull videoCaps
)

返回视频高度(像素)的对齐要求。

这是一个 2 的幂值,视频高度必须是它的倍数。

详情
参数
videoCaps
无效。
返回值
如果 audioCaps

ACodecVideoCapabilities_getNextSupportedPerformancePoint

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getNextSupportedPerformancePoint(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  const ACodecPerformancePoint *_Nullable *_Nonnull outPerformancePoint
)

获取支持的性能点。

此 API 按顺序返回支持的性能点,并将其存储在 outPerformancePoint 指针处。最初,将 outPerformancePoint 指向的指针设置为 NULL。后续调用时,保留上次的指针值。当序列结束时,将返回 AMEDIA_ERROR_UNSUPPORTED 并且指针将被设置为 NULL。

详情
参数
outPerformancePoint
指向(ACodecPerformancePoint 指针)的指针,下一个性能点将存储在此处。ACodecPerformancePoint 对象由框架拥有,具有无限生命周期。
参数
videoCaps
outPerformancePoint
无效。
返回值
如果成功获取性能点,则返回 AMEDIA_OK。
返回值
如果 videoCapsoutPerformancePoint
返回值
如果没有更多支持的性能点,则返回 AMEDIA_ERROR_UNSUPPORTED。在这种情况下,*outPerformancePoint 也将被设置为 NULL。

ACodecVideoCapabilities_getSupportedFrameRates

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedFrameRates(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  AIntRange *_Nonnull outRange
)

获取支持的帧率范围。

这不是性能指标。相反,它表示编码标准中指定的限制,基于以特定帧率编码供稍后回放的材料或非实时解码此类材料的复杂性。

详情
参数
outRange
指向输出支持的帧率范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取帧率范围,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getSupportedFrameRatesFor

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedFrameRatesFor(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  int32_t width,
  int32_t height,
  ADoubleRange *_Nonnull outRange
)

获取给定视频尺寸的支持视频帧率范围。

这不是性能指标。相反,它表示编码标准中指定的限制,基于以特定帧率编码特定大小材料供稍后回放或非实时解码此类材料的复杂性。

详情
参数
outRange
指向帧率范围的指针。用户负责分配有效的 ADoubleRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取支持的视频帧率,则返回 AMEDIA_OK。
返回值
如果不支持尺寸查询,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getSupportedHeights

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedHeights(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  AIntRange *_Nonnull outRange
)

获取支持的视频高度范围。

详情
参数
outRange
指向输出支持的高度范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取支持的视频高度,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getSupportedHeightsFor

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedHeightsFor(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  int32_t width,
  AIntRange *_Nonnull outRange
)

获取给定视频宽度的支持视频高度范围。

详情
参数
outRange
指向支持的高度范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取支持的视频高度范围,则返回 AMEDIA_OK。
返回值
如果不支持宽度查询,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getSupportedWidths

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedWidths(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  AIntRange *_Nonnull outRange
)

获取支持的视频宽度范围。

详情
参数
outRange
指向输出支持的宽度范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取支持的视频宽度,则返回 AMEDIA_OK。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getSupportedWidthsFor

声明于 media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedWidthsFor(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  int32_t height,
  AIntRange *_Nonnull outRange
)

获取给定视频高度的支持视频宽度范围。

详情
参数
outRange
指向支持的宽度范围的指针。用户负责分配有效的 AIntRange 结构并管理其生命周期。
参数
videoCaps
outRange
无效。
返回值
如果成功获取支持的视频宽度范围,则返回 AMEDIA_OK。
返回值
如果不支持高度查询,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果以下任何一个 audioCapsoutRange

ACodecVideoCapabilities_getWidthAlignment

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecVideoCapabilities_getWidthAlignment(
  const ACodecVideoCapabilities *_Nonnull videoCaps
)

获取视频宽度(像素)的对齐要求。

这是一个 2 的幂值,视频宽度必须是它的倍数。

详情
参数
videoCaps
无效。
返回值
如果 audioCaps

ACodecVideoCapabilities_isSizeSupported

声明于 media/NdkMediaCodecInfo.h
int32_t ACodecVideoCapabilities_isSizeSupported(
  const ACodecVideoCapabilities *_Nonnull videoCaps,
  int32_t width,
  int32_t height
)

获取是否支持给定的视频尺寸。

详情
参数
videoCaps
无效。
返回值
如果支持该尺寸,则返回 1。
返回值
如果不支持该尺寸,则返回 0。
返回值
如果 audioCaps

AImageReader_acquireLatestImage

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_acquireLatestImage(
  AImageReader *reader,
  AImage **image
)

从图像读取器队列中获取最新的 AImage,丢弃旧图像。

此操作将从图像读取器获取所有可能的图像,但会 AImage_delete 所有非最新图像。建议在大多数用例中使用此函数,而不是 AImageReader_acquireNextImage,因为它更适合实时处理。

请注意,要使 AImageReader_acquireLatestImageAImageReader_acquireNextImage 有所不同,maxImages 应至少为 2 - 丢弃除最新 AImage 以外的所有图像需要临时一次获取两个 AImage。或者更一般地说,调用 AImageReader_acquireLatestImage 时,如果预留的图像少于两张(即 maxImages - currentAcquiredImages < 2),则不会按预期丢弃图像。

如果已使用 AImageReader_acquireNextImageAImageReader_acquireLatestImage 获取了 maxImages,则此方法将失败。特别是,连续调用 AImageReader_acquireNextImageAImageReader_acquireLatestImage 的次数大于 maxImages 且其间未调用 AImage_delete,将耗尽底层队列。此时,将返回 AMEDIA_IMGREADER_MAX_IMAGES_ACQUIRED,直到使用 AImage_delete 释放更多图像。

从 API level 24 开始可用。

另请参阅: AImageReader_acquireNextImage

详情
参数
reader
所需的图像读取器。
image
如果方法调用成功,获取到的 AImage 将填充到此处。
返回值

AImageReader_acquireLatestImageAsync

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_acquireLatestImageAsync(
  AImageReader *reader,
  AImage **image,
  int *acquireFenceFd
)

从图像读取器队列中异步获取最新的 AImage,丢弃旧图像。

AImageReader 获取方法,类似于 AImageReader_acquireLatestImage,它接收一个额外的同步栅栏参数。所有其他参数和返回值与传递给 AImageReader_acquireLatestImage 的参数和返回值相同。

从 API level 26 开始可用。

另请参阅:sync.h另请参阅:sync_get_fence_info

详情
参数
acquireFenceFd
sync.h 中定义的同步栅栏文件描述符,用于指示缓冲区何时准备好使用。如果不需要同步栅栏,fence 将被设置为 -1,并且返回的 AImage 可立即使用。否则,用户应使用诸如 poll()epoll()select() 等系统调用等待栅栏文件描述符改变状态,然后再尝试访问返回的 AImage

AImageReader_acquireNextImage

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_acquireNextImage(
  AImageReader *reader,
  AImage **image
)

从图像读取器队列中获取下一个 AImage

警告:考虑使用 AImageReader_acquireLatestImage 代替,因为它会自动释放较旧的图像,并允许运行较慢的处理程序追赶到最新的帧。推荐将 AImageReader_acquireNextImage 用于批量/后台处理。不正确地使用此方法可能导致图像出现不断增加的延迟,随后完全停顿,似乎没有新图像出现。

如果已使用 AImageReader_acquireNextImageAImageReader_acquireLatestImage 获取了 maxImages,则此方法将失败。特别是,连续调用 AImageReader_acquireNextImageAImageReader_acquireLatestImage 的次数大于 maxImages 且其间未调用 AImage_delete,将耗尽底层队列。此时,将返回 AMEDIA_IMGREADER_MAX_IMAGES_ACQUIRED,直到使用 AImage_delete 释放更多图像。

从 API level 24 开始可用。

另请参阅: AImageReader_acquireLatestImage

详情
参数
reader
所需的图像读取器。
image
如果方法调用成功,获取到的 AImage 将填充到此处。
返回值

AImageReader_acquireNextImageAsync

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_acquireNextImageAsync(
  AImageReader *reader,
  AImage **image,
  int *acquireFenceFd
)

从图像读取器队列中异步获取下一个 AImage

AImageReader 获取方法,类似于 AImageReader_acquireNextImage,它接收一个额外的同步栅栏参数。所有其他参数和返回值与传递给 AImageReader_acquireNextImage 的参数和返回值相同。

从 API level 26 开始可用。

另请参阅:sync.h另请参阅:sync_get_fence_info

详情
参数
acquireFenceFd
sync.h 中定义的同步栅栏文件描述符,用于指示缓冲区何时准备好使用。如果不需要同步栅栏,fence 将被设置为 -1,并且返回的 AImage 可立即使用。否则,用户应使用诸如 poll()epoll()select() 等系统调用等待栅栏文件描述符改变状态,然后再尝试访问返回的 AImage

AImageReader_delete

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
void AImageReader_delete(
  AImageReader *reader
)

删除一个 AImageReader,并将该读取器生成的所有图像返回给系统。

此方法返回后,请勿使用 image 指针。请注意,如果父 AImageReader 已关闭,则从父读取器获取的所有 AImage 对象都将返回给系统。除此方法外,所有 AImage_* 方法都将返回 AMEDIA_ERROR_INVALID_OBJECT。应用程序仍需对这些 AImage 对象调用此方法,以完全从内存中删除 AImage 对象。

从 API level 24 开始可用。

详情
参数
reader
要删除的图像读取器。

AImageReader_getFormat

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_getFormat(
  const AImageReader *reader,
  int32_t *format
)

查询此读取器生成的 AImage 的格式。

从 API level 24 开始可用。

详情
参数
reader
所需的图像读取器。
format
如果方法调用成功,读取器的 format 将填充到此处。该值将是 NdkImage.h 中定义的 AIMAGE_FORMAT_* 枚举值之一。
返回值

AImageReader_getHeight

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_getHeight(
  const AImageReader *reader,
  int32_t *height
)

查询此读取器生成的 AImage 的默认高度(像素)。

生产者向此读取器的 ANativeWindow 发送缓冲区时,可以覆盖高度。如果发生这种情况,可以使用 AImage_getHeight 查找图像的实际高度。

从 API level 24 开始可用。

详情
参数
reader
所需的图像读取器。
height
如果方法调用成功,读取器的默认高度将填充到此处。
返回值

AImageReader_getMaxImages

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_getMaxImages(
  const AImageReader *reader,
  int32_t *maxImages
)

查询此读取器同时获取的 AImage 的最大数量。

从 API level 24 开始可用。

详情
参数
reader
所需的图像读取器。
maxImages
如果方法调用成功,读取器可同时获取的最大图像数量将填充到此处。
返回值

AImageReader_getWidth

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_getWidth(
  const AImageReader *reader,
  int32_t *width
)

查询此读取器生成的 AImage 的默认宽度(像素)。

生产者向此读取器的 ANativeWindow 发送缓冲区时,可以覆盖宽度。如果发生这种情况,可以使用 AImage_getWidth 查找图像的实际宽度。

从 API level 24 开始可用。

详情
参数
reader
所需的图像读取器。
width
如果方法调用成功,读取器的默认宽度将填充到此处。
返回值

AImageReader_getWindow

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_getWindow(
  AImageReader *reader,
  ANativeWindow **window
)

获取一个 ANativeWindow,可用于为此图像读取器生成 AImage

从 API level 24 开始可用。

详情
参数
reader
所需的图像读取器。
window
如果方法调用成功,输出 ANativeWindow 将填充到此处。ANativeWindow 由此图像读取器管理。请勿对其调用 ANativeWindow_release。而应使用 AImageReader_delete
返回值

AImageReader_getWindowNativeHandle

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_getWindowNativeHandle(
  AImageReader *reader,
  native_handle_t **handle
)

AImageReader_new

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_new(
  int32_t width,
  int32_t height,
  int32_t format,
  int32_t maxImages,
  AImageReader **reader
)

为所需尺寸和格式的图像创建一个新的读取器。

maxImages 参数确定可以从 AImageReader 同时获取的最大 AImage 对象数量。请求更多缓冲区会占用更多内存,因此重要的是仅使用用例所需的最小数量。

有效尺寸和格式取决于图像数据的来源。

从 API level 24 开始可用。

另请参阅: AImage

详情
参数
width
此读取器将生成的图像的默认宽度(以像素为单位)。
height
此读取器将生成的图像的默认高度(以像素为单位)。
format
此读取器将生成的图像的格式。这必须是 AIMAGE_FORMATS 中定义的 AIMAGE_FORMAT_* 枚举值之一。请注意,并非所有格式都受支持。例如 AIMAGE_FORMAT_PRIVATE 就不支持,因为它不应由应用程序直接读取。API 26 中引入的 AImageReader_newWithUsage 支持该格式。
maxImages
用户希望同时访问的最大图像数量。此值应尽可能小,以限制内存使用。一旦用户获得了 maxImages 数量的图像,必须先释放其中一个,才能通过 AImageReader_acquireLatestImageAImageReader_acquireNextImage 获取新的 AImage。必须大于 0。
reader
如果方法调用成功,创建的图像读取器将填充到此处。
返回值

AImageReader_newWithDataSpace

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_newWithDataSpace(
  int32_t width,
  int32_t height,
  uint64_t usage,
  int32_t maxImages,
  uint32_t hardwareBufferFormat,
  int32_t dataSpace,
  AImageReader **reader
)

AImageReader 构造函数,类似于 AImageReader_newWithUsage,接受两个额外参数来构建图像格式。

所有其他参数和返回值与传递给 AImageReader_newWithUsage 的参数和返回值相同。

代替传递 format

format 
参数,此构造函数接受 hardwareBufferFormatdataSpace
hardwareBufferFormat 
dataSpace 
的组合,用于指定读取器将生成的图像格式。

从 API level 34 开始可用。

另请参阅: AImageReader_newWithUsage

详情
参数
width
此读取器将生成的图像的默认宽度(以像素为单位)。
height
此读取器将生成的图像的默认高度(以像素为单位)。
usage
指定消费者将如何访问 AImage。有关更多详细信息,请参阅 AImageReader_newWithUsage 参数说明。
maxImages
用户希望同时访问的最大图像数量。有关更多详细信息,请参阅 AImageReader_newWithUsage 参数说明。
hardwareBufferFormat
生产者传递的硬件缓冲区格式。这必须是 hardware_buffer.h 中定义的 AHARDWAREBUFFER_FORMAT_* 枚举值之一。
dataSpace
生产者传递的图像的数据空间。这必须是 ADataSpace 中定义的 ADATASPACE_* 枚举值之一。
reader
如果方法调用成功,创建的图像读取器将填充到此处。
返回值
  • 如果方法调用成功,则返回 AMEDIA_OK
  • 如果 reader 为 NULL,或者 width、height、maxImages、hardwareBufferFormat 或 dataSpace 参数中有一个或多个不受支持,则返回 AMEDIA_ERROR_INVALID_PARAMETER
  • 如果由于其他原因方法失败,则返回 AMEDIA_ERROR_UNKNOWN

AImageReader_newWithUsage

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_newWithUsage(
  int32_t width,
  int32_t height,
  int32_t format,
  uint64_t usage,
  int32_t maxImages,
  AImageReader **reader
)

AImageReader 构造函数,类似于 AImageReader_new,接受一个额外的参数用于消费者使用情况。

所有其他参数和返回值与传递给 AImageReader_new 的参数和返回值相同。

如果 formatAIMAGE_FORMAT_PRIVATE,则创建的 AImageReader 将生成应用程序无法直接访问其内容的图像。应用程序仍然可以从此 AImageReader 获取图像,并通过 AImage_getHardwareBuffer() 访问 AHardwareBuffer。通过这种方式获得的 AHardwareBuffer 可以随后传递回硬件(例如 GPU 或支持的硬件编码器)进行进一步处理。例如,您可以使用 eglGetNativeClientBufferANDROID 扩展从 AHardwareBuffer 获取 EGLClientBuffer,并将该 EGLClientBuffer 传递给 eglCreateImageKHR 创建 EGLImage 资源类型,然后可以在支持的设备上通过 glEGLImageTargetTexture2DOES 将其绑定到纹理。这对于传输可能在进程之间共享的纹理很有用。

通常,当不需要软件访问图像数据时,使用 AIMAGE_FORMAT_PRIVATE 格式创建的 AImageReader 比使用其他格式(例如 AIMAGE_FORMAT_YUV_420_888)的 AImageReader 更高效。

请注意,并非所有格式和使用标志组合都受 AImageReader 支持,特别是如果 formatAIMAGE_FORMAT_PRIVATE,则 usage 不得包含 AHARDWAREBUFFER_USAGE_CPU_READ_RARELYAHARDWAREBUFFER_USAGE_CPU_READ_OFTEN

请注意,并非所有格式和使用标志组合都受 AImageReader 支持。以下是 AImageReader 支持的组合:

格式 兼容的使用标志
NdkImage.h 中定义的非 AIMAGE_FORMAT_PRIVATE 格式。 AHARDWAREBUFFER_USAGE_CPU_READ_RARELYAHARDWAREBUFFER_USAGE_CPU_READ_OFTEN
AIMAGE_FORMAT_RGBA_8888 AHARDWAREBUFFER_USAGE_VIDEO_ENCODEAHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE,或组合。

详情
参数
width
此读取器将生成的图像的默认宽度(以像素为单位)。
height
此读取器将生成的图像的默认高度(以像素为单位)。
format
此读取器将生成的图像格式。这必须是 AIMAGE_FORMATS 中定义的 AIMAGE_FORMAT_* 枚举值之一。
usage
指定消费者将如何访问 AImage,使用 hardware_buffer.h 中描述的 AHARDWAREBUFFER_USAGE 标志的组合。传递 AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN 等同于调用 AImageReader_new 并使用相同的参数。

从 API level 26 开始可用。

另请参阅: AImage 另请参阅: AImageReader_new 另请参阅: AHardwareBuffer

详情
返回值

AImageReader_setBufferRemovedListener

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_setBufferRemovedListener(
  AImageReader *reader,
  AImageReader_BufferRemovedListener *listener
)

设置此图像读取器的 onBufferRemoved 监听器。

请注意,调用此方法将替换之前注册的监听器。

从 API level 26 开始可用。

另请参阅: AImage_getHardwareBuffer

详情
参数
reader
所需的图像读取器。
listener
要注册的 AImageReader_BufferRemovedListener。如果应用程序不再需要监听缓冲区移除事件,请将其设置为 NULL。
返回值

AImageReader_setImageListener

请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。
media_status_t AImageReader_setImageListener(
  AImageReader *reader,
  AImageReader_ImageListener *listener
)

设置此图像读取器的 onImageAvailable 监听器。

调用此方法将替换之前注册的监听器。

从 API level 24 开始可用。

详情
参数
reader
所需的图像读取器。
listener
要注册的 AImageReader_ImageListener。如果应用程序不再需要监听新图像,请将其设置为 NULL。
返回值

AImage_delete

声明于 media/NdkImage.h
void AImage_delete(
  AImage *image
)

将图像返回给系统并从内存中删除 AImage 对象。

此方法返回后,请勿使用 image 指针。请注意,如果父 AImageReader 已关闭,则从父读取器获取的所有 AImage 对象都将返回给系统。除此方法外,所有 AImage_* 方法都将返回 AMEDIA_ERROR_INVALID_OBJECT。应用程序仍需对这些 AImage 对象调用此方法,以完全从内存中删除 AImage 对象对象。

从 API level 24 开始可用。

详情
参数
image
要删除的 AImage

AImage_deleteAsync

声明于 media/NdkImage.h
void AImage_deleteAsync(
  AImage *image,
  int releaseFenceFd
)

将图像异步返回给系统并从内存中删除 AImage 对象。

类似于 AImage_delete,此方法返回后,请勿使用 image 指针。但是,调用方仍可以保留从该图像返回的 AHardwareBuffer,并使用 releaseFenceFd 通知将硬件缓冲区释放回 AImageReader 的队列。

从 API level 26 开始可用。

另请参阅: sync.h

详情
参数
image
要删除的 AImage
releaseFenceFd
sync.h 中定义的同步栅栏文件描述符,用于指示底层 AHardwareBuffer 的释放。

AImage_getCropRect

声明于 media/NdkImage.h
media_status_t AImage_getCropRect(
  const AImage *image,
  AImageCropRect *rect
)

查询输入 AImage 的裁剪矩形。

裁剪矩形指定图像中有效像素的区域,使用最大分辨率平面中的坐标。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
rect
如果方法调用成功,图像的裁剪矩形将填充到此处。
返回值

AImage_getDataSpace

声明于 media/NdkImage.h
media_status_t AImage_getDataSpace(
  const AImage *image,
  int32_t *dataSpace
)

查询输入 AImage 的数据空间。

从 API level 34 开始可用。

详情
参数
image
所需的 AImage
dataSpace
如果方法调用成功,图像的 dataspace 将填充到此处。这必须是 ADataSpace 中定义的 ADATASPACE_* 枚举值之一。
返回值

AImage_getFormat

声明于 media/NdkImage.h
media_status_t AImage_getFormat(
  const AImage *image,
  int32_t *format
)

查询输入 AImage 的格式。

format 值将是 AIMAGE_FORMAT_* 枚举值之一。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
format
如果方法调用成功,图像的 format 将填充到此处。
返回值

AImage_getHardwareBuffer

声明于 media/NdkImage.h
media_status_t AImage_getHardwareBuffer(
  const AImage *image,
  AHardwareBuffer **buffer
)

获取输入图像的硬件缓冲区句柄,用于 GPU 和/或硬件访问。

请注意,不会自动获取返回的 AHardwareBuffer 句柄的引用。一旦 AImage 或父 AImageReader 被删除,之前从 AImage_getHardwareBuffer 获取的 AHardwareBuffer 句柄将变为无效。

如果调用方在 AImage 或父 AImageReader 被删除后需要保留对 AHardwareBuffer 句柄的引用,它必须调用 AHardwareBuffer_acquire 以获取额外引用,并在使用完成后调用 AHardwareBuffer_release 以正确释放由 AHardwareBuffer 管理的底层内存。如果调用方已获取从此函数返回的 AHardwareBuffer 的额外引用,它还必须使用函数 AImageReader_setBufferRemovedListener 注册一个监听器,以便在 AImageReader 不再使用缓冲区时接收通知。

从 API level 26 开始可用。

另请参阅: AImageReader_ImageCallback

详情
参数
image
所需的 AImage
buffer
buffer 指向的内存区域将包含获取到的 AHardwareBuffer 句柄。
返回值

AImage_getHeight

声明于 media/NdkImage.h
media_status_t AImage_getHeight(
  const AImage *image,
  int32_t *height
)

查询输入 AImage 的高度。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
height
如果方法调用成功,图像的 height 将填充到此处。
返回值

AImage_getNumberOfPlanes

声明于 media/NdkImage.h
media_status_t AImage_getNumberOfPlanes(
  const AImage *image,
  int32_t *numPlanes
)

查询输入 AImage 的平面数量。

一个 AImage 的平面数量由其格式确定,可以使用 AImage_getFormat 方法查询。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
numPlanes
如果方法调用成功,图像的平面数量将填充到此处。
返回值

AImage_getPlaneData

声明于 media/NdkImage.h
media_status_t AImage_getPlaneData(
  const AImage *image,
  int planeIdx,
  uint8_t **data,
  int *dataLength
)

获取输入图像的数据指针,用于应用直接访问。

请注意,一旦 AImage 或父 AImageReader 被删除,之前 AImage_getPlaneData 调用获取的数据指针将变为无效。在 AImage 或父 AImageReader 被删除后,请勿使用它。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
planeIdx
平面的索引。必须小于输入图像的平面数量。
data
如果方法调用成功,图像的数据指针将填充到此处。
dataLength
如果方法调用成功,数据的有效长度将填充到此处。
返回值

AImage_getPlanePixelStride

声明于 media/NdkImage.h
media_status_t AImage_getPlanePixelStride(
  const AImage *image,
  int planeIdx,
  int32_t *pixelStride
)

查询输入 AImage 的像素步长。

这是像素行中两个连续像素值之间的距离。它可能大于单个像素的大小,以便考虑交错图像数据或填充格式。请注意,对于某些格式(例如 AIMAGE_FORMAT_RAW_PRIVATE),像素步长是未定义的,对此类格式的图像调用此方法将导致返回 AMEDIA_ERROR_UNSUPPORTED。对于明确定义像素步长的格式,像素步长始终大于 0。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
planeIdx
平面的索引。必须小于输入图像的平面数量。
pixelStride
如果方法调用成功,图像的像素步长将填充到此处。
返回值

AImage_getPlaneRowStride

声明于 media/NdkImage.h
media_status_t AImage_getPlaneRowStride(
  const AImage *image,
  int planeIdx,
  int32_t *rowStride
)

查询输入 AImage 的行步长。

这是图像中两个连续像素行起点之间的距离。请注意,对于某些格式(例如 AIMAGE_FORMAT_RAW_PRIVATE),行步长是未定义的,对此类格式的图像调用此方法将导致返回 AMEDIA_ERROR_UNSUPPORTED。对于明确定义行步长的格式,行步长始终大于 0。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
planeIdx
平面的索引。必须小于输入图像的平面数量。
rowStride
如果方法调用成功,图像的行步长将填充到此处。
返回值

AImage_getTimestamp

声明于 media/NdkImage.h
media_status_t AImage_getTimestamp(
  const AImage *image,
  int64_t *timestampNs
)

查询输入 AImage 的时间戳。

timestamp 以纳秒为单位测量,通常是单调递增的。来自不同来源的图像的 timestamp 可能具有不同的时基,因此可能无法比较。timestamp 的具体含义和时基取决于提供图像的来源。对于相机生成的图像,timestamp 值将与 ACAMERA_SENSOR_TIMESTAMP 回调中 ACameraMetadataACameraCaptureSession_captureCallbacks#onCaptureStartedACameraCaptureSession_captureCallbacks#onCaptureCompleted 匹配。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
timestampNs
如果方法调用成功,图像的 timestamp 将填充到此处。
返回值

AImage_getWidth

声明于 media/NdkImage.h
media_status_t AImage_getWidth(
  const AImage *image,
  int32_t *width
)

查询输入 AImage 的宽度。

从 API level 24 开始可用。

详情
参数
image
所需的 AImage
width
如果方法调用成功,图像的 width 将填充到此处。
返回值

AMediaCodecActionCode_isRecoverable

声明于 media/NdkMediaCodec.h
bool AMediaCodecActionCode_isRecoverable(
  int32_t actionCode
)

如果编解码器无法继续,但可以通过停止、配置并再次启动来恢复,则返回 true。

自 API level 28 开始可用。

AMediaCodecActionCode_isTransient

声明于 media/NdkMediaCodec.h
bool AMediaCodecActionCode_isTransient(
  int32_t actionCode
)

如果编解码器错误是瞬时问题,可能是由于资源限制,并且该方法(或编码/解码)可以在以后重试,则返回 true。

自 API level 28 开始可用。

AMediaCodecCryptoInfo_delete

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodecCryptoInfo_delete(
  AMediaCodecCryptoInfo *
)

删除之前使用 AMediaCodecCryptoInfo_new 创建或从 AMediaExtractor 获取的 AMediaCodecCryptoInfo。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_getClearBytes

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodecCryptoInfo_getClearBytes(
  AMediaCodecCryptoInfo *,
  size_t *dst
)

每个子样本中前导未加密字节的数量。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_getEncryptedBytes

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodecCryptoInfo_getEncryptedBytes(
  AMediaCodecCryptoInfo *,
  size_t *dst
)

每个子样本中尾部加密字节的数量。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_getIV

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodecCryptoInfo_getIV(
  AMediaCodecCryptoInfo *,
  uint8_t *dst
)

一个 16 字节的初始化向量。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_getKey

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodecCryptoInfo_getKey(
  AMediaCodecCryptoInfo *,
  uint8_t *dst
)

一个 16 字节的不透明密钥。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_getMode

声明于 media/NdkMediaCodec.h
cryptoinfo_mode_t AMediaCodecCryptoInfo_getMode(
  AMediaCodecCryptoInfo *
)

已应用的加密类型,为 AMEDIACODECRYPTOINFO_MODE_CLEAR 或 AMEDIACODECRYPTOINFO_MODE_AES_CTR 之一。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_getNumSubSamples

声明于 media/NdkMediaCodec.h
size_t AMediaCodecCryptoInfo_getNumSubSamples(
  AMediaCodecCryptoInfo *
)

构成缓冲区内容的子样本数量。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_new

声明于 media/NdkMediaCodec.h
AMediaCodecCryptoInfo * AMediaCodecCryptoInfo_new(
  int numsubsamples,
  uint8_t key[16],
  uint8_t iv[16],
  cryptoinfo_mode_t mode,
  size_t *clearbytes,
  size_t *encryptedbytes
)

从头开始创建一个 AMediaCodecCryptoInfo。

如果您需要使用自定义加密信息,而不是从 AMediaExtractor 获取的信息,请使用此项。

AMediaCodecCryptoInfo 描述了(至少部分)加密输入样本的结构。缓冲区的数据被视为分成“子样本”,每个子样本都以一段(可能为空)未加密的明文字节开始,后跟一段(也可能为空)加密字节。numBytesOfClearData 可以为 null,表示所有数据都已加密。此信息封装了 ISO/IEC FDIS 23001-7:2011“ISO 基本媒体文件格式文件中的通用加密”中所述的每样本元数据。

自 API level 21 开始可用。

AMediaCodecCryptoInfo_setPattern

声明于 media/NdkMediaCodec.h
void AMediaCodecCryptoInfo_setPattern(
  AMediaCodecCryptoInfo *info,
  cryptoinfo_pattern_t *pattern
)

在 AMediaCryptoInfo 对象上设置加密模式。

自 API level 21 开始可用。

AMediaCodecInfo_getAudioCapabilities

声明于 media/NdkMediaCodecInfo.h
media_status_t AMediaCodecInfo_getAudioCapabilities(
  const AMediaCodecInfo *_Nonnull info,
  const ACodecAudioCapabilities *_Nullable *_Nonnull outAudioCaps
)

从给定的 AMediaCodecInfo 获取 ACodecAudioCapabilities。

详情
参数
outAudioCaps
指向输出 ACodecAudioCapabilities 的指针。它由框架拥有,具有无限生命周期。
参数
info
outAudioCaps
无效。
返回值
如果成功获取 ACodecAudioCapabilities,则返回 AMEDIA_OK。
返回值
如果编解码器不是音频编解码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果 videoCapsoutPerformancePoint

AMediaCodecInfo_getCanonicalName

声明于 media/NdkMediaCodecInfo.h
const char *_Nullable AMediaCodecInfo_getCanonicalName(
  const AMediaCodecInfo *_Nonnull info
)

获取编解码器的规范名称。

详情
参数
info
无效。
返回值
指向标准名称的 char 指针。以 ASCII 编码,由框架拥有。
返回值
如果 info

AMediaCodecInfo_getEncoderCapabilities

声明于 media/NdkMediaCodecInfo.h
media_status_t AMediaCodecInfo_getEncoderCapabilities(
  const AMediaCodecInfo *_Nonnull info,
  const ACodecEncoderCapabilities *_Nullable *_Nonnull outEncoderCaps
)

从给定的 AMediaCodecInfo 获取 ACodecEncoderCapabilities。

详情
参数
outEncoderCaps
指向输出 ACodecEncoderCapabilities 的指针。它由框架拥有,具有无限生命周期。
参数
info
outEncoderCaps
无效。
返回值
如果成功获取 ACodecEncoderCapabilities,则返回 AMEDIA_OK。
返回值
如果编解码器不是编码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果 videoCapsoutPerformancePoint

AMediaCodecInfo_getKind

声明于 media/NdkMediaCodecInfo.h
AMediaCodecKind AMediaCodecInfo_getKind(
  const AMediaCodecInfo *_Nonnull info
)

查询编解码器的类型。

AMediaCodecInfo_getMaxSupportedInstances

声明于 media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_getMaxSupportedInstances(
  const AMediaCodecInfo *_Nonnull info
)

获取支持的最大并发编解码器实例数量。

这是一个上限提示。应用程序不应期望能成功运行比返回值更多的实例,但实际可并发运行的实例数可能较少,具体取决于使用时可用的资源。

详情
参数
info
无效。
返回值
如果 audioCaps

AMediaCodecInfo_getMediaCodecInfoType

声明于 media/NdkMediaCodecInfo.h
AMediaCodecType AMediaCodecInfo_getMediaCodecInfoType(
  const AMediaCodecInfo *_Nonnull info
)

查询编解码器是 SOFTWARE_ONLY、HARDWARE_ACCELERATED 还是 SOFTWARE_WITH_DEVICE_ACCESS 类型。

详情
参数
info
无效。
返回值
如果 info

AMediaCodecInfo_getMediaType

声明于 media/NdkMediaCodecInfo.h
const char *_Nullable AMediaCodecInfo_getMediaType(
  const AMediaCodecInfo *_Nonnull info
)

获取编解码器支持的媒体类型。

详情
参数
info
无效。
返回值
指向媒体类型(例如“video/hevc”)的 char 指针。它是 ASCII 编码的,由框架拥有,具有无限生命周期。
返回值
如果 info

AMediaCodecInfo_getVideoCapabilities

声明于 media/NdkMediaCodecInfo.h
media_status_t AMediaCodecInfo_getVideoCapabilities(
  const AMediaCodecInfo *_Nonnull info,
  const ACodecVideoCapabilities *_Nullable *_Nonnull outVideoCaps
)

从给定的 AMediaCodecInfo 获取 ACodecVideoCapabilities。

详情
参数
outVideoCaps
指向输出 ACodecVideoCapabilities 的指针。它由框架拥有,具有无限生命周期。
参数
info
outVideoCaps
无效。
返回值
如果成功获取 ACodecVideoCapabilities,则返回 AMEDIA_OK。
返回值
如果编解码器不是视频编解码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果 videoCapsoutPerformancePoint

AMediaCodecInfo_isFeatureRequired

声明于 media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isFeatureRequired(
  const AMediaCodecInfo *_Nonnull info,
  const char *_Nonnull featureName
)

查询编解码器特性要求。

编解码器必须使用这些特性,因此它们始终开启。

详情
参数
featureName
NdkMediaCodecInfo.h 中以 AMediaCoecInfo_FEATURE_ 为前缀的已定义常量中获取有效的特性名称。
参数
info
featureName
无效。
返回值
如果特性是必需的,则返回 1;
返回值
如果特性不是必需的,则返回 0;
返回值
如果 audioCaps

AMediaCodecInfo_isFeatureSupported

声明于 media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isFeatureSupported(
  const AMediaCodecInfo *_Nonnull info,
  const char *_Nonnull featureName
)

查询编解码器特性能力。

编解码器支持使用这些特性。这包括可以开启的可选特性,以及始终开启的特性。

详情
参数
featureName
NdkMediaCodecInfo.h 中以 AMediaCoecInfo_FEATURE_ 为前缀的已定义常量中获取有效的特性名称。
参数
info
featureName
无效。
返回值
如果特性受支持,则返回 1;
返回值
如果特性不受支持,则返回 0;
返回值
如果 audioCaps

AMediaCodecInfo_isFormatSupported

声明于 media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isFormatSupported(
  const AMediaCodecInfo *_Nonnull info,
  const AMediaFormat *_Nonnull format
)

查询编解码器是否支持给定格式。

详情
参数
format。
参数
info
format
无效。
返回值
如果支持该格式,则返回 1;
返回值
如果不支持该格式,则返回 0;
返回值
如果 audioCaps

AMediaCodecInfo_isVendor

声明于 media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isVendor(
  const AMediaCodecInfo *_Nonnull info
)

查询编解码器是由 Android 平台还是设备制造商提供。

详情
参数
info
无效。
返回值
如果编解码器由设备制造商提供,则返回 1。
返回值
如果编解码器由 Android 平台提供,则返回 0。
返回值
如果 audioCaps

AMediaCodecStore_findNextDecoderForFormat

声明在 media/NdkMediaCodecStore.h
media_status_t AMediaCodecStore_findNextDecoderForFormat(
  const AMediaFormat *_Nonnull format,
  const AMediaCodecInfo *_Nullable *_Nonnull outCodecInfo
)

获取支持该格式的下一个解码器信息。

此 API 按顺序返回支持给定格式的解码器信息,并将其存储在 outCodecInfo 指针处。最初,将 outCodecInfo 指向的指针设置为 NULL。后续调用时,保留上次的指针值。当序列结束时,将返回 AMEDIA_ERROR_UNSUPPORTED 并且指针将被设置为 NULL。

使用非 NULL lastCodecInfo 调用此 API 是未定义行为。

详情
参数
outCodecInfo
指向(AMediaCodecInfo 指针)的指针,下一个编解码器信息将存储在此处。AMediaCodecInfo 对象由框架拥有,具有无限生命周期。
format
如果设置为 NULL,此 API 将遍历所有可用的解码器。如果不是 NULL,则必须包含键“mime”,表示媒体类型。
参数
outCodecInfo
format
无效。
参数
outCodecInfo
和不同的 format
format
在一次迭代期间。
返回值
如果成功获取信息,则返回 AMEDIA_OK。
返回值
如果 videoCapsoutPerformancePoint
返回值
如果没有更多支持该格式的解码器,则返回 AMEDIA_ERROR_UNSUPPORTED。在这种情况下,*outCodecInfo 也将被设置为 NULL。

AMediaCodecStore_findNextEncoderForFormat

声明在 media/NdkMediaCodecStore.h
media_status_t AMediaCodecStore_findNextEncoderForFormat(
  const AMediaFormat *_Nonnull format,
  const AMediaCodecInfo *_Nullable *_Nonnull outCodecInfo
)

获取支持该格式的下一个编码器信息。

此 API 按顺序返回支持给定格式的编码器信息,并将其存储在 outCodecInfo 指针处。最初,将 outCodecInfo 指向的指针设置为 NULL。后续调用时,保留上次的指针值。当序列结束时,将返回 AMEDIA_ERROR_UNSUPPORTED 并且指针将被设置为 NULL。

使用非 NULL lastCodecInfo 调用此 API 是未定义行为。输出中不会显示安全编码器。

详情
参数
outCodecInfo
指向(AMediaCodecInfo 指针)的指针,下一个编解码器信息将存储在此处。AMediaCodecInfo 对象由框架拥有,具有无限生命周期。
format
如果设置为 NULL,此 API 将遍历所有可用的编码器。如果不是 NULL,则必须包含键“mime”,表示媒体类型。
参数
outCodecInfo
无效。
参数
outCodecInfo
和不同的 format
format
在一次迭代期间。
返回值
如果成功获取信息,则返回 AMEDIA_OK。
返回值
如果 videoCapsoutPerformancePoint
返回值
如果没有更多支持该格式的编码器,则返回 AMEDIA_ERROR_UNSUPPORTED。在这种情况下,*outCodecInfo 也将被设置为 NULL。

AMediaCodecStore_getCodecInfo

声明在 media/NdkMediaCodecStore.h
media_status_t AMediaCodecStore_getCodecInfo(
  const char *_Nonnull name,
  const AMediaCodecInfo *_Nullable *_Nonnull outCodecInfo
)

获取与给定编解码器名称对应的 codecInfo。

详情
参数
name
媒体编解码器名称。以 ASCII 编码。用户可以从 findNextDecoder|EncoderForFormat 方法返回的 AMediaCodecInfo 结构中获取有效的编解码器名称。请注意,此名称可能与 SDK API 使用的同一编解码器名称不对应,但对于以“c2.”开头的编解码器名称总是对应。
outCodecInfo
对应 AMeidaCodecInfo 结构的输出参数。它由框架拥有,具有无限生命周期。
参数
outCodecInfo
name
无效。
返回值
如果成功获取 codecInfo,则返回 AMEDIA_OK。
返回值
如果找不到对应的编解码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
返回值
如果 videoCapsoutPerformancePoint

AMediaCodecStore_getSupportedMediaTypes

声明在 media/NdkMediaCodecStore.h
media_status_t AMediaCodecStore_getSupportedMediaTypes(
  const AMediaCodecSupportedMediaType *_Nullable *_Nonnull outMediaTypes,
  size_t *_Nonnull outCount
)

获取设备支持的所有媒体类型的数组。

详情
参数
outMediaTypes
指向输出 AMediaCodecSupportedMediaType 数组的指针。它由框架拥有,具有无限生命周期。
outCount
输出数组的大小。
参数
outMediaTypes
无效。
返回值
如果成功复制,则返回 AMEDIA_OK。
返回值
如果发生 AMEDIA_ERROR_INVALID_PARAMETER

AMediaCodec_configure

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_configure(
  AMediaCodec *,
  const AMediaFormat *format,
  ANativeWindow *surface,
  AMediaCrypto *crypto,
  uint32_t flags
)

配置编解码器。

对于解码,通常会从提取器获取格式。

自 API level 21 开始可用。

AMediaCodec_createCodecByName

声明于 media/NdkMediaCodec.h
AMediaCodec * AMediaCodec_createCodecByName(
  const char *name
)

按名称创建编解码器。

如果知道要使用的确切编解码器,请使用此方法。配置时,需要指定是使用编解码器作为编码器还是解码器。

自 API level 21 开始可用。

AMediaCodec_createDecoderByType

声明于 media/NdkMediaCodec.h
AMediaCodec * AMediaCodec_createDecoderByType(
  const char *mime_type
)

按 MIME 类型创建编解码器。

大多数应用程序将使用此方法,指定从媒体提取器获取的 mime 类型。

自 API level 21 开始可用。

AMediaCodec_createEncoderByType

声明于 media/NdkMediaCodec.h
AMediaCodec * AMediaCodec_createEncoderByType(
  const char *mime_type
)

按 MIME 类型创建编码器。

自 API level 21 开始可用。

AMediaCodec_createInputSurface

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_createInputSurface(
  AMediaCodec *mData,
  ANativeWindow **surface
)

创建一个 Surface,可用作编码器的输入,替代输入缓冲区。

这只能在通过 AMediaCodec_configure(..) 配置编解码器之后,并且在调用 AMediaCodec_start() 之前调用。

应用程序负责在完成后调用 ANativeWindow_release() 释放 surface。

有关更多详细信息,请参阅 MediaCodec.createInputSurface 的 Java 文档。

从 API level 26 开始可用。

AMediaCodec_createPersistentInputSurface

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_createPersistentInputSurface(
  ANativeWindow **surface
)

创建一个可持久化的 Surface,可用作编码器的输入。

持久性 surface 可以由 MediaCodec 实例重复使用,并且可以通过 AMediaCodec_setInputSurface() 在新实例上设置。一个持久性 surface 在任何时候最多只能连接到一个 MediaCodec 实例。

应用程序负责在完成后调用 ANativeWindow_release() 释放 surface。

有关更多详细信息,请参阅 MediaCodec.createPersistentInputSurface 的 Java 文档。

从 API level 26 开始可用。

AMediaCodec_delete

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_delete(
  AMediaCodec *
)

删除编解码器并释放其资源。

自 API level 21 开始可用。

AMediaCodec_dequeueInputBuffer

声明于 media/NdkMediaCodec.h
ssize_t AMediaCodec_dequeueInputBuffer(
  AMediaCodec *,
  int64_t timeoutUs
)

获取下一个可用输入缓冲区的索引。

应用程序通常会结合使用此方法和 getInputBuffer() 来获取指向缓冲区的指针,然后将要编码或解码的数据复制到缓冲区中,再将其传递给编解码器。

自 API level 21 开始可用。

AMediaCodec_dequeueOutputBuffer

声明于 media/NdkMediaCodec.h
ssize_t AMediaCodec_dequeueOutputBuffer(
  AMediaCodec *,
  AMediaCodecBufferInfo *info,
  int64_t timeoutUs
)

获取下一个可用已处理数据缓冲区的索引。

自 API level 21 开始可用。

AMediaCodec_flush

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_flush(
  AMediaCodec *
)

AMediaCodec_getBufferFormat

声明于 media/NdkMediaCodec.h
AMediaFormat * AMediaCodec_getBufferFormat(
  AMediaCodec *,
  size_t index
)

获取缓冲区的格式。

指定的缓冲区索引必须之前从 dequeueOutputBuffer 获取。调用者必须释放返回的 format。

自 API level 28 开始可用。

AMediaCodec_getInputBuffer

声明于 media/NdkMediaCodec.h
uint8_t * AMediaCodec_getInputBuffer(
  AMediaCodec *,
  size_t idx,
  size_t *out_size
)

获取输入缓冲区。

指定的缓冲区索引必须之前从 dequeueInputBuffer 获取,且尚未排队。

自 API level 21 开始可用。

AMediaCodec_getInputFormat

声明于 media/NdkMediaCodec.h
AMediaFormat * AMediaCodec_getInputFormat(
  AMediaCodec *
)

AMediaCodec_configure() 成功返回后调用此函数,以获取编解码器接受的输入格式。

执行此操作以确定编解码器支持哪些可选配置参数。调用者必须释放返回的 format。

自 API level 28 开始可用。

AMediaCodec_getName

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_getName(
  AMediaCodec *,
  char **out_name
)

获取组件名称。

如果编解码器是通过 createDecoderByType 或 createEncoderByType 创建的,则事先不知道选择了哪个组件。调用者应调用 AMediaCodec_releaseName 来释放返回的指针。

自 API level 28 开始可用。

AMediaCodec_getOutputBuffer

声明于 media/NdkMediaCodec.h
uint8_t * AMediaCodec_getOutputBuffer(
  AMediaCodec *,
  size_t idx,
  size_t *out_size
)

获取输出缓冲区。

指定的缓冲区索引必须之前从 dequeueOutputBuffer 获取,且尚未排队。

自 API level 21 开始可用。

AMediaCodec_getOutputFormat

声明于 media/NdkMediaCodec.h
AMediaFormat * AMediaCodec_getOutputFormat(
  AMediaCodec *
)

返回编解码器的输出格式。

调用者必须释放返回的 format。

自 API level 21 开始可用。

AMediaCodec_queueInputBuffer

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_queueInputBuffer(
  AMediaCodec *,
  size_t idx,
  _off_t_compat offset,
  size_t size,
  uint64_t time,
  uint32_t flags
)

将指定的缓冲区发送给编解码器进行处理。

自 API level 21 开始可用。

AMediaCodec_queueSecureInputBuffer

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_queueSecureInputBuffer(
  AMediaCodec *,
  size_t idx,
  _off_t_compat offset,
  AMediaCodecCryptoInfo *,
  uint64_t time,
  uint32_t flags
)

将指定的缓冲区发送给编解码器进行处理。

自 API level 21 开始可用。

AMediaCodec_releaseCrypto

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_releaseCrypto(
  AMediaCodec *
)

如果适用,释放加密对象。

自 API level 28 开始可用。

AMediaCodec_releaseName

声明于 media/NdkMediaCodec.h
void AMediaCodec_releaseName(
  AMediaCodec *,
  char *name
)

释放由 AMediaCodec_getName 返回的 name 指针指向的内存。

自 API level 28 开始可用。

AMediaCodec_releaseOutputBuffer

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_releaseOutputBuffer(
  AMediaCodec *,
  size_t idx,
  bool render
)

如果您已完成使用缓冲区,请使用此调用将缓冲区返回给编解码器。

如果之前在配置此视频解码器时指定了 surface,则可以选择渲染缓冲区。

自 API level 21 开始可用。

AMediaCodec_releaseOutputBufferAtTime

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_releaseOutputBufferAtTime(
  AMediaCodec *mData,
  size_t idx,
  int64_t timestampNs
)

如果您已完成使用缓冲区,请使用此调用更新其 surface 时间戳并将其返回给编解码器以在输出 surface 上渲染。

如果在配置此视频编解码器时未指定输出 surface,则此调用将简单地将缓冲区返回给编解码器。

有关更多详细信息,请参阅 MediaCodec.releaseOutputBuffer 的 Java 文档。

自 API level 21 开始可用。

AMediaCodec_setAsyncNotifyCallback

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_setAsyncNotifyCallback(
  AMediaCodec *,
  AMediaCodecOnAsyncNotifyCallback callback,
  void *userdata
)

为可操作的 AMediaCodec 事件设置异步回调。

启用异步回调时,客户端调用 AMediaCodec_getInputBuffers()、AMediaCodec_getOutputBuffers()、AMediaCodec_dequeueInputBuffer()AMediaCodec_dequeueOutputBuffer() 是错误的。

AMediaCodec_flush() 在异步模式下的行为不同。调用 AMediaCodec_flush() 后,客户端必须调用 AMediaCodec_start() 以“恢复”接收输入缓冲区。即使客户端未收到配置有输入 surface 的视频编码器的 AMediaCodecOnAsyncInputAvailable 回调,客户端仍需要调用 AMediaCodec_start() 以恢复输入 surface 向编码器发送缓冲区。

当使用 null callback 调用时,此方法将取消注册之前设置的任何 callback。

请参阅 AMediaCodecOnAsyncNotifyCallback 的定义,了解每个回调函数的调用方式以及指定内容。指定的 userdata 是不透明数据,在调用回调函数时会传递给它们。MediaCodec 不会查看或更改 userdata 的值。通常它是一个指向客户端拥有的对象的指针,客户端在这种情况下管理该对象的生命周期。

一旦 callback 被取消注册或编解码器被重置/释放,之前注册的 callback 将不会被调用。

所有 callback 都在一个 NDK 内部线程上触发。不应在 callback 线程上调用 AMediaCodec_setAsyncNotifyCallback。不应在 callback 线程上执行任何繁重任务。

自 API level 28 开始可用。

AMediaCodec_setInputSurface

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_setInputSurface(
  AMediaCodec *mData,
  ANativeWindow *surface
)

设置一个可持久化的 surface,可用作编码器的输入,替代输入缓冲区。

提供的 surface 必须是通过 AMediaCodec_createPersistentInputSurface() 创建的持久性 surface。这只能在通过调用 AMediaCodec_configure(..) 配置编解码器之后,并且在调用 AMediaCodec_start() 之前调用。

有关更多详细信息,请参阅 MediaCodec.setInputSurface 的 Java 文档。

从 API level 26 开始可用。

AMediaCodec_setOnFrameRenderedCallback

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_setOnFrameRenderedCallback(
  AMediaCodec *,
  AMediaCodecOnFrameRendered callback,
  void *userdata
)

注册一个回调,当输出帧在输出 surface 上渲染时调用。

此方法可在任何编解码器状态下调用,但仅在 Executing 状态下对向输出 surface 渲染缓冲区的编解码器有效。

此回调仅用于提供信息:获取精确的渲染时间样本,并且可能会显著延迟和批量处理。即使没有生成回调,某些帧也可能已渲染。

当使用 null callback 调用时,此方法将取消注册之前设置的任何 callback。

请参阅 AMediaCodecOnFrameRendered 的定义,了解每个回调函数的调用方式以及指定内容。指定的 userdata 是不透明数据,在调用回调函数时会传递给它们。MediaCodec 不会查看或更改 userdata 的值。通常它是一个指向客户端拥有的对象的指针,客户端在这种情况下管理该对象的生命周期。

一旦 callback 被取消注册或编解码器被重置/释放,之前注册的 callback 将不会被调用。

所有 callback 都在一个 NDK 内部线程上触发。不应在 callback 线程上调用 AMediaCodec_setOnFrameRenderedCallback。不应在 callback 线程上执行任何繁重任务。

自 Android T 起可用。

AMediaCodec_setOutputSurface

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_setOutputSurface(
  AMediaCodec *,
  ANativeWindow *surface
)

动态设置编解码器的输出 surface。

仅当编解码器配置有输出 surface 时才能使用此方法。新的输出 surface 应与原始输出 surface 具有兼容的使用类型。例如,编解码器可能不支持从 SurfaceTexture(GPU 可读)输出切换到 ImageReader(软件可读)输出。

有关更多详细信息,请参阅 MediaCodec.setOutputSurface 的 Java 文档。

自 API level 21 开始可用。

AMediaCodec_setParameters

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_setParameters(
  AMediaCodec *mData,
  const AMediaFormat *params
)

向编解码器实例发送附加参数信号。

仅当编解码器正在运行时才能传递参数,即在调用 AMediaCodec_start() 之后。

注意:其中一些参数更改可能会静默失败。

从 API level 26 开始可用。

AMediaCodec_signalEndOfInputStream

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_signalEndOfInputStream(
  AMediaCodec *mData
)

发送输入流结束信号。

相当于提交一个设置了 AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM 的空缓冲区。

与未处于执行状态或未从由 AMediaCodec_createInputSurface 或 AMediaCodec_createPersistentInputSurface 创建的 Surface 接收输入的编码器一起使用时,返回 AMEDIA_ERROR_INVALID_OPERATION。

如果存在,返回之前的编解码器错误。

成功完成时返回 AMEDIA_OK。

有关更多详细信息,请参阅 MediaCodec.signalEndOfInputStream 的 Java 文档。

从 API level 26 开始可用。

AMediaCodec_start

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_start(
  AMediaCodec *
)

启动编解码器。

编解码器必须先配置才能启动,并且必须先启动才能向其发送缓冲区。

自 API level 21 开始可用。

AMediaCodec_stop

声明于 media/NdkMediaCodec.h
media_status_t AMediaCodec_stop(
  AMediaCodec *
)

停止编解码器。

自 API level 21 开始可用。

AMediaCrypto_delete

声明在 media/NdkMediaCrypto.h
void AMediaCrypto_delete(
  AMediaCrypto *crypto
)

自 API level 21 开始可用。

AMediaCrypto_isCryptoSchemeSupported

声明在 media/NdkMediaCrypto.h
bool AMediaCrypto_isCryptoSchemeSupported(
  const AMediaUUID uuid
)

自 API level 21 开始可用。

AMediaCrypto_new

声明在 media/NdkMediaCrypto.h
AMediaCrypto * AMediaCrypto_new(
  const AMediaUUID uuid,
  const void *initData,
  size_t initDataSize
)

自 API level 21 开始可用。

AMediaCrypto_requiresSecureDecoderComponent

声明在 media/NdkMediaCrypto.h
bool AMediaCrypto_requiresSecureDecoderComponent(
  const char *mime
)

自 API level 21 开始可用。

AMediaDataSource_close

声明在 media/NdkMediaDataSource.h
void AMediaDataSource_close(
  AMediaDataSource *
)

关闭数据源,解除读取阻塞,并释放相关资源。

有关更多详细信息,请参阅 AMediaDataSourceClose 的定义。

自 API level 29 起可用。

AMediaDataSource_delete

声明在 media/NdkMediaDataSource.h
void AMediaDataSource_delete(
  AMediaDataSource *
)

删除之前创建的媒体数据源。

自 API level 28 开始可用。

AMediaDataSource_new

声明在 media/NdkMediaDataSource.h
AMediaDataSource * AMediaDataSource_new()

创建新的媒体数据源。

如果新数据源对象的内存分配失败,则返回 NULL。

自 API level 28 开始可用。

AMediaDataSource_newUri

声明在 media/NdkMediaDataSource.h
AMediaDataSource * AMediaDataSource_newUri(
  const char *uri,
  int numheaders,
  const char *const *key_values
)

创建新的媒体数据源。

如果新数据源对象的内存分配失败,则返回 NULL。

设置数据源将从中读取的 uri,以及发起请求时附带的额外 http 头。

Headers 将按以下方式包含 key_values 中的对应项

key_values[0]:key_values[1] key_values[2]:key_values[3] ... key_values[(numheaders - 1) * 2]:key_values[(numheaders - 1) * 2 + 1]

自 API level 29 起可用。

AMediaDataSource_setClose

声明在 media/NdkMediaDataSource.h
void AMediaDataSource_setClose(
  AMediaDataSource *,
  AMediaDataSourceClose
)

设置一个自定义回调,以便在数据源关闭时接收来自 NDK 媒体框架的信号。

有关更多详细信息,请参阅 AMediaDataSourceClose 的定义。

自 API level 28 开始可用。

AMediaDataSource_setGetAvailableSize

声明在 media/NdkMediaDataSource.h
void AMediaDataSource_setGetAvailableSize(
  AMediaDataSource *,
  AMediaDataSourceGetAvailableSize
)

设置一个自定义回调,用于提供从该数据源的某个偏移量开始无需阻塞 I/O 即可读取的字节数估算值。

有关更多详细信息,请参阅 AMediaDataSourceGetAvailableSize 的定义。

自 API level 29 起可用。

AMediaDataSource_setGetSize

声明在 media/NdkMediaDataSource.h
void AMediaDataSource_setGetSize(
  AMediaDataSource *,
  AMediaDataSourceGetSize
)

设置一个自定义回调,用于向 NDK 媒体框架提供数据源的大小。

有关更多详细信息,请参阅 AMediaDataSourceGetSize 的定义。

自 API level 28 开始可用。

AMediaDataSource_setReadAt

声明在 media/NdkMediaDataSource.h
void AMediaDataSource_setReadAt(
  AMediaDataSource *,
  AMediaDataSourceReadAt
)

设置一个自定义回调,用于向 NDK 媒体框架提供随机访问媒体数据。

如果您的应用程序对媒体数据的获取方式有特殊要求,或者需要在 NDK 媒体框架读取数据时获得回调,请实现此方法。

有关更多详细信息,请参阅 AMediaDataSourceReadAt 的定义。

自 API level 28 开始可用。

AMediaDataSource_setUserdata

声明在 media/NdkMediaDataSource.h
void AMediaDataSource_setUserdata(
  AMediaDataSource *,
  void *userdata
)

设置用户提供的不透明句柄。

此不透明句柄作为第一个参数传递给数据源回调。

自 API level 28 开始可用。

AMediaDrm_closeSession

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_closeSession(
  AMediaDrm *,
  const AMediaDrmSessionId *sessionId
)

关闭 MediaDrm 对象上之前通过 AMediaDrm_openSession 打开的会话。

自 API level 21 开始可用。

AMediaDrm_createByUUID

media/NdkMediaDrm.h 中声明
AMediaDrm * AMediaDrm_createByUUID(
  const uint8_t *uuid
)

从 UUID 创建 MediaDrm 实例。

uuid 标识 crypto scheme 的通用唯一 ID。uuid 必须是 16 字节。

自 API level 21 开始可用。

AMediaDrm_decrypt

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_decrypt(
  AMediaDrm *,
  const AMediaDrmSessionId *sessionId,
  const char *cipherAlgorithm,
  uint8_t *keyId,
  uint8_t *iv,
  const uint8_t *input,
  uint8_t *output,
  size_t dataSize
)

AMediaDrm_encrypt

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_encrypt(
  AMediaDrm *,
  const AMediaDrmSessionId *sessionId,
  const char *cipherAlgorithm,
  uint8_t *keyId,
  uint8_t *iv,
  const uint8_t *input,
  uint8_t *output,
  size_t dataSize
)

除了支持解密 DASH Common Encrypted Media 外,MediaDrm API 还提供了基于工厂安装的信任根,将会话密钥从运营商的会话密钥服务器安全地传输到客户端设备的能力,然后使用会话密钥对任意用户数据执行加密、解密、签名和验证操作。

运营商创建会话密钥服务器,接收会话密钥请求并提供加密的会话密钥,这些密钥可用于通用加密操作。

通用的 encrypt/decrypt/sign/verify 方法基于已建立的会话密钥。这些密钥通过 getKeyRequest/provideKeyResponse 方法进行交换。

此功能的应用程序包括保护各种类型的购买或私有内容,例如应用程序、书籍和其他媒体、照片或媒体传输协议。

AMediaDrm_getKeyRequest

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_getKeyRequest(
  AMediaDrm *,
  const AMediaDrmScope *scope,
  const uint8_t *init,
  size_t initSize,
  const char *mimeType,
  AMediaDrmKeyType keyType,
  const AMediaDrmKeyValue *optionalParameters,
  size_t numOptionalParameters,
  const uint8_t **keyRequest,
  size_t *keyRequestSize
)

应用和许可证服务器之间发生密钥请求/响应交换,以获取或释放用于解密加密内容的密钥。

AMediaDrm_getKeyRequest 用于获取一个不透明的密钥请求字节数组,该数组将发送到许可证服务器。不透明的密钥请求字节数组在 *keyRequest 中返回,请求中的字节数在 *keyRequestSize 中返回。当 defaultUrl 和 keyRequestType 作为 NULL 传入时,此 API 与 AMediaDrm_getKeyRequestWithDefaultUrlAndType() 具有相同的功能。

应用程序从服务器接收到密钥请求响应后,应使用 AMediaDrm_provideKeyResponse 方法将响应发送到 DRM 引擎插件。

scope 可以是 sessionId 或 keySetId,具体取决于指定的 keyType。当 keyType 为 KEY_TYPE_STREAMING 或 KEY_TYPE_OFFLINE 时,scope 应设置为密钥将提供给的 sessionId。当 keyType 为 KEY_TYPE_RELEASE 时,scope 应设置为正在释放的密钥的 keySetId。从设备释放密钥会使其对所有会话无效。

init 是容器特定的数据,其含义根据 mimeType 参数中提供的 mime 类型解释。例如,它可能包含内容 ID、密钥 ID 或从内容元数据中获取的生成密钥请求所需的其他数据。当 keyType 为 KEY_TYPE_RELEASE 时,init 可以为 null。

initSize 是 initData 的字节数

mimeType 标识内容的 mime 类型。

keyType 指定请求的类型。请求可能是获取用于流式传输或离线内容的密钥,或者释放之前获取的密钥(由 keySetId 标识)。

optionalParameters 包含在密钥请求消息中,允许客户端应用程序向服务器提供附加消息参数。

numOptionalParameters 指示调用者提供的可选参数数量

退出时:如果此方法返回 AMEDIA_OK,

  1. keyRequest 指针将引用不透明的密钥请求数据。它将驻留在 AMediaDrm 对象拥有的内存中,并且在下次调用 AMediaDrm_getKeyRequest 或 AMediaDrm_getKeyRequestWithDefaultUrlAndType 或 MediaDrm 对象被释放之前将保持可访问。
  2. keyRequestSize 将设置为请求的大小。如果此方法不返回 AMEDIA_OK,则不应使用这些参数的值。

如果由于设备证书问题需要重新配置,则返回 AMEDIA_DRM_NOT_PROVISIONED。

自 API level 21 开始可用。

AMediaDrm_getKeyRequestWithDefaultUrlAndType

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_getKeyRequestWithDefaultUrlAndType(
  AMediaDrm *,
  const AMediaDrmScope *scope,
  const uint8_t *init,
  size_t initSize,
  const char *mimeType,
  AMediaDrmKeyType keyType,
  const AMediaDrmKeyValue *optionalParameters,
  size_t numOptionalParameters,
  const uint8_t **keyRequest,
  size_t *keyRequestSize,
  const char **defaultUrl,
  AMediaDrmKeyRequestType *keyRequestType
)

应用和许可证服务器之间发生密钥请求/响应交换,以获取或释放用于解密加密内容的密钥。

AMediaDrm_getKeyRequest 用于获取一个不透明的密钥请求字节数组,该数组将发送到许可证服务器。不透明的密钥请求字节数组在 *keyRequest 中返回,请求中的字节数在 *keyRequestSize 中返回。

应用程序从服务器接收到密钥请求响应后,应使用 AMediaDrm_provideKeyResponse 方法将响应发送到 DRM 引擎插件。

scope 可以是 sessionId 或 keySetId,具体取决于指定的 keyType。当 keyType 为 KEY_TYPE_STREAMING 或 KEY_TYPE_OFFLINE 时,scope 应设置为密钥将提供给的 sessionId。当 keyType 为 KEY_TYPE_RELEASE 时,scope 应设置为正在释放的密钥的 keySetId。从设备释放密钥会使其对所有会话无效。

init 是容器特定的数据,其含义根据 mimeType 参数中提供的 mime 类型解释。例如,它可能包含内容 ID、密钥 ID 或从内容元数据中获取的生成密钥请求所需的其他数据。当 keyType 为 KEY_TYPE_RELEASE 时,init 可以为 null。

initSize 是 initData 的字节数

mimeType 标识内容的 mime 类型。

keyType 指定请求的类型。请求可能是获取用于流式传输或离线内容的密钥,或者释放之前获取的密钥(由 keySetId 标识)。

optionalParameters 包含在密钥请求消息中,允许客户端应用程序向服务器提供附加消息参数。

numOptionalParameters 指示调用者提供的可选参数数量

退出时:如果此方法返回 AMEDIA_OK,

  1. keyRequest 指针将引用不透明的密钥请求数据。它将驻留在 AMediaDrm 对象拥有的内存中,并且在下次调用 AMediaDrm_getKeyRequest 或 AMediaDrm_getKeyRequestWithDefaultUrlAndType 或 MediaDrm 对象被释放之前将保持可访问。
  2. keyRequestSize 将设置为请求的大小。
  3. defaultUrl 将设置为推荐的用于发送密钥请求的 URL。defaultUrl 指针将引用一个以 NULL 结尾的 URL 字符串。它将采用 UTF-8 编码,并与 key request data KeyRequest 指针引用的数据具有相同的生命周期。传入 NULL 表示您不需要报告它。
  4. keyRequestType 将设置为密钥请求类型。传入 NULL 表示您不需要报告它。

如果由于设备证书问题需要重新配置,则返回 AMEDIA_DRM_NOT_PROVISIONED。

自 API level 33 起可用。

AMediaDrm_getPropertyByteArray

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_getPropertyByteArray(
  AMediaDrm *,
  const char *propertyName,
  AMediaDrmByteArray *propertyValue
)

给定属性名称字符串,读取 DRM 引擎插件字节数组属性值。

返回时,*propertyValue 将被设置为指向属性值。该值所在的内存由 NDK MediaDrm API 拥有,并且在下次调用 AMediaDrm_getPropertyByteArray 之前将保持有效。

自 API level 21 开始可用。

AMediaDrm_getPropertyString

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_getPropertyString(
  AMediaDrm *,
  const char *propertyName,
  const char **propertyValue
)

给定属性名称字符串,读取 DRM 引擎插件 String 属性值。

propertyName 标识要查询的属性。返回时,propertyValue 将被设置为指向属性值。该值所在的内存由 NDK MediaDrm API 拥有,并且在下次调用 AMediaDrm_getPropertyString 之前将保持有效。

自 API level 21 开始可用。

AMediaDrm_getProvisionRequest

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_getProvisionRequest(
  AMediaDrm *,
  const uint8_t **provisionRequest,
  size_t *provisionRequestSize,
  const char **serverUrl
)

应用和配置服务器之间发生配置请求/响应交换,以检索设备证书。

如果需要 provisionining,则 EVENT_PROVISION_REQUIRED 事件将发送到事件处理程序。getProvisionRequest 用于获取应发送到 provisioning 服务器的不透明 provision 请求字节数组。退出时

  1. provision request data 将由 provisionRequest 引用,位于 AMediaDrm 对象拥有的内存中。它将在下次调用 getProvisionRequest 之前保持可访问。
  2. provisionRequestSize 将设置为请求数据的大小。
  3. serverUrl 将引用一个以 NULL 结尾的字符串,其中包含应发送 provisioning 请求的 URL。它将在下次调用 getProvisionRequest 之前保持可访问。

自 API level 21 开始可用。

AMediaDrm_getSecureStops

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_getSecureStops(
  AMediaDrm *,
  AMediaDrmSecureStop *secureStops,
  size_t *numSecureStops
)

通过 SecureStop 提供了一种跨设备强制限制每个订阅者并发流数量的方法。

这是通过安全地监控会话的生命周期来实现的。

创建每个 MediaCrypto 对象时,来自服务器的与当前播放会话相关的信息将写入设备的持久存储中。

在正常情况下,播放将完成,会话销毁,然后将查询 Secure Stops。应用程序查询 secure stops 并将 secure stop 消息转发给服务器,服务器验证签名并通知服务器端数据库会话销毁已确认。客户端上的持久记录仅在使用 releaseSecureStops() 确认服务器收到消息后才会移除。

numSecureStops 由调用者设置为要返回的最大 secure stops 数量。退出时,*numSecureStops 将设置为实际返回的数量。如果 *numSecureStops 小于可用的 secure stops 数量,将返回 AMEDIA_DRM_SHORT_BUFFER,并且 *numSecureStops 将设置为所需的数量。

自 API level 21 开始可用。

AMediaDrm_isCryptoSchemeSupported

media/NdkMediaDrm.h 中声明
bool AMediaDrm_isCryptoSchemeSupported(
  const uint8_t *uuid,
  const char *mimeType
)

查询此设备是否支持由 UUID 标识的给定方案,以及 DRM 插件是否能够处理 mimeType 指定的媒体容器格式。

uuid 标识 crypto scheme 的通用唯一 ID。uuid 必须是 16 字节。mimeType 是媒体容器的 MIME 类型,例如“video/mp4”。如果 mimeType 未知或不需要,可以提供 NULL。

自 API level 21 开始可用。

AMediaDrm_openSession

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_openSession(
  AMediaDrm *,
  AMediaDrmSessionId *sessionId
)

使用 MediaDrm 对象打开新会话。

返回一个会话 ID。

如果需要 provisionining,则返回 AMEDIA_DRM_NOT_PROVISIONED。如果所需资源正在使用中,则返回 AMEDIA_DRM_RESOURCE_BUSY。

自 API level 21 开始可用。

AMediaDrm_provideKeyResponse

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_provideKeyResponse(
  AMediaDrm *,
  const AMediaDrmScope *scope,
  const uint8_t *response,
  size_t responseSize,
  AMediaDrmKeySetId *keySetId
)

应用从许可证服务器接收到密钥响应,然后使用 provideKeyResponse 将其提供给 DRM 引擎插件。

当响应是针对离线密钥请求时,将返回一个 keySetId,可用于稍后使用 AMediaDrm_restoreKeys 将密钥恢复到新会话。当响应是针对流式传输或释放请求时,将返回一个 null keySetId。

scope 可以是 sessionId 或 keySetId,具体取决于响应的类型。当响应针对流式传输或离线密钥请求时,scope 应设置为 sessionId。当响应针对释放请求时,scope 应设置为 keySetId。

response 指向来自服务器的不透明响应,responseSize 应设置为响应的字节大小

自 API level 21 开始可用。

AMediaDrm_provideProvisionResponse

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_provideProvisionResponse(
  AMediaDrm *,
  const uint8_t *response,
  size_t responseSize
)

应用接收到配置响应后,使用此方法将其提供给 DRM 引擎插件。

response 是要提供给 DRM 引擎插件的不透明 provisioning 响应字节数组。responseSize 是 provisioning 响应的字节长度。

如果响应指示服务器拒绝了请求,则返回 AMEDIA_DRM_DEVICE_REVOKED

自 API level 21 开始可用。

AMediaDrm_queryKeyStatus

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_queryKeyStatus(
  AMediaDrm *,
  const AMediaDrmSessionId *sessionId,
  AMediaDrmKeyValue *keyValuePairs,
  size_t *numPairs
)

请求会话密钥状态的说明性描述。

状态采用 {key, value} 对的形式。由于 DRM 许可证策略因供应商而异,特定状态字段名称由每个 DRM 供应商确定。有关特定 DRM 引擎插件的字段名称定义,请参阅您的 DRM 提供商文档。

进入时,numPairs 应由调用者设置为可返回的最大对数(数组的大小)。退出时,numPairs 将设置为写入数组的条目数。如果待返回的 {key, value} 对的数量大于 *numPairs,将返回 AMEDIA_DRM_SHORT_BUFFER,并且 numPairs 将设置为可用对数。

自 API level 21 开始可用。

AMediaDrm_release

media/NdkMediaDrm.h 中声明
void AMediaDrm_release(
  AMediaDrm *
)

释放 MediaDrm 对象。

自 API level 21 开始可用。

AMediaDrm_releaseSecureStops

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_releaseSecureStops(
  AMediaDrm *,
  const AMediaDrmSecureStop *ssRelease
)

处理 SecureStop 服务器响应消息 ssRelease。

验证消息后,移除响应中标识的 SecureStops。

ssRelease 是服务器响应,指示要释放哪些 secure stops

自 API level 21 开始可用。

AMediaDrm_removeKeys

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_removeKeys(
  AMediaDrm *,
  const AMediaDrmSessionId *keySetId
)

从会话中移除当前密钥。

keySetId 标识要移除的密钥。

自 API level 21 开始可用。

AMediaDrm_restoreKeys

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_restoreKeys(
  AMediaDrm *,
  const AMediaDrmSessionId *sessionId,
  const AMediaDrmKeySetId *keySetId
)

将持久化的离线密钥恢复到新会话中。

keySetId 标识要加载的密钥,该密钥来自之前对 AMediaDrm_provideKeyResponse 的调用。

sessionId 是 DRM 会话的会话 ID。keySetId 标识要恢复的已保存密钥集。

自 API level 21 开始可用。

AMediaDrm_setOnEventListener

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_setOnEventListener(
  AMediaDrm *,
  AMediaDrmEventListener listener
)

注册一个回调,以便在事件发生时调用。

listener 是事件发生时将调用的 callback。

自 API level 21 开始可用。

AMediaDrm_setOnExpirationUpdateListener

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_setOnExpirationUpdateListener(
  AMediaDrm *,
  AMediaDrmExpirationUpdateListener listener
)

注册一个回调,以便在到期更新事件发生时调用。

listener 是事件发生时将调用的 callback。

自 API level 29 起可用。

AMediaDrm_setOnKeysChangeListener

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_setOnKeysChangeListener(
  AMediaDrm *,
  AMediaDrmKeysChangeListener listener
)

注册一个回调,以便在密钥状态更改事件发生时调用。

listener 是事件发生时将调用的 callback。

自 API level 29 起可用。

AMediaDrm_setPropertyByteArray

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_setPropertyByteArray(
  AMediaDrm *,
  const char *propertyName,
  const uint8_t *value,
  size_t valueSize
)

设置 DRM 引擎插件字节数组属性值。

自 API level 21 开始可用。

AMediaDrm_setPropertyString

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_setPropertyString(
  AMediaDrm *,
  const char *propertyName,
  const char *value
)

设置 DRM 引擎插件 String 属性值。

自 API level 21 开始可用。

AMediaDrm_sign

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_sign(
  AMediaDrm *,
  const AMediaDrmSessionId *sessionId,
  const char *macAlgorithm,
  uint8_t *keyId,
  uint8_t *message,
  size_t messageSize,
  uint8_t *signature,
  size_t *signatureSize
)

AMediaDrm_verify

media/NdkMediaDrm.h 中声明
media_status_t AMediaDrm_verify(
  AMediaDrm *,
  const AMediaDrmSessionId *sessionId,
  const char *macAlgorithm,
  uint8_t *keyId,
  const uint8_t *message,
  size_t messageSize,
  const uint8_t *signature,
  size_t signatureSize
)

AMediaExtractor_advance

声明于 media/NdkMediaExtractor.h
bool AMediaExtractor_advance(
  AMediaExtractor *
)

前进到下一个样本。

如果没有更多样本数据可用(流结束),则返回 false。

自 API level 21 开始可用。

AMediaExtractor_delete

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_delete(
  AMediaExtractor *
)

删除之前创建的媒体提取器。

自 API level 21 开始可用。

AMediaExtractor_getCachedDuration

声明于 media/NdkMediaExtractor.h
int64_t AMediaExtractor_getCachedDuration(
  AMediaExtractor *
)

返回从网络数据源(使用带有“http(s)”URI 的 AMediaExtractor_setDataSource)下载的缓存媒体样本的持续时间,单位为微秒。

此信息是使用总比特率计算的;如果媒体容器中没有总比特率,则使用总持续时间和文件大小计算。

当提取器不是从网络数据源读取时,或当无法计算缓存持续时间时(比特率、持续时间和文件大小信息不可用),返回 -1。

自 API level 28 开始可用。

AMediaExtractor_getFileFormat

声明于 media/NdkMediaExtractor.h
AMediaFormat * AMediaExtractor_getFileFormat(
  AMediaExtractor *
)

返回提取器的格式。

调用者必须使用 AMediaFormat_delete(format) 释放返回的 format。

此函数将始终返回一个 format;但是,如果媒体容器未提供 format 信息,则 format 可能为空(没有键值对)。

自 API level 28 开始可用。

AMediaExtractor_getPsshInfo

声明于 media/NdkMediaExtractor.h
PsshInfo * AMediaExtractor_getPsshInfo(
  AMediaExtractor *
)

如果存在,获取 PSSH 信息。

自 API level 21 开始可用。

AMediaExtractor_getSampleCryptoInfo

声明于 media/NdkMediaExtractor.h
AMediaCodecCryptoInfo * AMediaExtractor_getSampleCryptoInfo(
  AMediaExtractor *
)

自 API level 21 开始可用。

AMediaExtractor_getSampleFlags

声明于 media/NdkMediaExtractor.h
uint32_t AMediaExtractor_getSampleFlags(
  AMediaExtractor *
)

读取当前样本的标志。

自 API level 21 开始可用。

AMediaExtractor_getSampleFormat

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_getSampleFormat(
  AMediaExtractor *ex,
  AMediaFormat *fmt
)

将当前样本的元数据格式读入 fmt

样本元数据的示例包括 SEI(Supplemental Enhancement Information,补充增强信息)和 MPEG 用户数据,两者都可以嵌入隐藏字幕数据。

成功时返回 AMEDIA_OK,或返回 AMEDIA_ERROR_* 表示失败原因。如果此 API 返回 AMEDIA_OK,则 fmt 中现有的键值对将被移除。如果此 API 返回 AMEDIA_ERROR_*,则 fmt 的内容未定义。

自 API level 28 开始可用。

AMediaExtractor_getSampleSize

声明于 media/NdkMediaExtractor.h
ssize_t AMediaExtractor_getSampleSize(
  AMediaExtractor *
)

返回当前样本的大小(字节),或在没有样本可用时返回 -1(流结束)。

此 API 可与 AMediaExtractor_readSampleData 结合使用

ssize_t sampleSize = AMediaExtractor_getSampleSize(ex);
uint8_t *buf = new uint8_t[sampleSize];
AMediaExtractor_readSampleData(ex, buf, sampleSize);

自 API level 28 开始可用。

AMediaExtractor_getSampleTime

声明于 media/NdkMediaExtractor.h
int64_t AMediaExtractor_getSampleTime(
  AMediaExtractor *
)

返回当前样本的显示时间,单位为微秒。

或如果没有更多样本可用,则返回 -1。

自 API level 21 开始可用。

AMediaExtractor_getSampleTrackIndex

声明于 media/NdkMediaExtractor.h
int AMediaExtractor_getSampleTrackIndex(
  AMediaExtractor *
)

返回当前样本所属的轨道索引(如果没有更多样本可用则返回 -1)

自 API level 21 开始可用。

AMediaExtractor_getTrackCount

声明于 media/NdkMediaExtractor.h
size_t AMediaExtractor_getTrackCount(
  AMediaExtractor *
)

返回先前指定的媒体文件中的轨道数量。

自 API level 21 开始可用。

AMediaExtractor_getTrackFormat

声明于 media/NdkMediaExtractor.h
AMediaFormat * AMediaExtractor_getTrackFormat(
  AMediaExtractor *,
  size_t idx
)

返回指定轨道的格式。

调用者必须释放返回的 format

自 API level 21 开始可用。

AMediaExtractor_new

声明于 media/NdkMediaExtractor.h
AMediaExtractor * AMediaExtractor_new()

创建新的媒体提取器。

自 API level 21 开始可用。

AMediaExtractor_readSampleData

声明于 media/NdkMediaExtractor.h
ssize_t AMediaExtractor_readSampleData(
  AMediaExtractor *,
  uint8_t *buffer,
  size_t capacity
)

读取当前样本。

自 API level 21 开始可用。

AMediaExtractor_seekTo

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_seekTo(
  AMediaExtractor *,
  int64_t seekPosUs,
  SeekMode mode
)

自 API level 21 开始可用。

AMediaExtractor_selectTrack

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_selectTrack(
  AMediaExtractor *,
  size_t idx
)

选择指定的轨道。

后续对 readSampleData、getSampleTrackIndex 和 getSampleTime 的调用仅检索选定轨道子集的信息。多次选择同一轨道没有效果,该轨道仅被选择一次。

自 API level 21 开始可用。

AMediaExtractor_setDataSource

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_setDataSource(
  AMediaExtractor *,
  const char *location
)

设置提取器将从中读取的 URI。

自 API level 21 开始可用。

AMediaExtractor_setDataSourceCustom

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_setDataSourceCustom(
  AMediaExtractor *,
  AMediaDataSource *src
)

设置提取器将从中读取的自定义数据源实现。

自 API level 28 开始可用。

AMediaExtractor_setDataSourceFd

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_setDataSourceFd(
  AMediaExtractor *,
  int fd,
  off64_t offset,
  off64_t length
)

设置提取器将从中读取的文件描述符。

自 API level 21 开始可用。

AMediaExtractor_unselectTrack

声明于 media/NdkMediaExtractor.h
media_status_t AMediaExtractor_unselectTrack(
  AMediaExtractor *,
  size_t idx
)

取消选择指定的轨道。

后续对 readSampleData、getSampleTrackIndex 和 getSampleTime 的调用仅检索选定轨道子集的信息。

自 API level 21 开始可用。

AMediaFormat_clear

声明在 media/NdkMediaFormat.h
void AMediaFormat_clear(
  AMediaFormat *
)

从给定的 AMediaFormat 中移除所有键/值对。

自 API level 29 起可用。

AMediaFormat_copy

声明在 media/NdkMediaFormat.h
media_status_t AMediaFormat_copy(
  AMediaFormat *to,
  AMediaFormat *from
)

将一个 AMediaFormat 复制到另一个。

自 API level 29 起可用。

AMediaFormat_delete

声明在 media/NdkMediaFormat.h
media_status_t AMediaFormat_delete(
  AMediaFormat *
)

自 API level 21 开始可用。

AMediaFormat_getBuffer

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getBuffer(
  AMediaFormat *,
  const char *name,
  void **data,
  size_t *size
)

返回的数据由格式所有,只要命名的条目是格式的一部分,就保持有效。

自 API level 21 开始可用。

AMediaFormat_getDouble

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getDouble(
  AMediaFormat *,
  const char *name,
  double *out
)

自 API level 28 开始可用。

AMediaFormat_getFloat

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getFloat(
  AMediaFormat *,
  const char *name,
  float *out
)

自 API level 21 开始可用。

AMediaFormat_getInt32

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getInt32(
  AMediaFormat *,
  const char *name,
  int32_t *out
)

自 API level 21 开始可用。

AMediaFormat_getInt64

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getInt64(
  AMediaFormat *,
  const char *name,
  int64_t *out
)

自 API level 21 开始可用。

AMediaFormat_getRect

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getRect(
  AMediaFormat *,
  const char *name,
  int32_t *left,
  int32_t *top,
  int32_t *right,
  int32_t *bottom
)

自 API level 28 开始可用。

AMediaFormat_getSize

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getSize(
  AMediaFormat *,
  const char *name,
  size_t *out
)

自 API level 21 开始可用。

AMediaFormat_getString

声明在 media/NdkMediaFormat.h
bool AMediaFormat_getString(
  AMediaFormat *,
  const char *name,
  const char **out
)

返回的字符串由格式所有,直到下次调用 getString 或格式被删除之前保持有效。

自 API level 21 开始可用。

AMediaFormat_new

声明在 media/NdkMediaFormat.h
AMediaFormat * AMediaFormat_new()

自 API level 21 开始可用。

AMediaFormat_setBuffer

声明在 media/NdkMediaFormat.h
void AMediaFormat_setBuffer(
  AMediaFormat *,
  const char *name,
  const void *data,
  size_t size
)

提供的数据被复制到格式中。

自 API level 21 开始可用。

AMediaFormat_setDouble

声明在 media/NdkMediaFormat.h
void AMediaFormat_setDouble(
  AMediaFormat *,
  const char *name,
  double value
)

自 API level 28 开始可用。

AMediaFormat_setFloat

声明在 media/NdkMediaFormat.h
void AMediaFormat_setFloat(
  AMediaFormat *,
  const char *name,
  float value
)

自 API level 21 开始可用。

AMediaFormat_setInt32

声明在 media/NdkMediaFormat.h
void AMediaFormat_setInt32(
  AMediaFormat *,
  const char *name,
  int32_t value
)

自 API level 21 开始可用。

AMediaFormat_setInt64

声明在 media/NdkMediaFormat.h
void AMediaFormat_setInt64(
  AMediaFormat *,
  const char *name,
  int64_t value
)

自 API level 21 开始可用。

AMediaFormat_setRect

声明在 media/NdkMediaFormat.h
void AMediaFormat_setRect(
  AMediaFormat *,
  const char *name,
  int32_t left,
  int32_t top,
  int32_t right,
  int32_t bottom
)

自 API level 28 开始可用。

AMediaFormat_setSize

声明在 media/NdkMediaFormat.h
void AMediaFormat_setSize(
  AMediaFormat *,
  const char *name,
  size_t value
)

自 API level 28 开始可用。

AMediaFormat_setString

声明在 media/NdkMediaFormat.h
void AMediaFormat_setString(
  AMediaFormat *,
  const char *name,
  const char *value
)

提供的字符串被复制到格式中。

自 API level 21 开始可用。

AMediaFormat_toString

声明在 media/NdkMediaFormat.h
const char * AMediaFormat_toString(
  AMediaFormat *
)

格式的人类可读表示。

返回的字符串由 format 所有,并且在下次调用 toString 或 format 被删除之前始终有效。

自 API level 21 开始可用。

AMediaMuxer_addTrack

声明在 media/NdkMediaMuxer.h
ssize_t AMediaMuxer_addTrack(
  AMediaMuxer *,
  const AMediaFormat *format
)

添加具有指定格式的轨道。

返回新轨道的索引,失败时返回负值,可解释为 media_status_t。

自 API level 21 开始可用。

AMediaMuxer_append

声明在 media/NdkMediaMuxer.h
AMediaMuxer * AMediaMuxer_append(
  int fd,
  AppendMode mode
)

创建一个新的媒体混合器,用于向现有 MPEG4 文件追加数据。

这是一个同步 API 调用,如果现有文件很大,可能需要一段时间才能返回。仅适用于符合以下特征之一的 MPEG4 文件

  • 单个音频轨道。
  • 单个视频轨道。
  • 单个音频轨道和单个视频轨道。
自 API level 31 起可用。

详情
参数
fd
必须以读写权限打开。不获取此 fd 的所有权,即调用者负责关闭 fd。
mode
指定数据将如何附加;AppendMode 枚举描述了可能的附加方法。
返回值
如果文件 (fd) 已包含轨道,则指向 AMediaMuxer 的指针,否则为 nullptr。AMediaMuxer_delete 应用于释放返回的指针。

AMediaMuxer_delete

声明在 media/NdkMediaMuxer.h
media_status_t AMediaMuxer_delete(
  AMediaMuxer *
)

删除之前创建的媒体混合器。

自 API level 21 开始可用。

AMediaMuxer_getTrackCount

声明在 media/NdkMediaMuxer.h
ssize_t AMediaMuxer_getTrackCount(
  AMediaMuxer *
)

返回传递给 AMediaMuxer_new 的文件中添加的轨道数量,或传递给 AMediaMuxer_append 的文件中已有的轨道数量。

应在 INITIALIZED 或 STARTED 状态下调用,否则返回 -1。

自 API level 31 起可用。

AMediaMuxer_getTrackFormat

声明在 media/NdkMediaMuxer.h
AMediaFormat * AMediaMuxer_getTrackFormat(
  AMediaMuxer *muxer,
  size_t idx
)

返回传递给 AMediaMuxer_new 的文件中索引为 idx 的已添加轨道的 AMediaFormat,或传递给 AMediaMuxer_append 的文件中索引为 idx 的现有轨道的 AMediaFormat。

应在 INITIALIZED 或 STARTED 状态下调用,否则返回 nullptr。AMediaFormat_delete 应用于释放返回的指针。

自 API level 31 起可用。

AMediaMuxer_new

声明在 media/NdkMediaMuxer.h
AMediaMuxer * AMediaMuxer_new(
  int fd,
  OutputFormat format
)

创建新的媒体混合器。

自 API level 21 开始可用。

AMediaMuxer_setLocation

声明在 media/NdkMediaMuxer.h
media_status_t AMediaMuxer_setLocation(
  AMediaMuxer *,
  float latitude,
  float longitude
)

在输出文件中设置并存储地理数据(纬度和经度)。

此方法应在 AMediaMuxer_start 之前调用。如果输出格式为 AMEDIAMUXER_OUTPUT_FORMAT_MPEG_4,则地理数据存储在 udta box 中,其他输出格式则忽略。地理数据按照 ISO-6709 标准存储。

这两个值都以度为单位指定。纬度必须在 [-90, 90] 范围内。经度必须在 [-180, 180] 范围内。

自 API level 21 开始可用。

AMediaMuxer_setOrientationHint

声明在 media/NdkMediaMuxer.h
media_status_t AMediaMuxer_setOrientationHint(
  AMediaMuxer *,
  int degrees
)

设置输出视频播放的定向提示。

此方法应在 AMediaMuxer_start 之前调用。调用此方法不会在混合器生成文件时旋转视频帧,但如果输出格式为 AMEDIAMUXER_OUTPUT_FORMAT_MPEG_4,则会在输出视频中添加一个包含旋转角度的合成矩阵,以便视频播放器可以选择正确的播放方向。请注意,某些视频播放器在播放期间可能会忽略合成矩阵。角度以度为单位,顺时针指定。支持的角度为 0、90、180 和 270 度。

自 API level 21 开始可用。

AMediaMuxer_start

声明在 media/NdkMediaMuxer.h
media_status_t AMediaMuxer_start(
  AMediaMuxer *
)

启动混合器。

应在 AMediaMuxer_addTrack 之后和 AMediaMuxer_writeSampleData 之前调用。

自 API level 21 开始可用。

AMediaMuxer_stop

声明在 media/NdkMediaMuxer.h
media_status_t AMediaMuxer_stop(
  AMediaMuxer *
)

停止混合器。

混合器停止后,无法重新启动。

自 API level 21 开始可用。

AMediaMuxer_writeSampleData

声明在 media/NdkMediaMuxer.h
media_status_t AMediaMuxer_writeSampleData(
  AMediaMuxer *muxer,
  size_t trackIdx,
  const uint8_t *data,
  const AMediaCodecBufferInfo *info
)

将编码后的样本写入混合器。

应用程序需要确保样本写入正确的轨道。此外,还需要确保每个轨道的样本按时间顺序写入(例如,按照编码器提供的顺序)。

自 API level 21 开始可用。