向一个Opus解码器执行一个 CTL 函数.
一般其请求和后续的参数是由一个提供便利的宏来产生的。 参数:
? st OpusDecoder*: 解码器状态.
? request :这个及所有其他剩余参数应被1个在Generic CTLs 或
Encoder related CTLs所提供便利的宏来替代
参见:
Generic CTLs Decoder related CTLs
void opus_decoder_destroy ( OpusDecoder *
st )
释放一个根据opus_decoder_create()已分配的OpusDecoder 对象. 参数:
[in] st OpusDecoder*:用于释放的解码器状态。
int opus_decoder_get_nb_samples ( const OpusDecoder * dec,
const unsigned char opus_int32
len
packet[],
)
获得一个Opus包的样本数 参数:
[in] dec OpusDecoder*: 解码器状态 [in] packet char*: Opus包 [in] len opus_int32: 包的长度 返回:
样本的数量 返回值:
OPUS_INVALID_PACKET:通过的被压缩数据已损坏或其格式不被支持。
16
int opus_decoder_get_size ( int 获得 OpusDecoder结构的大小。 参数:
[in] channels 返回:
字节数的大小.
channels )
int: 通道数,必须是1或2.
int opus_decoder_init ( OpusDecoder *
opus_int32 int
Fs,
st,
channels
)
初始化一个以前分配过的解码器状态.
状态必须至少是opus_decoder_get_size()返回的大小.
在这里,应用程序不要用系统自动分配内存,而要准备用自己的分配器。 参见:
opus_decoder_create,opus_decoder_get_size,为重设一个以前初始化的状态,使用OPUS_RESET_STATE CTL.
参数:
[in] st OpusDecoder*: 解码器状态.
[in] Fs opus_int32: 准备解码的采样率 (Hz). 必须是8000、12000、16000、24000、或48000.
[in] channels 返回值:
成功,OPUS_OK ,失败,错误代码。
int opus_packet_get_bandwidth ( const unsigned char * data
获得一个Opus包的带宽。 参数:
17
int: 解码的通道数 (1 or 2)
)
[in] data 返回值:
char*: Opus 包
? OPUS_BANDWIDTH_NARROWBAND 窄带 (4kHz bandpass) ? OPUS_BANDWIDTH_MEDIUMBAND 中等带宽 (6kHz bandpass) ? OPUS_BANDWIDTH_WIDEBAND 宽带 (8kHz bandpass) ? OPUS_BANDWIDTH_SUPERWIDEBAND
bandpass)
? OPUS_BANDWIDTH_FULLBAND 全宽带 (20kHz bandpass) ? OPUS_INVALID_PACKET 通过的被压缩数据已损坏或其格式不被
支持
int opus_packet_get_nb_channels
)
获得Opus 包的通道数。 参数: [in] data 返回: 通道数量 返回值:
OPUS_INVALID_PACKET 通过的被压缩数据已损坏或其格式不被支持
int opus_packet_get_nb_frames ( const unsigned char
opus_int32
len
packet[],
char*: Opus 包
( const unsigned char * data
高宽带
(12kHz
)
获得Opus 包所有帧的数量. 参数:
[in] packet char*: Opus 包
18
[in] len opus_int32:包的长度 返回: 帧的数量 返回值:
OPUS_INVALID_PACKET 通过的被压缩数据已损坏或其格式不被支持
int opus_packet_get_nb_samples
packet[],
opus_int32 opus_int32
len, Fs
( const
unsigned
char
)
获得Opus 包的样本数。 参数:
[in] packet char*: Opus 包 [in] len opus_int32: 包的长度
[in] Fs opus_int32: 采样率(Hz). 必须是400的倍数,否则结果不准确。
返回:
样本的数量 返回值:
OPUS_INVALID_PACKET 通过的被压缩数据已损坏或其格式不被支持
int opus_packet_get_samples_per_frame ( const
data,
opus_int32
Fs
unsigned
char
*
)
获得Opus 包每帧的样本数。
19
参数: [in] data
char*: Opus 包. 必须包含至少一个字节的数据。
[in] Fs opus_int32: 采样率(Hz).必须是400的倍数,否则结果不准确。
返回:
每帧样本的数量.
int opus_packet_parse ( const unsigned char * data,
opus_int32
len,
out_toc,
unsigned char *
const unsigned char * frames[48], short size[48], int * payload_offset
)
将一个 opus 包解析成1个或多个帧.
Opus_decode在内部执行这个操作,所以大多数应用程序不需要用到这个函数。这个函数不复制各帧,返回的指针是输入包内部的指针。
参数: [in] data
char*:要进行解析的 Opus包
[in] len opus_int32: 数据的大小 [out] [out] [out] [out] 返回: 帧的数量
out_toc char*: TOC 指针 frames char*[48] 封装过的帧 size short[48] 封装过的帧的大小
payload_offset int*: 返回在包内负载的位置(按字节)
20