JCHub

  • Home
  • Category
    • A/V
    • WebRTC
    • Beauty of Programming
    • Linux
    • Windows
    • Moments of Life
    • Campus Life
  • Reference
    • API Reference
    • Utilities
    • AV Test
    • Doc
  • Message Board
  • About
windows
Web

FireBreath插件IE浏览器中文字符乱码问题

去年写过FireBreath插件的文章,那时刚到新公司,独自开发一款传统的视频播放器插件。后面基于Firebreath框架开发,支持IE以及Firefox。转眼一年多了,播放器插件已经成功部署在公司多个项目中,无论特色功能点,性能,稳定性,都达到令人满意的程度。最近一个项目要在IE11浏览器上跑,由于之前都是在Firefox上跑,IE上没怎么测过,所以在IE上跑时出现了个问题:接口传入的中文字符乱码。 播放器插件多个接口需要传入带中文字符参数,比如视频OSD水印,抓图位置以及图片水印,下载录像保存位置,下载录像添加的水印等等。Firebreath JSAPI接口支持std::string以及std:wstring两种类型的字符串,在Firefox上,相应接口参数设置为std:wstring即可满足传入参数带中文字符问题,但是IE11上却不行,传入的中文字符一直都是乱码。由于只支持这两种类型字符串,传入的都是乱码,所以插件内部怎么处理都不行,只能从外部入手了。 后面灵光闪现,想到对中文字符做处理,想到浏览器怎么对地址栏输入地址的处理。所以前端使用encodeURI函数编码传入的带中文参数,插件内部再解码即可,这样就可以顺利地传入带中文的参数。经测试,在IE与Firefox上,这种方法都正常运行。插件内部用到的UriDecode函数如下: [crayon-69c55b38a3fe1623536648/]

2019年6月3日 0comments 1438hotness 0likes Jeff Read all
Windows

Win10任务管理器GPU信息

睡前更新了下Win10 秋季创意者1709版本,发现任务管理器多了GPU信息。如下是我自己电脑的双显卡信息。 可以查看视频解码,处理,拷贝等信息。对于做视频或者游戏渲染优化的十分有帮助。

2017年10月18日 0comments 2624hotness 1likes Jeff Read all
Windows

DXGI中的flip显示模型

从win8开始,就增加了flip显示模型,通过该显示模型,程序可以减少系统开销,同时增加性能。基于intel media sdk解码,d3d11渲染,在我自己的电脑上通过对比,该模型确实可以明显降低CPU负载,渲染时间几乎忽略不计。不过坑爹的是,在部分独显不同电脑上,该模型并没有发挥出来该有的作用,反而增加GPU很大的负载,得不偿失。在d3d12中只支持flip model渲染,我想这些坑爹的电脑也就不支持d3d12渲染显示了,没想到这个flip model跟显卡类型,驱动等关系很大。下面简单说下flip model渲染。 桌面窗口管理器 桌面窗口管理器是Vista以后的系统中的一个新组件:Desktop Window Manager(DWM)。常见的任务栏窗口的实时缩略图效果,aero效果都是是DWM提供的。DWM提供了基于硬件加速的渲染。DWM出现后,应用程序的显示不再是直接画到屏幕上,而是送到显存中的一个离屏Surface。DWM将这些Surface合成一幅图像显示到屏幕之上。所以现在我们看到的显示器所有内容都是DWM处理过的。 DXGI flip model 与BitBlt model对比 二者主要区别是后台缓冲如何送到WDM。对于bitblt model,调用一次IDXGISwapChain1::Present1,后台缓冲内容就被拷贝到DWM 中一个叫做redirection surface的地方。对于flip model,后台缓冲内容直接与DWM共享,少了拷贝操作,因此更高效。 如何使用 创建交换链时。DXGI_SWAP_CHAIN_DESC1结构体按如下要求填充: 1)SwapEffect:DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 2)BufferCount:2 3)Format:DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_B8G8R8A8_UNORM,DXGI_FORMAT_R8G8B8A8_UNORM之一; 4)SampleDesc.Count :1; 5)SampleDesc.Quality:0。 每一次调用Present1前,都要调用一次ID3D11DeviceContext::OMSetRenderTargets,因为Present1后,系统会把RenderTargetView解绑,所以每次都需要再调用OMSetRenderTargets设置RenderTargetView。 注意事项 1)一个窗口句柄只能绑定一个flip model交换链; 2)使用了flip model的句柄,就不能再使用其他api绘制了。在flip model中,只有flip model交换链传递到DWM中的Direct3D内容才可见,其他版本Direct3D 以及GDI内容更新将被忽略。

