自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

crl6的博客

嵌入式 linux Android系统

  • 博客(34)
  • 资源 (15)
  • 收藏
  • 关注

原创 Android,Linux在线源码查看跳转

Android,Linux在线源码查看跳转

2022-04-24 09:31:18 1679

原创 Android12 AudioFlinger 读写PCM数据

一、前言:前面我们分析了AudioFlinger的初始化流程。这篇来看看AudioFlinger是如何读取pcm数据的。Android 12 AudioFlinger 分析(RK3588)_Windra6的博客-CSDN博客_android audio flinger分析二、Android Audio音频总体框架:三、AudioFlinger读取pcm数据流程:uml流程图:这里使用到FMQ机制。最终是调用到了audio_hw.c文件的pcm_read函数。四、Aud..

2022-04-23 10:22:56 6372

原创 Android12 Native C++ 层AudioRecord录音AudioTrack播放

一、背景: 发现网上能搜到的都是几年前的例子,现在Android版本都出到12了,几年前的例子以及不适用新版本了。于是就自己研究了下AudioRecord.java是如何调用到jni和C++层的AudioRecord.cpp。做一下记录为后来者避坑(PS:以前都不喜欢写博客,本人没时间也不太想分享)。改demo应该适用于Android8,Android9,Android10,Android11,Android12。或许过个几年到Androidxx又不适用了。二、遇到比较有意思的坑:程序...

2022-04-10 10:10:17 3632 7

原创 Android 12 AudioFlinger 分析(RK3588)

一、分析背景上一次详细分析跟读AudioFlinger代码还是Android5的时候,最近有空基于RK3588的Android12 sdk跟读了一下代码。工作中大部分也是不需要修改Google部分的代码,大多是是修改hal层代码。从Android O开始很多模块都HIDL化了。之前的版本都是AudioFlinger直接使用 如:audio.primary.XXX.so。mtk平台是 audio.primary.mt6771.so,RK是audio.primary.rk30.so。 其它方...

2022-03-12 10:03:46 4647 2

原创 FFmpeg+SDL实现播放器

一、序言: 之前做嵌入式移动端设备播放都是基于Android平台的(SurfaceView显示+AudioTrack播放声音),要么是linux系统直接ffmpeg解码音视频数据后用framebuffer显示和tinyalsa播放声音,做好音视频同步。鉴于本文是用于学习入门ffmpeg的所以选择Ubuntu系统平台,省去大家去搭建Android或嵌入式linux开发环境。这三种平台都是大同小异的。...

2021-09-01 19:49:42 1472 1

原创 webrtc-audio-processing pulseaudio最新版本1.0交叉编译到ARM

最近在研究最新版本的aec3效果,之前0.31的太老了。百度,Google搜索一边发现都是基于0.31的。也没有找到1.0版本的demo(此时官网也没有提供)。完成工作任务后,写个博客记录一下,为其它猿少踩坑。一、先下载源码和配置开发环境:编译webrtc的时候会依赖链接abseil-cpp库。git clone git://github.com/abseil/abseil-cpp.gitgit clone https://gitlab.freedesktop.org/pulseaud...

2021-08-18 20:25:26 2191 6

原创 FLV 格式详解

一、FLV格式介绍: 是Adobe发布的一种可以用于直播也可以用于点播的封装格式,以FLVTAG的形式存在,每一个TAG都是独立存在的,我们先用FlvAnalyzer.exe打开一个flv视频看看。 从上图可以看到FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag组成。1. 文件头Header 部分记录了FLV的类型、版本等信息,是FLV的开头。一般差不多占9bytes。具体格式如下:a. ...

2021-07-21 20:43:09 4215 1

原创 移植webrtc-audio-processing-0.3.1到arm平台

最近在研究webrtc的3A算法和公司自研3A的效果和对cpu负荷的区别,发现目前这方面的博客例子都都是比较老版本的。0.先下载,下载网址:http://freedesktop.org/software/pulseaudio/webrtc-audio-processing1.编译webrtc:a.解压b.配置:./configure --prefix=/work/AEC/webrtc-audio-processing-0.3.1/out --host=a...

2021-07-08 13:54:18 886

原创 直播技术中AAC编码

