Libuv 源码分析(6):数据结构—复合类型(队列) 发表于 2017-03-14 更新于 2021-12-12 分类于 Code Reading 一、概述Libuv 用到了一些复合类型的数据结构:队列( Queue )、最小二叉堆( Binary min heap )、红黑树( R-B tree )等。其中队列和最小二叉堆是以宏的形式实现的。本文主要分析 Libuv 队列。 阅读全文 »
Libuv 源码分析(5):数据结构—结构( struct ) 发表于 2017-03-14 更新于 2021-12-12 分类于 Code Reading 一、概述Libuv 和其他 C 项目一样,大量使用结构,本文主要关注结构的声明方式、结构的”继承”和结构的分类。如果在分析具体的结构时遇到宏,可以先预处理展开宏,如: 1gcc -E src/uv-common.c -o src/uv-common.i -Iinclude -Isrc -Isrc/unix 阅读全文 »
Libuv 源码分析(4):数据结构—枚举( enum ) 发表于 2017-03-14 更新于 2021-06-18 分类于 Code Reading 一、概述Libuv 定义了若干枚举,本文集中列出方便查询( 针对 Windows 平台的枚举未完全列出)。这些枚举主要定义在如下文件:include/uv.hinclude/uv-common.hsrc/unix/internal.hsrc/unix/fsevents.c ( Darwin )src/win/tty.c ( Windows )src/win/winapi.h ( Windows ) 阅读全文 »
Libuv 源码分析(3):错误处理 发表于 2017-03-14 更新于 2021-06-18 分类于 Code Reading 一、错误号的重定义1、重定义错误号Libuv 重定义部分错误号供所有 OS 使用,以 UV__E* 格式命名。如: 1#define UV__EOF (-4095) 阅读全文 »
Libuv 源码分析(2):源码一览 发表于 2017-03-11 更新于 2021-12-12 分类于 Code Reading 一、概述Libuv 采用了异步( asynchronous ), 事件驱动( event-driven )的编程风格, 其核心任务是为开人员提供了一套事件循环和基于 I/O (或其他活动)通知的回调函数, Libuv 提供了一套核心的工具集, 例如定时器, 非阻塞网络编程的支持, 异步访问文件系统, 子进程以及其他功能。 阅读全文 »
Libuv 源码分析(1):准备工作 发表于 2017-03-10 更新于 2021-12-12 分类于 Code Reading 一、概述Github 上有 Libuv 的镜像,直接下载即可。想在 macOS 系统下进行源码分析,Source Insight 没有 macOS 版,wine 执行也不好用,虚拟机不想装,类似的源码分析工具没试过。幸好 Libuv 支持使用 GYP 生成 Xcode 项目文件。 阅读全文 »
关于状态栏( UIStatusBar )的若干问题 发表于 2016-09-07 更新于 2021-06-18 分类于 iOS 一、概述状态栏( UIStatusBar )指 iPhone/iPad/iPod 屏幕顶部用于显示网络、时间和电量等的、高度为20点的控件。状态栏的 windowLevel 为 UIWindowLevelStatusBar ,而 window 的 windowLevel 为 UIWindowLevelNormal 。所以一般情况下,状态栏位于 window 之上。 阅读全文 »
关于视频方向的若干问题 发表于 2016-09-07 更新于 2021-12-12 分类于 iOS 一、MOV/MP4 视频文件中的 Rotation 元数据iOS 上内置相机应用录制的 mov/mp4 视频可能产生一个 Rotation 元数据,表示录制视频时摄像头旋转到了多少角度。其值一般为这四个:0、90、180或270。类似于图片文件的 Exif 信息中的 Orientation 元数据。Rotation 元数据用于播放器确定渲染视频的方向,但有的播放器会对其视而不见。稍后会测试几种常见的播放器/播放控件对 Rotation 元数据的支持。 阅读全文 »