文档章节

(十二)用JAVA编写MP3解码器——消混叠处理

暗之幻影
 暗之幻影
发布于 2015/01/04 15:29
字数 399
阅读 6
收藏 0

解码一帧Layer3第6步:消混叠处理 -- class Layer3的antialias方法

 

      消混叠(antialias)处理就是消除伪信号。相邻两个子带间互相干扰造成失真,为了减小这种影响,在信号送入IMDCT之前作消混叠处理。消混叠通过对子带作8点的蝶形变换实现。原理如下图:

Layer3 aliasing reduction

 图1

Layer3 aliasing-butterfly

 图2

      经过逆量化后得到频域信号,一个粒度组内一个声道内共576个频谱值,将576个频谱值被分为18个子带,每个子带32条频率线。8点的的蝶形变换在相邻的两个子带之间进行。图中cai、csi就是源码中的cs[i]和cs[i]。cs[i]和ca[i]我们在构造函数中已经初始化过了。

      【提示】以下代码是Layer3.java的一部分,应遵守《(一)用JAVA编写MP3解码器——前言》中的许可协议。

      class Layer3的antialias方法源码:

//6.
	//>>>>ANTIALIAS============================================================
	private static float[] ca, cs;

	private void antialias(final int ch, final int gr) {
		GRInfo gr_info = (objSI.ch[ch].gr[gr]);

		int sb, ss, sblim = 0;
		float bu, bd;

		if (gr_info.block_type == 2) {
			if (gr_info.mixed_block_flag == 0)
				return;
			sblim = 1;
		} else
			sblim = (rzero_index[ch] - 1) / 18; //sblim=(17+nozero_index[ch])/18-1

		for (sb = 0; sb < sblim; sb++)
			for (ss = 0; ss < 8; ss++) {
				bu = xr[ch][sb][17 - ss];
				bd = xr[ch][sb + 1][ss];
				xr[ch][sb][17 - ss] = bu * cs[ss] - bd * ca[ss];
				xr[ch][sb + 1][ss] = bd * cs[ss] + bu * ca[ss];
			}
	}
	//<<<<ANTIALIAS============================================================

 

 

上一篇:(十一)用JAVA编写MP3解码器——立体声处理

下一篇:(十三)用JAVA编写MP3解码器——IMDCT快速算法

 

【下载地址】http://jmp123.sourceforge.net/

本文转载自:http://lfp001.iteye.com/blog/748157

暗之幻影
粉丝 20
博文 377
码字总数 71245
作品 0
南京
高级程序员
私信 提问
(五)用JAVA编写MP3解码器——解析文件信息

前文提到解析MP3标签,程序源码中也已经出现了调用解析MP3标签、打印MP3文件信息的功能,这儿先说说MP3文件信息的解析。 解析MP3的文件信息对MP3解码器来说只是一个附加功能,如果不加入这部...

暗之幻影
2015/01/04
61
0
疯狂Spring Cloud连载(11)——Feign的编码器与解码器

本文节选自《疯狂Spring Cloud微服务架构实战》 京东购买地址:https://item.jd.com/12256011.html 当当网购买地址:http://product.dangdang.com/25201393.html Spring Cloud教学视频:htt...

杨大仙的程序空间
2017/10/23
3.1K
5
《Java程序员由笨鸟到菜鸟》电子版书正式发布,欢迎大家下载

在众多朋友的支持和鼓励下,《Java程序员由菜鸟到笨鸟》电子版终于和大家见面了。本电子书涵盖了从java基础到javaweb开放框架的大部分内容。在编写的过程中,难免会出现一些错误,希望大家能...

长平狐
2012/11/12
268
0
《Java程序员由笨鸟到菜鸟》电子版书正式发布,欢迎大家下载

在众多朋友的支持和鼓励下,《Java程序员由菜鸟到笨鸟》电子版终于和大家见面了。本电子书涵盖了从java基础到javaweb开放框架的大部分内容。在编写的过程中,难免会出现一些错误,希望大家能...

长平狐
2012/11/12
155
0
OSChina 开源周刊第 33 期 —— Java 7 生命周期终结

每周技术抢先看,总有你想要的! 开源资讯 Node.js 和 io.js 准备合作!合久必分,分久必合? Nervana 开源深度学习软件,性能超 Facebook、Nvidia产品 B 站建开源工作组 多 APP 使用其开源项...

OSC编辑部
2015/05/09
4.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 编写redisUtils工具类,防止高并发获取缓存出现并发问题

import lombok.extern.slf4j.Slf4j;import org.springframework.data.redis.core.BoundHashOperations;import org.springframework.data.redis.core.BoundValueOperations;import org.......

huangkejie
21分钟前
3
0
JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
38分钟前
86
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
47分钟前
4
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
50分钟前
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
56分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部