上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页
摘要: hexdump /dev/hidraw0就能看到usbhid设备传输过来的裸流 如:按下Input键 前面的估计是码流头(003ae60),还有按下(0096),松开(0086)等信息,识别按键有效信息是(006b) 006b其实是索引值,会在下表中寻找键值发送给Android,如:6b对应186 阅读全文
posted @ 2015-09-16 16:41 TaigaComplex 阅读(7918) 评论(0) 推荐(0) 编辑
摘要: AudioTrack的start方法用于实现Android的音频输出,start究竟做了什么?回顾一下上一小节createTrack_l的最后部分,通过binder返回了一个Track的句柄,并以被保存了下来 start主要就是调用这个track的start方法实现音频输出功能的 由于mAudioT 阅读全文
posted @ 2015-09-13 00:55 TaigaComplex 阅读(4705) 评论(0) 推荐(1) 编辑
摘要: 在分析AudioTrack的时候,第一步会new AudioTrack,并调用他的set方法。在set方法的最后调用了createTrack_l创建音轨。我们现在来分析createTrack_l的流程。 在分析createTrack_l之前,我们先来了解Android音频流的从PCM到输出的路线。首 阅读全文
posted @ 2015-08-31 00:43 TaigaComplex 阅读(4433) 评论(0) 推荐(0) 编辑
摘要: 映射表基本概念 由于Android调用getEvents得到的key是linux发送过来的scan code,而Android处理的是类似于KEY_UP这种统一类型的key code,因此需要有映射表把scan code转换成key code。映射表在板子上的位置是/system/usr/keyla 阅读全文
posted @ 2015-08-27 13:28 TaigaComplex 阅读(6866) 评论(0) 推荐(1) 编辑
摘要: 每创建一个AudioTrack,代表需要新增一个输出实例,即需要根据音频流的的stream type,音频流的音轨数量,采样率,位宽等数据来重新构建buffer,而且输出的设备也可能会有变化,由于Android设备支持的输出设备各种各样,如线控耳机,喇叭,蓝牙耳机,midi设备等,因此如果该设备是第 阅读全文
posted @ 2015-08-23 23:43 TaigaComplex 阅读(13061) 评论(0) 推荐(0) 编辑
摘要: AudioTrack在Android系统中是用于PCM数据的混音、播放,并不涉及到音频的解码。因此MP3这类经过编码的音频格式文件不能直接通过AudioTrack正确地播放,AudioTrack只能播放PCM格式的音频数据,如wav格式的音频。 AudioTrack播放音频的实例如下: 共有三个步骤 阅读全文
posted @ 2015-08-23 14:16 TaigaComplex 阅读(4609) 评论(0) 推荐(1) 编辑
摘要: 在上一篇文章的最后,我们发现InputDispatcher是调用了InputChannel->sendMessage把键值发送出去,那么相应的,也有接收键值的地方。接收函数是InputChannel->receiveMessage。 在InputConsumer::consume内找到了receiv 阅读全文
posted @ 2015-08-22 15:27 TaigaComplex 阅读(5510) 评论(2) 推荐(1) 编辑
摘要: Android输入系统是人与机器交互最主要的手段。我们通过按键或者触碰屏幕,会先经由linux产生中断,进行统一的处理过后,转换成Android能识别的事件信息,然后Android的输入系统去获取事件,分发给上层用户程序进行处理。 下面在细分一下输入事件在Android系统中的流程: 从图上能看到, 阅读全文
posted @ 2015-08-22 03:00 TaigaComplex 阅读(3368) 评论(0) 推荐(1) 编辑
摘要: 在做B帧的运动预测时,有两组参考图像列表(refList0, refList1),需要进行分别前向预测、后向预测。传统的预测方式是: 对refList0进行前向预测,得到最佳前向ref与mv。 对refList1进行后向预测,得到最佳后向ref与mv。 对比三组ref与mv(前向、后向、前向+后向) 阅读全文
posted @ 2015-05-17 20:58 TaigaComplex 阅读(1384) 评论(0) 推荐(0) 编辑
摘要: Mode Decision(模式选择)决定一个宏块以何种类型进行分割。宏块的分割类型有以下几种: //P_Skip and B_Skip means that nothing need to be encoded for this macroblock , // just use the mv pr 阅读全文
posted @ 2015-04-26 19:20 TaigaComplex 阅读(2359) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页