Posts


OpenGL 学习系列---基本形状的绘制

在之前的一篇博客中,讲述了 OpenGL 绘制一个点的流程及相关的代码,其中关于 OpenGL 程序编译部分都是可以在其他项目中接着复用的,接下来会讲到如何去绘制其他的基本图元。

[阅读全文]
OpenGL 

Python 函数式编程

函数式编程是一种编程范式,不同于之前的面向对象编程。它是面向数学的抽象,也就是说,这里的函数二字不再是我们编程语言中的函数,而是数学中的函数了。

[阅读全文]
Python 

Python 命令行参数解析工具 docopt

正如标题所言,docopt 是一个用来解析命令行参数的工具,当想要在 Python 程序后面附加参数时,就不需要再为此而发愁了。

docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt。它在 README 中就已经做了详细的介绍,并且还附带了很多例子可供学习,这篇文章也是翻译一下 README 中内容……

[阅读全文]
Python 

FFmpeg 3.0 版本视频解码浅析

MPEG封装格式到PCM数据格式

有了上一篇文章基础,这里就只关注 FFmpeg 如何解析的具体实践了。

在开始工程之前,第一步要做的就是编译 FFmpeg 源码,生成 Android 平台上使用的 so 库。

在生成完了之后,导入 Android 工程项目中,并且配置 CMake 文件,添加对应的库,就可以开始开发了。

[阅读全文]
FFmpeg 

音视频编解码的那些基础理论

最近在研究学习 FFmpeg,从网上参考了好多资料,其中最了不起的就当属——雷霄骅大神了,若没有他的博文,别说入门了,可能连门在哪里都不知道,在此还是要表达一下对雷神的敬佩和敬仰。

本文主要讲的是视频文件的解码,从视频文件的封装格式解码到原始数据格式,通过讲解涉及到的各种概念,从而理清整个思路和流程。

[阅读全文]
FFmpeg 

用 Rxjava 封装 Dialog 以及 RxBinding 实现简要分析

之前有写过一篇文章:用 RxJava 封装回调方法 CallBack

RxJava 封装回调方法的大体思路就是:使用 Observable 的 create 方法来返回一个 Observable,在 create 方法内给事物设置回调接口,用 Observable 的 onNext 方法来接受回调接口所产生的内容。

这样一来,通过 onNext 方法就把事物的回调方法转换到 Rxjava 对应的事件流里面了,再可以通过其他操作符,如 Map、FlatMap 等对事件流进行相应的转换。

[阅读全文]

Android 布局加载之 LayoutInflater

Activity 在界面创建时需要将 XML 布局文件中的内容加载进来,正如我们在 ListView 或者 RecyclerView 中需要将 Item 的布局加载进来一样,都是使用 LayoutInflater 来进行操作的。

LayoutInflater 实例的获取有多种方式,但最终是通过(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)来得到的,也就是说加载布局的 LayoutInflater 是来自于系统服务的。

[阅读全文]

Android 6.0 Service 启动过程源码分析(一)

Service 组件也是 Android 四大组件之一,它的启动过程分为显示和隐式两种。对于隐式启动的 Service 组件来说,我们只需要它的组件名称;对于显示启动的 Service 组件来说,我们需要知道它的类名称。

Service 组件可以被 Activity 组件启动,也可以被其他的 Service 组件启动。同时,它既可以在启动它的 Activity 组件或者 Service 组件所在的应用程序中启动,也可以在一个新的应用程序进程中启动。

[阅读全文]