# 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