Home

L5 多处理器编程:从入门到放弃

线程栈大小 可以通过下面的代码来测试当前线程的栈大小: #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdatomic.h> #include <assert.h> #include <unistd.h> #include <pthread.h> #define NTHREAD 64 enum { T_FREE = 0, T_LIVE, T_DEAD, }; struct thread { int id, status; pthread_t thread; void (*entry)(int);...

Read more

L4 Python 建模操作系统

状态机 提出了大胆的想法:无论是软件还是硬件,都是状态机 而状态和状态的迁移是可以 “画” 出来的! 理论上说,只需要两个 API: dump_state() - 获取当前程序状态 single_step() - 执行一步 由此可以简化操作系统: 把复杂的东西分解成简单的东西,我们真正关心的概念: 应用程序 (高级语言状态机) 系统调用 (操作系统 API) 操作系统内部实现 没有人规定上面三者如何实现,通常的思路:真实的操作系统 + QEMU/NEMU 模拟器 我们的思路: 应用程序 = 纯粹计算的 Python 代码 + 系统调用 操作系统 = Python 系统调用实现,有 “假想” 的 I/O 设备 def main(): ...

Read more

线性代数复习

向量 向量的定义 向量的模 向量的加法(平行四边形和三角形法则) 向量的点乘以及特性 向量点乘在图形学中的应用(判断大致的方向) 向量叉乘以及特性 向量叉乘在图形学中的应用(判断一个点是否在三角形内) 矩阵 矩阵的基本运算(相乘) 参考 GAMES101: 现代计算机图形学入门 一篇搞定!GAMES101现代计算机图形学入门(全)–知乎 GAMES101_Lecture_02 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读 向量点乘与叉乘的概念及几何意义 向量几何在游戏编程中的使用1 推导相机变换矩阵 GAMES101 作业问题整理 一篇搞定!GAMES101现代计算机图形学入门(全)

Read more

写一个播放器之一

前言 年初进入一家音视频的公司,而在这方面感觉太菜,于是决定学习相关的知识。从零实现一个播放器我觉得是一个入门的好办法,于是参考了这个 ffmpeg-video-player,跟着其中的 tutorial 从简单到复杂。 完成这个 tutorial 系列,再去深入研究 FFMpeg 的 ffplay 播放器就相对简单许多(当然 ijkplayer 也不在话下(:逃))。 开始 首先研究 tutorial03。 FFMpeg 的一些初始化 1、创建 AVFormatContext AVFormatContext * pFormatCtx = NULL; ret = avformat_open_input(&pFormatCtx, argv[1], NULL, NULL);...

Read more

音频基础知识

前言 此篇为总结音频的各种基础知识,不定期更新。另外此篇为网上各大博客总结的合集,参考链接放在了后面。 音频基础知识 声音是什么 声音(sound)是由物体振动产生的声波。声音作为一种机械波,频率在20 Hz~20 kHz之间的声音是可以被人耳识别的。—–百度百科 音频录制 最简单的音频录制流程为: graph LR; A[设备采集] B[模数转换] C[存储] A-->B B-->C 播放端流程相反: graph LR; A[音频文件] B[数模转换] C[播放器播放] A-->B B-->C 模数转换 模拟信号转化为数字信号的流程 采样: 对模拟信号...

Read more

FFMPeg 音频

一些概念 音频有几个重要的参数: 采样率(sample_rate,单位是Hz); 通道数(channels); 采样格式(sample_fmt,见AVSampleFormat,其实就是采样的精度,位数越多表示越精细,当然占用的空间也会比较大)。 在ffmpeg中,音频数据的存储格式也有 planar 和 packed 之分,planar 表示每个通道数据单独存储,packed 表示通道数据交叉存储,在 AVSampleFormat 的类型末尾带P的就表示是 planar 格式的,比如双声道,用 L 表示左声道,R 表示右声道,那么: packed 的存储为:LRLRLRLRLRLRLRLR; planar 的存储为:LLLLRRRRLLLLRRRR。 ...

Read more

Swift Mirror

前置知识介绍 AnyObject AnyObject :代表任意类的实例、类的类型和仅类遵守的协议。 如下面几个就不正确: 字面量 解释一下 Swift 中的字面量 所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。比如在下面: let aNumber = 3 //整型字面量 let aString = "Hello" //字符串字面量 let aBool = true //布尔值字面量 整型字面量 整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀: let...

Read more

Swift try

一个示例代码 如下示例代码,实现了一个简单的对象转Map: protocol JsonMap { func jsonMap() -> Any } extension JsonMap { func jsonMap() -> Any { let mirror = Mirror(reflecting: self); guard !mirror.children.isEmpty else { return self } var reslut: [String : Any] = [:] for (key, value) in mirror.children { ...

Read more