obs-studio源码分析
哎哟哟爱民谣
这个作者很懒,什么都没留下…
展开
-
obs-studio源码分析 之 内存管理
obs-studio源码中关于内存管理的代码在bmem.h和bmem.c中。其内存管理的特点总结下来,有一下几点:跨平台 内存对齐,提高存取效率 提供了内存申请释放的统一的C接口最大的亮点就是内存管理是经过内存对齐的,那我们首先讲讲什么是内存对齐。内存对齐的原因?(百度百科)平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,原创 2020-07-27 12:17:20 · 619 阅读 · 0 评论 -
obs-studio源码分析 之 C语言如何实现多态
在C++这种面对对象语言中,大家都知道如何实现多态,就是定义一个接口类,然后,子类中实现接口类的成员函数。那么C语言如何实现多态呢?下面我们就以obs-studio中的serializer为例进行说明serializer结构体定义如下// 通过指针的方式,实现多态struct serializer { void *data; size_t (*read)(void *, void *, size_t); size_t (*write)(void *, const void *,原创 2020-07-26 21:23:29 · 335 阅读 · 0 评论 -
obs-studio源码分析 之 动态数组darray
darray是obs中一个典型的线性表数据结构,实现了C++中模板的特性。在#define DARRAY(type)宏定义中,巧妙的使用了union联合的数据共享的优点,这也使的在创建的darray具备模板的特性。直接上代码#pragma once#include "c99defs.h"#include <string.h>#include <stdlib.h>#include <assert.h>#include "bmem.h"#ifd原创 2020-07-11 12:08:54 · 1245 阅读 · 0 评论