在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4164|回复: 3

[原创] 无损压缩APE FLAC区别

[复制链接]
发表于 2013-5-10 15:42:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

FLAC压缩率略低于APE,但播放时cpu占用率远低于APE,另外容错性也大大强于APE。
还有就是FLAC是开源的,目前已在多种平台实现。

一、压缩比决定无损压缩文件所占存储空间

所有的无损压缩编码的压缩比都差不太多,但在这些无损压缩编码之中,APE具有更好的压缩率,FLAC的压缩率稍差。就是说一个音频文件用APE压缩后得到的APE文件,会比FLAC文件稍微小一些。不同的WAV文件信息量不同,所以无法提供确切数字,一般来说,FLAC文件要比APE文件大 1/20 左右。

二、编码速度考验用户的耐心,速度快者优

FLAC的压缩和解码速度均显著优于APE,APE只有在FAST的编码强度下,速度才能和FLAC一拼。但相应的,APE的压缩率一直高于FLAC,APE的FAST压缩下得到的文件体积已经可以和FLAC最高压缩比的文件体积媲美。也就是说,如果以速度为基准比较的话,在相同压缩速度的设定下,两者的压缩比差不多。

三、平台的支持决定普及度

各个平台都有支持APE和FLAC的播放器。这两种压缩格式已经非常普及。

四、两者的开源特性,完全免费的技术

两者的开源或部分开源,对音频软硬件的设计们提供了很大的便利,目前不但几乎所有主流播放软件都支持二者,硬件方面也有很多播放器支持了FLAC和APE。只不过因为APE解码的运算量太大的问题,导致并不是每一个APE文件都可以被硬件播放器流畅播放。

五、容错能力

FLAC因为每帧数据之间无关联。因此当FLAC文件在传播过程中受损,导致某帧数据损坏缺失的话,只会损失该帧的音频信息,不会影响到前后的数据。这是FLAC的优势,但也因此FLAC的压缩率稍低。

总结:

无论FLAC还是APE,因为所占空间都比有损音乐大很多,所以都不是主流的音频格式,所以我们在网络上很难获取到FLAC和APE格式的音乐资源。但通过上面的对比,相信很多用户对FLAC和APE的认识更深了一些,单从技术角度讲,FLAC要比APE更有优势,因为FLAC完全开源,许多播放器可以自由地将FLAC解码功能内建在自己的解码器中。同时,FLAC有广泛的硬件平台的支持,几乎所有采用便携式设计的高端解码芯片都能够支持FLAC格式的音乐,FLAC第三个优势在于:优秀的编码使得硬件在解码时只需采用简单的整数运算即可,这将大大降低所占用的硬件资源,解码速度极快,这也是硬件播放器对FLAC支持更好的原因。

分析软件

FLAC(Fast Lagrangian Analysis of Continua)是由Itasca公司研发推出的连续介质力力学分析软件,是该公司旗下最知名的软件系统之一,是国际通用的岩土工程专业分析软件,具有强大的计算功能和广泛的模拟能力,尤其在大变形问题的分析方面具有独特的优势。软件提供的针对岩土体和支护体系的各种本构模型和结构单元更突出了FLAC的“专业”特性,因此在国际岩土工程界非常流行。在国内FLAC的应用也日渐广泛,拥有越来越多的用户群。FLAC目前已在全球七十多个国家得到广泛应用,在国际土木工程(尤其是岩土工程)学术界和工业界享有盛誉。 FLAC有二维和三维计算软件两个版本,即FLAC2D(1984)和FLAC3D(1994)。FLAC V3.0以前的版本为DOS版本,V2.5版本仅仅能共使用计算机的基本内存(64KB),因而求解的最大节点数仅限于2000个以内。1995年,FLAC2D升级为V3.3的版本,由于能够扩展内存,因此大大增加了计算规模,FLAC2D目前已发展到V5.0版本。FLAC3D作为FLAC的扩展程序,不仅包括FLAC的所有功能,并且在其基础上进行了进一步开发,使之能够模拟计算三维岩、土体及其他介质中工程结构的受力与变形形态。FLAC3D目前已发展到V3.1版本。FLAC可以模拟由土、岩石和其他在到达屈服极限时会发生塑性流动的材料所建造的建筑物和构筑物。FLAC将计算区域划分为若干四节点平面应变等参单元,每个单元在给定的边界条件下遵循制定的线性或非线性本构关系,如果单元应力使得材料屈服或产生塑性流动,则单元网格及结构可以随着材料的变形而变形,这就是所谓的拉格朗日算法。拉格朗日算法非常适合于模拟大变形问题,FLAC采用了显示有限差分格式来求解场的控制微分方程,并应用了混合单元离散模型,可以准确地模拟材料的屈服、塑性流动、软化直至大变形,尤其在材料的弹塑性分析、大变形分析以及模拟施工过程等领域有其独到的优点。在求解过程中,FLAC又采用了离散元的动态松弛法,不需求解大型联立方程组,没有形成矩阵,因此不需要占用太大内存,便于计算。显示公式的缺点(即小时步的局限性和需要阻尼的问题)在一定程度上可以通过自动惯性缩放和自动阻尼来克服,而这并不影响破坏的模式。

