中文名重采样
外文名resampling
注 意根据信息内插象元信息
目 的提取出低分辨率影像
定义
重采样:就是根据一类象元的信息内插出另一类象元信息的过程。
在 遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。
重采样方法
常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。其中,最邻近内插法最为简单,计算速度快,但是视觉效应差;双线性插值会使图像轮廓模糊;三次 卷积法产生的图像较平滑,有好的视觉效果,但计算量大,较费时。
由于从网络流、本地媒体文件等各种渠道解码的AVFrame帧,其采样位数、声道数、采样率都是不确定的,但是在很多的播放器框架中,需要播放指定的采样位数、声道数、采样率的音频数据,因此需要首先进行格式转换,这个格式转换的过程就称为音频重采样。
音频重采样上下文,这是一个不公开的结构,所有涉及的 *** 作均以指针的方式进行:
分配重采样上下文内存:
设置样本格式、通道布局、采样率:
上面这几个函数用于重采样上下文的创建和参数设置,用法如下:
如果嫌预初使化的过程繁琐,可以使用统一包装函数:
用法:
正式初使化重采样上下文:
计算重采样上下文缓冲样本的延迟时间,base参数用于指定基准时间,通常设置为输入采样率:
执行重采样转换,out和out_count参数指定输出缓冲区和建议的样本数,in和in_count指定输入的样本数。
返回转换成功的样本数,由于上下文带有缓冲功能,所有实际输出的样本数可能小于输入的样本数。
可以将in参数设置为NULL,用于将缓冲区的数据全部输出。
重采样过程完成后,释放上下文:
这个函数用于重新计算a * b / c 的结果,在音频重采样中用于计算相同时长的目标样本数:
如:
一些辅助函数:
根据通道布局获取通道数:
根据音频参数分配相关内存空间:
上面是获取一组内存空间,有时只需要单通道内存或者样本以交错排列存储,使用这个函数:
根据音频参数获取音频数据大小:
按常理来说,我应该写一个关于音频重采样的例子,但是我突然改变主意了,计划在下篇中写一个完整地读取本地媒体文件并交给ALSA播放的演示程序,这里就暂时放一个重采样的简单封装吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)