MP3编码中的多相滤波问题

xiaomantoubaba 2007-05-28 08:46:20
在多相滤波中我遇到一个地方不大明白,是这样的

我已经获得了pcm样本, 假设为 short int buffer[576];
现在我要对这个buffer加窗. 我发现老外的代码是这样写的

short int x[512]; // 临时用
short int z[512]; // 加窗后的信号

int off = 0;

int i, j;
for(i=0; i<18; i++) // 18==576/32
{

for(j=0; j<32; j++) // 这里非常不明白 ------------->> A
{
x[ 31-i+off ] = *(buffer++);
}

for (i=512; i--; ) // 加窗
{
z[ i ] = x[i+off] * enwindow[ i ];
}
off += 480;
}

我发现A处处理的逻辑是这样的
当i=0时
x[31] = buffer[0], x[30]=buffer[1] .... x[0] = buffer[31];
是反的来的, 我以为是平移呢,
按我的理解是把buffer的前32个数据直接平移到x的前32个.

当i=1时
x[511] = buffer[32], x[510] = buffer[33] ... x[480] = buffer[63]

当i=2时
x[479] = buffer[64], x[510] = buffer[64] ... x[448] = buffer[95]

...

当i=15时
x[63] = buffer[480], x[510] = buffer[481] ... x[32] = buffer[511]

此刻x已经全部填满,

接下来还有2次循环
i=16
x[31] = buffer[512], x[30]=buffer[513] .... x[0] = buffer[543];
把x[31]--x[0]覆盖了一次

i=17
x[511] = buffer[544], x[510]=buffer[545] .... x[480] = buffer[575];
把x[511]--x[480]覆盖了一次

为什么会以这样的方式来加窗?
请有经验的朋友不吝赐教,
我被这个问题困扰了好久了, 我的 QQ89090125

非常感谢。
...全文
266 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaomantoubaba 2007-06-02
  • 打赏
  • 举报
回复
?
mujwaidk 2007-05-30
  • 打赏
  • 举报
回复
不懂,帮顶,学习。
xiaomantoubaba 2007-05-29
  • 打赏
  • 举报
回复
不是吧,靠

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