file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-20941.png

   APE与FLAC的比较
  在音频压缩领域,有两种压缩方式,分别是有损压缩和无损压缩!我们常见到的MP3、WMA、OGG被称为有损压缩,有损压缩顾名思义就是降低音频采样频率与比特率,输出的音频文件会比原文件小。另一种音频压缩被称为无损压缩,无损压缩能够在100%保存原文件的所有数据的前提下,将音频文件的体积压缩的更小,而将压缩后的音频文件还原后,能够实现与源文件相同的大小、相同的码率。目前无损压缩格式有APE、FLAC、WavPack、LPAC、WMALossless、AppleLossless、La、OptimFROG、Shorten,而常见的、主流的无损压缩格式目前只有APE、FLAC。
  APE是M's Audio,一种无损压缩格式。这种格式的压缩比远低于其他音频格式,但能够做到真正无损,同时其开放源码的特性,也获得了不少音乐发烧友的青睐。在现有不少无损压缩方案中,APE是一种有着突出性能的格式,令人满意的压缩比以及飞快的压缩速度,在国内应用比较广泛,成为了不少朋友私下交流发烧音乐的选择之一。
 
  FLAC是Free Lossless Audio Codec的简称,是一种非常成熟的无损压缩格式,该格式的源码完全开放,而且兼容几乎所有的操作系统平台。它的编码算法相当成熟,已经通过了严格的测试,当在编码损坏时依然能正常播放。另外,该格式是最先得到广泛硬件支持的无损格式。
  
  下面列举一下两种压缩格式的异同点:
  相同点:
  一、压缩比决定无损压缩文件所占存储空间
  FLAC与AEP的压缩比基本相同,FLAC的压缩比为58.70%,而APE的压缩比则要更高一些,为55.50%,都能压缩到接近源文件一半大小。
  二、编码速度考验用户的耐心,速度快者优
  非常值得赞扬的是,FLAC与APE的编码速度都相差无几,这是因为两者的压缩技术是开源的,开发者可以借鉴两者在编码上的不同优势进行开发,不过目前编码速度最快的是WavPack和Shorten两种无损压缩格式,但这两种格式的非开源性限制了其普及。
  三、平台的支持决定普及度
  音频压缩不但需要硬件的支持,也需要的软件的支持,因此能够被更广泛的平台支持,也就意味着被更多用户使用。FLAC与APE在这方面做的都非常出色,能够兼容所有系统平台,现在无论您是Windows用户还是众多版本的Linux用户,哪怕您是Mac OS的忠实FANS,都无需担心无法使用FLAC或APE。
  四、两者的开源特性,完全免费的技术
  两者的开源特性,意味着任何组织或个人都可以免费使用这两种压缩技术,任何组织或个人都可以修改和发布基于这两种技术的新产品,这给众多MP3厂商降低成本提供了有力保障,且消费者也能够以相对低廉的价格购买到只有世界级MP3(例如:iPod支持ALAC)才支持的无损压缩音频、CD级的音质表现!
  不同点:
  一、自我纠错能力,谁更人性化?
  很多消费者都经历过MP3的爆音问题,然后归咎于MP3质量有问题,其实,很大一部分爆音是因为音频压缩过程中,编码的微小损坏,造成在解码时,处理出来的数据与音频不一致,导致爆音现象。无损格式压缩的不好也会导致编码损坏,而在处理这种问题时,FLAC的会以静音方式代替有损部分,而APE的处理则与常见的有损压缩格式处理的方式相同,以爆音方式代替有损部分。这一点FLAC设计的更人性化!
  二、优化的编码结构,决定了解码的速度!
  由于编码方式的不同,将影响两种无损压缩格式的解码速度,通常FLAC的解码速度比APE快30%,这是因为,FLAC只需执行整数运算,而无需执行占用系统更高频率和更大数据处理量的浮点运算。基于这一点,一般硬件均可完美实现实时解码。
  三、方便的资源获取,意味着能够得到更广泛的应用与支持
     单从技术角度讲,FLAC要明显比APE优秀,原因在于,FLAC是第一个开源的且被世界公认的无损压缩格式,有来自世界各地的顶尖级开发高手对FLAC进行免费的开发与技术完善,同时,FLAC有广泛的硬件平台的支持,几乎所有采用便携式设计的高端解码芯片都能够支持FLAC格式的音乐,FLAC第三个优势在于:优秀的编码使得硬件在解码时只需采用简单的整数运算即可,这将大大降低所占用的硬件资源!不过两种公开的技术具有极强的互补性,任何一方都不可能全面超越另一方!

