JACKY_ZZ[猫猫爱吃鱼]

春风拂面两颊红,秋叶洒地一片金。 夏荷摇曳一身轻,冬雪覆盖大地银。
posts - 30, comments - 123, trackbacks - 0, articles - 0

     摘要: stdafx.h  1 #pragma once 2  3 #include "targetver.h" 4  5 #include <stdio.h> 6 #include <tchar.h> 7&nb...  阅读全文

posted @ 2010-12-07 11:02 jacky_zz 阅读(394) | 评论 (0)编辑 收藏

     摘要:   1#define MAX_LOADSTRING 100  2#define WM_BASSPLAY    (WM_USER + 100)  3#define WM_BASSQUIT (WM_USER + 1...  阅读全文

posted @ 2010-11-19 16:53 jacky_zz| 编辑 收藏

     摘要: 这是一个基于Ffmpeg解码器的简单播放器,怎么在Windows上编译Ffmpeg可以在网上找到很多,开发环境是Windows XP SP3+VS2008,其中DirectSound控制单元来自jdk1.6源码。我的Ffmpeg编译环境是MSYS+MinGW,GCC版本为4.4.0,采取静态无DEBUG方式编译,得到libavcodec.a、libavformat.a和libavutil.a三个静...  阅读全文

posted @ 2010-04-12 10:43 jacky_zz 阅读(11290) | 评论 (19)编辑 收藏

     摘要: 在Windows XP上安装VMware6.5,下载最新的Ubuntu 9.10桌面版安装到虚拟机上。系统安装完成后,设置网络,从http://ffmpeg.org上下载最新的源码版本,以root身份解压到根目录上,得到目录ffmpeg-0.5,运行以下命令:#cd ffmpeg-0.5#./configure --prefix=/usr --enable-shared --disable-sta...  阅读全文

posted @ 2009-12-07 16:24 jacky_zz 阅读(1718) | 评论 (8)编辑 收藏

     摘要: 此代码在vs2008下编译,基于最新的ffmpeg版本(svn下载),搭建MSYS+MinGW编译环境编译,如何搭建,在google上能搜索到。 源码可在此下载。但除了aac和ogg格式播放出错,其余格式正常,不知为何,有ffmpeg开发经验的朋友请给予帮助,谢谢。代码贴于下方。   1#include <stdio.h>  2#in...  阅读全文

posted @ 2009-11-24 17:44 jacky_zz 阅读(4850) | 评论 (13)编辑 收藏

近期硬盘分区表损坏,所有数据全部丢失!!!包括AudioPlayer的源码,现在仅存的源码在www.codeproject.com上可以下载,感谢网友一直以来对此程序的关心,本打算公开,现在却因为硬盘问题而无法实现,深表歉意。

jacky_zz
2009-09-18

posted @ 2009-09-18 08:22 jacky_zz 阅读(758) | 评论 (11)编辑 收藏

写这个文章一是为了体验OCI,二是为了记录一下,三是为了体验GCC,^_^。
OCI是何许?OCI(Oracle Call Interface),开发人员可以通过OCI与Oracle服务进行交互。多的不说了,如想对OCI详细了解,上google查查,下面进入正题。

1、开发环境搭建
(1)下载Oracle Database 10g Express Edition,从http://www.oracle.com/上下载;
(2)下载GCC(MinGW),从http://www.mingw.org/上下载最新的发布版本,我下载的是GCC 4.4.0。添加系统环境变量GCC_HOME=D:\GCC,PATH=%PATH%;%GCC_HOME%\bin;
(3)下载Oracle Instant Client,从http://www.oracle.com/上下载最新版本的Instant Client,我下载的是Instant Client 11.1.0.7.0。添加环境变量TNS_ADMIN=D:\instantclient,PATH=%PATH%;%TNS_ADMIN%;
(4)配置Oracle Instant Client,在Instant Client目录下建立文件tnsnames.ora,内容如下:
XE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.170)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
)

说明:XE代表数据库名,HOST代表提供服务的主机IP地址,SERVICE_NAME代表实例名
(5)下载OCILib,从http://orclib.sourceforge.net/上下载,我下载的版本是OCILib 3.3.0,打开压缩包,将include下的文件复制到d:\gcc\include下,将lib目录下的*.a文件复制到d:\gcc\lib下;
至此,开发环境已搭建完成。

2、代码编写
#include <stdio.h>
#include <stdlib.h>
#include <ocilib.h>

