# 1.1 概述
AnyChat Platform Core SDK 支持加载外部音视频的编码、解码模块(简称AnyChat Codec 库),增强系统的可扩展性,同时也满足一些特定应用环境的特殊需求,如与特定的硬件产品集成时,可以调用硬件编解码器,实现更高效率的即时通讯应用。
AnyChat Platform Core SDK 内核已经实现了部分常用的音视频编码、解码模块, 如 H.264 视频编码、解码算法,ARM-WB、AAC、SPEEX、CELT 等音频编码、解码算法。上层应用可以自己定义新的音视频编码、解码算法,在 AnyChat 平台初始化时,通过相关 API 接口可以加载新的编码、解码模块,同时上层应用也可以重新实现 SDK 内置的编码、解码算法,在 AnyChat 平台初始化时,发现加载的音视频编码、解码算法与内置的算法相同,则会采用上层应用提供的相关算法来替代内核的算法。
单个音视频编码、解码模块(AnyChat Codec 库)最多可以同时包含:一个音频编码器,一个音频解码器,一个视频编码器以及一个视频解码器。当上层应用需要实现多个编码器,或是多个解码器时,可以在多个库中分别实现,然后分别向 AnyChat 内核进行注册。
AnyChat Platform Core SDK 根据预先定义的 CODEC 编号(CodecId)来区分不同的 CODEC,当用户需要实现的 CODEC 不在已定义的 CODEC 列表中时,可以自行定义新的 CODEC 编号,当 AnyChat 内核收到采用新的 CODEC 编码的数据时, 会根据 CODEC 编号查询已注册的新解码器,然后调用新的 CODEC 进行解码。
当上层应用实现的 CODEC 编号与 AnyChat 内核预置的 CODEC 相同时,且输入(或输出)为标准码流时,可以与 AnyChat 内置 CODEC 同步工作(如采用 AnyChat Codec 库进行编码,用 AnyChat 内置库进行解码)。
当上层应用实现的 CODEC 编号不存在于 AnyChat 内置 CODEC 列表中时,需要在编码端、解码端同时注册新的 CODEC,否则将会出现解码失败的情况。
当在编码、解码的过程中出现异常,需要上层重置 CODEC,则可在 OutPacket
上增加标志:OutPacket->dwFlags |= MEDIACODEC_FLAGS_NEEDREINIT