file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-21021.png

FLAC是全开源编码,任何组织或个人都可以免费使用这种压缩技术,任何组织或个人都可以修改和发布基于这种技术的新产品。APE虽然源代码也是公开和免费的,但采用的协议并不是开源协议,因此对源代码的修改和发布受到限制。换句话说,国外任何一家出售数字音乐的公司都无法使用APE来作为音乐载体,除非他还想付给Monkey's Audio一笔钱。但是FLAC就不一样,任意免费试用。所以APE在国外并不是被淘汰掉的,是因为国外不可能像国内这样资源上传下载这么肆意和泛滥。


   VLSI专注于音频芯片20多年。目前有三款产品(VS1053,VS1063,VS1005)增加无损压缩FLAC供客户选择。

   VS1053


                               
登录/注册后可看大图


特性
● Ogg Vorbis 解码;MPEG 1 & 2 音频阶层III (CBR +VBR +ABR);阶层 I 和 II 可选;MPEG4/2 AAC‐LC(+PNS),HE‐AAC V2 (级别3) (SBR + PS);WMA 4.0/4.1/7/8/9 所有特性注1 (profiles)(5‐384kbps);
WAV (PCM + IMA ADPCM);通用 MIDI 1 / SP‐MIDI 格式0 的文件
● 用软件插件进行Ogg Vorbis 编码(2007 第四季可用)
●“咪/线路”的输入信号可实现IMA ADPCM 编码 (立体声)
● 支持MP3 和WAV 的数据流
● EarSpeaker 空间效果注 2 处理
● 低音和高音控制
● 只用一个单独的12..13MHz时钟运作
● 也可以使用一个24..26MHz时钟运作
● 内建PLL 时钟乘法器
● 低功耗运作
● 芯片内建高质量和通道间无相位误差的立体声DAC
● 过零交叉注3(Zero‐cross)侦测和平滑的音量调整
● 立体声耳机驱动器可以驱动一个30Ω的负载
● 安静的电源通断功能
● 可扩展外部DAC 的I2S 接口
● 分离的模拟、数字、IO 供电电源
● 供用户代码和数据使用的片内RAM
● 用于控制和数据的串行接口
● 可以作为从模式的辅助处理器使用
● 特殊应用可使用SPI FLASH 存储器引导
● 可用于调试的UART 接口
● 可用软件增加新功能和提供最多8 个GPIO
● 符合RoHS 无铅标准的封装(绿色环保)

音频编解码芯片vs1053 DATASHEET.pdf (820.16 KB, 下载次数: 8 )



VS1063


                               
登录/注册后可看大图

特性
  ●编码类型:MP3; Ogg Vorbis; PCM; IMA ADPCM;G.711 (μ-law, A-law); G.722 ADPCM。
●解码类型:MP3 (MPEG 1 & 2 Audio layer III (CBR+VBR+ABR));MP2 (layer II) (可选);MPEG4 / 2 AAC-LC(+PNS),HE-AAC v2 (Level 3) (SBR + PS);Ogg Vorbis; FLAC;WMA 4.0/4.1/7/8/9 所有配置文件 (5-384 kbps);
  WAV (PCM, IMA ADPCM, G.711 μ 规则/A 规则,G.722 ADPCM)
  ●全双工编解码器; PCM, G.711 μ 规则/A 规则, G.722ADPCM)
●支持流媒体
  ●增加到96KB 的用户代码/数据RAM
●有作为保护用户代码的唯一ID
  ●安静的上电掉电
  ●供外部DAC 使用的I2S 接口
  ●串行控制和数据接口
  ●可以当做从模式协处理器使用或单独作为处理
  器使用
  ●特殊应用下可使用SPI FLASH 启动
  ●供调试使用的异步串行接口UART
  ●可以通过添加代码和12 个GPIO 引脚来实现新的功能

音频编解码芯片vs1063 DATASHEET.pdf (1017.64 KB, 下载次数: 5 )



VS1005


                               
登录/注册后可看大图

未命名.jpg

VLSI 最新型号  目前最集成的音频编解码芯片
硬件特性●3通道24位音频ADC。

  ●双24位音频DAC。
  ●30欧立体声耳机驱动器。
  ●内置麦克风放大器。
  ●RDS立体声调频无线电接收机。
  ●10位ADC,3-5个外部输入。
  ●单电源操作,内置四个可编程调节器。
  数字硬件特性 
  ●100mips VS_DPS4处理器核心。
  ●128KB的程序RAM及128KV的数据RAM。
  ●受保护的8Mbit FLASH(可选)。
  ●USB2.0高速设备/主机(480Mbit/S)。
