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

[H264] 基础概念随记

SPS(Sequence Parameter Set):序列参数集,保存视频的分辨率等信息;PPS(Picture Parameter Set):图像参数集解码数据时需要SPS/PPSH264码流是由一个个的NALU组成的,一帧数据可以被分割成几个NALU,若干个NALU组成一个access unit(AU),代表编码出的一帧视频.NALU是由NALU头 + RBSP...

2019-04-18 16:59:18

[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

[D3D11] 顶点布局描述:D3D11_INPUT_ELEMENT_DESC

在HLSL中定义了顶点结构体后,在C++代码中需要设置对应的顶点结构体描述,类似于D3D9的LPDIRECT3DDEVICE9::SetFVF函数。在D3D11中是通过D3D11_INPUT_ELEMENT_DESC结构体来描述一个顶点的信息。先定义两个不同的顶点结构体,文本后续的内容,均以这两个结构体举例说明。struct Vertex1 { XMFLOAT3 Pos :

2017-05-09 15:56:42

[DirectShow] 开发前的准备 & sdk、samples示例的获取

DirectShow的SDK、及微软提供的samples,都包含在windows SDK中。SDK的下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=8442安装路径默认在C:\Program Files\Microsoft SDKs\Windows\v7.1其中有一些directshow

2017-05-05 15:40:08

[COM] 基于OLE的可视化拖放操作: drag & drop、IDropSource、IDataObject、IDropTarget

应用场景适用于文件(图片、视频、文件夹等)或文本(选中一段文字)在不同窗口之间的拖放,包括同进程的不同窗口之间、不同进程的窗口之间。如图,演示了分别将桌面的bmp图片、txt文件、一段文本,向应用程序窗口上拖动的UI效果(demo中实现的窗口只支持接受图片文件)介绍三个组件:IDropSource、IDataObject、IDropTargetIDropSour

2017-05-05 14:28:37

[D3D9] 图元半透明&alpha混合 所需要的参数设置 (含自定义alpha、纹理自带alpha)

VS2013 Demo 下载纹理半透明显示,需要用到alpha混合。根据红龙书所述,alpha值的来源有两种:1、纹理自带的alpha通道值(比如png) 2、自定义alpha如果要使用alpha混合,需要对IDirect3DDevice9对象进行以下设置:假设已创建了D3D9设备对象: IDirect3DDevice9* pDevice9因为要

2017-04-26 11:26:33

[D3D9] D3DFVF_XYZ、D3DFVF_XYZRHW 的区别 (以纹理渲染的代码举例说明)

 POSITION (D3DFVF_XYZ)使用本地坐标系,其方向与左手坐标系一致:X轴向右递增,Y轴向上递增,Z轴向屏幕内侧递增。xyz各个轴的范围都是[-1,1],中心点是(0,0,0)左上(-1.f,1.f)  右上(1.f,1.f)左下(-1.f,-1.f) 右下(1.f,-1.f)SV_POSITION (D3DFVF_XYZRHW)和屏幕坐标一样,X轴向右递增,Y轴向下递增...

2017-04-21 15:59:25

[D3D9] 两种图元类型的区别:D3DPT_TRIANGLESTRIP D3DPT_TRIANGLEFAN

D3DPT_TRIANGLESTRIP每三个顶点是一组,构成一个三角形。每一组的后两个顶点,是下一个组的顶点成员。比如ABCD, 分别会画出以下三角形:ABC BCDD3DPT_TRIANGLEFAN以扇形方式画三角形,第一个顶点是公共顶点0,从第二个顶点开始,每两个顶点一组,与公共顶点O组合成一个三角形。每一组的后一个顶点是下一个组的顶点成员。(如果是画一个矩形,声明顶点

2017-04-21 14:59:01

查看更多

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