luckywang1103
每天多一点思考
展开
-
Asoc dapm(五) - dapm widget链表更新
有几个操作和dapm widget链表更新相关 1) soc_probe的时候调用snd_soc_dapm_new_widgets 2) 在用户空间通过tinymix设置路径 3) 在用户空间通过tinyplay播放或者录音是的soc_pcm_prepare和soc_pcm_close以上3个地方最终会引发dapm widget链表的更新,都会调用一个很关键的函数dapm_power_widg原创 2015-12-06 18:52:14 · 2248 阅读 · 0 评论 -
Asoc dapm(三) - dapm widgets & dapm kcontrol & dapm route
DAPM框架为我们提供了大量的宏来定义各种各样的widget。这些宏定义根据widget的类型被分为了几个域:dapm widgetscodec域比如VREF和VMID等提供参考电压的widget,这些widget通常在codec的probe/remove函数中进行控制/* codec domain */#define SND_SOC_DAPM_VMID(wname) \{ .id = sn转载 2015-12-02 19:29:45 · 1878 阅读 · 0 评论 -
regmap模块
3.0linux内核版本中,codec driver是直接调用i2c的i2c_master_send函数与i2c_transfer函数来实现i2c的读写, 3.3版本,codec driver通过调用snd_soc_read和snd_soc_write函数来实现i2c的读写,这两个函数内部包裹了codec->read和codec->write,而codec->read和codec->write的赋原创 2015-07-27 21:47:52 · 10122 阅读 · 0 评论 -
android休眠唤醒机制-wakelock
wakelock是一种锁的机制, 只要有task拿着这个锁, 系统就无法进入休眠, 可以被用户态进程和内核线程获得。这个锁可以是有超时的或者是没有超时的, 超时的锁会在时间过去以后自动解锁。如果没有锁了或者超时了, 内核就会启动标准linux的那套休眠机制机制来进入休眠。wakelock在android的休眠唤醒机制中扮演着及其重要的角色,主要源码位于文件:kernel/kernel/power/w转载 2016-03-08 10:30:22 · 3777 阅读 · 0 评论 -
wav格式
RIFF概念大部分多媒体文件都遵循一种结构来存放信息,这种结构称为”资源互换文件格式”(Resource Interchange File Format)简称RIFF。例如声音的wav文件,视频的avi文件等都是由此结构衍生出来的。 RIFF基本结构如下: 块的标志 (4bytes) 数据大小 (4bytes) 数据数据大小记录后面跟随的数据的大小,所以总的文件的大小是”数据大小原创 2015-05-13 19:37:39 · 1172 阅读 · 0 评论 -
ubuntu14.04编译Tiny210 android文件系统
bash: xxx 没有那个目录或文件 经常在ubuntu 64位下运行 ./xxx 会跳出来说没有这个文件或者目录,但是ls看又有这个文件,很是奇怪。 其实原因很简单,是因为他没有32位的运行库 ia32-libs 会出这种八杆子打不着的奇怪提示。 直接安装即可。 apt-get install ia32-libs vi frameworks/base/libs/utils/Androi原创 2015-07-20 23:50:50 · 1293 阅读 · 0 评论 -
几个开源音频处理软件
speexspeex主页 speex有两种源码包,一种是speex-1.2.0,另一种是speexdsp-1.2rc3 speex-1.2.0包含以下几个项目: libspeex:libspeex静态库,库里面包含了编码和解码相关的函数。 speexenc:speex编码器控制台程序,输入是ogg格式封装的speex编码的spx文件,输出是格式为raw PCM或者WAVE文件,有控制台原创 2018-01-25 17:06:15 · 10164 阅读 · 0 评论 -
开源mp3解码库libmad编译及minimad使用
编译libmadMAD的主页: MAD: MPEG Audio Decoder libmad-0.15.1b下载: MAD (MPEG Audio Decoder) ./configure --prefix=/home/lei/test/libmad-0.15.1b/build make 会出现错误”gcc: error: unrecognized command line optio原创 2018-01-05 17:04:58 · 4338 阅读 · 0 评论 -
alsa-plugins
有个需求是实现sample rate的转换,用到了alsa-plugins中的resample 先来说说alsa-utils,alsa-lib,alsa-plugins,libsamplerate的关系 编译编译alsa-lib-1.1.5./configure --prefix=/home/lei/alsa/build/makemake install经过...原创 2018-02-06 15:59:29 · 4778 阅读 · 3 评论 -
数字滤波器知识
滤波器种类low pass filter high pass filter band pass filter band reject filter low shelf filter high shelf filterlow-shelf, high-shelf filter与low pass filter, high pass filter看起来很像,但是完全不一样,s...原创 2018-03-20 17:55:07 · 4737 阅读 · 3 评论 -
PCM与DSD
PCM调制方式脉冲编码调制(Pulse Code Modulation)脉冲编码调制对模拟信号先采样,再对采样幅值量化,编码编码方式不编码DPCM(Differential Pulse Code Modulation) 差分脉冲编码调制APCM(Adaptive Pulse Code Modulation) 自适应脉冲编码调制ADPCM(Adaptive Differential...原创 2018-12-03 18:22:51 · 5348 阅读 · 0 评论 -
Asoc dapm(四) - dapm widgets & dapm route注册
codec driver一般都有dapm widgets,dapm route数组,platform driver和machine driver可能也会有dapm widgets,dapm route数组。 有两种方式可以注册dapm widgets和dapm route数组 1) 可以通过在struct snd_soc_codec_driver soc_codec_dev_rt5658结构体中原创 2015-12-05 19:12:43 · 3061 阅读 · 0 评论 -
Asoc dapm(二) - kcontrol注册与使用
注册kcontrol构造snd_kcontrol_new结构体数组,然后通过snd_soc_add_controls进行注册static const struct snd_kcontrol_new uda1341_snd_controls[] = {SOC_SINGLE("Master Playback Volume", UDA134X_DATA000, 0, 0x3F, 1),SOC_SING原创 2015-10-14 11:38:28 · 2474 阅读 · 0 评论 -
ASoc driver结构流程分析
在网上看到一位大神写的关于ALSA声卡驱动的一系列文章,感觉很膜拜。附上地址:http://blog.csdn.net/droidphone/article/details/6271122下面是我自己的心得体会一、platform_device and platform_driver1)在arch/arm/mach-s3c2440/mach-mini2440.c文件中原创 2015-03-27 20:23:16 · 2107 阅读 · 0 评论 -
alsa-lib, alsa-utils交叉编译及在嵌入式上使用
下载alsa-lib和alsa-utils www.alsa-project.org/main/index.php/Download 上面是官方的地址,可是alsa-lib总下载不了,于是我在download.chinaunix.net/上面下载了alsa-lib-1.0.25和alsa-utils-1.0.25编译alsa-lib解压alsa-lib-1.0.25.tar.bz2进入als原创 2015-05-10 21:56:56 · 7144 阅读 · 0 评论 -
我的第一个Android JNI程序
简介JNI (java native interface),他提供了一个调用的接口,然后用c或者c++实现,他使得在java虚拟机内部(vm)运行的java代码能够与其他语言(c/c++/汇编)编写的应用程序进行交互操作。NDK提供了一系列的小工具,帮助开发者快速开发c/c++的动态库,并能自动将.so和java应用一起打包成apkAndroid NDK环境搭建以前做android项目的时候要用到N原创 2015-07-19 21:24:00 · 782 阅读 · 0 评论 -
Tiny210 android系统中的gpio按键
Tiny210V2SDK开发板那个总共有8个用户按键,他们均从cpu芯片s5pv210的引脚直接引出GPIO口与对应的中断(摘自:Smart210用户手册.pdf 39页) 如果是纯linux系统,那么drivers/char/mini210_buttons.c是这些gpio按键对应的驱动程序如果是android系统,那么 arch/arm/mach-s5pv210/原创 2015-08-26 16:26:54 · 1679 阅读 · 0 评论 -
android Java与JNI层互相调用
Java层调用JNI中的函数首先在TextJNI.java层创建一个类TextJNI,类中使用一些native方法package com.example.androidjni;import android.util.Log;public class TextJNI { static { System.loadLibrary("jniInterface"); }原创 2015-08-28 14:25:21 · 3505 阅读 · 0 评论 -
asoc dapm相关
区别常见的damp widgetMIXERMIXER 混合器,选择哪几路,如LOUT R, 在tinymix中会长出多个和此MIXER相关的switch,可以同时打开一个多个switch。 以rt5658为例, SND_SOC_DAPM_MIXER(“LOUT R MIX”, SND_SOC_NOPM, 0, 0, rt5658_lout_r_mix, ARRAY_SIZE(rt5658原创 2015-08-03 08:40:29 · 2821 阅读 · 0 评论 -
Android系统小知识点总结
网站https://developer.android.com/develop/index.html在C语言代码中输出log想要在.c文件中打印一些调试信息,使用printf是不能打印出来的,而是要使用如下方法: #include < android/log.h> #define LOG “tagname” #define LOGD(…) __android_log_print(ANDROID原创 2015-08-29 21:08:50 · 793 阅读 · 0 评论 -
request_firmware
获取固件的正确方法是当需要时从用户空间获取它。一定不要试图从内核空间直接打开包含固件的文件,那是一个易出错的操作, 因为它把策略(以文件名的形式)包含进了内核。正确的方法是使用固件接口: struct firmware; request_firmware(); request_firmware_nowait(); release_firmware();注意:要使用firmware,必须要在转载 2015-09-25 11:32:01 · 8118 阅读 · 0 评论 -
alsa用户空间编程
alsa由以下几个部分组成: 1) driver内核驱动程序,包括硬件相关的和一些公共代码,了解可参考《writing an ALSA Driver》 2) library用户空间的函数库,需要包含头文件asoundlib.h,链接共享库libasound.so 3) lib-plugins提供了两个插件,一个用jack模拟alsa接口,一个用oss来模拟alsa接口。alsa可以作为jack翻译 2015-09-15 20:12:13 · 5878 阅读 · 0 评论 -
linux中的alsa工具与Android中的tinyalsa工具
linux系统的aplay, arecord, amixeramixeramixer controls获取给定卡的所有control信息numid=3,iface=MIXER,name='Master Mode Switch'numid=29,iface=MIXER,name='Master Mux'numid=4,iface=MIXER,name='Master Quality Switch'原创 2015-11-14 18:01:57 · 8450 阅读 · 1 评论 -
Asoc dapm(一) - kcontrol
Asoc dapm(一) - kcontrolAsoc dapm(二) - kcontrol注册与使用Asoc dapm(三) - dapm widgets & dapm kcontrol & dapm routeAsoc dapm(四) - dapm widgets & dapm route注册Asoc dapm(五) - dapm widget链表更新struct snd_kcontr原创 2016-01-13 18:03:20 · 6826 阅读 · 0 评论 -
Tiny210开发板wm8960驱动
tinyalsa库如果修改了external/tinyalsa目录下的内容,可以通过如下两种方法去编译tinyalsa相关的工具。 1、m mm mmm external/tinyalsa m mm mmm具体的实现在android-4.0.3_r1/build/envsetup.sh,所以只要source一遍这个文件便能在编译过程中使用m mm mmm了。 m 编译所有的模块 mm 编译当原创 2015-07-24 16:26:20 · 1839 阅读 · 0 评论