- 博客(228)
- 资源 (24)
- 收藏
- 关注
原创 【音频编解码】音频编码格式 AAC-LC 和 AAC-LD 的区别
AAC-LC是 AAC 标准的“默认选项”,它在音质、压缩率和计算复杂度之间取得了最佳平衡,是音乐和视频存储、流媒体播放的首选。AAC-LD是 AAC 标准的“特化版本”,它牺牲了一定的压缩效率,换来了极低的处理延迟,是实时互动场景的理想选择。值得一提的是,在 AAC-LD 的基础上,后来又发展出了AAC-ELD(Enhanced Low Delay,增强型低延迟)。
2026-04-27 15:42:55
211
原创 音频编码格式 G.729 和 G.729A 的区别
G.729是基础标准,追求在低码率下的高语音质量,但计算开销较大。G.729A是 G.729 的“实用优化版”,它牺牲了微小的音质,换来了计算复杂度的显著降低,更适合在资源受限的嵌入式设备和通用处理器上部署。由于其出色的带宽效率和良好的兼容性,G.729 和 G.729A 至今仍在 VoIP 网关、IP 电话、视频会议系统等设备中广泛使用。此外,它们还有支持静音压缩(VAD/DTX)的 Annex B 版本(即 G.729B 和 G.729AB),可以在不说话时进一步节省带宽。
2026-04-27 15:32:38
250
原创 【音频编解码】音频编码格式 G.722、G.722.1、G.722.1.C 的区别
G.722是开创者,奠定了 7kHz 宽带语音的基础,优势在于极低延迟和免费。G.722.1是 G.722 的“高效版”,用更先进的算法在更低的码率下实现了相似的音质,但牺牲了一些延迟。G.722.1.C是 G.722.1 的“增强版”,在 G.722.1 的高效压缩基础上,进一步提升了音质,达到了 14kHz 的超宽带水平。你可以将它们看作是音频编码技术在不同方向上的演进:G.722 追求低延迟和兼容性,G.722.1 追求带宽效率,而 G.722.1.C 则在效率和音质之间取得了更好的平衡。
2026-04-27 15:26:26
396
原创 【C/C++】在头文件中定义全局变量的方法
方案适用标准优点缺点extern声明所有 C++ 标准兼容性好,定义位置明确代码分散,需要维护两个文件inline变量C++17 及以上代码简洁,声明定义合一需要较新的编译器支持C++11 及以上线程安全的延迟初始化,避免初始化顺序问题访问方式稍复杂,需要通过函数调用建议如果项目可以使用 C++17 或更高版本,优先使用inline变量,最简单直接。如果项目模块多,担心初始化顺序问题,强烈推荐 Meyers’ Singleton。如果需要兼容老版本编译器,则使用传统的extern。
2026-04-27 14:01:56
350
原创 【C++】设计一个单例基类,用户使用基类提供 getInstance() 来获取派生类实例化的单例对象
这种设计模式非常适合插件系统或组件化架构扩展性强:新增一个单例类,只需继承并复制粘贴Registrar代码即可,无需修改基类。统一管理:所有单例的生命周期管理逻辑都集中在基类的模板方法中。多态支持:可以通过基类指针操作不同的单例实现。
2026-04-09 15:20:05
189
原创 【D3D11】D3D_DRIVER_TYPE 枚举详解
D3D_DRIVER_TYPE_UNKNOWN = 0, // 未知类型D3D_DRIVER_TYPE_HARDWARE = 1, // 硬件驱动(GPU)D3D_DRIVER_TYPE_REFERENCE = 2, // 参考驱动(软件,功能完整但极慢)D3D_DRIVER_TYPE_NULL = 3, // 空驱动(无渲染,用于测试)D3D_DRIVER_TYPE_SOFTWARE = 4, // 软件驱动(通用)
2026-04-03 09:05:56
215
原创 【D3D11】DXGI_SWAP_CHAIN_DESC 的 Windowed 分量详解
场景推荐设置视频会议/监控(当前场景)游戏(追求极致性能)DISCARD需要频繁切换+ 运行时对于 mediasdk 的视频播放场景,建议改为 Windowed=TRUE视频播放不需要游戏级别的渲染性能用户可能需要同时操作其他窗口翻转模式已经提供了足够的性能避免全屏切换时的黑屏问题。
2026-04-01 15:28:25
161
原创 【D3D11】DXGI_SWAP_CHAIN_DESC 结构体
/ 缓冲区显示模式// 多重采样设置// 缓冲区用途// 缓冲区数量// 输出窗口句柄// 是否窗口模式// 交换效果UINT Flags;// 标志位配置项视频播放推荐游戏推荐2-32-3WindowedTRUEFALSE(全屏)SwapEffect或DISCARDFlags11 或 4。
2026-04-01 15:02:44
337
原创 【D3D11】UpdateSubresource 函数的目标区域 矩形大小 和 源数据 矩形大小 必须相同吗?
问题答案目标区域和源数据矩形必须相同吗?不需要源数据可以比目标区域大吗?可以,通过调整pSrcData起始地址和实现裁剪源数据可以比目标区域小吗?不可以,会导致越界读取如何实现缩放?不支持缩放,需要先用其他方式(如 CPU/libyuv)缩放后再调用。
2026-03-31 14:56:52
33
原创 【D3D11】ID3D11DeviceContext::UpdateSubresource 函数介绍
是一个同步 CPU 到 GPU 的数据拷贝函数简单的纹理更新不需要频繁更新的场景不需要直接访问 GPU 内存的场景对于高性能视频渲染,建议使用Map/Unmap或动态纹理(当前代码中已实现路径)。
2026-03-31 14:54:11
161
原创 【FFmpeg】理解 av_packet_from_data 和 av_packet_unref 接口
说法正确?说明不会释放pStream❌ 错误会释放!pStream是外部 buffer,可安全传给❌ 危险除非它是av_malloc分配的“应使用处理外部数据”✅ 正确推荐做法。
2026-02-03 16:42:23
606
原创 【C/C++】strerror、GetLastError 和 errno 的含义和区别?
项目errnostrerror来源C 标准库 / POSIXC 标准库平台跨平台跨平台仅 Windows适用函数C 标准库函数(如fopenmalloc配合errno使用Windows API 函数(如CreateFile类型全局变量(int)函数(转错误码为字符串)函数(返回 DWORD 错误码)线程安全通常是线程局部(现代实现)通常不安全(用替代)线程局部(安全)典型错误码ENOENT(=2),EINVAL(=22)(=2),(=5)标准库看errno,WinAPI 查;
2026-01-30 16:22:41
692
原创 【C/C++】什么是 运行时库?运行时库 /MT 和 /MD 的区别?
选项链接方式是否依赖 VC++ Redist文件大小模块间 CRT 共享适用场景/MT静态链接否较大否(各模块独立)独立部署、小型工具/MD动态链接是较小是(共享 DLL)通用应用、大型项目选择/MT还是/MD应根据你的部署需求、模块架构和维护策略综合考虑。
2026-01-30 15:26:15
526
原创 【OpenCV】CMake 源码生成 VS2017 win32 静态库工程时,如何指定 /MT 和 /MD
场景推荐配置静态库 +/MD(你的需求)静态库 +/MT(默认)不设置(默认 ON)动态库(.dll)(此时默认 OFF,用/MD✅是控制/MTvs/MD的总开关,优先级高于其他变量。问题答案为什么设置了/MD还是/MT?因为默认为ON(MSVC 下)最关键的 CMake 参数是什么?是否需要?不需要,它是冗余的(除非你用非常老的 OpenCV 版本)是否必须升级 CMake?不必须,但 ≥3.15 更规范✅记住:在 OpenCV + MSVC + 静态库场景下,是控制/MTvs/MD的“总闸”。
2026-01-27 16:09:18
786
原创 【C】ANSI 与 UTF-8 相互转换
endif// 将 UTF-8 字符串转换为 ANSI(当前系统默认代码页,如 GBK)// 参数:// utf8 : 输入的 UTF-8 字符串(必须以 '\0' 结尾)// ansi : 输出缓冲区(调用者分配)// outsize : 输出缓冲区大小(字节数,必须 > 0)// 返回值:// 1 = 成功(ansi 包含完整结果,以 '\0' 结尾)// 0 = 失败(参数错误、API 失败、或缓冲区不足)// 将 ANSI 字符串(当前系统默认代码页)转换为 UTF-8。
2026-01-26 13:36:15
529
原创 【VS2017】为什么 devenv 能接受 .vcxproj 作为输入?
💡 举个例子:如果你在 Jenkins 或 GitHub Actions 上只安装了。“devenv 只认 .sln,无法直接接受 .vcxproj 作为输入!虽然可行,但在自动化脚本(如 CI/CD、批处理)中,这句话是错误的,用下面的命令就能编出xxx.dll。Visual Studio 的 IDE(包括。的支持是“向后兼容+便利功能”,而。✅ 所以你的命令能成功生成 DLL,(无 VS IDE),那么。才是“标准构建入口”。
2026-01-23 17:32:38
921
原创 【VS2017】devenv、msbuild、cl 三个编译工具的区别
当你使用.vcxproj时,。下面详细解释为什么,并清晰对比devenvmsbuild和cl的区别与适用场景。
2026-01-23 17:04:59
799
原创 【VS2017】/MT 和 /MD 区别
选项全称含义/MT静态链接多线程版 CRT(如libcmt.lib/MD动态链接多线程版 CRT(使用msvcrt.lib+ 运行时 DLL,如等)/MTd:静态链接调试版 CRT(/MDd:动态链接调试版 CRT(/MT把运行时“打包带走”,/MD依赖系统“共享服务”——选哪个,取决于你是否愿意承担依赖和协作成本。如果你只是写一个独立程序,并且用的是官方 OpenCV,直接改项目为/MT是最省事的方案。
2026-01-23 10:07:19
814
原创 【Windows】 LoadLibraryA(“F:\\svnroot\\mccv.dll“) 返回NULL, GetLastError() 返回 126
❌返回 NULL + GetLastError() = 126✅几乎总是因为:依赖 DLL 缺失 或 架构不匹配请优先使用工具分析mccv.dll的依赖链!如果你能提供mccv.dll的编译环境(如 VS2019?是否静态链接 CRT?是否依赖 OpenCV?),我可以给出更具体的建议。
2026-01-23 09:23:41
1007
原创 【Windows】 LoadLibraryA( DllName ) 的 DllName 必须是带绝对路径的库名吗?
❌不是必须用绝对路径;✅但强烈推荐使用绝对路径,以提高可靠性和安全性;🔄 相对路径和仅文件名依赖搜索机制,存在不确定性与安全隐患。
2026-01-23 09:17:15
391
原创 【基础知识】YU12、YV12、NV12、NV21、YUY2、UYVY、YUYV、YVYU、AYUV、I420、IYUV、NV16
类别格式NV12, NV21NV16AYUVI420/YU12/NV12/NV21 是最常用的四种 YUV 4:2:0 格式,掌握它们足以应对 90% 的视频/图像处理场景。如需某格式的C++/Python 解析代码内存布局图或FFmpeg 转换命令,欢迎继续提问!
2026-01-22 17:08:28
936
原创 【基础知识】YU12、I420、IYUV 是同一种格式
名称是否等价推荐使用场景I420✅ 是通用标准(首选)YU12✅ 是Linux / V4L2 系统IYUV✅ 是老旧 Windows 文档💡结论:在 99% 的情况下,YU12 = I420 = IYUV,都是 YUV420 planar(Y+U+V)格式。如需代码示例(如用 Python/C++ 读取 I420 文件并转为 RGB),可继续提问!
2026-01-22 16:44:46
444
原创 【基础知识】ANSI、GB2312、UTF-8、Unicode、wchar_t 的含义和区别
名称类型是否 Unicode?字节长度Windows 角色是否推荐现代开发Unicode字符集标准✅ 是抽象基础✅ 必须理解UTF-8编码方案✅ 是1~4文件/Web 主流✅ 强烈推荐UTF-16编码方案✅ 是2/4Windows 内核内部编码✅ Windows GUI 必用GB2312本地编码❌ 否2旧中文系统❌ 已过时ANSI(Win)本地编码(如 GBK)❌ 否1~2兼容旧 API⚠️ 仅用于兼容wchar_tC/C++ 类型平台相关。
2026-01-22 16:37:42
893
原创 【基础知识】本地编码 和 Unicode 的含义和区别
让我们清晰、准确地澄清几个关键概念:💡 类比理解Unicode 像是“全球统一电话号码簿”(每个字符有唯一号码)。UTF-8/UTF-16 是“拨号规则”(国际长途怎么打、区号怎么加)。GB2312 则像是“1980年代中国本地电话簿”,有自己的编号规则。要把 GB2312 的“电话号码”转成全球统一号码,需要查一本“对照表”。✅ 总结说法正确?说明GB2312 属于 Unicode❌它是独立于 Unicode 的旧编码GB2312 与 UTF
2026-01-22 16:27:19
276
原创 【C/C++】g++ 和 gcc 生成库的符号可见性
方面gcc(C)g++(C++)默认可见性非 static 全局符号 default同左,但有更多隐式符号(vtable, RTTI 等)推荐控制方式同左,但需注意类、模板、异常等复杂情况.so 重要性高极高(ABI 稳定性依赖可见性).a 影响低低如有具体场景(如混合 C/C++、插件系统、跨平台等),可进一步细化策略。
2026-01-20 14:53:47
748
原创 【Windows API】音频 API 对比:wavein/waveout、DirectSound、ASIO、WASAPI
优势与局限优势局限✅ 极其简单易用❌ 延迟极高(100-500ms)✅ 系统自带,无需额外库❌ 不支持多应用同时访问✅ 向后兼容性好❌ 功能非常基础✅ 适合简单录音/播放❌ 无硬件加速适用场景简单的命令行音频工具教学示例程序兼容性要求极高的旧程序现代开发:基本不再使用2. DirectSound设计与定位目标:游戏多媒体音频,取代 Wave API核心:DirectX 多媒体套件的一部分架构演进关键特性实际工作流程
2026-01-09 15:28:06
1375
原创 【C++】模板类的声明和定义为啥都放在头文件中?
这是一个很好的C++模板问题!模板类通常需要将声明和定义都放在头文件中,主要原因如下:模板不是普通的代码,而是代码生成器的指令。编译器需要看到完整的定义才能为具体的类型实例化模板:2. 链接器无法解析模板实例当你在另一个.cpp文件中使用时:3. 解决方法方案A:传统方式(推荐)将定义直接放在头文件中:方案B:显式实例化在.cpp文件中显式列出所有需要的类型:方案C:分离但包含(.tpp/.ipp文件)4. C++20的Modules改进C++20引入了Modules,可以更好地处理
2026-01-06 13:27:24
221
原创 【SDL】多线程中,SDL_Init() 接口被两个线程同时调用了,会有啥问题?
绝对不要问题风险等级后果双重初始化高资源泄漏、崩溃竞态条件高未定义行为状态不一致中功能异常引用计数错误中清理问题最佳实践在主线程初始化SDL初始化完成后再创建其他线程使用SDL_InitSubSystem()进行线程安全的子系统管理确保SDL_Quit()也只调用一次。
2025-12-31 16:50:38
503
原创 【X11】XWindowAttributes 结构体分量 int map_state
这个状态是X服务器维护的,反映了窗口在显示层次中的实际状态,对于管理窗口可见性和优化渲染非常重要。
2025-12-23 15:17:30
315
原创 【C++11】std::unique_lock<std::mutex> 和 std::lock_guard<std::mutex>
使用简单的 RAII 锁管理整个作用域都需要锁不需要条件变量性能是关键考虑使用需要配合条件变量需要手动控制锁的时机需要尝试加锁或超时加锁需要转移锁的所有权需要更复杂的锁策略在大多数简单情况下,就足够了,而且性能更好。只有在需要更高级功能时才使用。
2025-11-21 10:33:47
445
原创 【Makefile】libyuv 编译举例
以 libyuv 源码自带Makefile 举例Makefile的推导执行顺序遵循特定的依赖解析机制,首先从默认目标开始,然后根据依赖关系逐级构建。
2025-11-21 10:03:08
379
原创 【Media Foundation】视频采集封装类(一)
要求:设计一个 MF视频采集类,实现 选源,设置采集宽高、采集类型(匹配设备最接近的采集能力),开始采集接口,停止采集接口,每隔5s检测采集设备表是否有变化,一个独立的采集线程。我来为您设计一个基于Media Foundation的MF视频采集类。这个类提供了完整的视频采集功能,可以根据具体需求进一步扩展。
2025-11-19 16:27:30
447
原创 【Media Foundation】设备图像质量属性调节可以跨线程吗?
问题:m_pVideoProcAmp->Get()m_pCameraControl->Get()必须和 MF前的COM初始化在同一线程中使用吗?
2025-11-14 10:45:07
219
原创 【Media Foundation】采集设备的图像质量调节(六)
问题:m_pVideoProcAmp->GetRangem_pCameraControl->GetRange和 m_pVideoProcAmp->Getm_pCameraControl->Get的区别?
2025-11-13 14:50:17
318
原创 【Media Foundation】采集设备的图像质量调节(三)
问题:1. 你说的 IAMVideoProcAmp 是电子调节,是指纯CPU 算法处理图像吗?2. 你说的 IAMCameraControl 是物理硬件控制,是指相机硬件必须支持控制吗?
2025-11-13 14:26:15
310
GitlHEVCAnalyzer_win32_v1.5.1(H265码流分析工具)
2018-08-16
MediaInfo (音视频文件检测)
2018-08-16
Procexp工具(含32位和64位)
2018-08-06
Windows Media ASF View 9 Series 1.0
2018-11-07
CoolEditPro破解版
2018-08-06
Depends工具
2018-08-06
yuvplayer.exe (YUV序列播放器)
2018-08-16
clumsy 0.2 网络调试工具(含32位和64位)
2018-08-06
C++ and the Perils of Double Checked Locking.zip
2021-07-22
Windows程序设计(第五版).pdf (高清电子版+有目录)
2018-08-16
DXVA Checker v4.0.0(显卡硬件加速检测工具)
2018-08-16
发包工具(内有使用文档)
2018-10-26
《Windows核心编程(第5版)》pdf(高清电子版+有目录)
2018-08-16
《提高C++性能的编程技术(译本)》.pdf (译:左飞)
2018-10-26
C++设计模式(经典版).pdf
2018-10-15
Intel_Media_SDK_2017_R1.msi
2018-08-16
CPU-Z(含32位和64位)
2018-08-06
Visual_Assist_X_10.9.2089_Crack(完美破解版)
2018-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