心胸决定格局,眼界决定境界...

文章分类 -  多媒体基础

摘要:AAN算法描述及其实现最近在学习DCT和MDCT发现网络上JPEG编码的资料蛮多,而且DCT是JEPG压缩里头比较重要的一个环节.单单描述DCT算法的资料比较少,看看JEPG编码里头的DCT部分也不失为一个好的学习方法.二维DCT如果按照二维DCT公式来计算8*8像素的话,获得一个DCT系数需要8*8=64次乘法和8*8=64次加法,而完成整个8*8像素的DCT需要8*8*8*8=4096次乘法和8*8*8*8=4096次加法.计算量是相当的大!伪代码(N=8, PI=3.1415926):intu, v, i, j;// u, v描述输出; i,j描述输入.doublec_u, c_v;// 阅读全文
posted @ 2013-09-22 12:58 WELEN 阅读(379) 评论(0) 推荐(0)
摘要:长窗型MDCT转换过程对指定次频带的36个样本点进行Long Window MDCT的过程假令: 36个次频带信号输入为double*in, 18个MDCT输出为double*out注解长分析窗Long Window// -------------长分析窗伪代码-------------doublewin[ 36 ];doublez[ 36 ];for(i=36; i--; ){win[i] = sin( (PI/36) * (i+1/2) );//计算sin部分}for(i=36; i--;){z[i] = in[i] * win[i];//对输入加长窗}MDCT运算式其中xr[i]表示第i 阅读全文
posted @ 2013-09-22 12:50 WELEN 阅读(320) 评论(0) 推荐(0)
摘要:576样本的PCM信号加窗之疑惑从WAV文件的语音数据中读出1152*2个语音数据,对应到一个音框(frame).这个1152*2个语音数据在一个frame中是有如图的分析分组,分声道处理的伪代码如下:/* polyphase filtering多相滤波,对时域信号进行滤波*/for(gr=0; gr#include#include"types.h"#include"tables.h"#include"l3subband.h"// ---------------------------------------------------- 阅读全文
posted @ 2013-09-22 12:49 WELEN 阅读(343) 评论(0) 推荐(1)
摘要:http://blog.csdn.net/sshcx/article/details/1607098/*---------------------------------------------------------------------一般的M抽头FIR Filter C伪代码输入: x[]输入样本点数N冲击响应: h[]M抽头输出: y[]N个输出---------------------------------------------------------------------*/#defineN1000//序列为1000#defineM32// 32抽头voidFIR(doub 阅读全文
posted @ 2013-09-22 12:48 WELEN 阅读(157) 评论(0) 推荐(0)
摘要:这篇文章是网络上流行的比较广泛的针对WAVE头分析的文章,整体写的简单明了非常好,但是18H2int采样率(每秒样本数),表示每个通道的播放速度,应该是不对的,如果按这个该文章的计算,WAVE头只有42byte,实际上wave头是44byte.参考MS的标准文档知道这个采样率是占4byte的.(见WAVE PCM soundfile format)// ----------------------------------------------------------------WAVE文件格式剖析 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Re 阅读全文
posted @ 2013-09-22 12:47 WELEN 阅读(173) 评论(0) 推荐(0)
摘要:/**huffman - Encode/Decode files using Huffman encoding.*Copyright (C) 2003Douglas Ryan Richardson; Gauss Interprise, Inc**This library is free software; you can redistribute it and/or*modify it under the terms of the GNU Lesser General Public*License as published by the Free Software Foundation; ei 阅读全文
posted @ 2013-09-22 12:45 WELEN 阅读(249) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/sshcx/article/details/1557709#include#include#defineMAX32767#defineN4#defineM2*N-1typedefstructtagNode{intparent;intweight;intlChild;intrChild;} Node;Node *huffmanTree;// ---------------------------------------------------------------------/*初始化huffmanTree,*/voidinitHFTree(int*w 阅读全文
posted @ 2013-09-22 12:41 WELEN 阅读(127) 评论(0) 推荐(0)
摘要:#include#include#include#includeintmain(intargc,char**argv){SNDFILE*infile=0;SF_INFOsfinfo;intreadcount;intrate=44100;intchannels=2;if(!(infile=sf_open("rock.wav",SFM_READ,&sfinfo))){return1;};rate=sfinfo.samplerate;printf("rate%d\n",rate);channels=sfinfo.channels;printf(&quo 阅读全文
posted @ 2013-08-28 21:43 WELEN 阅读(246) 评论(0) 推荐(0)
摘要:下面是Tremolo音效的几个参数:1.深度控制:用来控制音量增减速度2.阈值数据:说明控制音量的频率值3.波形其基本数学表达式为:data=data*(1.0+depth*sin(k*rate*index));简易的c++代码如下:classTremolo:publicAudioEffect{public:staticdoubledef_depth;staticdoubledef_rate;doubledepth;doublerate;doublek;Tremole();std::vectorFilter(conststd::vector&_data){data=_data;for( 阅读全文
posted @ 2013-08-28 21:38 WELEN 阅读(182) 评论(0) 推荐(0)
摘要:Distortion主要使用于电吉他等电子类乐器Distortion音效主要有以下参数:1.edge 临界值2.gain 增益3.低通剪切值(当然还有其他几个参数,...)其简易化的音效处理原则就是使用使用给定临界值对原有数据做Clamp处理简单的例子如下:#defineDISTORTION_RATE100.0#defineDISTORTION_THRESHOLD0.4classDistortion:publicAudioEffect{public:Distortion(){gain=DISTORTION_RATE;value=DISTORTION_THRESHOLD;}std::vector 阅读全文
posted @ 2013-08-28 20:28 WELEN 阅读(222) 评论(0) 推荐(0)
摘要:Echo是声音的反射,是指人直接听到声音之后,其反射音又被听到。一个真正意义上的Echo是单反射的。其时间间隔就是声音的速率很显然一般的Echo具有2个参数一个是延迟,一个是衰减在某一时刻,人听到的声音是此时音源声音和延迟前音源声音的混合音。显然一个简单的表达式是:echo(t)=data(t)+data_prev*data(t-decay)这就是Echo音效基本的函数表达式 阅读全文
posted @ 2013-08-28 20:07 WELEN 阅读(191) 评论(0) 推荐(0)
摘要:解释下淡出效果的含义:就在是音乐播放即将结束之前通过一定的手法控制音乐响度-直至结束。很显然,使用线性关系基本可以达到目的假定数据关系为y(t) = kx(t) + b;x(t)对应t时刻的音频样本点值,y(t)对应淡化后t时刻的值。for example,从T1到T2淡出,Len=T2-T1k*x(T1)+b=y(T1)=x(T1) (1) 保证开始时刻样本值不变k*x(T2)+b=y(T2)=0 (2) 保证结束时为0显然可求得 k,b得到相应的具体线性函数值。 阅读全文
posted @ 2013-08-28 20:02 WELEN 阅读(785) 评论(0) 推荐(0)
摘要:音视频同步-时间戳 媒体内容在播放时,最令人头痛的就是音视频不同步。从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间,则不急于播放该数据块,直到参考时钟达到数据块的开始时间;如果数据块的开始时间小于当前参考时钟上的时间,则“尽快”播放这块数据或者索性将这块数据“丢弃”,以使播放进度追上参考时钟)。可见,避免音视频不同步现象有两.. 阅读全文
posted @ 2013-06-20 12:39 WELEN 阅读(462) 评论(0) 推荐(0)
摘要:1.FLV中,AudioSpecificConfig结构调 AACPacketType: (1)等于0时,Data存AAC sequence header; (2)等于1时,Data存放AAC raw. AAC sequence header存放的是AudioSpecificConfig结构,该结构则在“ISO-14496-3 Audio”中描述。简化如下表: 唯一不同的是,AAC-LC在ADTS AAC音频中,Profile表示为1。2.封装为ADTS http://blog.csdn.net/bsplover/article/details/7426476 阅读全文
posted @ 2013-06-09 10:51 WELEN 阅读(472) 评论(0) 推荐(0)
摘要:一、综述 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。 WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVEChunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图:------------------------------------------------| RIFF WAVE Chunk || ID = 'RIFF' || R 阅读全文
posted @ 2013-06-07 22:21 WELEN 阅读(190) 评论(0) 推荐(0)