转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53386117 我最近正在参加CSDN 2016年度博客之星评选,来来来,开车咯,赶紧帮投票吧! 时间:11月28日到12月18日每天都可以为我投一票 投票地址:http://blog.csdn.net/vote/candidate.html?username=hejjunlin 上一章介绍MediaCodec的说明及状态图,从今天…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52623882 前言:上篇文<Android Multimedia框架总结(十)>总结了音视频的输出过程,从今天开始分析Codec部分,今天分析的是AwesomePlayer到OMX服务过程,也就是开启OpenMax准备相关. 先看下今天的Agenda: 一张图看清OMX在stagefright中的位置 一张图看清OpenMax与…
上一章介绍MediaCodec中创建到start过程(到jni部分),从今天开始,将深入源码中看看其c++过程,看下Agenda如下: mediacodec.h CreateByType initMediaCodec中BufferInfo内部类: configure过程 start BufferInfo在MediaCodec.h中对应是一个结构体 //create by 逆流的鱼yuiop on 2016/12/11 //blog地址:http://blog.csdn.net/hejjunlin…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼,文章链接: http://blog.csdn.net/hejjunlin/article/details/52465168 前面一篇主要介绍c++中MediaPlayer的C/S架构中和Client相关部分,并中间穿插了mediaplayerservice的部分.但是对于这块C/S部分,没有放大去分析.<Android Multimedia框架总结(四)MediaPlayer中从Java层到C++层类关系及prepare及之后其他过程>…
转载请把头部出处链接和尾部二维码一起转载,本文出自: http://blog.csdn.net/hejjunlin/article/details/52435789 前面几节中,都是通过java层调用到jni中,jni向下到c++层并未介绍 看下Java层一个方法在c++层 MediaPlayer后续过程 frameworks/av/media/libmedia/MediaPlayer.cpp 找一个我们之前熟悉的setDataResource方法看下C/S模式的过程,亦可参考Android M…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52751055 前言:监于5.0之后Google用的是Camera2相关API取代之前的Camera,过时的Camera虽然精典,但不再进行介绍,可自行查阅相关资料.今天本文是在正式深入代码前对Camera2的一个补充.上篇中,最后用两种方式各自定义了一个相机的Sample.详细,可看<Android Multimedia框架总结(…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼:http://blog.csdn.net/hejjunlin/article/details/52532085 不知不觉到第九篇了,感觉还有好多好多没有写,路漫漫其修远兮 ,吾将上下而求索,上篇主要介绍了Stagefright框架及AwesomePlayer的数据解析器,最后我们说道,涉及parse及decode部分,将在本篇中介绍,看下今天的Agenda: 两张图看数据走向 AwesomePlayer中prepare过程 Awesom…
转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52420803 前言:在上篇中,分析了MediaPlayer的从创建到setDataSource过程,尽管看了代码,但是没有从MediaPlayer生态上认识各类库之间依赖调用关系,在本篇中将作一个补充整体上的认识.看下今天的Agenda: MediaPlayer各个so库之间关系结构图 MediaPlayer各个具体类之间依赖关系图 prepare…
转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52392430 前言:前一篇的mediaPlayer框架,对于各个模块的关系,得先从核心类MediaPlayer铺开,同样看下今天的Agenda: MediaPlayer从create到setDisplay时序图 MediaPlayer的create过程 MediaPlayer的setDataSource过程 MediaPlayer的setDispl…
请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52349221 前言:从本篇开始,将进入Multimedia框架,包含MediaPlayer, Camera, Surface, MediaRecord, 接下来几篇都是MediaPlayer相关.同样看下Agenda如下: MediaPlayer的状态图 Idle 状态 End 状态 Error 状态 Initialized状态 Prepared状态 Prepari…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52942533 前言:前一篇介绍了Camera2相关类作用及功能,并未对源码部分了解,今天了解了在Camera2框架中openCamera及session过程,Agenda如下: CameraManager的openCamera方法 openCameraDeviceUserAsync CameraDeviceImpl getCame…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629598 前言:上篇中介绍OMX事件回调,从今天开始,走入Codec部分之OpenMAX框架里.看下今天的Agenda如下: 一张图回顾音视频同步 一张图看清OpenMAX在Android系统中位置 OpenMAX是什么 OpenMax IL简介 OpenMax IL结构 Android中OpenMax的使用情况 OpenMa…
使用MediaPlayer播放音视频时,会创建AudioTrack对象用于播放音频数据.下面就来看看MediaPlayer创建AudioTrack的过程: 1.创建AudioTrack对象MediaPlayer类中并没有直接创建AudioTrack,而是把创建AudioTrack对象的操作放在了MediaPlayerService类的内部类AudioOutput中具体代码是在 MediaPlayerService::AudioOutput::open函数中,通过新建(new)一个AudioTra…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53183718 前言:前面几节都是介绍Camera2相关,对于Camera2预览把图像显示在SurfaceView上,还有录像时,时时刷新当前图像区域.追溯到最早介绍的MediaPlayer播放视频,这些都离不开重要角色MediaCodec,今天介绍MediaCodec,看下Agenda: MediaCodec是什么? codec操…
请尊重分享成果,转载请注明出处,本文来自逆流的鱼yuiop,原文链接:http://blog.csdn.net/hejjunlin/article/details/53729575 前言:前面几章都是分析MediaCodec相关源码,有收到提问,说MediaCodec到底是硬解码还是软解码?看下今天的Agenda: MediaCodec到底是硬解码还是软解码 MediaMuxer初识 MediaMuxer与MediaExtractor进行剪辑视频 效果图 布局实现 逻辑实现 log输出过程 Me…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53866405 前言:上篇中,介绍是用MediaMuxer与MediaExtractor进入音视频的裁剪,今天用MediaMuxer与AudioRecord与MediaCodec及Surface进行屏幕录制成gif.看下Agenda: 效果图 主体思路 转gif两种方案 MediaMuxer是用于将音频和视频进行混合生成多媒体文件.…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629449 前言:上篇文中分析到AwesomePlayer到OMX服务,曾介绍到,OMX服务主要完成三个任务: NodeInstance列表的管理,NodeInstance的操作, 事件的处理.最后这个事件处理就是今天放大看的内容.要一步一步一Codec,事件传递必不可少,看下今天的Agenda: OMXCodec与OMX ca…
前言:前面一篇我们介绍MediaPlayer相关方法,有人说,没有实际例子,看得不是很明白,今天在分析MediaPlayer时,顺带一个播放网络视频例子.可以自行试试.今天分析的都是下几篇介绍各个模块进行铺垫. Android中的MediaPlayer框架 MediaPlayer播放视频主要模块 播放主要模块对应组件 MediaPlayer方法对应有效状态及无效状态 案例:Mediaplayer播放网络视频 Android中的MediaPlayer框架 MediaPlayer播放视频主要模块 播…
Android Application Android提供给开发程序员的概念空间中Application只是一个松散的表征概念,没有多少实质上的表征.在Android实际空间中看不到实际意义上的应用程序的概念,即使有一个叫Application的类,这个也就是个应用程序上下文状态,是一个极度弱化的概念.Application只是一个空间范畴的概念,Application就是Activity,Service之类的组件上下文描述.Application并不是Android的核心概念,而Activit…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53966818 前言:一年半多以前,我们曾有个项目,要做一个截屏功能,当时负责调研的同事,答应了产品上这个功能,但开发一周后,发现,无法实现截取手机屏幕图像,须要root权限,才能做.因为最近研究MediaProjection,意外的发现,竟然无须root,可以轻松实现次功能.曾经被做不到的,如今做到了,很难相信此时的心情.看下今天…
请尊重分享成果,转载请注明出处,本文来自逆流的鱼yuiop,原文链接:http://blog.csdn.net/hejjunlin/article/details/53078828 近年来,唱吧,全民K歌,QQ音乐,等成为音频软件的主流力量,音频开发一直是多媒体开发中不可或缺的部分,如为什么这个声音这么不清楚,为什么耳机里有电流声,为什么录音时,有时会碰到奇怪的回声,先看下今天的Agenda: 音频开发的主要应用 音频开发基础概念 音频开发的具体内容 常见的音频编码(压缩)方式 音频算法处理的开…
转载请把头部出处链接和尾部二维码一起转载,本文出自: http://blog.csdn.net/hejjunlin/article/details/52431887 上篇中介绍了MediaPlayer从prepare到playback的其他过程,但是很多的一些音视频的基础概念可能还不是很清楚,今天将介绍下对于多媒体开发时,常常有一些基本概念.看下今天的Agenda: 对杂而乱的概念进行归类 视频部分相关 音频部分相关 先看一张图,这样常常在说的,是否真的了解它们真实含义: 对杂而乱的概念进行归类…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53150322 Agenda: 一张图看Camera2框架类图 CameraService启动 ICameraService.cpp Camera2Client.h与Camera2Client.cpp ICamera.h与 ICamera.cpp Camera2Client与CameraService连接 一张图看Camera2框架…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52738492 前言:国庆节告一段落,又是新一月,上月主要是围绕MediaPlayer相关展开,从今天开始,开始分析多媒体框架中的Camera模块,看下今天的Agenda: Camera拍照 Camera录像 新API android.hardware.camera2 新旧API特点对比 Camera自定义相机 新API andro…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52560012 前言:上篇文中最后介绍了数据解码放到Buffer过程,今天分析的是stagefright框架中音视频输出过程: 先看下今天的Agenda: 一张图回顾数据处理过程 视频渲染器构建过程 音频数据到Buffer过程 AudioPlayer在AwesomePlayer运行过程 音视频同步 音视频输出 一张图看音视频输出 一…
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼:http://blog.csdn.net/hejjunlin/article/details/52503057 前言:前面一篇分析了mediaplayerservice及MediaPlayer中的CS模型,但是对于如何能把数据解析出来,渲染到最终的SurfaceView上显示,并且播放起来,我们依然还不得而知,从今天开始,就开始介绍多媒体框架中数据解析->解码->渲染输出过程,也就是后面几篇都要介绍的stagefright框架. 先看…
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 我们继续在Database项目的基础上继续开发,通过内容提供器来给它加入外部访问接口.首先将 MyDatabaseHelper 中使用 Toast弹出创建数据库成功的提示去除掉,因为跨程序访问时我们不能直接使用 Toast. 一.添加一个 DatabaseProvider 类: public class DatabaseProvider extends ContentProvider { public static…
框架地址:https://github.com/yangfuhai/afinal 相应的源代码: net.tsz.afinal.annotation.view.* FinalActivity FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,经常使用的监听器), 利用set方式注入 全然注解方式就能够进行UI绑定和事件绑定,无需findViewById和set event Listener 这个过程:initInjectedView>findViewById.…
前面已经介绍过Entity Framework的工作单元和映射层超类型的封装,从本文开始,将逐步介绍仓储以及对查询的扩展支持. 什么是仓储 仓储表示聚合的集合. 仓储所表现出来的集合外观,仅仅是一种模拟,除了测试以外,没有理由使用内存中真正的集合来创建仓储. 不应该为所有实体建立仓储,只有聚合才拥有仓储. 仓储用来重建已持久化的聚合,而工厂用于新建聚合. 使用仓储的优点 直接使用Entity Framework的DbContext不是很好吗,为什么还要在DbContext的上方封装一层仓储呢,这…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 鹰眼功能是WebGIS中的一种常见功能,利用一些开源的框架实现起来非常方便.当然,按照博主从底层谈WebGIS这套系列的风格,在这里还是跟大家一起探讨探讨不借助第三方框架开发鹰眼的简单实现思路. 2.鹰眼功能分析 3.实现思路设计 3.1主图平移时与鹰眼图的联动 a.主图进行平移时,在平移完成后抛出地图平移事件,该事件中包含真实平移地理长度(GeoPanX,G…