- 博客(14)
- 收藏
- 关注
原创 安卓声卡驱动:5.dai驱动
一 dai驱动简介dai驱动用于驱动component上的音频接口,dai驱动通常不会单独存在,dai驱动会与component驱动一起注册。在注册codec时,就要求提供dai驱动,而platform驱动在编写时也会根据需要,在注册platform驱动的同时调用...
2021-10-09 20:56:30
1316
原创 安卓声卡驱动:4.codec驱动
一 codec驱动简介硬件上的Audio codec是一种能够对数字数据流进行编码或解码的设备。codec的功能非常多,常见的有数模转换,解码时把数字信息解码成原本的模拟信号,编码时把模拟信号转为数字信号音频处理,像是EQ,混音,降噪等通路控制,像是控制输出通路接通二 codec驱动重要结构体和platform几乎一样,codec注册时也是需要提供一个driver结构体/* codec driver */struct snd_soc_codec_driver { /* driver
2021-10-09 00:19:16
1700
1
原创 安卓声卡驱动:3.platform驱动
一 platform驱动简介按我的理解platform驱动在ALSA里面起管理FE的作用。什么是FE,FE即Front End,与FE相对应的另一个名词时叫BE,即Back End。通常认为音频数据是从FE传输到BE前面介绍声卡时提到,应用层的tinyalsa往下写音频数据,是将数据写入到PCM设备节点的,这个PCM设备节点,就是由platform驱动管理的,PCM设备节点的各种ops函数,也是由platform驱动内提供。例如一个通过I2S连接到codec的link,platform驱动中则需
2021-10-08 19:28:53
3393
1
原创 安卓声卡驱动:2.Machine驱动与声卡
一 声卡简介一个音频系统由硬件和驱动这些硬件的软件组成。在一台设备上,如果硬件完整,且驱动硬件的软件全部初始化成功后,ALSA系统就会注册一个声卡,通过这个声卡,应用程序可以控制硬件设备的链路联通,并向声卡写入数据或读取数据来完成播放与录音的音频功能。在这里说的声卡不是配电脑时说的硬件声卡,而是Linux内核中的一个软件概念的声卡。二 声卡的设备组成在注册声卡时,ALSA core会在dev/snd/下创建声卡的设备节点,在下面这张图中,可以很明显的看到有三种设备节点,分别是control设备,p
2021-10-07 22:59:55
1370
原创 安卓声卡驱动:1.ALSA简介
一 概述安卓内核采用的是Linux内核,所以安卓也沿用了Linux内核内置的音频子系统。Linux内核的音频子系统全称是Advanced Linux Sound Architecture,简称ALSA。ALSA官网为https://www.alsa-project.org/wiki/Main_Page,在官网上有一些编程手册以及API介绍,也可以直接到Linux内核源码的 Documentation/sound 目录下去查阅编程信息ALSA的版本是随同L
2021-10-04 22:09:39
2471
原创 音频驱动-codec的名字
我们在添加codec的时候,不仅需要将codec的驱动添加到内核中,还需要再machine驱动中添加codec的dai_link才能使能这个codec。拿三星s5p4418来看:codec为es8316,codec描述信息如下:static struct snd_soc_dai_driver es8316_dai = { .name = "ES8316 HiFi", .playback = { .stream_name = "Playback", .channels_min = 1,
2021-02-17 13:57:22
1069
原创 一.音频驱动-音频基础知识
在这里记录一下做音频驱动时遇到的音频基础知识数模转换我们能听到的音频,都是声波。声波是声音的传播形式,发出声音的物体称为声源。声波是一种机械波,由声源振动产生,声波传播的空间就称为声场。人耳可以听到的声波的频率一般在20Hz(赫兹)至20kHz之间要将声波存储起来,我们需要将声波转换为数字信号,这个过程称为录音(capture)将数字信号转换为可以听见的声波,这个过程称为回放(playback)录音和回放的过程就涉及数模转换.录音在这里,Transducer是adc,mic能接收到声波的震动
2021-02-12 22:26:52
3701
原创 Service Manager分析
一、什么是Service ManagerServiceManager是Binder的守护进程,在Android上如果service manager挂掉,所有采用Binder通信的进程服务都会挂掉。ServiceManager本身也是一个Binder服务,handle固定为0。提供注册服务,查询服务的功能。应用程序相要通过Binder向一个service发送数据,必须先通过Service Manager获取该service的handle然后才能通过binder驱动与service通信。二、源码位置Se
2020-10-11 22:51:48
873
1
原创 Binder-基础知识
一、什么是BinderBinder是Android系统中用于进程间通信的一种方式因为Binder的效率很高,所以Android中虽然也有其他的IPC方式,但是大多都是采用的Binder二、为什么Binder效率高传统的IPC通信方式传输数据有以下过程:1.client准备数据2.client进程复制数据到驱动中(copy_from_usr)3.server进程从驱动中取出数据(copy_to_usr)而Binder传输数据则是:0.server进程初始化Binder时打开Binder驱动,
2020-10-10 19:14:31
268
1
转载 GDB的使用
文章目录什么是GDB?调试前的准备几条常用的命令1.list2.run3.break命令4.单步执行命令5.continue命令6.print命令7.watch命令8.examine命令其他原文链接.记录一下方便以后查找什么是GDB?从GDB的官网可以知道:GDB是一个GNU项目的调试器,它使您可以查看一个程序在执行过程中正在执行的操作,或是一个程序崩溃时正在做什么。GDB主要可以完成下面四种功能:启动程序,可以按照工程师自定义的要求随心所欲的运行程序。让被调试的程序在工程师指定的断点处停
2020-08-16 23:57:51
221
原创 安卓AudioTrack播放wav文件demo--施工中
// Copyright 2008, The Android Open Source Project//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this&nb.
2020-08-04 00:33:26
536
原创 C语言解析wav文件的信息
先放这,还需要修改wav_parse.h#ifndef WAV_TEST#define WAV_TEST#include "string"using namespace std;#define VOLUMEMAX 4294967295 //for 32 bit//typedef struct WAV_data_block {//} Data_block_t;enum Encod_format_PCM{ //fmt lenth PCM = 0x01
2020-08-03 23:53:28
777
原创 Yocto新增一个hello程序
刚接触yocto,在这里记录一下怎么向yocto添加一个自己的helloworld并编译到rootfs中去。1.编写源代码和Makefile既然是新增一个helloworld,那就和linux中的helloworld一样,需要源码以及编译这个源码的Makefile.hello.c#include "stdio.h"#include "stdlib.h"int main(){ while(1) { fprintf(stderr, "HelloWorld"); sleep(1);
2020-07-25 18:39:49
5402
8
原创 audio_policy_configuration.xml加载过程
介绍audio_policy_configuration.xml是在Android 7.0中新引入了音频政策配置文件格式 (XML),用于描述音频拓扑。以前的 Android 版本使用 audio_policy.conf 来声明您的产品上存在的音频设备)。但是,CONF 是一种简单的专有格式,有较大的局限性,无法描述电视和汽车等行业的复杂拓扑。所以,在安卓7.0之后弃用了audio_poli...
2020-05-10 23:21:54
1074
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人