一、AAC编码概述 AAC是高级音频编码(Advanced Audio Coding)的缩写,被认为是MP3的继任者,相对MP3有更高的压缩效率。由Fraunhofer IIS、杜比实验室、AT&T、Sony(索尼)等公司共同开发。出现于1997年,最初是基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术包括SBR或PS特性,目前AAC可以定义为⼀种由 MPEG-4 标准定义的有损音频压缩格式。AAC被iPhone、iTunes以..

2021-07-01 20:58:13 342 1

原创 初探RTCP协议

一、RTCP简介: 前面讲解RTSP的文章里介绍了RTSP和RTP协议这章我们来介绍RTCP。RTCP的全称是实时传输控制协议(Real-time ControlProtocol,RTCP)与RTP共同定义在1996年提出的RFC 1889中,是和 RTP一起工作的控制协议RTCP主要用于提供数据分发质量反馈信息,RTSP推流,WEBRTC等都会使用到RTCP协议。在RTP会话期间,每个会话参与者周期性地向所有其他参与者发送RTCP控制信息包(控制信息包所占带宽一般不超过可用带宽的 5%),为应...

2021-06-24 20:48:46 521 1

原创 SDP 是什么?有什么用?

一、SDP 是什么 SDP(Session Description Protocal)说直白点就是用文本描述的通信各端(PC 端、Mac 端、Android 端、iOS 端等)的能力。这里的能力指的是各端所支持的音频编解码器是什么,这些编解码器设定的参数是什 么,使用的传输协议是什么,以及包括的音视频媒体是什么等等。 下面让我们来看一个真实的 SDP 片段:v=0 o=- 3409821183230872764 2 IN IP4 127.0.0.1 ... m=audio 9 UDP...

2021-06-23 18:59:20 23750 1

原创 tinyalsa播放录音调用流程

最近在梳理pcm_open();pcm_read();pcm_write()调用流程,整理在公司内部作为培训课程。避免一些问题所以把流程图里以公司开头的前缀给划掉了。

2021-06-03 16:23:46 4172 3

原创 C++实现RTSP/RTP服务器

C++实现RTSP/RTP服务器前面介绍了rtsp,rtp,h264相关的知识,记不清的可以回顾一下。这篇我们来讲解如何用c++自己写一个简单的最基本的rtsp服务器。一、RTSP代码实现先来讲解RTSP代码实现,这个比较简单,直接参考前面讲的wireshark抓包内容,都是文本内容,就是一问一答...

2021-04-18 09:42:50 6033 2

原创 H264编码基础知识

