`
dahui
  • 浏览: 50181 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

TCPMP之node

阅读更多

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

    TCPMP(The Core Pocket Media Player)是一款专为winCE平台设计的强大ARM播放器,被誉为该平台上最佳的多媒体播放软件。它的出现,极大地丰富了Windows CE系统设备的多媒体体验,如智能手机、PDA和个人媒体播放器等...

    TCPMP(0.72)

    TCPMP的核心特性之一是其强大的插件系统。用户可以通过安装插件来增强TCPMP的功能,比如添加网络流媒体支持、字幕显示、甚至转码功能。0.72RC1版本可能包含了一些预置的插件,或者提供了安装额外插件的途径。 **7. ...

    TCPMP完整版(支持APE)

    TCPMP的强大之处在于其广泛支持的媒体格式,除了常见的MP4、AVI、WMV等视频格式,还包括FLV、MKV、RMVB等多种非主流格式。对于音频,除了APE,还支持MP3、WAV、AAC等格式。此外,TCPMP还可以通过插件扩展更多功能,...

    TCPMP 0.81视频播放器_wince

    TCPMP(The Core Pocket Media Player)是一款经典的开源多媒体播放器,尤其在掌上设备如Windows CE(wince)系统上非常流行。版本0.81是该软件的一个稳定版本,适用于Windows CE 6.0操作系统。它以其强大的媒体兼容...

    tcpmp player

    TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放器,专为各种移动设备设计,如掌上电脑、智能手机和平板电脑。它以其强大的媒体格式支持和高度自定义的界面而受到用户喜爱。TCPMP的核心在于其高效能的...

    wince下TCPMP原代码

    《Windows CE平台下的TCPMP播放器源码解析》 TCPMP(The Core Pocket Media Player)是一款在嵌入式系统,尤其是Windows CE平台上广泛使用的开源媒体播放器。它以其强大的多媒体支持能力和高度的可定制性而备受赞誉...

    tcpmp播放器

    TCPMP(The Core Pocket Media Player)是一款经典的多媒体播放器,尤其在Palm操作系统上享有盛誉,被誉为“最好用的播放器”。它以其强大的兼容性和丰富的功能,深受用户喜爱。TCPMP不仅支持MP3音频格式,还能够...

    tcpmp 源码

    TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放器,以其强大的兼容性和自定义性在用户中广受欢迎。源码的提供使开发者能够深入理解其内部机制,并根据需要进行定制化开发。以下是对TCPMP源码相关知识...

    tcpmp.rar_TCPMP arm_TCPMP win_tcpmp rmvb a_wince tcpmp_wince t

    TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放器,尤其在掌上设备和嵌入式系统中广泛应用。这个“tcpmp.rar”压缩包包含了TCPMP在ARM架构设备以及Windows CE(Wince)系统上的源代码和相关支持文件...

    TCPMP中文完美版.rar

    TCPMP(The Core Pocket Media Player)是一款非常知名的掌上媒体播放器,尤其在Windows CE(简称Wince)操作系统上广受欢迎。它支持多种格式的音频和视频文件,使其成为多媒体播放的全能工具。"TCPMP中文完美版.rar...

    tcpmp源代码学习

    tcpmp 源代码 学习资料,有兴趣的一起研究

    tcpmp-整体架构.pdf

    《深入解析TCPMP的整体架构与开发细节》 TCPMP,全称为The Core Pocket Media Player,是一款专为移动设备设计的高性能多媒体播放器软件。起初,它以开源的形式为广大开发者提供了便利,但随后改名为BetaPlayer并...

    TCPMP源码导读

    TCPMP(The Core Pocket Media Player)是一款开源的多媒体播放软件,尤其适用于智能设备。它的设计是模块化的,主要由核心框架(common 工程)和一系列解码器及分离器插件构成。TCPMP 的优势在于其灵活性和可扩展性...

    用于tcpmp的flv格式解码源码

    标题中的“用于tcpmp的flv格式解码源码”是指提供了一套源代码,用于在TCPMP(The Core Pocket Media Player)这款媒体播放器上解码FLV(Flash Video)格式的视频文件。TCPMP是一款跨平台的开源媒体播放器,支持多种...

    tcpmp.src.0.72RC1.rar_TCPMP 0.72R_tcpmp_tcpmp 0.72 sp_tcpmp wind

    TCPMP(The Core Pocket Media Player)是一款著名的开源多媒体播放器,尤其在掌上设备如Windows CE和PDA上广受欢迎。TCPMP 0.72RC1是该软件的一个版本,其源代码被包含在"tcpmp.src.0.72RC1.rar"这个压缩包中,提供...

    TCPMP(0.66)

    WINCE下的完美播放器,TCPMP(0.66)源码!~

    tcpmp.zip_TCPMP CE_tcpmp wince6_tcpmp源码_wince6.0_wince6.0tcpmp报错

    TCPMP(The Core Pocket Media Player)是一款经典的开源媒体播放器,尤其在掌上设备如Windows CE(简称CE)和Windows Embedded Compact(Wince6.0)系统上广受欢迎。TCPMP CE是专为Windows CE平台设计的版本,而...

    TCPMP自制界面UI移植程序

    TCPMP自制界面 TCPMP移植 TCPMP编译 我认为我这个是目前网络上最完整的自己控制的代码,同时请到我的博客里看我的文章<TCPMP0.72RC1的编译与移植以及自己另外做UI完整方法>,我的博客是:...

    TCPMP.rar_tcpmp

    TCPMP,全称为The Core Pocket Media Player,是一款适用于多种操作系统,包括Windows CE在内的便携式媒体播放器。这款软件以其强大的多媒体文件支持和高度自定义的特性,在移动设备用户中广受欢迎。TCPMP的核心功能...

Global site tag (gtag.js) - Google Analytics