typedef struct datadef
{
int No;
int Type;
int Flags;
int Format1; // DF_MINMAX:min, DF_ENUMSRING:string class, DF_ENUMCLASS:node class, nodeclass
int Format2; // DF_MINMAX:max
const tchar_t* Name;
int Class;
int Size;
} datadef;
其中:
int NO 数据唯一标识。通过定义一个有意义的宏来表明用途。比如player.h中:
// buffer size in KB (int)
#define PLAYER_BUFFER_SIZE 0x20
// microdrive buffer size in KB (int)
#define PLAYER_MD_BUFFER_SIZE 0x80
int Type 数据类型标识。
#define TYPE_BOOL 1
#define TYPE_INT
#deinfe TYPE_RECT
int Flags 数据特性的标志。可以“并”在一起使用。根据不同的Type,可以使用不同的Flags.
#define DF_RDONLY 0x00000001
#define DF_SETUP 0x00000002
#define DF_HIDDEN 0x00000004
#define DF_MINMAX 0x00000008
datatable都是用来定义数组的元素。在数组的最后都要添加宏DATATABLE_END(Class)。这样,数组中的datatable类型的元素中,如果Type==-1,那么就表示数组结束了。而-1前面的值则是这个数组中每项数据所属的class(node)。
typedef struct datatable
{
int No;
int Type;
int Flags;
int Format1;
int Format2;
} datatable;
#define DATATABLE_END(Class) { Class, -1 }
在player.c中定义了PlayerParams[],这个数组可以看作是所有与Player相关的各种参数。
static const datatable PlayerParams[] =
{
{ PLAYER_AUTOPREROTATE, TYPE_BOOL, DF_SETUP },
{ PLAYER_REPEAT, TYPE_BOOL, DF_SETUP|DF_HIDDEN },
{ PLAYER_SHUFFLE, TYPE_BOOL, DF_SETUP|DF_HIDDEN },
{ PLAYER_KEEPPLAY_AUDIO,TYPE_BOOL, DF_SETUP },
...
}
在player.c中定义的BufferParams[]则是与缓冲区相关的各种参数。
static const datatable BufferParams[] =
{
{ PLAYER_BUFFER_SIZE, TYPE_INT, DF_SETUP|DF_KBYTE|DF_GAP, 512, 128*1024 },
{ PLAYER_UNDERRUN, TYPE_INT, DF_SETUP|DF_PERCENT,0,PERCENT_ONE },
在node.h中定义的关于node的部分。其中VMT_NODE是用于扩展node的宏。node则定义了node的标识Class、获取node所有属性的函数指针Enum、设置和读取node属性的函数指针Get, Set。相对于nodedef,node可以理解为一个数据实体。而nodedef则定义了node的类型Flags、创建、销毁、优先级,以及node之间的关系(通过ParentClass)。node与nodedef的关联是通过node Class。node class是一个int, 其中4个字节存放的是四个ascii字母。比如,DMO_CLASS='ADMO'。
#define VMT_NODE \
int Class; \
nodeenum Enum; \
nodeget Get; \
nodeset Set;
typedef struct node
{
int Class;
nodeenum Enum;
nodeget Get;
nodeset Set;
} node;
typedef struct nodedef
{
int Flags;
int Class;
int ParentClass;
int Priority;
nodecreate Create;
nodedelete Delete;
} nodedef;
Player Node. 通过扩展VMT_NODE,添加Player特有的函数定义了,Player节点。
typedef struct player_t
{
VMT_NODE
playerpaint Paint;
playercomment CommentByName;
playerswap ListSwap;
playerprocess Process;
} player;
分享到:
相关推荐
TCPMP(The Core Pocket Media Player)是一款专为winCE平台设计的强大ARM播放器,被誉为该平台上最佳的多媒体播放软件。它的出现,极大地丰富了Windows CE系统设备的多媒体体验,如智能手机、PDA和个人媒体播放器等...
TCPMP的核心特性之一是其强大的插件系统。用户可以通过安装插件来增强TCPMP的功能,比如添加网络流媒体支持、字幕显示、甚至转码功能。0.72RC1版本可能包含了一些预置的插件,或者提供了安装额外插件的途径。 **7. ...
TCPMP的强大之处在于其广泛支持的媒体格式,除了常见的MP4、AVI、WMV等视频格式,还包括FLV、MKV、RMVB等多种非主流格式。对于音频,除了APE,还支持MP3、WAV、AAC等格式。此外,TCPMP还可以通过插件扩展更多功能,...
TCPMP(The Core Pocket Media Player)是一款经典的开源多媒体播放器,尤其在掌上设备如Windows CE(wince)系统上非常流行。版本0.81是该软件的一个稳定版本,适用于Windows CE 6.0操作系统。它以其强大的媒体兼容...
TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放器,专为各种移动设备设计,如掌上电脑、智能手机和平板电脑。它以其强大的媒体格式支持和高度自定义的界面而受到用户喜爱。TCPMP的核心在于其高效能的...
《Windows CE平台下的TCPMP播放器源码解析》 TCPMP(The Core Pocket Media Player)是一款在嵌入式系统,尤其是Windows CE平台上广泛使用的开源媒体播放器。它以其强大的多媒体支持能力和高度的可定制性而备受赞誉...
TCPMP(The Core Pocket Media Player)是一款经典的多媒体播放器,尤其在Palm操作系统上享有盛誉,被誉为“最好用的播放器”。它以其强大的兼容性和丰富的功能,深受用户喜爱。TCPMP不仅支持MP3音频格式,还能够...
TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放器,以其强大的兼容性和自定义性在用户中广受欢迎。源码的提供使开发者能够深入理解其内部机制,并根据需要进行定制化开发。以下是对TCPMP源码相关知识...
TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放器,尤其在掌上设备和嵌入式系统中广泛应用。这个“tcpmp.rar”压缩包包含了TCPMP在ARM架构设备以及Windows CE(Wince)系统上的源代码和相关支持文件...
TCPMP(The Core Pocket Media Player)是一款非常知名的掌上媒体播放器,尤其在Windows CE(简称Wince)操作系统上广受欢迎。它支持多种格式的音频和视频文件,使其成为多媒体播放的全能工具。"TCPMP中文完美版.rar...
tcpmp 源代码 学习资料,有兴趣的一起研究
《深入解析TCPMP的整体架构与开发细节》 TCPMP,全称为The Core Pocket Media Player,是一款专为移动设备设计的高性能多媒体播放器软件。起初,它以开源的形式为广大开发者提供了便利,但随后改名为BetaPlayer并...
TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放软件,尤其适用于智能设备。它的设计是模块化的,主要由核心框架(common 工程)和一系列解码器及分离器插件构成。TCPMP 的优势在于其灵活性和可扩展性...
标题中的“用于tcpmp的flv格式解码源码”是指提供了一套源代码,用于在TCPMP(The Core Pocket Media Player)这款媒体播放器上解码FLV(Flash Video)格式的视频文件。TCPMP是一款跨平台的开源媒体播放器,支持多种...
TCPMP(The Core Pocket Media Player)是一款著名的开源多媒体播放器,尤其在掌上设备如Windows CE和PDA上广受欢迎。TCPMP 0.72RC1是该软件的一个版本,其源代码被包含在"tcpmp.src.0.72RC1.rar"这个压缩包中,提供...
WINCE下的完美播放器,TCPMP(0.66)源码!~
TCPMP(The Core Pocket Media Player)是一款经典的开源媒体播放器,尤其在掌上设备如Windows CE(简称CE)和Windows Embedded Compact(Wince6.0)系统上广受欢迎。TCPMP CE是专为Windows CE平台设计的版本,而...
TCPMP自制界面 TCPMP移植 TCPMP编译 我认为我这个是目前网络上最完整的自己控制的代码,同时请到我的博客里看我的文章<TCPMP0.72RC1的编译与移植以及自己另外做UI完整方法>,我的博客是:...
TCPMP,全称为The Core Pocket Media Player,是一款适用于多种操作系统,包括Windows CE在内的便携式媒体播放器。这款软件以其强大的多媒体文件支持和高度自定义的特性,在移动设备用户中广受欢迎。TCPMP的核心功能...