WINCE TCPMP应用三:TCPMP的播放模块
首先,我们来看一下TCPMP的播放模块的结构定义:
static const nodedef Player =
{
sizeof(player_base)|CF_GLOBAL|CF_SETTINGS,
PLAYER_ID,
NODE_CLASS,
PRI_MAXIMUM+600,
(nodecreate)Create,
(nodedelete)Delete,
};
绝大多数节点都有一个对应的数据对象,记录该节点的数据和方法,每一个子节点对象都是以父节点对象作为该节点一个元素,类似C++的封装继承机制。 如果子节点的父节点没有数据对象,该节点可以从node节点直接继承。每一个节点都可以看成Node节点的直接或间接子节点,所以所有节点头以一个相同的 node结构开头,子节点可能还有自己的属性,在继承父对象后就是子节点自己的元素。
typedef struct node
{
int Class;
nodeenum Enum;
nodeget Get;
nodeset Set;
} node;
Class表示该对象的标识,如PLAYER_ID。
Enum是一个函数指针,指向一个函数用于枚举当前节点的属性。
Get是一个函数指针,得到当前节点某一属性值。
Set是一个函数指针,设置当前节点的某一属性数值。
下面我们来看看struct node* Player;
首先我们如下般获得Player:
context* p = Context();
player* myplayer = NULL;
if(p) Moonplayer = (player*)(p->Player);
然后我们就可以通过Moonplayer来进行播放的控制了。例如 Get可以获得播放的一些属性和状态,Set可以设定播放的属性和状态。
下表列出了Moonplayer控制的相关播放属性:(play.h)
// buffer size in KB (int)
#define PLAYER_BUFFER_SIZE 0x20
// microdrive buffer size in KB (int)
#define PLAYER_MD_BUFFER_SIZE 0x80
// microdrive mode (bool_t)
#define PLAYER_MICRODRIVE 0x21
// repeat (bool_t)
#define PLAYER_REPEAT 0x22
// shuffle (bool_t)
#define PLAYER_SHUFFLE 0x23
// start play after open (bool_t)
#define PLAYER_PLAYATOPEN 0x24
// start play after open in fullscreen (bool_t)
#define PLAYER_PLAYATOPEN_FULL 0x7B
// exit at the end (bool_t)
#define PLAYER_EXIT_AT_END 0xB9
// keep playlist after WND set null (bool_t)
#define PLAYER_KEEPLIST 0x48
// play or pause (bool_t)
#define PLAYER_PLAY 0x32
// play speed (fraction)
#define PLAYER_PLAY_SPEED 0x3F
// fastforward (bool_t)
#define PLAYER_FFWD 0x49
// fastforward speed (fraction)
#define PLAYER_FFWD_SPEED 0x4A
// position in fraction (fraction)
#define PLAYER_PERCENT 0x25
// position in time (tick_t)
#define PLAYER_POSITION 0x28
// duration (tick_t)
#define PLAYER_DURATION 0x46
// timer shown on screen (tchar_t[])
#define PLAYER_TIMER 0x7E
// show left time (bool_t)
#define PLAYER_TIMER_LEFT 0x7F
// benchmark duration (tick_t)
#define PLAYER_BENCHMARK 0x55
// benchmark video source size (point)
#define PLAYER_BENCHMARK_SRC 0xB6
// benchmark video dest size (point)
#define PLAYER_BENCHMARK_DST 0xB7
// display name (tchar_t[])
#define PLAYER_TITLE 0x29
// current format (format*)
#define PLAYER_FORMAT 0x2B
// current stream (stream*)
#define PLAYER_INPUT 0x2A
// current audio stream (int)
#define PLAYER_VSTREAM 0x76
// current video stream (int)
#define PLAYER_ASTREAM 0x77
// current subtitle stream (int)
#define PLAYER_SUBSTREAM 0x82
// current audio output class (int)
#define PLAYER_AOUTPUTID 0x83
// current video output class (int)
#define PLAYER_VOUTPUTID 0x84
// highest priorty audio output class (readonly int)
#define PLAYER_AOUTPUTID_MAX 0xA0
// highest priorty video output class (readonly int)
#define PLAYER_VOUTPUTID_MAX 0xA1
// current audio output (node*)
#define PLAYER_AOUTPUT 0x2C
// current video output (node*)
#define PLAYER_VOUTPUT 0x2D
// number of files in playlist (int)
#define PLAYER_LIST_COUNT 0x2E
// current file in playlist (int)
#define PLAYER_LIST_CURRENT 0x2F
// current file index (suffled) in playlist (int)
#define PLAYER_LIST_CURRIDX 0xA2
// fullscreen zoom factor (fraction_t)
#define PLAYER_FULL_ZOOM 0x35
// skin mode zoom factor (fraction_t)
#define PLAYER_SKIN_ZOOM 0x36
// bilinear zoom (bool_t)
#define PLAYER_SMOOTH50 0x47
// bilinear zoom (bool_t)
#define PLAYER_SMOOTHALWAYS 0x7A
// fullscreen direction flags (int)
#define PLAYER_FULL_DIR 0x39
// non fullscreen direction flags (int)
#define PLAYER_SKIN_DIR 0x45
// current relative dir (readonly) (int)
#define PLAYER_REL_DIR 0x7D
// overlay is on top or clipping needed (bool_t)
#define PLAYER_CLIPPING 0x3B
// skin viewport rectangle (rect)
#define PLAYER_SKIN_VIEWPORT 0x3C
// prerotate portrait movies
#define PLAYER_AUTOPREROTATE 0x3D
// fullscreen mode (bool_t)
#define PLAYER_FULLSCREEN 0x3E
// volume volume (int 0..100)
#define PLAYER_VOLUME 0x40
// volume mute (bool_t)
#define PLAYER_MUTE 0x41
// panning (int -128..128)
#define PLAYER_PAN 0x9D
// preamp (int -128..128)
#define PLAYER_PREAMP 0x9E
// audio quality (int 0..2)
#define PLAYER_AUDIO_QUALITY 0x42
// auto video quality (int 0..2)
#define PLAYER_VIDEO_QUALITY 0xBC
// video idct acceleration (bool_t)
#define PLAYER_VIDEO_ACCEL 0x44
// keep audio playing in background
#define PLAYER_KEEPPLAY_AUDIO 0x63
// keep video playing in background
#define PLAYER_KEEPPLAY_VIDEO 0x72
#define PLAYER_SHOWINBACKGROUND 0xBF
#define PLAYER_SINGLECLICKFULLSCREEN 0xC0
// microdrive start at in KB (int)
#define PLAYER_BURSTSTART 0xA3
// how much to load (%)
#define PLAYER_UNDERRUN 0x67
// how much to load for audio (int)
#define PLAYER_AUDIO_UNDERRUN 0xBB
// move back step time (tick_t)
#define PLAYER_MOVEBACK_STEP 0x68
// move ffwd step time (tick_t)
#define PLAYER_MOVEFFWD_STEP 0x7C
// stereo enum (int)
#define PLAYER_STEREO 0x74
// aspect ratio (frac)
#define PLAYER_ASPECT 0xBE
// application sent to background (bool_t)
#define PLAYER_BACKGROUND 0x98
// player window is foreground (bool_t)
#define PLAYER_FOREGROUND 0xB4
// set before and after sleep (bool_t)
#define PLAYER_POWEROFF 0xB5
// video caps
#define PLAYER_VIDEO_CAPS 0x64
// discard saved playlist (bool)
#define PLAYER_DISCARDLIST 0xBA
// video output is a real overlay, readonly (bool_t)
#define PLAYER_VIDEO_OVERLAY 0xBD
// player status
#define PLAYER_SYNCING 0x81
#define PLAYER_LOADMODE 0x96
#define PLAYER_STREAMING 0xB8
// notify pin for interface
#define PLAYER_NOTIFY 0x97
// on list changed event
#define PLAYER_LIST_NOTIFY 0x78
// for open dialog
#define PLAYER_CURRENTDIR 0x6D
// commands:
// update video settings
#define PLAYER_UPDATEVIDEO 0x90
// update equalizer settings
#define PLAYER_UPDATEEQUALIZER 0xA5
// begin screen rotation (turn off video)
#define PLAYER_ROTATEBEGIN 0x91
// end screen rotation
#define PLAYER_ROTATEEND 0x92
// reset video driver
#define PLAYER_RESETVIDEO 0x93
// codec notify about not supported data (pin)
#define PLAYER_NOT_SUPPORTED_DATA 0x9F
// move back
#define PLAYER_MOVEBACK 0x9A
// move forward
#define PLAYER_MOVEFFWD 0x9B
// position bar moving state (boolean)
#define PLAYER_INSEEK 0x9C
// next chapter/track
#define PLAYER_NEXT 0xB0
// prev chapter/track
#define PLAYER_PREV 0xB1
// stop
#define PLAYER_STOP 0xB2
// resync
#define PLAYER_RESYNC 0xB3
// array type params (just a hint)
#define PLAYER_ARRAY 0x1000
// url in playlist (0x1000,0x1001,0x1002...)
#define PLAYER_LIST_URL 0x1000
// title in playlist (0x2000,0x2001,0x2002...)
#define PLAYER_LIST_TITLE 0x2000
// title or filename in playlist
#define PLAYER_LIST_AUTOTITLE 0x5000
// length in playlist (0x4000,0x4001,0x4002...)
#define PLAYER_LIST_LENGTH 0x4000
// input comments
#define PLAYER_COMMENT 0x3000
举个例子:
播放的的话,我们可以如下设置:
Bool_t b=1;
Moonplayer->Set(Moonplayer,PLAYER_PLAYER,&b,sizeof(b));
停止的话,可以是:
Bool_t b=0;
Moonplayer->Set(Moonplayer,PLAYER_PLAYER,&b,sizeof(b));
其他播放类似,可以参考TCPMP或者我程序中的代码。
WINCE TCPMP应用三:TCPMP的播放模块相关推荐
- Arduino案例实操 -- 语音播放模块(DY-SV5W)
案例主控板如不做特殊说明的话,均默认是Arduino UNO控制板. 本次实验以UNO发送串口协议控制语音播放器播放歌曲,语音播放模块选型DY-SV5W. 文章标题导航 一.硬件选择 1. Ardui ...
- DY-SV17F语音播放模块应用篇一 【IO独立模式】
DY-SV17F模块模式分为I/O组合模式和I/O独立模式,每种模式下又有两种方式--按键触发模式和电平触发模式,低电平有效. 注: 按键触发是指低电平触发后随即释放电平,类似于按键按下后弹起,故称为 ...
- DY-SV17F语音播放模块应用篇二 【UART 串口模式】
UART 串口模式 是采用波特率为9600的全双工串口通信. 语音模块做为从机处理,上电默认等待状态,所有播放操作全由主机控制. 从机不会主动发起通信,所有通信都是由主机发起. 串口模式接线图: 使用 ...
- Python3 超好用的音频播放模块 playsound
Python3 超好用的音频播放模块 playsound 前言 playsound模块介绍 一.模块安装 二.使用 三.使用中遇到大坑:文件无法解除占用! 前言 python2有个很好用的音频播放模块 ...
- Python编程基础:第三十六节 模块Modules
第三十六节 模块Modules 前言 实践 前言 我们目前所有的代码都写在一个文档里面.如果你的项目比较大,那么把所有功能写在一个文件里就非常不便于后期维护.为了提高我们代码的可读性,降低后期维护的成 ...
- 凯云水利水电造价工程系统 (三) 材料单价模块(1)
凯云水利水电造价工程系统 (三) 材料单价模块(新增) 3.3-3模块功能的具体实现 3.4功能4名称:材料单价 3.4-1功能实现 材料单价包含两个部分:一个是材料分类,一个是材料单价.材料分类的 ...
- Arduino 单总线驱动音频播放模块DY-SV 5W示例(MP3)
只需要一根数据线,即可操控这个语音播放模块拉. #define Pin_MP3 26#define CLEAR 0x0A //清零数字 #define MUSIC_SELECT 0x0B //选取确认 ...
- 电力电子变压器。 整流级采用级联H桥多电平拓扑,由三个H桥模块级联
电力电子变压器. 整流级采用级联H桥多电平拓扑,由三个H桥模块级联,将工频交流转换为直流,级联多电平可以减小开关器件的电压应力和开关频率. 中间级采用单主动桥和高频隔离变压器. 输出级采用三相逆变器. ...
- ansible自动化运维详解(三)ansible常用模块续
文章目录 ansible自动化运维详解(三)ansible常用模块续 四.ansible常用模块(2) 4.10.yum_repository 4.11.dnf 4.12.service 及 fire ...
最新文章
- Discuz!NT控件剖析 之 Button [原创: 附源码]
- 三星s8清除html查看器,三星S8手机怎么双清 清理手机数据方法介绍 - Iefans
- Centos服务器时间
- 判断出栈序列是否合法(c语言实现)
- 服务器返回值 解释 ajax提交方式 后台数据刷进前端
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(6) - 移位与循环移位指令
- 新手学跨域之iframe
- Go Elasticsearch index CRUD
- keyshot分辨率多少合适_投影仪分辨率和画质,你想知道的都在这里!
- Sqoop导入文件格式Text、Parquet、Avro、Sequence速度和大小的对比
- ArcGIS案例学习笔记4_2_水文分析批处理地理建模
- IDEA告警:Field can be converted to a local varible
- (转)日期插件layDate的使用
- DIY微信朋友圈截图制作生成小程序源码下载
- docker服务器搬迁后遇到的问题:宿主ip不通
- 中国成最大工业机器人市场 年增长速度25%
- OpenJDK16 ZGC 源码分析
- 计算机工程本科旧金山找工,2020年旧金山大学本科热门专业
- 51单片机的1T和12T的区别
- 计算机专业就业自我推荐意见,计算机科学与技术专业自荐书
热门文章
- 如何简便计算两个空间向量之间的欧拉角
- 全面信创化之下,工业软件国产化之路开始
- 【steam】Steam背景美化——长展柜终极指南
- 信息系统五阶段生命周期模型
- 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
- 百度云存储 BOS javascript sdk 开发问题小记 ( angular )
- 扒网站工具 linux,wget 递归下载整个网站(网站扒皮必备)
- hybird (混合开发 - 视频详解) - 王云飞 - 小四
- 光纤耦合透镜的设计与公差分析
- 计算机毕业设计Java成都某4S店销售管理系统(源码+系统+mysql数据库+lw文档)