4 felicityWSH

尚未进行身份认证

我要认证

毕业于2013年,长期从事windows C++应用软件开发。

等级
TA的排名 7w+

[OBS] 渲染 source,scene,transition,filter

渲染transition或scene:不管是否需要transition,scene的渲染都是通过transition封装调用的。transition相关的变量:struct obs_source { uint64_t transition_start_time; uint64_t transition_duration; pthread_mutex_t transition_...

2019-11-28 16:06:53

[OBS] 分析libobs几个主要的线程

There are three primary threads spawned by libobs on initialization:obs_graphics_threadfor rendering video libobs/obs-video.cvideo_thread for video encoding/output libobs/media-io/video-io.cau...

2019-11-28 16:01:10

[OBS] 信号和槽 —— 底层事件推送

信号是底层用来传递消息给UI的。UI提前连接好相关信号和槽函数,OBS底层发生某些事件时,会推送信号给UI。槽函数的签名格式// userdata : tanslate user's data// params : any paramsvoidsignal_callback_t(void* userdata,calldata_t* params)callda...

2019-11-28 15:54:46

[OBS] 插件的设计和开发

OBS使用了插件的设计,极大的增强了扩展性,本文做简要介绍。每个插件就是一个动态链接库(dll),OBS应用程序启动后,会在指定路径下遍历和动态加载所有dll,并尝试从dll中获取插件相关的导出接口。一些插件的公共函数都定义在该头文件中,尤其是导出接口:#include <obs-module.h>每个插件都有一个locale文件夹,里面有很多ini文件(多国语言)...

2019-11-28 15:46:07

[CEF] 官方demo(cefClient)部分命令行参数的释义

cefclient.exe启动时的命令行参数定义在client_switches.h中,其中部分参数的注释如下(我看的cef版本号是3626):如果指定了该参数 就不需要调用CefRunMessageLoop()和CefQuitMessageLoop(),将cef嵌入到MFC中需要使用该参数const char kMultiThreadedMessageLoop[] = "multi-th...

2019-03-18 11:57:09

[CEF] 官方资料汇总 (含JaveScript与C++通信、IPC)

CEF的branch都是发布的正式分支(开发自己的app时使用branch的代码) Master是平时的开发分支官方已编译好的dll,因为涉及到版权问题,不能播放很多音视频,需要自己手动修改配置并重新编译chromium。官方资料:https://bitbucket.org/chromiumembedded/cef/wiki/Home建议先看完资料再看官方demo,不然代码逻辑...

2019-03-17 19:13:20

[D3D11] 在游戏画面中添加弹幕的实现原理

使用场景:主播在直播游戏的时候,如果游戏是全屏模式,主播无法看到直播软件中的聊天消息。如果添加了游戏弹幕,可以在全屏游戏的时候在游戏界面中看到聊天消息。实现原理:1.编写自己的dll和注入dll的代理程序,将dll注入到游戏进程2.dll中hook了D3D11的渲染函数(比如Present)3.直播软件中获取聊天消息的rgba数据,并通过IPC将数据传递到dl...

2019-03-14 18:29:52

[OBS] 构建browser source(cef浏览器源)的步骤

1.下载安装CMAKEhttps://cmake.org/2.下载obs-browser和obs-studio源码https://github.com/obsproject/obs-browserhttps://github.com/obsproject/obs-studio3.下载已发布的cefbranch(注意要匹配obs-browser工程对应的版本...

2019-03-14 17:58:45

GDIPlus渲染文字时 自动忽略开头、末尾的空格

GDIPlus在渲染文本、计算文本尺寸时,会自动忽略开头和末尾的空格,如何解决?创建StringFormat时,增加flag:Gdiplus::StringFormatFlagsMeasureTrailingSpaces增加该flag后,空格不再被忽略了,但是发现多行文本的水平对齐也有问题了:换行符也会被GDIPlus作为可见字符参与到对齐计算中(如图)可以猜到,第1、2行出现...

2018-09-12 11:53:30

[Debug] VisualStudio 如何实现同时调试主程序以及其启动的子进程?(仅支持VS2013及其以上版本)

原文链接:https://blogs.msdn.microsoft.com/devops/2014/11/24/introducing-the-child-process-debugging-power-tool/We’ve heard your feedback that you want the Visual Studio debugger to support child process d...

2018-06-11 14:33:22

[Facebook] 直播开发概述

因工作原因,需要调用Facebook的API,进行账号登录、创建直播、评论操作等需求,调查了Facebook的开发文档。写了一份Facebook直播开发的API 文档,以及抓包信息,可移步到CSDN下载页面:http://download.csdn.net/download/felicitywsh/10242111相关文档的链接,整理如下:API测试https://de

2018-02-06 14:07:37

[MFC] 无边框窗口的Resize拖动效果的实现(下):子窗口覆盖,导致主窗口热点区无法响应WM_NCHITTEST

http://blog.csdn.net/felicityWSH/article/details/68486466这篇博文讲解了如何实现无边框窗口的Resize拖动效果,文中提到,需要响应主窗口的WM_NCHITTEST消息,检测鼠标是否在resize热点区并返回HTTOPLEFT、HTBOTTOM等相应的结果。但是,如果子窗口覆盖了主窗口的热点区,当鼠标在热点区移动时,主窗口是无

2017-05-10 09:52:55

[D3D11] C++与GPU通信:在C++代码中更新HLSL中的常量缓冲区

本文的代码,来自D3D11微软自带的project-7 demo。先贴出一段HLSL代码,本文将以这段HLSL为例,说明如何在C++中更新HLSL的常量:Texture2D txDiffuse : register(t0);SamplerState samLinear : register(s0);cbuffer cbNeverChanges : register(b0){ m...

2017-05-09 16:36:11

[DirectSound] 基于DirectSound的音频均衡器实现

什么是音频均衡器?通过均衡器 可以让声音达到不同的听觉效果:古典、爵士、流行、增强重低音、摇滚等等。如图是酷狗音乐播放器的均衡器界面:在讨论均衡器的实现原理之前 先界面几个音频相关的名词:频率声音在一个周期的震动次数 单位是赫兹(hz)不同频率的声音 其音色是不一样的,频率越低声音就越低沉人的耳朵能听到的频繁范围是20Hz~20000Hz音色不同频率的声

2017-04-18 17:00:19

[MFC] 几种子控件半透明效果的实现办法

什么是 ?如下图所示 美图秀秀中间的四个按钮 边缘都有椭圆效果:熟悉MFC开发的都知道 虽然四个按钮的边缘是椭圆的 实际上椭圆之外的角落里 也属于子控件的窗口区域 即:如下图所示 虽然子控件的四个角是椭圆 但是椭圆之外的区域(即黑框与黄框之间的区域) 也属于子控件的窗口区域很多场景下 需要在子控件的区域显示其父窗口的画面 表现出“子控件的这部分是透明的”这个区域

2017-03-30 15:55:40

[MFC] 无边框窗口的Resize拖动效果的实现(上)

当窗口是Resizing类型时 会自带resize效果(鼠标悬停在窗口边缘时 会有resize光标 点击拖动可以修改窗口的宽高)但是实际的窗口程序开发中 通过需要去掉自带的border 此时窗口就没有自带的resize功能了如果实现?覆盖实现这几个窗口消息:WM_NCHITTESTWM_SETCURSORWM_NCLBUTTONDOWN代码如下:#d

2017-03-30 14:24:15

若干种窗口画面的捕获方法

在直播项目中 需要捕获某个窗口的画面并共享 总结了如下几种场景中窗口的捕获方法1、dc拷贝(BitBlt、PrintWindow)这是最基本的方法 直接拿到窗口dc 然后从dc中拷贝窗口画面 可优先使用PrintWindow 因为该API可以捕获窗口超出桌面范围的区域。需要注意的是,PrintWindow会触发目标窗口执行WM_PAINT,并且执行完毕后才会返回,所以可能造成目标窗口...

2017-03-15 13:16:09

[MFC] WS_EX_LAYERED 实现透明异形窗口(酷狗歌词、360加速球、窗口边缘阴影)

关键词:WS_EX_LAYERED、 UpdateLayeredWindow PC应用不少都有透明的异形窗口 比如酷狗音乐播放器的歌词窗口、360桌面加速球如图:这类窗口的实现 可以采用WS_EX_LAYERED属性(详情请MSDN)将窗口设置WS_EX_LAYERED和WS_EX_TRANSPARENT属性  并使用函数UpdateLayeredWin

2017-03-15 09:29:10

[MFC] 无法响应OnMouseLeave事件的若干种解决办法

问题背景》UI逻辑中 经常有这样的应用场景:在鼠标进入窗口区域时做一些操作 离开鼠标区域时做一些清理操作举例:鼠标进入窗口区域时 弹出tooltips  离开窗口区域时 隐藏tooltips但是OnMouseLeave并不一定就会响应 比如在鼠标进入窗口后 按下鼠标左键并将鼠标移除窗口区域 再松开鼠标 这样的情况下 OnMouseLeave不一定会响应问题来了:如果有些清理

2017-03-05 16:49:18

[Debug] VisualStudio 数据断点 监控指定内存的写操作

功能描述:在vs中添加一个数据断点 设置指定的内存地址和内存长度后 如果代码中有对这段内存的写操作 vs会自动断点到对应的代码中注意:与普通断点不同的是 添加数据断点需要在启动Debug运行程序后 才可以添加(因为添加时要设置内存地址 只有进程启动了才有确定的内存地址)我用的最多的场景》在模块A中定义了变量int a = 1; 没有任意地方在修改a的值经历了几个世纪的运

2017-03-03 17:47:47

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。