日常工作中的设计:解耦和封装
本文介绍日常工作中模块间解耦,并进行抽象封装的一个例子。 一、问题提出 在一个嵌入式设备中,视频相关业务流程如下图所示,DSP采集编码后,生成H264数据,然后对H264数据分别进行MP4、RTP、PS封装,封装后形成的数据进入对应的缓存队列。缓存队列是DSP和APP共享的,DSP写入,APP读取。 业务层(APP层)的录像模块(包括循环录像、事件录像等)从mp4数据包缓存队列中读取数...
本文介绍日常工作中模块间解耦,并进行抽象封装的一个例子。 一、问题提出 在一个嵌入式设备中,视频相关业务流程如下图所示,DSP采集编码后,生成H264数据,然后对H264数据分别进行MP4、RTP、PS封装,封装后形成的数据进入对应的缓存队列。缓存队列是DSP和APP共享的,DSP写入,APP读取。 业务层(APP层)的录像模块(包括循环录像、事件录像等)从mp4数据包缓存队列中读取数...
毕业前准备校招面试的时候,和同学一起刷《高质量C++/C编程指南》,以为作者林锐是个严肃的学者(老学究)。 《软件工程思想》彻底颠覆了我对作者的认知。作者不仅技术文章写的好,文采也很出众,思维、行为都很活跃,很多思想在二十年后的今天仍然适用。 下面是《软件工程思想》的精华摘录,原汁原味的鸡汤,闲暇时不妨品下,可能会有些许收获。如果想拜读原文,可以从这里下载:软件工程思想。 一、软件工程的...
一、音视频数据封装 1. 头部结构 2. payload结构 2.1 H264基础知识 2.2 RTP基础知识 2.3 AVTP封装h264_payload 二、媒体同步 3.1 AVTP Presentation...
一、时间同步要解决的问题 二、gPTP的主要思想 1. 体系结构 2. 主时钟选取 3. 绝对时间同步 4. 相对时间同步 三、影响校时精度的因素 1. 传输时延不对称 2. 驻留时间 3. 时间戳采样点 4. 时钟频率 5. 传输路径延时测量方...
一、音视频传输面临的主要问题 二、如何解决这些问题 1. 网络传输问题 2. 多媒体同步问题 媒体时钟恢复 播放时间同步 三、AVB体系 1.协议框架 2. 网络拓扑 3. 典型应用场景 ...
一、预备知识 1. 2的补码 2. 十进制转换为2的补码 3. 2的补码转换为十进制 4. 减法运算 例1:结果为正数的减法 例2:结果为负数的减法 二、整数在程序中的表示 1. 整数在汇编代码中的表示 ...
想了解堆栈等虚拟内存相关知识吗? 想知道下面这张进程地址空间示意图是如何一步一步画出来的吗? 虚拟内存探究系列文章将通过实验的方式带你学习相关知识。 中文版 第一篇:虚拟内存探究 – 第一篇:C strings & /proc 第二篇:虚拟内存探究 – 第二篇:Python 字节 第三篇:虚拟内存探究 – 第三篇:一步一步画虚拟内存图 第四篇:虚拟内存探究 ...
一、栈 二、预备知识 三、实验环境 四、局部变量 1、自动分配内存 2、使用局部变量 3、自动销毁内存 五、对栈的进一步探究 1、局部变量为什么要初始化 2、函数返回机制:ret指令 六、通过寄存器探索栈内容 1、访问局部变量 2、访...
1. 背景 2. 基于backtrace分析 2.1 原理 2.2 分析 3. 确定受害者身份 3.1 ThreadX的信号量管理机制 3.2 分析 4. 谁踩了这个信号量 4.1 利用Electric Fence原理进行定位 4.2 加大内存检测频率 ...
一、首先确认是否支持硬件watchpoint 二、打开监控模式 三、设置watchpoint 四、参考资料 本文介绍如何使用ARM平台的硬件watchpoint定位踩内存问题,特别是如何在运行过程中自动对特定内存区域添加watchpoint。 在踩内存问题中,最困难的就是找出元凶。常见排查手段如下: 通过gdb打内存断点(添加watchpoint), 看看谁非法访问了...