自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常用命令

单独下载一个project git clone http://myrepo.xxx.com/project/.git ,这样在当前目录下得到一个project子目录 例如下载alps/frameworks/av 对应的命令为: git clone ssh://[email protected]:29418/mtk_N/alps/external/skia/.git alps/ext

2017-10-13 11:18:41 1202

原创 深入理解Android音视频同步机制

看到几篇音视频同步分析的博文,推荐下:1. 深入理解Android音视频同步机制(一)概述2. 深入理解Android音视频同步机制(二)ExoPlayer的avsync逻辑3. 深入理解Android音视频同步机制(三)NuPlayer的avsync逻辑4. 深入理解Android音视频同步机制(四)MediaSync的使用与原理5. 深入理解Android音视频同步机制(五)如何从零...

2019-04-23 16:38:16 593

原创 148. Sort List(链表归并排序)

Sort a linked list in O(n log n) time using constant space complexity.class Solution {public:ListNode *sortList(ListNode *head) {if(head == NULL || head->next == NULL) {return head;}ListNode...

2019-04-18 23:35:15 264

原创 音效框架

alps/frameworks/base/media/java/android/media/audiofx/LoudnessEnhancer.javapublic LoudnessEnhancer(int audioSession){//默认只使用type,uuid等于nullsuper(EFFECT_TYPE_LOUDNESS_ENHANCER, EFFECT_TYPE_NULL, 0, ...

2019-04-18 17:36:20 1015

原创 Android P之Camera HAL3流程分析(1)

Camera2中打开相机也需要通过CameraManager类    private void openCamera() {        CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);        //打开相机设备        manager.openCamera(mCam...

2019-02-16 18:18:41 5472

原创 Android P之Camera HAL3流程分析(5)

Camera2中拍照完成之后,如何实现获取数据呢?答案就是使用ImageReader间接实现,首先创建一个ImageReader,并监听它的事件    private void setupImageReader() {        //2代表ImageReader中最多可以获取两帧图像流        mImageReader = ImageReader.newInstance(mCapt...

2019-02-16 17:44:48 2492

原创 Android P之Camera HAL3流程分析(4)

准备工作做好后,还需要响应点击拍照事件,我们设置点击拍照按钮调用capture()方法,capture()方法即实现拍照    private void capture() {        try {            //创建拍照请求            final CaptureRequest.Builder mCaptureBuilder =                ...

2019-02-16 17:43:44 2541

原创 Android P之Camera HAL3流程分析(3)

我们使用TextureView显示相机预览数据,Camera2的预览和拍照数据都是使用CameraCaptureSession会话来请求的    private void startPreview() {        SurfaceTexture mSurfaceTexture = mTextureView.getSurfaceTexture();        mSurfaceTextu...

2019-02-16 17:42:44 2231

原创 Android P之Camera2预览和拍照

目录1,定义TextureView作为预览界面2,设置相机参数3,开启相机4,开启相机预览5,拍照6,拍照数据处理参考:http://blog.csdn.net/lb377463323/article/details/52740411Android API 21新增了Camera2,这与之前的camera架构完全不同,使用起来也比较复杂,但是功能变得很强大。在讲...

2019-02-16 16:33:31 2377

原创 Android P之Camera HAL3流程分析(2)

我们使用TextureView显示相机预览数据,Camera2的预览和拍照数据都是使用CameraCaptureSession会话来请求的    private void startPreview() {        SurfaceTexture mSurfaceTexture = mTextureView.getSurfaceTexture();        mSurfaceTextu...

2019-02-06 00:13:58 6876 1

原创 Android P的Binder IPC

一直以来,供应商进程都使用 Binder 进程间通信 (IPC) 技术进行通信。在 Android O 中,/dev/binder 设备节点成为了框架进程的专属节点,这意味着供应商进程将无法再访问该节点。供应商进程可以访问 /dev/hwbinder,但必须将其 AIDL 接口转为使用 HIDL。对于想要继续在供应商进程之间使用 AIDL 接口的供应商,Android 会按以下方式支持 Binde...

2019-02-05 17:16:17 709

原创 Android P之Camera HAL3流程分析(0)

目录参考文献注册CameraProvider服务注册cameraserver服务类和服务调用参考文献[Android O] Camera 服务启动流程简析[Android O] HAL3 之 Open Camera2 流程(零)—— 概览[Android O] HAL3 之 Open Camera2 流程(一)—— 从 App 到 CameraService[Android...

2019-02-03 15:27:15 12404 4

原创 Android媒体扫描

此函数太长,在此不粘出来了,这里首先要解释下这些参数,path - 要扫描文件夹路径以’/’结尾,pathRemaining为路径长度与路径最大长度之间的差值,也就是防止扫描时路径超出范围,extensions 前面已经解释过是后缀,client是MyMediaScannerClient对象,后面两个参数是一些异常处理不用关心。大家仔细看这个函数的代码就可以知道,它完成的是遍历文件夹并找到有相应ex

2017-11-15 09:58:06 970

原创 Android源码编译JNI

APP编译 Android.mkifneq ($(TARGET_BUILD_JAVA_SUPPORT_LEVEL),)LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := testsLOCAL_PROGUARD_ENABLED := disabled# comment it out for now since w

2017-11-08 16:12:49 1608

原创 高通输入输出设备选择

static int adev_open_input_stream(struct audio_hw_device *dev, audio_io_handle_t handle __unused, audio_devices_t devices,

2017-11-02 17:21:23 2499 1

原创 音频策略配置文件分析

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude"&g

2017-11-01 14:31:39 2147 1

原创 How to Debug issue’s Related to VoIP Call

Depending on the VOIP application and the configuration of the TX and RX path either VOIP driver or PCM driver is used.Sometimes VOIP driver is used for RX path only and the PCM driver is used for TX

2017-10-26 14:13:05 684

原创 sppex性能处理测试程序

编译依赖speex库的可执行文件测试speex性能LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := speextestLOCAL_CFLAGS = -DFIXED_POINT -DUSE_KISS_FFT -DEXPORT="" -UHAVE_CONFIG_HLOCAL_C_INCLUDES := $(LO

2017-10-23 20:09:44 707

原创 speex噪音消除

#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "speex/speex_preprocess.h"#include <stdio.h>#define NN 160int main(){ short in[NN]; int i; SpeexPreprocessState *st; int count=0;

2017-10-20 11:11:08 3715

原创 speex回音消除

在Speex(www.speex.org)的最新版本中,开始集成了回音消除的模块,而回音消除一直是Voip之中亟待解决的主要问题。很多朋友和我说speex的aec模块的效能并不好,我们先来看一下speex的aec的api调用方式。/**创建AEC对象*/SpeexEchoState *echo_state = speex_echo_state_init(frame_size, filter_

2017-10-18 09:56:31 3726 2

原创 VoIP通话的输入路由

status_t AudioALSACaptureHandlerAEC::open(){ if (mStreamAttributeTarget->input_device == AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET) { // open BT data provider if (WCNChipControlle

2017-10-09 15:38:35 1476 1

原创 录音机和录像机的输入通路SPELayer

//speech enhancement setting and processbool SPELayer::Start(SPE_MODE mode) //for VOIP, both uplink/downlink{ ALOGD("%s+, mode=%d", __FUNCTION__, mode); Mutex::Autolock lock(mLock); if

2017-09-30 14:28:05 621

原创 录音机和录像机的输入通路

AudioALSACaptureDataClient::AudioALSACaptureDataClient(AudioALSACaptureDataProviderBase *pCaptureDataProvider, stream_attribute_t *stream_attribute_target) : mCaptureDataProvider(pCaptureDataProvid

2017-09-29 16:03:39 2799

原创 Android音频驱动-ASOC之DAMP

static int snd_soc_instantiate_card(struct snd_soc_card *card) { ...... /* card bind complete so register a sound card */ ret = snd_card_create(SNDRV_DEFAULT_IDX1, SNDRV

2017-09-11 08:58:27 726

原创 Android音频驱动-ASOC之Control Open

struct mixer *mixer_open(unsigned int card){ struct snd_ctl_elem_list elist; struct snd_ctl_elem_info tmp; struct snd_ctl_elem_id *eid = NULL; struct mixer *mixer = NULL; unsigned

2017-09-07 15:39:01 1779

原创 Android音频驱动-ASOC之Control Device创建

soc-core.c snd_soc_instantiate_card init.c snd_card_new control.c snd_ctl_createControl设备和PCM设备一样,都属于声卡下的逻辑设备。用户空间的应用程序通过alsa-lib访问该Control设备, 读取或控制control的控制状态,从而达到控制音频Codec进行各种Mixer

2017-09-07 14:58:01 541

原创 Android音频驱动-ASOC之PCM HW Params

struct pcm *pcm_open(unsigned int card, unsigned int device, unsigned int flags, struct pcm_config *config){ struct pcm *pcm; struct snd_pcm_info info; struct snd_pcm_

2017-09-05 15:41:03 2863

原创 Android音频驱动-ASOC之PCM Write

int pcm_write(struct pcm *pcm, const void *data, unsigned int count){ struct snd_xferi x; if (pcm->flags & PCM_IN) return -EINVAL; x.buf = (void*)data; x.frames = count / (pcm->c

2017-09-05 11:30:37 7467 2

原创 Android音频驱动-ASOC之PCM Prepare

int pcm_write(struct pcm *pcm, const void *data, unsigned int count){ struct snd_xferi x; if (pcm->flags & PCM_IN) return -EINVAL; x.buf = (void*)data; x.frames = count / (pcm->c

2017-09-04 17:33:37 4573

原创 Android音频驱动-ASOC之创建设备节点

创建设备文件的方法: 第一种是使用mknod手工创建:mknod filename type major minor第二种是自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(mdev),由busybox配置。 具体udev相关知识这里不详细阐述,可以移步Linux 文件系统与设备文件系统 —— udev 设备文件系统,这里主要讲使用方法。

2017-09-01 16:42:39 1643

原创 Android音频驱动-ASOC之主&从设备号

设备号是在驱动module中分配并注册的,驱动module拥有这个设备号,而/dev目录下的设备文件是根据这个设备号创建的, 当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。 在Linux内核看来,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务; 而次设备号则用来标识具体且唯一的某个

2017-09-01 09:52:22 1046

原创 Android音频驱动-ASOC之Sound Card创建

static const struct file_operations snd_fops ={ .owner = THIS_MODULE, .open = snd_open, .llseek = noop_llseek,};static int __init alsa_sound_init(void){ snd_major = major;

2017-08-31 17:05:14 1369

原创 Android音频驱动-ASOC之常用对象

struct snd_soc_dai { const char *name; int id; struct device *dev; void *ac97_pdata; /* platform_data for the ac97 codec */ /* driver ops */ struct snd_soc_dai_driver *driver;

2017-08-29 19:42:46 1277

原创 Android音频驱动-ASOC之PCM Open

soc-core.csnd_soc_instantiate_cardinit.csnd_card_registerdevice.csnd_device_register_all__snd_device_registerdev->ops->dev_register(dev);pcm.csnd_pcm_dev_registersprintf(str, "pcmC%iD%ip", pc

2017-08-29 12:51:28 6760

原创 Android音频驱动-ASOC之PCM Device创建

soc-core.csnd_soc_instantiate_cardsoc_probe_link_daissoc-pcm.csoc_new_pcmpcm.csnd_pcm_new_internal_snd_pcm_newsnd_pcm_new_stream snd_device_new(card, SNDRV_DEV_PCM, pcm, &ops)pcm_lib.c //设置具体

2017-08-29 12:50:11 3234

原创 Android音频驱动-ASOC之Sound Card注册

soc-core.csnd_soc_instantiate_cardsoc_probe_link_daissoc-pcm.csoc_new_pcmpcm.csnd_pcm_new_internal_snd_pcm_newsnd_pcm_new_stream snd_device_new(card, SNDRV_DEV_PCM, pcm, &ops)pcm_lib.c //设置具体

2017-08-29 12:47:46 1989

原创 Android音频驱动-ASOC之CPU DAI

static int __init mtk_dai_stub_init(void){ int ret; soc_mtk_dai_dev = platform_device_alloc(MT_SOC_DAI_NAME , -1); ret = platform_device_add(soc_mtk_dai_dev); return platform_driver_re

2017-08-28 20:15:50 1351

原创 Android音频驱动-ASOC之Platform

static struct platform_driver mtk_I2S0dl1_driver = { .driver = { .name = MT_SOC_I2S0DL1_PCM, .owner = THIS_MODULE, }, .probe = mtk_I2S0dl1_probe, .remove = mtk_I2S

2017-08-28 17:48:12 1266

原创 Android音频驱动-ASOC之Codec

mt_soc_codec_63xx.cstatic int __init mtk_mt6331_codec_init(void){ int ret = 0; soc_mtk_codec6331_dev = platform_device_alloc(MT_SOC_CODEC_NAME, -1); ret = platform_device_add(soc_mtk_codec

2017-08-28 17:21:56 2353

原创 Android音频驱动-ASOC之Machine

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

2017-08-28 16:31:56 1171

空空如也

空空如也

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

TA关注的人

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