设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> Visual C++ >> Wimamp 视觉效果插件 DIY
精品推荐
Visual C++点击TOP10
·用WINSOCK实现聊天室的VC++程序设计
·利用mfc编写activex控件
·用vc实现生产者消费者问题
·DirectX8.0
·C/C++ 大量经典编程书籍下载
·VC快捷键大全
·CreateFileMapping的MSDN翻译和使用心得
·Windows环境下的麦克风录音系统
·挂钩Windows API
·如何开发OPC Server
编程开发点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·ASP.NET 程序中常用的三十三种代码
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·java笔试题
·Modem 常用AT指令集
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

Wimamp 视觉效果插件 DIY

作者: 来源:网络文章 时间:2005-12-13 18:12:40

Wimamp 视觉效果插件 DIY(1)     我想:在回答“你用什么播放器听 MP3”这个问题时,90%的人都会回答 Winamp!那么你一定用过 Winamp 的插件功能吧,正是多样化的插件使这个“老”播放器不断地焕发青春。不管新推出什么音频格式(MP4,VQF,RM...),只要插件一装就能播放。还有形形色色的可视插件,比如 Giess 等等,将音乐的节奏感表现的可谓淋漓尽致!

    既然插件是用程序编写的,那么我们何不来一试身手,动手做它一个出来?!用过 Winamp 的人都知道,Winamp 插件是放在 Pulgin 文件夹中一个个的 DLL(动态链接库)文件,所以编写 Winamp 插件其实就是编写 Windows 的动态链接库。当然写的时候是要遵循一定的规范的(相关文档可以从 www.winamp.com 下载),在这方面,Winamp 作者 Justin Frankel 写的一个可视插件的例子可以作为我们很好的参考。下面我们就以这个例子(当然也是一个编写规范)为参考,认识一下 Winamp 可视插件的编写方法。
(下面的程序可从 Winamp 官方网站下载,文件名为 vis_minisdk.zip)

首先让我们看一下可视插件使用的数据结构(在文件 Vis.h 中)
// 注意:
// 任何呆在前台的插件窗口都应该将按键传送给其父(WinAMP 的)窗口,以确保
// 用户仍旧可以控制 WinAMP(除非用户按了 ESC 键或者插件所指定的键)。
// 在存储配置时,配置数据应当统一存放在 <dll directory>\plugin.ini 中。
// 请将这个插件例程看作一个框架。

typedef strUCt winampVisModule {
  char *description; // 模块描述(出现在插件选择列表框下面得下拉列表框中)
  HWND hwndParent; // 父窗口------------- (由主调应用填充)
  HINSTANCE hDllInstance; // 此 DLL 的实例句柄 - (由主调应用填充)
  int sRate; // 采样速率 ---------- (由主调应用填充)
  int nCh; // 声道数 ------------ (由主调应用填充)
  int latencyMs; // 从调用 RenderFrame 到真正绘制的潜伏时间(毫秒)
  // (主调应用在获取数据的时候会查看这个值)
  int delayMs; // 每两次调用之间的间隔时间(毫秒)

  // 数据依照各自的 Nch(声道数) 条目被填充
  int spectrumNch;
  int waveformNch;
  unsigned char spectrumData[2][576]; // 频谱数据
  unsigned char waveformData[2][576]; // 波形数据

  void (*Config)(struct winampVisModule *this_mod); // 模块配置函数
  int (*Init)(struct winampVisModule *this_mod); // 初始化函数(创建窗口等等)。成功返回0
  int (*Render)(struct winampVisModule *this_mod); // “表演”函数。成功返回0,如返回1表示插件应该终止
  void (*Quit)(struct winampVisModule *this_mod); // 模块退出函数。完成之后调用

  void *userData; // 用户数据 (可选)

共10页 9 7 [1] [2] [3] [4] [5] [6] [7] [8] [9] [108 :>

Wimamp 视觉效果插件 DIY 相关文章:
Wimamp 视觉效果插件 DIY 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com