![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
音视频处理
文章平均质量分 82
降噪,视频流等
六个九十度
嵌入式软件工程师
展开
-
将ISP DMA写到DDR的数据unpack成可被7yuv预览的RAW图
ISP DMA的特点是一端字节对齐访问,一端流式访问,且净荷数据不一定是8bit的整数倍原创 2023-04-21 10:19:07 · 601 阅读 · 0 评论 -
查看从ISP pipeline导出的RAW数据
关键是弄明白ISP pipeline的DMA的工作原理原创 2023-03-25 11:08:44 · 867 阅读 · 0 评论 -
不要用speex做静音检测vad
speex从1.2版本开始支持静音检测vad(还有降噪、回声消除、自动增益控制agc、抖动buffer、重采样等一堆功能)等针对语音的预处理功能,实现在libspeexdsp库中。真正用起来后,发现各种坑!首先我打开了降噪、agc和vad,结果预处理后的音频播放起来有电流突突声(不知道怎么形容,看图)因为speex初始化时frame size填的20ms帧长,所以各位从上图可以看到原创 2016-01-20 10:34:47 · 13148 阅读 · 14 评论 -
portaudio回调方式实现录制任意长度的音频
portaudio是一个跨平台音频库,类似于SDL作为跨平台图像库一样,只是在系统原生音频库(alsa、oss)上封装了一层portaudio自带的录音示例代码只有同步IO模式,没有异步IO模式,而异步IO能释放主线程,是更好的方式为了实现异步,需要定义回调函数,在回调函数里将音频数据不断写入文件为了实现任意长度,需要引入无限循环,但该无限循环要能根据用户的输入及时退出。为原创 2016-01-07 23:15:50 · 5003 阅读 · 5 评论 -
【翻译】Nvidia Cg 中不支持的C语言语法特性
1、首先,要注意很多老的profile对C语言的支持更差,比如连循环都不支持,所以要选好profile 2、目前不支持 goto, switch, case, 和 default 这几个条件分支转移语句,但保留上述关键字! 3、不支持指针及与指针有关的所有东西,比如区地质操作符 & 和取值操作符 -> 4、Cg的数组是该语言的内置类型,并且是压缩实现的(pa原创 2010-04-14 15:08:00 · 1166 阅读 · 0 评论 -
用二维数组表示图像的一个细节问题
假设我们在内存中定义了一个灰度图image,它的尺寸为WIDTH x HEIGHT,那么image怎么声明呢?是image[WIDTH][HEIGHT]吗?——不是。是image[HEIGHT][WIDTH]因为图像显示是按行扫描的,所以二维数组的第一维(就是变化最快的那一维),应该是等于WIDTH。 所以一副WIDTH x HEIGHT的位图,映射到内存中,就是一块HEIG原创 2009-11-21 10:46:00 · 3430 阅读 · 0 评论 -
用GNU Make进行OpenGL的学习
在VC、CodeBlocks下工作久了,觉得用IDE来试验各种代码片段太过麻烦,尤其是图形学的,一大堆小项目管理起来尤其麻烦,于是决定用gmake来搞。昨天晚上搞了一晚上才把gcc、ld的命令行选项、参数及它们的顺序等脾气摸熟了,陈述如下1、-l选项依赖于 -L选项,-L选项指定库的搜索路径,-l指定要引入的库名,并且当你用-L指定了n个搜索路径,又用-l指定了m个库名的话,他原创 2009-10-27 20:26:00 · 926 阅读 · 0 评论 -
利用GLUT实现在OpenGL中绘制文本的简单方法
前一段时间想在实验中显示当前FPS,可OpenGL本身不支持字符显示,后来看了这篇文章,觉得对于简单应用,使用GLUT的库就够了。示例代码 //要显示的字符 char *str = "current fps = "; int n = strlen(str); //设置要在屏幕上显示字符的起始位置 glRasterPos2i(0原创 2009-10-08 17:25:00 · 6211 阅读 · 0 评论 -
困扰了我一天的BUG,哎!
开始学习OpenGL的纹理映射,开始基本照着教程默写一遍代码,运行,没结果 后又对了对纹理的设置那块,都一样啊,咋就出不来纹理呢。 后来才发现,原来是我设置了 glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST ); 但原创 2009-09-30 20:30:00 · 1065 阅读 · 0 评论 -
一个glut程序至少需要以下几个lib
从高层到底层排序:1、glut32.lib2、glu32.lib3、OpenGL32.lib4、WinMM.lib 注意!若是用Borland c++ builder编译,则需要将以上四个文件用BCB自带的coff2omf.exe转换成omf格式的库文件,并放在BCB的Lib目录下。原创 2009-09-02 19:47:00 · 846 阅读 · 0 评论