#import typedef void* OpusDecoderRef; typedef void* OpusEncoderRef; NS_ASSUME_NONNULL_BEGIN /** * Opus编解码桥接类,提供对Opus库的封装 */ @interface OpusBridge : NSObject #pragma mark - 编码器方法 /** * 创建编码器 * @param sampleRate 采样率(Hz), 通常为8000, 16000, 24000, 48000 * @param channels 声道数,1=单声道,2=立体声 * @param application 应用类型, 2048=OPUS_APPLICATION_AUDIO * @param complexity 复杂度 (0-10), 10为最高质量 * @param frameSize 每帧采样数,通常为120, 240, 480, 960 * @return 成功返回YES,失败返回NO */ - (BOOL)createEncoderWithSampleRate:(int)sampleRate channels:(int)channels application:(int)application complexity:(int)complexity frameSize:(int)frameSize; /** * 编码PCM数据为Opus格式 * @param pcmData PCM格式数据 * @return 编码后的数据,失败返回nil */ - (nullable NSData *)encodePCMData:(NSData *)pcmData; /** * 释放编码器资源 */ - (void)disposeEncoder; #pragma mark - 解码器方法 /** * 创建解码器 * @param sampleRate 采样率(Hz), 通常为8000, 16000, 24000, 48000 * @param channels 声道数,1=单声道,2=立体声 * @return 成功返回YES,失败返回NO */ - (BOOL)createDecoderWithSampleRate:(int)sampleRate channels:(int)channels; /** * 解码Opus数据为PCM * @param opusData Opus编码数据 * @param frameSize 每帧采样数 * @return 解码后的PCM数据,失败返回nil */ - (nullable NSData *)decodeOpusData:(NSData *)opusData frameSize:(int)frameSize; /** * 释放解码器资源 */ - (void)disposeDecoder; @end NS_ASSUME_NONNULL_END