自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 【Android】关于selinux等引起的权限问题

本文章会持续更新问题背景1:在系统中间增加一个parameter分区,主要用来存储音频参数等硬件参数。但是在audioserver进程访问的时候出现权限问题 相关信息:Android N+MTK 如何创建分区打包成镜像放到手机? 在build/core/Makefile中间的修改如下:## Generate an ext4 imageTARGET_PARAMETER_OUT := $(PR

2017-11-01 15:08:04 2308

原创 【Linux进程通信】管道,FIFO

简介进程通信最基本的一种通信机制,是进程之间一个单向数据流:一个进程写入管道的所有数据都由内核定向流入到另外一个进程。(如果多进程使用管道通信,则需要通过锁来控制)。管道的特点:基于一组VFS对象,因而没有对应的磁盘映像(匿名管道对用户不可见,但是FIFO是以终端用户认可的文件存在的)POSIX只定义半双工管道,因而简历通信管道时,每个管道的文件描述符是单向的。所以pipe系统调用需要返回两个描

2017-10-20 10:52:15 1837

原创 【linux进程通信】信号的使用

关于信号:信号的作用: 1,通知进程一些特定的事件 2,强迫进程执行他自己代码中间的对信号的处理程序进程以三种方式对一个信号作出应答: 1,显示忽略 2,执行信号相关的缺省操作terminate 终止Dump 终止并且保存信息用于调试Ignore 忽略Stop 停止,进程状态为 TASK_STOPPEDContinue 如果进程停止,就将状态置为 TASK_RUNNING3,

2017-10-19 17:11:50 1802

原创 【多媒体编解码】Openmax IL (二)Android多媒体编解码Component架构

带着三个问题学习这个部分: 问题1:Android中间各种编解码库的加载与管理? 问题1:Android如何确定使用那个编解码器并且初始化? 问题2:Android如何集成一个新的编解码器,硬件平台相关/非硬件平台相关两种情况? 按照OpenMax IL的简述,编解码架构中间至关重要的是如下两点: 1,各个不同功能的conponent 2,平台商实现的“media.resouce_mana

2017-09-08 18:28:22 5662

原创 【多媒体编解码】Openmax IL (一)官方文档概述

OpenMax IL 概述PS:被博客主要是对官方文档前三章的学习于记录。 官网文档请移步: https://www.khronos.org/openmax/Openmax 框架图:openmax il API概述openmax il API 是基于组件的的多媒体API,包括core API和conponent API core : 动态的加载和卸载conponent,允许用户层和conp

2017-09-01 18:28:12 4926

原创 【多媒体编解码】Android 视频解析MediaExtractor

写在前面:学习Android多媒体的步骤: 1,Audio PCM &video YUV各种数据的处理,格式的封装与装换原理 2,多媒体的播放框架,nuplayer ,stagefright 3,音视频分离 MediaExtractor 4,音频编解码(以AAC为例) 5,视频图像编解码(以H264为例) 6,音视频同步技术这一部分的学习之前,需要了解: 1,音视频容器的概念,参考博文

2017-08-23 16:06:47 5113 1

原创 【Android】从libavenhancements.so的调用分析高通封装

**c++ 泛型****函数指针**形式1:返回类型(*函数名)(参数表) 形式2:typedef 返回类型(*新类型)(参数表)**static_cast、dynamic_cast、const_cast和reinterpret_cast****dlsym 、dlopen,dlclose**

2017-08-18 17:09:30 3078 1

原创 【多媒体编解码】AAC

这篇文章主要是对雷神关于AAC的分析,文章链接如下: 《视音频数据处理入门:AAC音频码流解析 》 http://blog.csdn.net/leixiaohua1020/article/details/50535042简介:AAC文件的解码,就是将AAC码流分解为AAC原始码流(裸流),将裸流作为编解码库的输入,进行编解码。 AAC原始码流就是我们所说的数据帧,主要有两种格式:ADTS帧,A

2017-08-08 13:43:53 2042

原创 音频数据的处理

前言在研究android音频架,音频驱动等的时候,就有涉及到dump音频数据debug,重采样,downmixer,位深转换的处理,那这些的操作原理以及相关算法是如何实现的呢?带着这个问题,开始探讨音频数据的如下几个问题音频数据的特征,与存储等基本概念音频数据的dump方法重采样downmix存储位深转换参考文章列表 位深的装换 声道数的装换1. 音频数据的特征,与存储等基本概

2017-08-07 19:25:31 6971 1

原创 【Android】音效配置文件 audio_effects.conf

# List of effect libraries to load. Each library element must contain a "path" element# giving the full path of the library .so file.# libraries {# <lib name> {# path <lib path>

2017-07-24 10:21:49 5520