●I2S和SPDIF数字音频接口。
  ●EEC模式的NAND FLASH接口。
  ●SD卡接口。
  ●2路SPI总线接口。
  ●10BaseT以太网控制器。
  ●UART接口。
  ●所有数字引脚均为用户配置通用IO。
●灵活的时钟选择,默认12.288MHz下操作。
●内置数字逻辑使用的锁相环时钟倍频器。
  ●电池备份存储的实时时钟RTC。
  ●里德-所罗门纠错。
  ●通过JTAG可以使用VSIDE进行硬件调试。
固件特性      ●解码格式:MP3,WMA,OggVorbis,AAC,HE- AAC,FLAC,WAVPCM。
  ●编码格式:MP3,OggVorbis,WAVPCM。
  ●对SD卡和NABD FLASH的文件读写。
  ●FM调谐器和RDS解码器。
  ●USB主、从库。
  ●电阻触摸屏图形显示。
  ●大规模音频信号dsp库。
  ●以太网IP协议栈。
  ●大规模可定制VSIDE
       ●灵活的启动选项。

音频编解码芯片vs1005最新型号 DATASHEET.pdf (2.03 MB, 下载次数: 15 )


 楼主| 发表于 2013-5-16 16:08:32 | 显示全部楼层
stm32 与VS1003的接口设置
第一点,STM32的端口设置,设置为SCK和MOSI复用推挽,而片选设为推挽输出即可,MISO设为input floating即可。
第二点,因为VS1003控制寄存器是八位数据读写的,所以STM32需要设置发送和接收数据也是八位的。
第三点,根据VS1003的时序关系,需要设置STM32的时钟信号的相位和极性为CPOL为0,CPHA为0。
第四点,NSS模式需要设置软件模式,这样就可以利用另作他用了,可以用GPIO口控制作为片选了。

这里贴一下源码



  1. void  SPI1_Init(void)
  2. {   
  3.      SPI_InitTypeDef SPIStruct_Init;
  4.      SPIStruct_Init.SPI_Direction = SPI_Direction_2Lines_FullDuplex;    //配置SPI为全双工模式
  5.      SPIStruct_Init.SPI_Mode = SPI_Mode_Master;        //配置SPI为主模式
  6.      SPIStruct_Init.SPI_DataSize = SPI_DataSize_8b;    //配置SPI为8位数据传送
  7.      SPIStruct_Init.SPI_CPOL = SPI_CPOL_Low;           //配置CPOL为低
  8.      SPIStruct_Init.SPI_CPHA = SPI_CPHA_1Edge;         //配置CPHA为第一个上升沿
  9.      SPIStruct_Init.SPI_NSS = SPI_NSS_Soft;            //配置NSS为软件控制
  10.      SPIStruct_Init.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;   //配置SPI时钟预分频
  11.      SPIStruct_Init.SPI_FirstBit = SPI_FirstBit_MSB;   //配置传输字节高位在前
  12.      SPIStruct_Init.SPI_CRCPolynomial = 7;             //配置CRC,可不用理
  13.      SPI_Init(SPI1,&SPIStruct_Init);                   //SPI初始化函数   
  14.      SPI_Cmd(SPI1, ENABLE);                            //使能SPI
  15. }
  16. void Mp3WriteRegister(uint8_t addressbyte,uint8_t high,uint8_t low)
  17. {         
  18. Mp3DeselectData();   //释放数据端口
  19. Mp3SelectControl();  //选择控制端口
  20.       
  21.         while(!SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)); //判断发送缓冲器是否为空   
  22.         SPI_I2S_SendData(SPI1,VS_WRITE_COMMAND);    //发送写寄存器命令
  23.             
  24.         while(!SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE));
  25.         SPI_I2S_SendData(SPI1, addressbyte);        //发送寄存器的地址
  26.            
  27.         while(!SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE));
  28.         SPI_I2S_SendData(SPI1, high);              //发送参数的高八位
  29.       
  30.         while(!SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE));
  31.         SPI_I2S_SendData(SPI1, low);              //发送参数的低八位      
  32. Mp3DeselectControl();
  33. }



  34. /*************************************************************/
  35. /*  函数名称 :  CheckVS1003B_DRQ(void)                             */
  36. /*  函数功能 : 判断DREQ引脚状态                             */
  37. /*-----------------------------------------------------------*/
  38. bool CheckVS1003B_DRQ(void)
  39. {
  40. bool bResult;
  41. bResult =GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4);
  42. return(bResult);
  43. }



复制代码
发表于 2014-11-29 22:12:03 | 显示全部楼层
多谢分享~~~~~~·
发表于 2015-12-23 23:22:50 | 显示全部楼层
i want to the architechture this SoC
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 07:06 , Processed in 0.025774 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表