QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 857|回复: 10

关于C++里的流……

[复制链接]
发表于 2005-5-1 10:09:38 | 显示全部楼层 |阅读模式
C++里的流是可以互相连接的,我有个想法:
现在很多程序对数据的处理都可以归结到流这种模式,所以是否可以把这些数据处理都用C++的流实现,然后作为一个基本的开发库,其他人做开发时直接把这些解码器stream、编码器stream、声音输出stream什么的连接成数据处理的流水线就可以了。并且可以做一个程序,能够从动态联结库文件读取流对象,并根据用户的配置对它们进行连接,这样一种万全靠插件机制提供功能的程序可以提供很大的灵活性。
发表于 2005-5-1 20:41:22 | 显示全部楼层
自己定义operator << 就可以了
回复

使用道具 举报

发表于 2005-5-2 08:15:19 | 显示全部楼层
  • g++ 的 C++ ABI 好像还在不断变化,可能导致不同版本编译的 C++ 类无法在二进制层面混用
  • 编解码需要的高速度,在这种 C++ 包装下能否发挥出来
  • 会有几个人转而用这个库?:D 虽然是政治问题,但是却是最重要的。
    [/list]
回复

使用道具 举报

发表于 2005-5-2 10:49:25 | 显示全部楼层
unix本来就使用流的概念嘛。
回复

使用道具 举报

 楼主| 发表于 2005-5-2 23:40:39 | 显示全部楼层
呵呵,我的想法主要是想建立一种统一的机制来使用针对数据流的功能模块。

g++ 的 C++ ABI 好像还在不断变化,可能导致不同版本编译的 C++ 类无法在二进制层面混用

这个……好过分啊……

编解码需要的高速度,在这种 C++ 包装下能否发挥出来

我想应该不会有太大影响吧……

会有几个人转而用这个库? 虽然是政治问题,但是却是最重要的。

我想一旦把流行的视频音频解码器都用这种方式实现,那么就不用专门开发mplayer这样的播放器了,因为用户只需要用一个软件对这些解码器进行可视化的组合就可以了,甚至系统在遇到某种格式的多媒体数据时自动组合这些解码器……
回复

使用道具 举报

发表于 2005-5-3 17:04:17 | 显示全部楼层
我想一旦把流行的视频音频解码器都用这种方式实现,那么就不用专门开发mplayer这样的播放器了,因为用户只需要用一个软件对这些解码器进行可视化的组合就可以了,甚至系统在遇到某种格式的多媒体数据时自动组合这些解码器……


呵呵,我曾经也做过类似的梦,但是后来意识到,C++ 的静态类型和编译特性决定了这种动态组合在运行时是不可能实现的,至少不可能依赖 C++ 本身的功能实现。所有的代码连接,包括重载函数的确定,都是在编译期确定的。如果要实现运行时的动态,那么差不多就是另外一个 COM/.net/CORBA 了。
回复

使用道具 举报

 楼主| 发表于 2005-5-4 15:22:56 | 显示全部楼层
不啊,比如,定义一个基类:StandardStream,所有的编码解码器都从它继承出来,在运行时,根据数据库查找所需的编码解码器所在的动态连接库文件,载入文件后通过其中的factory来获得所需的编码解码器的实例,然后就可以依靠虚函数实现功能的调用了呀。
回复

使用道具 举报

发表于 2005-5-4 17:34:13 | 显示全部楼层
呵呵,如果涉及动态链接,用 C++ 绝对不如用 C 来得方便。因为系统的动态链接支持都是针对 C 函数的。
设计一组插件接口,然后把各个编码器实现成插件;不要拘泥于接口语言上的一点变化。gstreamer 和 ffmpeg 估计已经做到这些了。
回复

使用道具 举报

 楼主| 发表于 2005-5-4 18:57:02 | 显示全部楼层
动态链接库的函数无非就是打开、查询和关闭这3个,是否面向对象也没什么关系的啊
回复

使用道具 举报

发表于 2005-5-6 00:43:31 | 显示全部楼层
wolf0403说的对,关键是统一的ABI。而这个已经有公开的CORBA标准了,所以,楼主如果能静下心来从www.omg.org上下一份corba的标准文档看看,就不会钻c++这个牛角尖了。
回复

使用道具 举报

发表于 2005-5-6 16:49:12 | 显示全部楼层
要是没有重复工作的话,会有很多人失业的……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 03:43 , Processed in 0.042641 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表