int main(int argc, char* argv[])
{
    OCI_Connection* conn = NULL;
    OCI_Statement* stmt = NULL;
    OCI_Resultset* rs = NULL;

    int ret = OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT);
    if (!ret)
    {
        printf("Error\n");
        system("pause");
        return EXIT_FAILURE;
    }

    conn = OCI_ConnectionCreate("XE", "lixin", "lixin", OCI_SESSION_DEFAULT);
    stmt = OCI_StatementCreate(conn);

    OCI_ExecuteStmt(stmt, "select id,dqzzl from rlcz");
    rs = OCI_GetResultset(stmt);

    while (OCI_FetchNext(rs))
    {
        printf("%s %8.2f\n", OCI_GetString(rs, 1), OCI_GetDouble(rs, 2));
    }

    OCI_Cleanup();
    system("pause");

    return EXIT_SUCCESS;
}

3、编译代码
gcc -s -DOCI_CHARSET_ANSI -DOCI_API=__stdcall -DOCI_IMPORT_RUNTIME main.c -o main.exe -lociliba
运行后,生成目标代码。

4、运行结果(与PL/SQL查询结果比较)

                           图1 PL/SQL查询结果

                          图2 OCI查询结果

5、总结
访问Oracle有两种方式,thin和oci,在java里可以通过 thin或oci驱动来访问Oracle,在java里普遍使用的是thin模式,因为oci需要有本地代码的支持(在Windows下是 dll,Linux下是so),不利于跨平台代码的编写。这就是为什么oci用的少的缘故。但是thin模式访问Oracle在性能上是不如oci的,这就是为什么oci也同时存在的缘故。本文通过对oci的初探体验了oci在性能上带来的快捷。

源码下载

posted @ 2009-07-30 15:39 jacky_zz 阅读(2012) | 评论 (3)编辑 收藏


开发了有一段时间了,说来还真是很长时间了。有兴趣可以参考我在Codeproject上发布的三篇文章。
http://www.codeproject.com/KB/audio-video/DSound_Spectrum.aspx
http://www.codeproject.com/KB/audio-video/DirectSound_Spectrum2.aspx
http://www.codeproject.com/KB/audio-video/DSound_Spectrum3.aspx
以上三篇文章或多或少都存在一些问题,其中最普遍的问题是频谱显示的并不是实时(real-time)的。但截图显示的这个版本是准确的了(我认为)。源码还在整理中,整理完毕后即发布到Codeproject上。

实现思路:
1、MP3解码由libmad开源解码库完成;
2、两个线程:播放线程,频谱线程,其中频谱线程使用的数据来自播放线程;
3、播放线程总是通过解码器获取4608字节数据,为什么要这个数字?这个是看了网上的相关文档和自己不断的测试得到的,这个数据可以有效的降低因为声卡回放引入的延时,少于这个数字将播放不正常;
4、频谱线程根据当前播放的时间获取到正在播放的PCM数据,使用FFT计算后绘图显示。

版本历史:
2009-02-08:支持拖拽,mp3,wma,ogg,wav支持,支持拖拽音频文件到exe启动播放 
2009-02-09:BUG修复:在单CPU上出现线程死锁,在双CPU上未出现
2009-03-27:支持APE格式
2009-03-30:支持FLAC格式 
2009-05-04:添加暂停、停止操作,结束一直以来朋友们提出没有暂停和停止操作的历史
2009-05-05:为播放、暂停、停止,退出操作添加系统热键,分别为Ctrl+1、Ctrl+2、Ctrl+3、Ctrl+4
2009-05-06:为播放、暂停、停止,退出操作添加系统热键, 分别为A、D、S、X,即按A或Ctrl+1为播放,D或Ctrl+2为暂停,S或Ctrl+3为停止、X或Ctrl+4为退出

最新版本下载
=======================================================
it's a long story to tell about this article, if you are interest in this project, please visit those three articles were posted on codeproject.
http://www.codeproject.com/KB/audio-video/DSound_Spectrum.aspx
http://www.codeproject.com/KB/audio-video/DirectSound_Spectrum2.aspx
http://www.codeproject.com/KB/audio-video/DSound_Spectrum3.aspx
those three atticles have some bugs, and the main problem is spectrum display what is not real-time. but this version is real-time(i think).
the latest version support mp3, wma, wav, ogg, ape, flac now,  and you can download it with this link: AudioPlayer_20090506065.zip

posted @ 2009-02-04 09:22 jacky_zz 阅读(13332) | 评论 (54)编辑 收藏

     摘要: 这里将再次对UNION进行一些小小的探究,思路来源于MFC中消息函数执行过程中的一些疑问。union初探初步阐述了union与struct的一些区别,以及相应的使用方法,这里将以此为基础,以类的方式进一步对union的运用方法进行一点说明。  阅读全文

posted @ 2007-08-07 16:45 jacky_zz 阅读(366) | 评论 (2)编辑 收藏

     摘要: 这几天在看MFC深入浅出,看到一个union的定义,代码如下:   1union MessageMapFunctions  2{  3    AFX_PMSG pfn;   // generic member func...  阅读全文

posted @ 2007-08-06 17:31 jacky_zz 阅读(1174) | 评论 (4)编辑 收藏

仅列出标题
共3页: 1 2 3