原创 [Android] AudioEffect架构:从上层调用到底层音效驱动

音效

2017-07-18 18:48:03 6174

原创 【C/C++】消费-生产者模型

关于PV,信号量,同步,互斥的说明互斥: 是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步: 是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问,更强调进程间的协作,如同生产者消费者问题。PV原语 PV操作是典型的同步机制之一。用一个信号量与一个消 息联系起来,当信 号量的值为0时,表示期 望的消

2017-07-17 13:50:21 581

原创 Linux驱动调试-堆栈log

驱动基本调试技巧 **一, 堆栈打印** 1,C++ 中堆栈打印 CallStack stack(LOG_TAG); 打印堆栈 头文件:#include 01-01 08:00:05.337 332 3532 D joymine_trace: #00 pc 0000a393 /system/lib/libaudiopolicyenginedefault.so (android::a

2017-07-13 13:47:18 759

原创 【Linux API】Sysfs & sysfs_notify文件系统

Sysfs是表现设备驱动模型的文件系统,涉及的结构体。

2017-07-13 12:05:11 5151

原创 [Linux API]linux 工作队列workqueue

1,功能描述:Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个 数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的 编程。工作队列(workqueue)是另外一种将工作推后执行的形式.工作队列可以把工作推后,交由

2017-07-13 11:26:49 2327

原创 【Linux API】kthread的使用

一,内核实例分析先来分析一下一个实例,这个例子主要是创建一个内核线程,用来打印GPIO信息,当线程没有收到停止的指令时,一直打印。int config_gpio_thread(void *tmp_gpio_num) //回调函数,返回值必须是int ,且参数必须是void *{ int gpio_num = *((int *)tmp_gpio_num);//类型强转,由void*

2017-07-13 10:57:50 2260 1

原创 【Linxux API】计时器add_event_timer & hrtimer

简介Hrtimer,一种高精度时间计时器,主要实现技术:红黑树;其实现依赖于timekeeper(时间维护者)和clock_event_device(定时器引擎);hrtimer系统需要通过timekeeper获取当前的时间,计算与到期时间的差值,并根据该差值,设定该cpu的tick_device(clock_event_device)的下一次的到期时间,时间一到,在clock_event_devi

2017-07-13 10:42:53 929

原创 【Android多媒体(重采样与混频)】从playback流程分析AudioResampler,AudioMixer

文章大致内容介绍本文主要讲述播放音乐流程,AudioResampler是如何生效的播放流程AudioMixer分析从MixerThread分析播放流程在Android中间,如果使用硬解码OffloadThread是不会出现混频和重采样的,但是播放需要软解的音频,则会按需要重采样。 为了方便研究,这里修改软件配置文件,让primary compress_offload仅仅支持8000的采样率

2017-07-10 18:34:28 5014 3

原创 Android——hal库加载操作流程

系统是如何区分平台,加载操作指定平台的相应的HAL库文件的?以加载audio.primary.msm8909.so为例: 高通平台,audio primary库文件是有两个的,但是具体加载哪一个呢? audio.primary.default.so audio.primary.msm8909.soAudioFlinger开始的调用流程:audio_module_handle_t Au

2017-07-10 17:43:18 1906

原创 【Android多媒体(重采样与混频)】AudioResamper重采样算法分析

to be filled

2017-07-07 10:34:49 1013

原创 【Android多媒体(重采样与混频)】从录音流程分析AudioResampler

本篇文章包括:AudioResampler的功能分析录音与重采样流程分析AudioResampler的功能分析录音与重采样流程分析一张时序图,说明调用顺序: 这里我们需要关注的是,src相关参数,以及dst相关参数的来龙去脉。交互2:函数AudioRecord::set 主要是 1,初始化AudioRecord的如下参数:mFormatmChannelCountmReqFrameC

2017-07-06 11:22:21 2873

原创 【Android多媒体(重采样与混频)】重采样等基本概念

重采样和混频的概念关于音频采样,百度上面找到这样的解答: 频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要

2017-07-06 11:19:00 3884 1

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-07-06 10:06:44 348

原创 配置学习总结高通平台GPIO

前言:近期在BSP的工作学习中,Group Leader 给安排了一项任务,就是分别在Android项目代码里面的SBL1,LK,以及各自负责的驱动模块代码(我是Audio驱动)中间配置GPIO ,使用循环语句,控制GPIO的输出电压,从而通过示波器得到相应的电压变化方波。因为之前对这方面没有接触过,所以在一边查询资料,一边在前辈的指导下尝试,完成了任务的一大半,下面将是我这一周对于在高通平台

2015-09-01 18:59:39 11607 2

空空如也

空空如也

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

TA关注的人

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