4 06 2008

CMake and wxWidgets

matthewgong | wxWidgets | 0 Comments

Visual C++ 9.0 2008 Express Edition现在除了IDE常有的缓慢臃肿外,可用性还算蛮好的。向离不开windows与IDE的同学推荐一下。

为了在多个开发平台上无障碍编译程序,CMake的学习与部署看来日益紧迫。CMake的学习曲线相比Autotools来说应该平坦很多。但是协调这么多的编译器也不是很容易的事情,不像Autotools只需要考虑GCC。所以也不是什么容易的事情啦。

现在,终于把wxWidgets的minimal的例子转化为Cmake工程,CMakeLists.txt文件如下:
PROJECT( MINIMAL )
SET(wxWidgets_CONFIGURATION mswu)
SET(wxWidgets_USE_LIBS base core)
FIND_PACKAGE(wxWidgets)
IF(wxWidgets_FOUND)
INCLUDE(${wxWidgets_USE_FILE})
ENDIF(wxWidgets_FOUND)
# Add binary called "minimal" that is built from the source file "minimal.cpp".
# The extension is automatically found.
ADD_EXECUTABLE(minimal WIN32 minimal)
# Link the executable to the wxWidgets library.
TARGET_LINK_LIBRARIES(minimal ${wxWidgets_LIBRARIES})

在VC2008Express下需要注意的是“ADD_EXECUTABLE(minimal WIN32 minimal)”中的WIN32关键字,这样工程链接代码时用的是“/SUBSYSTEM:WINDOWS”而不是默认的“/SUBSYSTEM:CONSOLE”。

CMake默认有findwxWidgets.cmake文件,通过“FIND_PACKAGE(wxWidgets)”指令,支持wxWidgets库的使用。通过学习findwxWidgets.cmake这样的.cmake文件是学习CMake的好方法之一哦。

4 04 2008

初识gstreamer pipeline

matthewgong | 未分类 | 0 Comments

本来就知道gstreamer使用链式法则构建媒体流,但是具体是怎么干的一直没有深究。今天由一个需求带来了我对gstream的初次探索。

这个需求是这样的。我需要将一些飞行仿真的东西从屏幕上录下来。找了很久,终于找到了istanbul这个程序。恩,这个东西很简单、很方便。但是它默认的编码率好像设得很低,录出来动态的视频效果不好。

没关系,istanbul是python写的,可以很方便的看到其内部细节。我发现它是用gstream进行录像的。
final pipeline: istximagesrc name=videosource display-name=:0.0 screen-num=0 use-damage=false ! video/x-raw-rgb,framerate=30/1 ! videorate ! ffmpegcolorspace ! videoscale method=1 ! video/x-raw-yuv,width=1024,height=768,framerate=30/1 ! theoraenc ! oggmux name=mux ! filesink location=/tmp/tmpoNozkR

theoraenc插件使用的是默认的编码方式,太低了,我们升高它!
在/usr/share/python-support/istanbul/istanbul/main/screencast.py的102行,把
'! theoraenc' % (width, height, framerate)改为 '! theoraenc bitrate=1200 quality=63' % (width, height, framerate)

具体的可以查这里

这样最终的pipeline:
istximagesrc name=videosource display-name=:0.0 screen-num=0 use-damage=false ! video/x-raw-rgb,framerate=30/1 ! videorate ! ffmpegcolorspace ! videoscale method=1 ! video/x-raw-yuv,width=1024,height=768,framerate=30/1 ! theoraenc bitrate=1200 quality=63 ! oggmux name=mux ! filesink location=/tmp/tmpoNozkR

当然,这不是最佳的解决方法。应该把配置从gconf系统中读出来才是王道 :)

© 2006 Matt’s Blog for UBUNTU | Wordpress | dKret2 2.2 | XHTML | CSS | Top |