Media
摘要
类型定义 |
|
---|---|
ABitrateMode
|
typedefenum ABitrateMode
编码器比特率模式。 |
ACodecAudioCapabilities
|
typedefstruct ACodecAudioCapabilities
|
ACodecEncoderCapabilities
|
typedefstruct ACodecEncoderCapabilities
|
ACodecPerformancePoint
|
typedefstruct ACodecPerformancePoint
|
ACodecVideoCapabilities
|
typedefstruct ACodecVideoCapabilities
|
ADoubleRange
|
typedefstruct ADoubleRange
描述两个双精度浮点数值范围的实用结构。 |
AImage
|
typedefstruct AImage
AImage 是一种不透明类型,提供对 AImageReader 生成图像的访问。 |
AImageCropRect
|
typedefstruct AImageCropRect
描述由 AImage_getCropRect 返回的裁剪矩形的数据类型。 |
AImageReader
|
typedefstruct AImageReader
AImage 是一种不透明类型,允许应用直接访问渲染到 ANativeWindow 中的图像数据。 |
AImageReader_BufferRemovedCallback)(void *context, AImageReader *reader, AHardwareBuffer *buffer)
|
typedefvoid(*
当 AImageReader 即将移除缓冲区时调用的回调函数签名。 |
AImageReader_BufferRemovedListener
|
typedef AHardwareBuffer 移除事件的监听器,使用 AImageReader_setBufferRemovedListener 向 AImageReader 注册监听器对象。 |
AImageReader_ImageCallback)(void *context, AImageReader *reader)
|
typedefvoid(*
当 AImageReader 有新图像可用时调用的回调函数签名。 |
AImageReader_ImageListener
|
typedefstruct AImageReader_ImageListener
|
AIntRange
|
typedefstruct AIntRange
描述两个整数值范围的实用结构。 |
AMediaCodec
|
typedefstruct AMediaCodec
|
AMediaCodecBufferInfo
|
typedefstruct AMediaCodecBufferInfo
|
AMediaCodecCryptoInfo
|
typedefstruct AMediaCodecCryptoInfo
|
AMediaCodecInfo
|
typedefstruct AMediaCodecInfo
|
AMediaCodecKind
|
typedefenum AMediaCodecKind
|
AMediaCodecOnAsyncError)(AMediaCodec *codec, void *userdata, media_status_t error, int32_t actionCode, const char *detail)
|
typedefvoid(*
当 MediaCodec 遇到错误时调用。 |
AMediaCodecOnAsyncFormatChanged)(AMediaCodec *codec, void *userdata, AMediaFormat *format)
|
typedefvoid(*
当输出格式发生变化时调用。 |
AMediaCodecOnAsyncInputAvailable)(AMediaCodec *codec, void *userdata, int32_t index)
|
typedefvoid(*
当输入缓冲区可用时调用。 |
AMediaCodecOnAsyncNotifyCallback
|
typedef |
AMediaCodecOnAsyncOutputAvailable)(AMediaCodec *codec, void *userdata, int32_t index, AMediaCodecBufferInfo *bufferInfo)
|
typedefvoid(*
当输出缓冲区可用时调用。 |
AMediaCodecOnFrameRendered)(AMediaCodec *codec, void *userdata, int64_t mediaTimeUs, int64_t systemNano)
|
typedefvoid(*
当输出帧在输出表面上渲染时调用。 |
AMediaCodecSupportedMediaType
|
typedef 媒体类型定义,包含位字段指示解码器/编码器/两者是否支持该类型。 |
AMediaCodecType
|
typedefenum AMediaCodecType
编解码器类型。 |
AMediaCrypto
|
typedefstruct AMediaCrypto
|
AMediaDataSource
|
typedefstruct AMediaDataSource
|
AMediaDataSourceClose)(void *userdata)
|
typedefvoid(*
调用以关闭数据源,解除读取阻塞,并释放相关资源。 |
AMediaDataSourceGetAvailableSize)(void *userdata, off64_t offset)
|
typedefssize_t(*
调用以获取从该数据源的 offset 开始无需阻塞 I/O 即可读取的字节数估算值。 |
AMediaDataSourceGetSize)(void *userdata)
|
typedefssize_t(*
调用以获取数据源的大小。 |
AMediaDataSourceReadAt)(void *userdata, off64_t offset, void *buffer, size_t size)
|
typedefssize_t(*
调用以请求从给定 offset 的数据。 |
AMediaDrm
|
typedefstruct AMediaDrm
|
AMediaDrmEventListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, AMediaDrmEventType eventType, int extra, const uint8_t *data, size_t dataSize)
|
typedefvoid(*
|
AMediaDrmEventType
|
typedefenum AMediaDrmEventType
|
AMediaDrmExpirationUpdateListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, int64_t expiryTimeInMS)
|
typedefvoid(*
|
AMediaDrmKeyId
|
typedef |
AMediaDrmKeyRequestType
|
typedef 在 API 33 中引入。 |
AMediaDrmKeySetId
|
typedef |
AMediaDrmKeyStatus
|
typedefstruct AMediaDrmKeyStatus
|
AMediaDrmKeyStatusType
|
typedefenum AMediaKeyStatusType
|
AMediaDrmKeyType
|
typedefenum AMediaDrmKeyType
|
AMediaDrmKeyValue
|
typedefstruct AMediaDrmKeyValuePair
包含 {key, value} 对的数据类型。 |
AMediaDrmKeysChangeListener)(AMediaDrm *, const AMediaDrmSessionId *sessionId, const AMediaDrmKeyStatus *keyStatus, size_t numKeys, bool hasNewUsableKey)
|
typedefvoid(*
|
AMediaDrmScope
|
typedef |
AMediaDrmSecureStop
|
typedef |
AMediaDrmSessionId
|
typedef |
AMediaExtractor
|
typedefstruct AMediaExtractor
|
AMediaFormat
|
typedefstruct AMediaFormat
|
AMediaMuxer
|
typedefstruct AMediaMuxer
|
AMediaUUID[16]
|
typedefuint8_t
|
ANativeWindow
|
typedefstruct ANativeWindow
|
PsshEntry
|
typedefstruct PsshEntry
加密方案 UUID 到该方案特定数据的映射 |
PsshInfo
|
typedefstruct PsshInfo
加密方案列表及其数据 |
函数 |
|
---|---|
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 *)
|
PsshInfo *
如果存在,获取 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 |
这表明缓冲区已被解码并更新了解码器的内部状态,但未产生任何输出缓冲区。 |
AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM |
|
AMEDIACODEC_BUFFER_FLAG_KEY_FRAME |
这表明标记为此标志的(编码)缓冲区包含关键帧的数据。 |
AMEDIACODEC_BUFFER_FLAG_MUXER_DATA |
这表明缓冲区包含非媒体数据供混合器处理。 |
AMEDIACODEC_BUFFER_FLAG_PARTIAL_FRAME |
匿名枚举 115
声明于media/NdkMediaCodec.h
Anonymous Enum 115
匿名枚举 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; 此格式假定
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 位)。
此格式假定
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 位)
此格式假定
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 位。 对应的格式
另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
AIMAGE_FORMAT_RGBA_FP16 |
64 位 RGBA 格式,每个通道 16 位。 对应的格式
另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
AIMAGE_FORMAT_RGBX_8888 |
32 位 RGBX 格式,每个通道 8 位。 忽略 Alpha 通道位的值(图像被假定为不透明)。 对应的格式
另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
AIMAGE_FORMAT_RGB_565 |
16 位 RGB 格式,红色通道 5 位,绿色通道 6 位,蓝色通道 5 位。 对应的格式
另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
AIMAGE_FORMAT_RGB_888 |
24 位 RGB 格式,每个通道 8 位。 对应的格式
另请参阅: AImage 另请参阅: AImageReader 另请参阅: AHardwareBuffer |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
AIMAGE_FORMAT_Y8 |
Android Y8 格式。 Y8 是一种平面格式,仅包含一个 WxH 的 Y 平面,每个像素由 8 位表示。 此格式假定
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 媒体文件格式。 |
SeekMode
声明于media/NdkMediaExtractor.h
SeekMode
cryptoinfo_mode_t
声明于media/NdkMediaCodec.h
cryptoinfo_mode_t
media_status_t
声明在media/NdkMediaError.h
中
media_status_t
NDK 媒体函数返回的媒体错误消息类型。
类型定义
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
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 即将移除缓冲区时调用的回调函数签名。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
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 有新图像可用时调用的回调函数签名。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
AImageReader_ImageListener
请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。struct AImageReader_ImageListener AImageReader_ImageListener
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)
当输出帧在输出表面上渲染时调用。
详情 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
AMediaCodecSupportedMediaType
声明在media/NdkMediaCodecStore.h
中
struct AMediaCodecSupportedMediaType AMediaCodecSupportedMediaType
媒体类型定义,包含位字段指示解码器/编码器/两者是否支持该类型。
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
变量
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 丢弃未显示/未消耗的帧以追赶进度的键。
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 帧最大数量的键,由视频编码器使用。
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 )
获取支持的码率范围,单位为比特/秒。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取比特率,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
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 是某个值。
数组按升序排序,并且范围是不同的(不相交)。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取输入声道数组,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecAudioCapabilities_getMaxInputChannelCount
声明于media/NdkMediaCodecInfo.h
int32_t ACodecAudioCapabilities_getMaxInputChannelCount( const ACodecAudioCapabilities *_Nonnull audioCaps )
返回支持的最大输入声道数。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果
audioCaps |
ACodecAudioCapabilities_getMinInputChannelCount
声明于media/NdkMediaCodecInfo.h
int32_t ACodecAudioCapabilities_getMinInputChannelCount( const ACodecAudioCapabilities *_Nonnull audioCaps )
返回支持的最小输入声道数。
这通常是 1,但对于某些 mime 类型会有所不同。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果
audioCaps |
ACodecAudioCapabilities_getSupportedSampleRateRanges
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecAudioCapabilities_getSupportedSampleRateRanges( const ACodecAudioCapabilities *_Nonnull audioCaps, const AIntRange *_Nullable *_Nonnull outArrayPtr, size_t *_Nonnull outCount )
获取支持的采样率范围数组。
数组按升序排序,并且范围是不同的(不相交)。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取采样率范围,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecAudioCapabilities_getSupportedSampleRates
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecAudioCapabilities_getSupportedSampleRates( const ACodecAudioCapabilities *_Nonnull audioCaps, const int *_Nullable *_Nonnull outArrayPtr, size_t *_Nonnull outCount )
获取支持的采样率数组。
数组按升序排序。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果编解码器仅支持离散值,则返回 AMEDIA_OK。否则,返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecAudioCapabilities_isSampleRateSupported
声明于media/NdkMediaCodecInfo.h
int32_t ACodecAudioCapabilities_isSampleRateSupported( const ACodecAudioCapabilities *_Nonnull audioCaps, int32_t sampleRate )
查询编解码器是否支持该采样率。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果支持采样率,则返回 1。
|
||
返回值 |
如果不支持采样率,则返回 0。
|
||
返回值 |
如果
audioCaps |
ACodecEncoderCapabilities_getComplexityRange
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecEncoderCapabilities_getComplexityRange( const ACodecEncoderCapabilities *_Nonnull encoderCaps, AIntRange *_Nonnull outRange )
获取支持的编码器复杂度值范围。
一些编解码器可能支持多个复杂度级别,其中较高的复杂度值使用更多的编码工具(例如执行更密集的计算)来提高质量或压缩比。使用较低的值可以节省功耗和/或时间。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取复杂度范围,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecEncoderCapabilities_getQualityRange
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecEncoderCapabilities_getQualityRange( const ACodecEncoderCapabilities *_Nonnull encoderCaps, AIntRange *_Nonnull outRange )
获取支持的质量值范围。
质量是实现特定的。通常,较高的质量设置会带来更好的图像质量和较低的压缩比。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取质量范围,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecEncoderCapabilities_isBitrateModeSupported
声明于media/NdkMediaCodecInfo.h
int32_t ACodecEncoderCapabilities_isBitrateModeSupported( const ACodecEncoderCapabilities *_Nonnull encoderCaps, ABitrateMode mode )
查询是否支持某种码率模式。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果支持比特率模式,则返回 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 )
检查性能点是否覆盖某种媒体格式。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果性能点涵盖该格式,则返回 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)。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
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 )
获取是否支持给定的视频尺寸和帧率组合。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果支持尺寸和速率,则返回 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 )
获取给定视频尺寸的可达视频帧率范围。
这基于制造商对此设备和编解码器的性能测量。并非所有编解码器或设备都可能提供测量数据。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取可实现的视频帧率,则返回 AMEDIA_OK。
|
||||
返回值 |
如果编解码器未发布任何测量数据,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getBitrateRange
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getBitrateRange( const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange )
获取支持的码率范围,单位为比特/秒。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取支持的比特率,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getHeightAlignment
声明于media/NdkMediaCodecInfo.h
int32_t ACodecVideoCapabilities_getHeightAlignment( const ACodecVideoCapabilities *_Nonnull videoCaps )
返回视频高度(像素)的对齐要求。
这是一个 2 的幂值,视频高度必须是它的倍数。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果
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。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取性能点,则返回 AMEDIA_OK。
|
||||
返回值 |
如果
videoCaps 或 outPerformancePoint |
||||
返回值 |
如果没有更多支持的性能点,则返回 AMEDIA_ERROR_UNSUPPORTED。在这种情况下,*outPerformancePoint 也将被设置为 NULL。
|
ACodecVideoCapabilities_getSupportedFrameRates
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedFrameRates( const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange )
获取支持的帧率范围。
这不是性能指标。相反,它表示编码标准中指定的限制,基于以特定帧率编码供稍后回放的材料或非实时解码此类材料的复杂性。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取帧率范围,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getSupportedFrameRatesFor
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedFrameRatesFor( const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, int32_t height, ADoubleRange *_Nonnull outRange )
获取给定视频尺寸的支持视频帧率范围。
这不是性能指标。相反,它表示编码标准中指定的限制,基于以特定帧率编码特定大小材料供稍后回放或非实时解码此类材料的复杂性。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取支持的视频帧率,则返回 AMEDIA_OK。
|
||||
返回值 |
如果不支持尺寸查询,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getSupportedHeights
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedHeights( const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange )
获取支持的视频高度范围。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取支持的视频高度,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getSupportedHeightsFor
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedHeightsFor( const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, AIntRange *_Nonnull outRange )
获取给定视频宽度的支持视频高度范围。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取支持的视频高度范围,则返回 AMEDIA_OK。
|
||||
返回值 |
如果不支持宽度查询,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getSupportedWidths
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedWidths( const ACodecVideoCapabilities *_Nonnull videoCaps, AIntRange *_Nonnull outRange )
获取支持的视频宽度范围。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取支持的视频宽度,则返回 AMEDIA_OK。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getSupportedWidthsFor
声明于media/NdkMediaCodecInfo.h
media_status_t ACodecVideoCapabilities_getSupportedWidthsFor( const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t height, AIntRange *_Nonnull outRange )
获取给定视频高度的支持视频宽度范围。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取支持的视频宽度范围,则返回 AMEDIA_OK。
|
||||
返回值 |
如果不支持高度查询,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果以下任何一个
audioCaps ,outRange |
ACodecVideoCapabilities_getWidthAlignment
声明于media/NdkMediaCodecInfo.h
int32_t ACodecVideoCapabilities_getWidthAlignment( const ACodecVideoCapabilities *_Nonnull videoCaps )
获取视频宽度(像素)的对齐要求。
这是一个 2 的幂值,视频宽度必须是它的倍数。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果
audioCaps |
ACodecVideoCapabilities_isSizeSupported
声明于media/NdkMediaCodecInfo.h
int32_t ACodecVideoCapabilities_isSizeSupported( const ACodecVideoCapabilities *_Nonnull videoCaps, int32_t width, int32_t height )
获取是否支持给定的视频尺寸。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果支持该尺寸,则返回 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_acquireLatestImage 与 AImageReader_acquireNextImage 有所不同,maxImages 应至少为 2 - 丢弃除最新 AImage 以外的所有图像需要临时一次获取两个 AImage。或者更一般地说,调用 AImageReader_acquireLatestImage 时,如果预留的图像少于两张(即 maxImages - currentAcquiredImages < 2),则不会按预期丢弃图像。
如果已使用 AImageReader_acquireNextImage 或 AImageReader_acquireLatestImage 获取了 maxImages,则此方法将失败。特别是,连续调用 AImageReader_acquireNextImage 或 AImageReader_acquireLatestImage 的次数大于 maxImages 且其间未调用 AImage_delete,将耗尽底层队列。此时,将返回 AMEDIA_IMGREADER_MAX_IMAGES_ACQUIRED,直到使用 AImage_delete 释放更多图像。
从 API level 24 开始可用。
另请参阅: AImageReader_acquireNextImage
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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
详情 | |||
---|---|---|---|
参数 |
|
AImageReader_acquireNextImage
请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。media_status_t AImageReader_acquireNextImage( AImageReader *reader, AImage **image )
从图像读取器队列中获取下一个 AImage。
警告:考虑使用 AImageReader_acquireLatestImage 代替,因为它会自动释放较旧的图像,并允许运行较慢的处理程序追赶到最新的帧。推荐将 AImageReader_acquireNextImage 用于批量/后台处理。不正确地使用此方法可能导致图像出现不断增加的延迟,随后完全停顿,似乎没有新图像出现。
如果已使用 AImageReader_acquireNextImage 或 AImageReader_acquireLatestImage 获取了 maxImages,则此方法将失败。特别是,连续调用 AImageReader_acquireNextImage 或 AImageReader_acquireLatestImage 的次数大于 maxImages 且其间未调用 AImage_delete,将耗尽底层队列。此时,将返回 AMEDIA_IMGREADER_MAX_IMAGES_ACQUIRED,直到使用 AImage_delete 释放更多图像。
从 API level 24 开始可用。
另请参阅: AImageReader_acquireLatestImage
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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
详情 | |||
---|---|---|---|
参数 |
|
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 开始可用。
详情 | |||
---|---|---|---|
参数 |
|
AImageReader_getFormat
请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。media_status_t AImageReader_getFormat( const AImageReader *reader, int32_t *format )
查询此读取器生成的 AImage 的格式。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImageReader_getMaxImages
请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。media_status_t AImageReader_getMaxImages( const AImageReader *reader, int32_t *maxImages )
查询此读取器同时获取的 AImage 的最大数量。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImageReader_getWindow
请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。media_status_t AImageReader_getWindow( AImageReader *reader, ANativeWindow **window )
获取一个 ANativeWindow,可用于为此图像读取器生成 AImage。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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
详情 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
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
hardwareBufferFormat
和 dataSpace
hardwareBufferFormat
dataSpace
从 API level 34 开始可用。
另请参阅: AImageReader_newWithUsage
详情 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||||
返回值 |
|
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 的参数和返回值相同。
如果 format
是 AIMAGE_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 支持,特别是如果 format
是 AIMAGE_FORMAT_PRIVATE,则 usage
不得包含 AHARDWAREBUFFER_USAGE_CPU_READ_RARELY 或 AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN。
请注意,并非所有格式和使用标志组合都受 AImageReader 支持。以下是 AImageReader 支持的组合:
详情 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
从 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
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImageReader_setImageListener
请注意,right 和 bottom 坐标是独占的,因此矩形的宽度为 (right - left),高度为 (bottom - top)。media_status_t AImageReader_setImageListener( AImageReader *reader, AImageReader_ImageListener *listener )
设置此图像读取器的 onImageAvailable 监听器。
调用此方法将替换之前注册的监听器。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImage_delete
声明于media/NdkImage.h
void AImage_delete( AImage *image )
将图像返回给系统并从内存中删除 AImage 对象。
此方法返回后,请勿使用 image 指针。请注意,如果父 AImageReader 已关闭,则从父读取器获取的所有 AImage 对象都将返回给系统。除此方法外,所有 AImage_* 方法都将返回 AMEDIA_ERROR_INVALID_OBJECT。应用程序仍需对这些 AImage 对象调用此方法,以完全从内存中删除 AImage 对象对象。
从 API level 24 开始可用。
详情 | |||
---|---|---|---|
参数 |
|
AImage_deleteAsync
声明于media/NdkImage.h
void AImage_deleteAsync( AImage *image, int releaseFenceFd )
将图像异步返回给系统并从内存中删除 AImage 对象。
类似于 AImage_delete,此方法返回后,请勿使用 image 指针。但是,调用方仍可以保留从该图像返回的 AHardwareBuffer,并使用 releaseFenceFd 通知将硬件缓冲区释放回 AImageReader 的队列。
从 API level 26 开始可用。
另请参阅: sync.h
详情 | |||||
---|---|---|---|---|---|
参数 |
|
AImage_getCropRect
声明于media/NdkImage.h
media_status_t AImage_getCropRect( const AImage *image, AImageCropRect *rect )
查询输入 AImage 的裁剪矩形。
裁剪矩形指定图像中有效像素的区域,使用最大分辨率平面中的坐标。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImage_getDataSpace
声明于media/NdkImage.h
media_status_t AImage_getDataSpace( const AImage *image, int32_t *dataSpace )
查询输入 AImage 的数据空间。
从 API level 34 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImage_getFormat
声明于media/NdkImage.h
media_status_t AImage_getFormat( const AImage *image, int32_t *format )
查询输入 AImage 的格式。
format 值将是 AIMAGE_FORMAT_* 枚举值之一。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImage_getHeight
声明于media/NdkImage.h
media_status_t AImage_getHeight( const AImage *image, int32_t *height )
查询输入 AImage 的高度。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImage_getNumberOfPlanes
声明于media/NdkImage.h
media_status_t AImage_getNumberOfPlanes( const AImage *image, int32_t *numPlanes )
查询输入 AImage 的平面数量。
一个 AImage 的平面数量由其格式确定,可以使用 AImage_getFormat 方法查询。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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 开始可用。
详情 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
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 开始可用。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
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 开始可用。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
AImage_getTimestamp
声明于media/NdkImage.h
media_status_t AImage_getTimestamp( const AImage *image, int64_t *timestampNs )
查询输入 AImage 的时间戳。
timestamp 以纳秒为单位测量,通常是单调递增的。来自不同来源的图像的 timestamp 可能具有不同的时基,因此可能无法比较。timestamp 的具体含义和时基取决于提供图像的来源。对于相机生成的图像,timestamp 值将与 ACAMERA_SENSOR_TIMESTAMP 回调中 ACameraMetadata 的 ACameraCaptureSession_captureCallbacks#onCaptureStarted 和 ACameraCaptureSession_captureCallbacks#onCaptureCompleted 匹配。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
AImage_getWidth
声明于media/NdkImage.h
media_status_t AImage_getWidth( const AImage *image, int32_t *width )
查询输入 AImage 的宽度。
从 API level 24 开始可用。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
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。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取 ACodecAudioCapabilities,则返回 AMEDIA_OK。
|
||||
返回值 |
如果编解码器不是音频编解码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果
videoCaps 或 outPerformancePoint |
AMediaCodecInfo_getCanonicalName
声明于media/NdkMediaCodecInfo.h
const char *_Nullable AMediaCodecInfo_getCanonicalName( const AMediaCodecInfo *_Nonnull 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。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取 ACodecEncoderCapabilities,则返回 AMEDIA_OK。
|
||||
返回值 |
如果编解码器不是编码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果
videoCaps 或 outPerformancePoint |
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 )
获取支持的最大并发编解码器实例数量。
这是一个上限提示。应用程序不应期望能成功运行比返回值更多的实例,但实际可并发运行的实例数可能较少,具体取决于使用时可用的资源。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果
audioCaps |
AMediaCodecInfo_getMediaCodecInfoType
声明于media/NdkMediaCodecInfo.h
AMediaCodecType AMediaCodecInfo_getMediaCodecInfoType( const AMediaCodecInfo *_Nonnull info )
查询编解码器是 SOFTWARE_ONLY、HARDWARE_ACCELERATED 还是 SOFTWARE_WITH_DEVICE_ACCESS 类型。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果
info |
AMediaCodecInfo_getMediaType
声明于media/NdkMediaCodecInfo.h
const char *_Nullable AMediaCodecInfo_getMediaType( const AMediaCodecInfo *_Nonnull 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。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取 ACodecVideoCapabilities,则返回 AMEDIA_OK。
|
||||
返回值 |
如果编解码器不是视频编解码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果
videoCaps 或 outPerformancePoint |
AMediaCodecInfo_isFeatureRequired
声明于media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isFeatureRequired( const AMediaCodecInfo *_Nonnull info, const char *_Nonnull featureName )
查询编解码器特性要求。
编解码器必须使用这些特性,因此它们始终开启。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果特性是必需的,则返回 1;
|
||||
返回值 |
如果特性不是必需的,则返回 0;
|
||||
返回值 |
如果
audioCaps |
AMediaCodecInfo_isFeatureSupported
声明于media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isFeatureSupported( const AMediaCodecInfo *_Nonnull info, const char *_Nonnull featureName )
查询编解码器特性能力。
编解码器支持使用这些特性。这包括可以开启的可选特性,以及始终开启的特性。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果特性受支持,则返回 1;
|
||||
返回值 |
如果特性不受支持,则返回 0;
|
||||
返回值 |
如果
audioCaps |
AMediaCodecInfo_isFormatSupported
声明于media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isFormatSupported( const AMediaCodecInfo *_Nonnull info, const AMediaFormat *_Nonnull format )
查询编解码器是否支持给定格式。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果支持该格式,则返回 1;
|
||||
返回值 |
如果不支持该格式,则返回 0;
|
||||
返回值 |
如果
audioCaps |
AMediaCodecInfo_isVendor
声明于media/NdkMediaCodecInfo.h
int32_t AMediaCodecInfo_isVendor( const AMediaCodecInfo *_Nonnull info )
查询编解码器是由 Android 平台还是设备制造商提供。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果编解码器由设备制造商提供,则返回 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 是未定义行为。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取信息,则返回 AMEDIA_OK。
|
||||
返回值 |
如果
videoCaps 或 outPerformancePoint |
||||
返回值 |
如果没有更多支持该格式的解码器,则返回 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 是未定义行为。输出中不会显示安全编码器。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取信息,则返回 AMEDIA_OK。
|
||||
返回值 |
如果
videoCaps 或 outPerformancePoint |
||||
返回值 |
如果没有更多支持该格式的编码器,则返回 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。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功获取 codecInfo,则返回 AMEDIA_OK。
|
||||
返回值 |
如果找不到对应的编解码器,则返回 AMEDIA_ERROR_UNSUPPORTED。
|
||||
返回值 |
如果
videoCaps 或 outPerformancePoint |
AMediaCodecStore_getSupportedMediaTypes
声明在media/NdkMediaCodecStore.h
中
media_status_t AMediaCodecStore_getSupportedMediaTypes( const AMediaCodecSupportedMediaType *_Nullable *_Nonnull outMediaTypes, size_t *_Nonnull outCount )
获取设备支持的所有媒体类型的数组。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
参数 |
|
||||
返回值 |
如果成功复制,则返回 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,
- keyRequest 指针将引用不透明的密钥请求数据。它将驻留在 AMediaDrm 对象拥有的内存中,并且在下次调用 AMediaDrm_getKeyRequest 或 AMediaDrm_getKeyRequestWithDefaultUrlAndType 或 MediaDrm 对象被释放之前将保持可访问。
- 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,
- keyRequest 指针将引用不透明的密钥请求数据。它将驻留在 AMediaDrm 对象拥有的内存中,并且在下次调用 AMediaDrm_getKeyRequest 或 AMediaDrm_getKeyRequestWithDefaultUrlAndType 或 MediaDrm 对象被释放之前将保持可访问。
- keyRequestSize 将设置为请求的大小。
- defaultUrl 将设置为推荐的用于发送密钥请求的 URL。defaultUrl 指针将引用一个以 NULL 结尾的 URL 字符串。它将采用 UTF-8 编码,并与 key request data KeyRequest 指针引用的数据具有相同的生命周期。传入 NULL 表示您不需要报告它。
- 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 请求字节数组。退出时
- provision request data 将由 provisionRequest 引用,位于 AMediaDrm 对象拥有的内存中。它将在下次调用 getProvisionRequest 之前保持可访问。
- provisionRequestSize 将设置为请求数据的大小。
- 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 文件
- 单个音频轨道。
- 单个视频轨道。
- 单个音频轨道和单个视频轨道。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
如果文件 (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 开始可用。