2017年9月28日 0comments 3203hotness 11likes Jeff Read all
Windows

CreateSwapChainForHwnd返回0x887A0001错误

IDXGIFactory2::CreateSwapChainForHwnd 创建交换链时,返回0x887A0001错误,也就是DXGI_ERROR_INVALID_CALL,查了下,原来是一个窗口句柄只能绑定一个flip显示模型交换链。附上MSDN上的解释: Because you can associate only one flip presentation model swap chain at a time with an HWND, the Microsoft Direct3D 11 policy of deferring the destruction of objects can cause problems if you attempt to destroy a flip presentation model swap chain and replace it with another swap chain. For more info about this situation, see Deferred Destruction Issues with Flip Presentation Swap Chains.

2017年9月18日 0comments 2663hotness 0likes Jeff Read all
Windows

DirectX 9 到DirectX 11 API的对应

从DirectX 9到DirectX 11 API变化了很多,对于从DirectX 9升级到DirectX 11的项目可以参考如下文章,这样可以清楚知道如何升级: Map DirectX 9 features to DirectX 11 APIs

2017年6月11日 0comments 1597hotness 0likes Jeff Read all
Windows

为什么Windows下无法实现ptp协议

前段时间,要写一个windows下的分布式软件,刚开始的方案是需要一个精确的时钟同步,误差必须控制在1毫秒内。也许很多人都知道有NTP以及PTP 时间同步协议。windows本身自带NTP协议的服务,通过注册表配置即可实现,但是误差无法满足要求,而且每次配置都要重启W32Time服务。也只有PTP这个精确时钟同步协议满足要求,后面想自己实现PTP协议,不过查了些资料,发现想的太简单了。 PTP协议的原理虽然简单,不过实现起来不简单,需要确定最佳主时钟,而且需要获取高精度的本地时钟(后面查到win8以上系统可以通过GetSystemTimePreciseAsFileTime获取<1us的高精度时钟)。后来发现有个著名的开源ptp协议实现:ptpd(Precision Time Protocol daemon)。不过该代码只针对linux系统,至于为什么没有在windows下的实现,大概有如下的原因: 1)windows不提供带时间戳的网络包,不像linux下socket有SO_TIMESTAMP选项,而且也不提供高精度时钟的内核api(win8以下系统); 2)部分windwos系统存在时钟调整Bug,比如你调整的系统时间低于16个tick(系统的时基)单位,将会被忽略。 由于以上原因,后面也没去做windows上的ptp协议实现。

2017年3月27日 1comments 5623hotness 11likes Jeff Read all
Copyright Statement

Unauthorized reproduction or plagiarism in any form is strictly prohibited. For reprint requests, please contact via email.

Recent Comments
NasibDepdrotte Published at 2 hours ago(03 03202633110 26 26pm26) Inf ect isC linNo rth A m viiiix, Sm ets o urgo is...
Pereplanirovka kvartir_cvsr Published at 1 days ago(03 03202633105 25 25pm26) перепланировка услуги [url=https://pereplanirovka-...
Mirzoemele Published at 3 months ago(01 01202613104 06 06pm26) Double blind randomised controlled trial of two to...
PedarPhago Published at 8 months ago(08 08202583109 12 12pm25) Association between selective serotonin reuptake i...
EsielTooft Published at 8 months ago(07 07202573112 29 29am25) International scientific apply guidelines for the ...
Ad

COPYRIGHT © 2026 jianchihu.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang