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
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
|