自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 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 785 2

原创 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 1280

原创 Freeswtich 录像支持NVIDIA硬编解码方案实施过程

背景:FS一路对讲/会议(720P),开启录像后,CPU占用率达到20%,如果对讲超过10路,CPU将超负荷。为了降低CPU,利用显卡进行硬编解码。分析原因:Fs 默认使用libx264对视频进行h264软编解码,开启录像后:1.录像线程使用软编码将视频帧生成录像文件。2.视频桥线程,由于开启了通道(bugs),会将视频帧软编码后,再发送给其他终端。不开启录像时,FS不会进行编解码,开启录像后,由于要进行视频融合,进行了2次编码,导致CPU飙升。如何解决?...

2020-11-02 11:20:37 824

原创 QtVirtualKeyboard 虚拟键盘美化

源码的界面式样太丑,不符合产品设计风格,所有花了半天时间美化了一下,直接上效果:1.键盘显示位置和大小修改修改这段代码,让键盘显示宽2/3屏幕,并且处于底部居中void DesktopInputPanel::show(){ AppInputPanel::show(); Q_D(DesktopInputPanel); if (d->view) { ...

2019-08-05 16:13:34 8640 7

原创 QT MVC模式

MVC模式使用model更新如何通知view?control层/view层/model层关系,他们的生命周期如何控制?MVC采用了哪些设计模式?适配器模式,观察者模式、单例模式等等有时间再一一补充...

2019-06-18 19:39:16 799

原创 解决使用QGraphicsView QGraphicsScene默认显示居中的终极办法

QGraphicsView 网格元素的排布,实现如下自定义item正常情况如下,我们创建一个item,并添加到QGraphicsScene,元素显示在正中间,那么我们如何让他自动从上排到下呢?QGraphicsItem* item = new QGraphicsItem item->setPos(x,y); //图元位于场景的中心m_pListScene-&g...

2019-06-18 19:33:07 9786 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 8091 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 423

原创 QT中将standmodel数据写入excel

void ImportToExcel(QStandardItemModel *model){    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"",tr("file(*.CSV)")

2011-07-21 12:28:04 428

原创 两个全排列算法

一个是递归算法一个是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 176

原创 管理窗口的打开关闭(位算法)

管理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 181

原创 VC 在ondraw()画图屏幕闪解决了 哈哈!

以下部分为实现代码 void CBallScreenView::OnDraw(CDC* pDC){ CBallScreenDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); DrawBall(); //moving  MovingBall

2011-07-19 12:44:16 465

原创 大家共勉之

一个程序员,一定要经常学习,不能落后于时代。作为一个程序员,其实是不幸的,同时也是幸运的:不幸在于,在这个行业中,一定要保持积极不倦的学习态度,不能倦怠,否则就会不适应技术的发展要求;幸运的是,做这行

2011-07-15 12:54:42 203 1

提示
确定要删除当前文章?
取消 删除