对于重采样的程序解析

对于重采样的程序解析,第1张

重采样:就是根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。

中文名重采样

外文名resampling

注 意根据信息内插象元信息

目 的提取出低分辨率影像

定义

重采样:就是根据一类象元的信息内插出另一类象元信息的过程。

在 遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。

重采样方法

常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。其中,最邻近内插法最为简单,计算速度快,但是视觉效应差;双线性插值会使图像轮廓模糊;三次 卷积法产生的图像较平滑,有好的视觉效果,但计算量大,较费时。

由于从网络流、本地媒体文件等各种渠道解码的AVFrame帧,其采样位数、声道数、采样率都是不确定的,但是在很多的播放器框架中,需要播放指定的采样位数、声道数、采样率的音频数据,因此需要首先进行格式转换,这个格式转换的过程就称为音频重采样。

音频重采样上下文,这是一个不公开的结构,所有涉及的 *** 作均以指针的方式进行:

分配重采样上下文内存:

设置样本格式、通道布局、采样率:

上面这几个函数用于重采样上下文的创建和参数设置,用法如下:

如果嫌预初使化的过程繁琐,可以使用统一包装函数:

用法:

正式初使化重采样上下文:

计算重采样上下文缓冲样本的延迟时间,base参数用于指定基准时间,通常设置为输入采样率:

执行重采样转换,out和out_count参数指定输出缓冲区和建议的样本数,in和in_count指定输入的样本数。

返回转换成功的样本数,由于上下文带有缓冲功能,所有实际输出的样本数可能小于输入的样本数。

可以将in参数设置为NULL,用于将缓冲区的数据全部输出。

重采样过程完成后,释放上下文:

这个函数用于重新计算a * b / c 的结果,在音频重采样中用于计算相同时长的目标样本数:

如:

一些辅助函数:

根据通道布局获取通道数:

根据音频参数分配相关内存空间:

上面是获取一组内存空间,有时只需要单通道内存或者样本以交错排列存储,使用这个函数:

根据音频参数获取音频数据大小:

按常理来说,我应该写一个关于音频重采样的例子,但是我突然改变主意了,计划在下篇中写一个完整地读取本地媒体文件并交给ALSA播放的演示程序,这里就暂时放一个重采样的简单封装吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12063841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存