最近在总结学习的音视频知识,主要参考Android音视频开发这本书总结的。(一)视频编码的原理时间相关性:在一组视频序列中,相邻相邻两帧只有极少的不同之处,这便是时间相关性。空间相关性:在同一帧中,相邻象素之间有很大的相关性,两象素越近,侧相关性越强。一个图像或者一个视频序列进行压缩,产生码流。对图像的处理即是:帧内预测编码其预测值P,是由已编码的图像做参考,经运动补偿得到的。预测图像P和当前帧Fn相减,得到两图像的残差值Dn,Dn在经过转换T,量化Q,去处空间冗余,得到系数X,将X重排(.

2021-04-05 18:37:23 1272 2

原创 RTP协议入门基础

RTP协议入门基础(一)RTP身世: 实时传输协议RTP(Real-time Transport Protocol)是一个网络传输协议,它作为因特网标准在 [ RFC 3550 ] 有详细说明。RTP协议规定了互联网上传递音频和视频的标准数据包格式,可用于多播协议,单播应用中。RTP协议常用于流媒体系统(配合RTSP协议)和RTCP一起使用,它是建立在用户...

2021-04-05 14:56:49 1001

原创  RTSP常用方法

RTSP常用方法上一篇,我们介绍了RTSP的基本知识点,接下来开始我们介绍RTSP常用的方法。一.OPTION(request)OPTIONS一般为RTSP客户端发起的第一条请求指令,得到服务端提供了哪些方法,我们来详细说下各个字段:OPTIONS:标识请求命令的类型;RTSP URI:请求的服务端的URI,以rtsp://开头的地址,一般为rtsp://i...

2021-04-05 11:11:21 1474

原创 RTSP协议入门基础

RTSP协议入门基础(一)RTSP身世:RTSP全称是Real Time Streaming Protocol实时流传输协议是Real Network和Netscape共同提出的在互联网上传输流媒体数据(包括视频和音频数据)的应用层协议。RTSP的作用相当于遥控器可以对远端的服务器进行控制(播放,暂停,终止等)。可以选择使用TCP或UDP来传送串流内容,语法跟HTTP 1.1类似,...

2021-04-05 10:26:26 1090

原创 linux进程调度(图文并茂)

linux系统启动以及进程调度。图文并茂。

2020-12-08 09:33:22 250

原创 Android输入系统IMS(5)--ims分发到java层

1.addWindow函数(InputChannel创建注册): 通过上一篇的分析,我们发现InputDispatcherThread调用InputChannel的sendMessage函数发送了一条消息,但是我们不知道谁在接收这条输入事件消息。在这里提前告诉大家是APP在接收这些消息。这篇我们将讲解消息到底是怎么发送到app的。status_t InputChannel::sen...

2019-06-04 16:39:02 619

原创 Android输入系统IMS(4)--ims分发过程

一.线程mDispatcherThread分发: 上一篇讲到了InputDispatcher::notifyKey()。看看这个函数的主要的函数调用:void InputDispatcher::notifyKey(const NotifyKeyArgs* args) { KeyEvent event; event.initialize(args->de...

2019-05-19 19:42:17 573 1

原创 Android输入系统IMS(3)--ims启动过程以及读取数据

艳阳高照的天气适合在出租屋做技术宅~~一. InputManagerService的启动: 1.在Android的SystemServer中的private void startOtherServices() {}函数中会启动InputManagerService,以及InputManagerService服务(这个服务后面会用于和InputChannel打交道获取输入事件分发给指定...

2019-05-19 13:11:28 772

原创 Android输入系统IMS(2)--基础知识socketpair

套接字可以用于网络通信,也可以用于本机内的进程通信。由于本机内进程的IP地址都相同,因此只需要进程号来确定通信的双方。Linux环境下使用socketpair函数创造一对未命名的、相互连接的UNIX域套接字。socketpair 函数功能:创建一个全双工的流管道原型 int socketpair(int domain, int type, int protocol, int sv[2])...

2019-05-12 17:36:39 682

原创 Android输入系统IMS(1)--基础知识epoll和notify

做Android系统三年多,量产项目也有3~4个了,却从来没写过相关博客,最近换工作到新东家报道前这段时间比较闲写写博客总结一下这些年对Android系统的了解。先挑个相对简单的ims下手。epoll产生的背景: 在信息高速发展的时代对服务器的高并发性能要求越来越高,传统的select 、poll等IO多路复用的方法来实现并发服务程序已经无法满足现代化大数据,高并发,集群等应...

2019-05-12 15:19:14 1264

原创 c++程序和java程序socket通信Android

java服务端程序放到public void onCreate(Bundle savedInstanceState) {里面 //======================localsocket通信机制====================================================== // 接收线程 Thread local_r

2017-09-16 16:29:02 558

原创 编译时报错: error: <strong>two or more data types in declaration specifiers</strong> error:two or more

编译时某个文件报错:error:two or more data types in declaration specifiers原因可能有两个:1. 少了一个分号";",比如定义一个结构体时,在最后忘了加分号。解决方法:加上分号即可。2. 重复定义,比如:a.h文件中有如下定义:#define bool char#def

2017-08-25 17:39:22 625

原创 Android启动第三方app报错

1.使用一下方法均报错Permission Denial: starting Intent......................a Intent intent=new Intent(); intent.setClassName("cn.kuwo.kwmusiccar", "cn.kuwo.kwmusiccar.MainActivity"); s

2017-08-25 13:35:56 1986

原创 Android触摸屏突然没反应了

一、问题现象安装了一堆apk在跑。用着用着偶尔触摸屏就没反应了。二。通过分析找原因发现驱动是好的能正常上报数据。发现这些apk有些会横竖屏切换。会不会是切换的时候导致的了?查找代码发现旋转屏幕的时候会冻结触摸输入,旋转成功后会解冻。猜测是这些旋转屏幕的apk把触摸冻结了后没有成功解冻导致的。直接修改代码vi frameworks/base/services/java

2017-08-18 19:48:36 3118

原创 Android app去掉标题栏

网上找到的三种方法没一种能用的。我使用的方法如下:打开res/values/styles.xml ,把Theme.AppCompat.Light.DarkActionBar修改为Theme.AppCompat.Light.NoActionBar

2017-08-16 10:05:01 209

原创 Android系统剪裁后卸载APK失败重启系统

系统剪裁很多后卸载apk失败重启,查找logcat信息追踪代码发现是FIle.java里的delete函数失败返回-1导致PackagemanagerServer退出进而导致SystemServer退出最终重启整个java世界。查找java相关的系统服务c c++层的服务结果都是无功而返,找原因的过程中发现设置->安全选项也会崩溃。于是猜测和安全相关的配置有关,开始修改内核先关配置,结果都是没有效

2017-08-08 14:02:45 627

原创 Android之build.prop imx6

./device/fsl/sabresd_6dq/BoardConfig.mk:PRODUCT_MODEL := SABRESD-MX6DQ./out/target/product/sabresd_6dq/system/build.prop:ro.product.model=SABRESD-MX6DQ./out/target/product/sabresd_6dq/recovery/roo

2017-07-27 15:24:31 611

原创 android源码中编译的项目导入第三方jar

原本的Android.mk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, src) \src/com/android/music/IMediaPlaybackService.

2017-07-07 14:15:07 229

原创 Android switch模块 设备节点名字。

如果是使用dts的方式声明gpio资源的情况 ,加载驱动成功后会在/sys/class/switch目录下生成xxxx.aa文件夹 。其中aa是数字。这个数字是由gpio dts资源声明的位置决定的。应该是gpio资源这棵子树在dts文件中的排序号。

2017-07-05 19:24:07 566

原创 qt5 arm linuxfb旋转显示非eglfs显示

qt5 arm linuxfb旋转显示非eglfs显示。网上的旋转显示都是这种方法 :#include #include #include #include "./form.h"int main(int argc, char *argv[]){        QApplication a(argc, argv);    Form *form = ne

2017-05-19 08:04:54 4475 4

原创 Android Binder系统的理解。

以下是本人学习部分binder系统后自己对binder系统总体的想法领悟。欢迎各位大神指正。把binder驱动系统比作中介,把client比作需要找工作的工人,把server比作工厂,把service比作工作岗位。工人(client)端:工人通过电话打通中介(binder_open函数),然后用bio_initbio_put_xxx函数组织语言,然后告诉中介自己需要什么具体

2017-02-19 09:41:04 293

Android 12 AudioFlinger 分析(RK3588)

Android 12 AudioFlinger 分析(RK3588)

2022-03-12

webrtc-audio-processing-1.0例子.rar

webrtc-audio-processing-1.0例子,含代码和音频测试文件

2021-08-19

webrtc-audio-processing.rar

webrtc-audio-processing-0.3.1在arm平台的测试程序,含测试用的pcm文件。

2021-07-07

WebRTC的3A代码解读.png

AEC,ANR,AGC解读。

2021-07-05

C++实现RTSP_RTP服务器的源码.zip

C++实现RTSP/RTP服务器的源码,配套博客

2021-04-18

微信小程序快速开发.zip

小程序快速开发 pdf 和源代码。demo 小程序。

2020-04-04

wallpaper.bat

下载资源,双击,等会就会在当前目录生成wallpaper文件夹。里面就有win10漂亮的锁频壁纸啦!

2019-09-07

带书签于博士《Cadence+SPB+15.7工程实例入门》.pdf

带书签于博士《Cadence+SPB+15.7工程实例入门》;添加详细书签 高清;带个人笔记标注。

2019-06-23

mnist手写数字识别(Python神经网络编程)

Python神经网络编程这本书配套代码。自动动手写Python 神经网络。压缩包包含了代码和mnist数据集合,以及用于测试的图片。

2018-12-26

ubi和 yaffs imgae 镜像制作工具

mkubimage mkyaffsimgae格式制作工具。

2018-04-22

黄文坚TensorFlow实战经典PDF教程

高清扫描版带书签 李嘉璇_TensorFlow技术解析与实战.pdf

2017-12-11

李嘉璇一本TensorFlow实战经典PDF教程

高清扫描带书签 李嘉璇_TensorFlow技术解析与实战.pdf

2017-12-11

qt5 arm linuxfb旋转显示非eglfs显示的补丁

qt5 arm linuxfb旋转显示非eglfs显示的补丁

2017-05-19

51单片机控制步进电机

自己写的,注释详细。1602显示,有按键

2014-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除