ZBLOG

static int changeSpeed( sonicStream stream, float speed) { short *samples; int numSamples = stream->numInputSamples; int position = 0, period, newSamples; int maxRequired = stream->maxRequired; /* printf("Changing spee...

这段代码是一个函数,用于改变音频流的速度。它接受一个 sonicStream 流对象和一个浮点数 speed 作为参数。

函数内部首先定义了一些局部变量,如 samplesnumSamplespositionperiodnewSamples 等。然后通过判断输入样本的数量是否小于最大需求值来决定是否需要进行速度调整。如果剩余的输入样本不足以满足最大需求,则返回1。

在循环中,根据剩余的采样点数量分为两种情况处理:如果仍有剩余采样点待复制到输出缓冲区,则调用 copyInputToOutput() 函数将其复制过去;否则,在输入缓冲区中选择一段采样点,并使用 findPitchPeriod() 函数找到其基准周期。然后根据给定的速度参数 speed 进行不同方式的采样点操作:如果速度大于1.0,则跳过一定数量的周期并更新位置;否则,在当前位置插入一定数量的周期并更新位置。

如果没有成功调整新样本数(即返回值为0),则表示无法调整输出缓冲区大小,函数返回0。当满足条件时,从流对象中移除已处理的输入样本,并返回1表示成功完成速度调整操作。

请注意,该代码片段未提供完整的函数定义,可能需要引入其他头文件和依赖项。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17924

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?