You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.7 KiB

#import <Foundation/Foundation.h>
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