
C++
文章平均质量分 67
notton
开发共享软件。dvd vc converter
展开
-
关于dvd subtitle与effect效果有冲突问题(thinkvd开发日志)
<br />在开发thinkvd dvd字幕时,由于用了pts与dts作为延时显示字幕,而视频效果中支持调节明度、色度、透明度及饱和度。当他们同时一块作用时,则出现效果视频画面比较闪烁。若不全部同时视频效果应用时,还说得过去。造成的原因是需要同时显示原始视频、效果视频。处于效果视频时间相对较长,也把sdl改成类似directshow双缓冲方式,感觉用于sdl_overlay不起作用。尽管在SDL_CreateRenderer可以设置,sdl的flip在overlay方式下如何用,还没有研究过。<br />想原创 2010-11-28 23:05:00 · 814 阅读 · 0 评论 -
Qt QTabWidget的BUG(thinkvd开发日志)
在开发Thinvd视频转换软件时,调用的QTabWidget作为effect界面的布局类。QTabWidget上可设置多个Tabbar, 当我选择了其中一个Tabbar,然后关闭窗口,希望通过setCurrentIndex(或setCurrentWidget)设置能再现关闭前的状态。结果只更改了Tabbar的状态,再没有更新里面的stackedWidget, 也就是说它的tabbar与stackedWidget没有保持一致。个人在做这个之前反复查阅了QTabWidget的文档,能设置它当前界面的也就是s原创 2010-11-25 09:16:00 · 2916 阅读 · 0 评论 -
DVD subtitle (thinkvd开发日志)
当前解决了:1。字幕位置调整2。字幕transparent3. 字幕Front Color and background Color4. 字幕动态切换(还存在问题)由于解码后的subtitle stream的数据保存在缓存中, 当播放中切换subtitle时,没有办法立即得到当前更改后的字幕流,因此存在延时显示subtitle问题。原创 2010-11-24 14:13:00 · 725 阅读 · 0 评论 -
转换dvd 字幕缩小改进(thinkvd开发日志)
thinkvd 视频转换dvd 字幕缩小程序改进, 采用的是:Two Pass Scaling using Filters图片缩放算法原创 2011-03-02 08:10:00 · 791 阅读 · 0 评论 -
计划统一播放接口(thinkvd开发日志)
技术解决方案swf2video, ppt2video基本完成,但要与原来的视频播放接口保持一至,这样就不用处理大量的类似的逻辑问题,具体的有差异逻辑处理再作针对性处理,目前还在构想中。 以前工作中由于不同产品属于不同的开发小组,它们之间没有实现真正的技术上的代码共享,而是各自根据自己的情况来实现,开发的工作量也不小。事实里面的很多逻辑是一致的,只是具体的并实现方式有些差异,做成同一接口,不同实现。接口代码:#ifndef IMPLAYBASE_H#define IMPLAYBASE_H#include原创 2011-04-19 10:26:00 · 779 阅读 · 0 评论 -
关于bmp save图象颠倒解决方法
<br /> (thinkvd开发日志)在开发swf to video,保存bmp图时,刚好图象上下颠倒, 以前用了一个简单算法把图象数据倒过来,<br />在网上查了一下,据说有一个标志位,反复看了BITMAPFILEHEADER, BITMAPINFOHEADER结构,也没有发现是哪个变量。<br />后来想了想,把高度值变成相反值,结果图象还真的变成正立的了。<br />也就是设置BITMAPINFOHEADER中的info.biHeight取反即可。<br /><br /><br /><b原创 2011-04-22 10:43:00 · 6240 阅读 · 0 评论 -
关于:复杂是软件的死敌
<br /> 最近看了一遍文章<复杂是软件的死敌>http://news.youkuaiyun.com/a/20110424/296461.html,而自己刚好在整合flash, ppt, image, video播放器的逻辑处理,且程序写了大半。原来只有video play方面的功能,若在当时要是先看到这遍文章,估计会再三考虑是否要做整合方面的工作。<br /> Thinkvd软件播放结构简单如下图:<br /> <br /> <br /> 此播放模式以PlayUI为核心,是界面基本的逻辑操作,如play原创 2011-04-26 14:07:00 · 821 阅读 · 0 评论 -
error LNK2005 error LNK2001工程配置错误问题。
<br />(thinkvd开发日志)编译正常的工程,加了几个函数之后,突然出现:<br /><br />1>------ Build started: Project: ppt_plugin, Configuration: Debug Win32 ------<br />1>Linking...<br />1>nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in LIBCMTD.lib(dllmain.obj)<原创 2011-04-30 18:14:00 · 1413 阅读 · 1 评论 -
关于QlistWidget的currentRowChanged延时响应
如上图所示,组与其子记录用的都是QlistWidget,希望组更改时,不要立即显示它包含的子记录。组切换记录时用的是信号:currentRowChanged这里只说明如何用QTimer来实现延时处理. ImListWidget::ImListWidget(QWidget *parent, bool bGroup): QListWidget(parent)原创 2011-06-25 11:05:00 · 2366 阅读 · 0 评论 -
遇到SDL两个问题
在开发thinkvd软件中,用的是SDL,实际应用中遇到了不少问题,有时想把它换掉。今天又遇到两个比较麻烦的问题:1。多窗口时,其中一个窗口图象不显示2。内存泄漏,每次播放都会增加0.3--0.5M。 问题一:在SDL函数SDL_Texture *SDL_CreateTexture(Uint32 format, int access, int w, int h)中tex原创 2011-06-29 21:55:00 · 1487 阅读 · 0 评论 -
opengl 不同面贴不同的纹理
<br />参考:http://www.qiliang.net/old/nehe_qt/index.html<br /> <br />不同面纹理贴图在放在begin与end之间,类似下面,否则不生效.<br /> glBindTexture( GL_TEXTURE_2D, texture[0] );<br /> glBegin(GL_QUADS);<br /> glTexCoord2f( 0.0, 0.0 ); glVertex3f( -1.0, -1.0, 1.0 );<br />原创 2011-05-07 10:47:00 · 2508 阅读 · 0 评论 -
qt model删除选中的记录异常问题
Thinkvd开发日志参考:http://www.java2s.com/Code/Cpp/Qt/QTreeViewdraganddrop.htmclass TreeModel : public QAbstractItemModel实现的Model类似上面的,但在删除选中的记录时,原创 2011-07-14 18:33:05 · 1145 阅读 · 0 评论 -
QSplitter 分割条默认位置怎么修改
thinkvd开发日志希望软件再次启动时,分割左右部分保持原来的大小。此软件用了splitter将列表与播放分开成两部分参考:http://www.qtcn.org/bbs/simple/?t34265.html用比例方法也可以,但QSplitter有函数void QSplitt原创 2011-07-20 21:15:02 · 2654 阅读 · 0 评论 -
window下配置QT QMAKESPEC has not been set, so configuration cannot be deduced
果编译时候出现错误:QMAKESPEC has not been set, so configuration cannot be deduced.Error processing project file: XXXXX.pro参考文章:http://qtnode.原创 2011-08-16 21:53:43 · 6910 阅读 · 1 评论 -
QTabWidget的tabbar居左时Text水平显示问题
(开发音视频软件thinkvd的日志)这个问题我在qtcn bbs中发过http://www.qtcn.org/bbs/read.php?tid=32563,现在把原因及解决思路记录下来。当设置tabbar居左时, 直接用QTabWidget存在的几个问题:1。文字不是水平显示2。TabBar的内容显示与StackWidget显示冲突3。调整单个TabBar的高度4。单个TabBar的press event响应5. 文字图片位置显示关系分析原因:1。QTabWidget::setUpLayout控制Tabl原创 2010-11-09 08:58:00 · 14411 阅读 · 6 评论 -
关于syntax error : missing ';' before identifier 'PVOID64' 问题
<br /> 这个问题在网站也有很多人总结:<br /><br />PVOID64 的错误消失,原因如下:<br />POINTER_64 是一个宏,在 64 位编译下起作用,它包含在 SDK 目录下的 BASETSD.H 中( Microsoft Visual Studio 8/VC/PlatformSDK/Include/basetsd.h(23):#define POINTER_64 __ptr64 ),但DXSDK 自己也带了一个 basetsd.h ,里面没有定义 POINTER_64 ,从而导致原创 2010-11-05 11:30:00 · 3568 阅读 · 0 评论 -
Qt QTreeView根节点下不显示数据(Thinkvd开发日志)
<br /><br /><br />现象描述:当在Clip后返回主界面时,Clip后的记录B会从当前的记录A COPY一份,并在记录B下生成子记录B1、B2。关系如下:<br />A<br />B<br />|--B1<br />|--B2<br />此时记录B的子节点与B一块显示不出来,若B1,B2直接为记录A的子节点是没有问题,其记录B新增加的方式与已经存在增加addProfile类似。测试若把B当成A的子记录,如下关系:<br />A<br />|--B<br /> |--B1<br /> |--原创 2010-12-01 18:36:00 · 3134 阅读 · 0 评论 -
QMessageBox 窗口大小更改问题(thinkvd开发日志)
QMessageBox的功能很强大、实用及方便,相信用过Qt的开发者都用过它,但它有一个让人不友好的地方,就是不能设置窗口的大小,尤其对自定义界面的窗口风格时,不得不考虑这个不便。这个问题在自己参与开发thinkvd时就意识到,由于当时自己对Qt的认识有限,几次偿试解决都没有结果,当时主要原因在于它引用了几个类的私有成员(如QLabel的)。 现在把实现的思路大概说一下: 1。重新实现QMessageBox->ImMessageBox(直接COPY QMessageBox),改名,再带原创 2010-12-04 18:31:00 · 8607 阅读 · 1 评论 -
SDL内存泄漏跟踪(thinkvd开发日志)
参与开发thinkvd video converter中,测试发现当itemA,itemB切换播放时,内存在不断增加,每次增加的大小略大于当前视频帧的大小,表明内存存在泄漏问题(通过task Manager查看)。 经过跟踪分析,发现只有播放时才会出现,说明与界面逻辑无关,由于播放用的是SDL,很可能问题出在SDL相关的地方。A。若播放时跳过播放函数会增加0.7M左右。(视频源是800x436)B。击播放SDL会增加1M左右。分配内存的主要地方在sdl初始化及SDL_CreateYUVOverlay,原创 2010-12-08 09:18:00 · 1980 阅读 · 1 评论 -
SDL实现overlay方式双屏显示的应用流程分析(thinkvd开发日志)
<br />由于在参与开发 thinkvd video converter 遇到释放SDL内存的问题,应用中需要在预览、全屏、双屏及CLIP之间来回切换,再次看了SDL相关的源代码,把SDL实现的过程简单说一下。<br /><br />SDL开发包中自带的样例:testsprite2.c中就是一个实现多屏显示的例子。<br />简化它来说大概这几步:<br />1。SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) //初始化<br />2. windows[i]原创 2010-12-11 09:34:00 · 3501 阅读 · 1 评论 -
Qt QImage图片透明设置(Thinkvd开发日志)
<br /> 开发Thinkvd中的player,设置透明度用的是sdl来实现的,转换中的水印用的是png, 如何设置水印的透明度,实际上要求把图片转换成带alpha的32位即可。<br /><br />实现代码:<br />//! [8]<br />void ImageComposer::recalculateResult()<br />{<br /> int alpha = 100;<br /> QPainter::CompositionMode mode = currentMode(原创 2010-12-14 22:36:00 · 5939 阅读 · 1 评论 -
qt中数据存储方法(接口)的思路应用1(thinkvd开发日志)
个人最早发布在qtcn bbs http://www.qtcn.org/bbs/read.php?tid=32483中,可能由于比较理论化而没有人发现其实际应用价值,今后其有相关的应用会逐步写出来。 关于加载视频文件后,信息还未加载完全,用户点击播放问题。这时会造成视频播放由于得不到视频的时间长度,没有办法拖动进度条,Thinkvd video converter存在这个问题,同行业不少的软件实现用的是弹出dialog, 然后在上面显示加载文件进度。当时个人也不理解为什么这么做,感觉有点多余,当think原创 2010-12-17 10:35:00 · 874 阅读 · 0 评论 -
以顺其自然的思路写程序(Thinkvd开发日志)
有的程序在写之前都会很好地“研究”一番,讲究一些独特的技巧,但有时可能造成后来的维护者半天看不明白。过去这方面见过一些,相信也有人遇到过类似的情况。 个人觉得一般程序在不响应功能的情况下应该顺其自然,适合常规思维、简单易维护为目的。下面以开发中的thinkvd merge items 合并不同的条目为例说明一下:实现目的:把当前选择的ITEM合并生成新item,需要合并的item为刚生成的新item的子item,有点拗口,以图示例:实现思路:1。判断item 数不小于2条2。生成新的item1原创 2010-12-17 08:26:00 · 600 阅读 · 0 评论 -
简化实现qt中的信号阻塞blockSignals
QT中经常会用到blockSignals, 且是成对出现,实现时常在函数的开始阻塞信号,在函数的结尾释放信号。若里面有大量需要阻塞的变量对象,这样写是件很麻烦的事,代码也比较多。如果能实现象下面的方式实现,这样能简化很多,且不关心释放问题.下面的例子是关于slider与spinbox联动问题,若改slider影响spinbox,反之如此。实现效果可参考www.thinkvd.com中的视频编辑效果样例代码:void ImEffectWidget::slotSlider(int pos){ static in原创 2010-10-30 11:38:00 · 2365 阅读 · 0 评论 -
音视频同步问题(thinkvd开发日志)
<br />问题描述:<br />视频文件: A start_time:100 duration:50 fps: 24<br />视频文件: B start_time:200 duration:50 fps: 25<br />视频文件: C start_time:150 duration:50 fps: 29.97<br /><br />当它们合并转换成一个文件时,由于fps不同,可能会出现:<br />问题1:A的声音跳到B中,或B中串到C中。<br />问题2:总的时间不对。<br />问题原创 2010-12-21 12:40:00 · 1509 阅读 · 1 评论 -
简单说说:qt中数据存储方法(接口)的思路
声明:由于其它原因,只谈思路,具体实现还要靠自己在实际开发中总结在写这个之前,一直在想叫什么标题比较合适在写这个之前,在qtcn论坛查了“数据”关键字,大概只要35条左右记录,提到的与我想要说的无关 先说一下现象。以前自己写过程序,也看到别人写的程序,感觉代码太长(个人觉得代码多维护比较麻烦,当然代码多少与业务逻辑有关),我说的太长是指:在实现同样功能的情况下,它本身有很大的精简空间。由于对数据存储的认识不同,造成的大量精力在为数据存储,数据同步及数据显示写很多逻辑。 由于自己与不同的数据打过多年原创 2010-11-01 15:26:00 · 2001 阅读 · 0 评论 -
qt中多线程与界面元素相互响应问题.
参与开发Thinkvd中的Effect,由于播放是开启了另一个线程(简称线程sdl)来实现的,发现在视频播放的pause状态下,切换视频效果,Effect窗口不响应,需要把Mouse放到effect窗口上才响应。测试方法:<br />1。若直接把Effect窗口放到线程sdl中repaint, 提示在多线中异常。<br />2。若线程sdl向Effect窗口连signal->slot则无响应。<br /><br />这个问题是出在sdl上还是QT上目前难确定。<br />查了一下资料,据说需要:原创 2010-12-25 10:55:00 · 1779 阅读 · 0 评论 -
QListWidget的edit如何及时响应?(thinkvd开发日志)
<br />在qtcn上提出这个问题,有人建议用QItemDelegate,createEditor方式<br />http://www.qtcn.org/bbs/read.php?tid=33532<br /><br />测试代码:<br />#ifndef IMWIDGET_H<br />#define IMWIDGET_H<br />#include <QtGui><br />class ImWidget : public QWidget<br />{<br /> Q_OBJECT<br />publ原创 2010-12-28 14:05:00 · 2149 阅读 · 0 评论 -
qt中用SDL 1.3实现播放视频双窗口(附源代码)
SDL and multiple windows 在视频中的应用,qt中用SDL 1.3实现播放视频双窗口, 在开发视频软件thinkvd的对比效果前也一直困惑着我.实现的目标:在QT的一个window中放两个视频播放画面,一个是原始视频,一个是效果视频思路:1。跳过由sdl直接创建弹出窗口,那么它的窗口应该是QT指定的窗口。2。给SDL传递窗口Handle,由SDL_getenv("SDL_WINDOWID")来实现3。在SDL调用系统函数CreateWindow前把它Filter原创 2010-11-05 09:35:00 · 4815 阅读 · 5 评论 -
thinkvd with video effect 测试中的感悟.
thinkvd video converter with video effect 原计划在圣诞节前夕发布,但由于种种原因迟迟未发布,尽管测试工作一个多月前就展开了, 但还没有达到以前定预定的标准。 也许在某个时间段错过了什么,丧失了一些机会,但这些可能是短暂的。路还很长,需要一步一步走稳、走踏实。软件开发测试也是这样,需要把基本的东西做好,做扎实。不求目标的远大,但求每天一点点的积累、一点点的进步,细水长流。面临着诸多问题,还需要一点点去克服,去解决,在这些解决问题中,发现的一些有益原创 2010-12-30 10:40:00 · 677 阅读 · 0 评论 -
分配大块内存与list列表buffer关联的思考
在wince下某软件工程中的数据流动流程大致如下,从采集到的数据,然后组包、滤波、已滤波包-->(分发)1. 显示缓存、显示2. 存储包、存储3. 网络包、上传4. 截屏实际上要复杂些,这里只列举了主要的功能,工程中存在一个值得思考的问题,就是数据来回memory copy很频繁,IO开支不小。因此希望分配一大块内存,它与list结构中的buffer关联,用队列方式来循原创 2013-07-21 07:51:46 · 1131 阅读 · 0 评论