- 博客(13)
- 资源 (5)
- 收藏
- 关注
原创 Freeswitch 如何提升性能减少编码次数
接上2篇文章,我们已经理解了,对讲开启录像后,我们有哪些地方使用了编解码。那么接下来,我们如何提升性能呢?使同样配置的机器支持对讲录像数翻倍呢?解题思路:修改video_bridge_thread逻辑,通过switch_core_session_read_video_frame读取原始帧,不做编解码,直接switch_core_session_write_video_frame发送给终端,然后解码,写入bugs。效果:1.录像线程使用软编码将视频帧生成录像文件。(1路编码,用于合成2个终
2020-11-02 14:50:18
1022
3
原创 Freeswitch mod_av 支持N卡硬编解码
windows平台mod_av 支持N卡,首先理解,对讲开启录像后,我们有哪些地方使用了编解码。1.录像线程使用软编码将视频帧生成录像文件。2.视频桥线程,由于开启了通道(bugs),会将视频帧软编码后,再发送给其他终端。接下来我们对应到代码段,继续相应修改:1.录像线程打开编码器static void sofia_record(switch_core_session_t *session)if (sofia_match_video_record(caller_id_numbe.
2020-11-02 13:30:45
1439
原创 Freeswtich 录像支持NVIDIA硬编解码方案实施过程
背景:FS一路对讲/会议(720P),开启录像后,CPU占用率达到20%,如果对讲超过10路,CPU将超负荷。为了降低CPU,利用显卡进行硬编解码。分析原因:Fs 默认使用libx264对视频进行h264软编解码,开启录像后:1.录像线程使用软编码将视频帧生成录像文件。2.视频桥线程,由于开启了通道(bugs),会将视频帧软编码后,再发送给其他终端。不开启录像时,FS不会进行编解码,开启录像后,由于要进行视频融合,进行了2次编码,导致CPU飙升。如何解决?...
2020-11-02 11:20:37
951
原创 QtVirtualKeyboard 虚拟键盘美化
源码的界面式样太丑,不符合产品设计风格,所有花了半天时间美化了一下,直接上效果:1.键盘显示位置和大小修改修改这段代码,让键盘显示宽2/3屏幕,并且处于底部居中void DesktopInputPanel::show(){ AppInputPanel::show(); Q_D(DesktopInputPanel); if (d->view) { ...
2019-08-05 16:13:34
9113
8
原创 QT MVC模式
MVC模式使用model更新如何通知view?control层/view层/model层关系,他们的生命周期如何控制?MVC采用了哪些设计模式?适配器模式,观察者模式、单例模式等等有时间再一一补充...
2019-06-18 19:39:16
846
原创 解决使用QGraphicsView QGraphicsScene默认显示居中的终极办法
QGraphicsView 网格元素的排布,实现如下自定义item正常情况如下,我们创建一个item,并添加到QGraphicsScene,元素显示在正中间,那么我们如何让他自动从上排到下呢?QGraphicsItem* item = new QGraphicsItem item->setPos(x,y); //图元位于场景的中心m_pListScene-&g...
2019-06-18 19:33:07
10462
1
原创 关于如何使用QSS实现QPushButton QToolButton上的图片拉伸和文字对齐
需求:QSS实现按钮效果,图片在上,文字在下1.设计给的图片48x48图标2.不采用设置icon的方式,因为icon无法响应鼠标按下操作,所以使用border-image,那么如何向下拉伸图片呢?如下:QPushButton#pushButton{ border-image:url(:/image/icon_gd.png)48 0 0 0; bord...
2019-06-18 19:12:42
8529
2
原创 Android jni调用C++代码
Android 调用C++代码作用:提高apk包的安全性,降低被逆向破解的风险目前我尝试了以下几种做法,:1. c++校验java包文件MD5值 2. c++封装加解密算法 3. 动态注册java加密接口仅供参考,如要移植到项目请慎重,以下为实现部分代码:#include "aes.h"#include <jni.h>#include <string>...
2018-07-16 15:18:10
581
原创 QT中将standmodel数据写入excel
void ImportToExcel(QStandardItemModel *model){ QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"",tr("file(*.CSV)")
2011-07-21 12:28:04
451
原创 两个全排列算法
一个是递归算法一个是STL算法float Combin( CITY a[] , int k, int m){ int i; if (k == m) {//get an arrang float temp=0; for ( i=0; i {
2011-07-21 12:24:39
208
原创 管理窗口的打开关闭(位算法)
管理4个窗口#include void showModel( int a){ int ret=1; while( ret { int n = a&ret; switch(n) { case 8 :
2011-07-21 12:19:28
207
原创 VC 在ondraw()画图屏幕闪解决了 哈哈!
以下部分为实现代码 void CBallScreenView::OnDraw(CDC* pDC){ CBallScreenDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); DrawBall(); //moving MovingBall
2011-07-19 12:44:16
494
原创 大家共勉之
一个程序员,一定要经常学习,不能落后于时代。作为一个程序员,其实是不幸的,同时也是幸运的:不幸在于,在这个行业中,一定要保持积极不倦的学习态度,不能倦怠,否则就会不适应技术的发展要求;幸运的是,做这行
2011-07-15 12:54:42
235
DirectX修复工具2023专业版
2023-12-07
Windows上C++封装的HTTP库
2021-05-07
UDPtest.rar
2020-06-17
vc DOM操作xml,从Tree到Xml,xml到Tree
2011-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人