player.h
上传用户:wstnjxml
上传日期:2014-04-03
资源大小:7248k
文件大小:9k
源码类别:

Windows CE

开发平台:

C/C++

  1. /*****************************************************************************
  2.  *
  3.  * This program is free software ; you can redistribute it and/or modify
  4.  * it under the terms of the GNU General Public License as published by
  5.  * the Free Software Foundation; either version 2 of the License, or
  6.  * (at your option) any later version.
  7.  *
  8.  * This program is distributed in the hope that it will be useful,
  9.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11.  * GNU General Public License for more details.
  12.  *
  13.  * You should have received a copy of the GNU General Public License
  14.  * along with this program; if not, write to the Free Software
  15.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  16.  *
  17.  * $Id: player.h 551 2006-01-09 11:55:09Z picard $
  18.  *
  19.  * The Core Pocket Media Player
  20.  * Copyright (c) 2004-2005 Gabor Kovacs
  21.  *
  22.  ****************************************************************************/
  23. #ifndef __PLAYER_H
  24. #define __PLAYER_H
  25. #define PLAYER_ID FOURCC('P','L','A','Y')
  26. #define PLAYER_BUFFER_ID FOURCC('P','L','A','B')
  27. // buffer size in KB (int)
  28. #define PLAYER_BUFFER_SIZE 0x20
  29. // microdrive buffer size in KB (int)
  30. #define PLAYER_MD_BUFFER_SIZE 0x80
  31. // microdrive mode (bool_t)
  32. #define PLAYER_MICRODRIVE 0x21
  33. // repeat (bool_t)
  34. #define PLAYER_REPEAT 0x22
  35. // shuffle (bool_t)
  36. #define PLAYER_SHUFFLE 0x23
  37. // start play after open (bool_t)
  38. #define PLAYER_PLAYATOPEN 0x24
  39. // start play after open in fullscreen (bool_t)
  40. #define PLAYER_PLAYATOPEN_FULL 0x7B
  41. // exit at the end (bool_t)
  42. #define PLAYER_EXIT_AT_END 0xB9
  43. // keep playlist after WND set null (bool_t)
  44. #define PLAYER_KEEPLIST 0x48
  45. // play or pause (bool_t) 
  46. #define PLAYER_PLAY 0x32
  47. // play speed (fraction)
  48. #define PLAYER_PLAY_SPEED 0x3F
  49. // fastforward (bool_t) 
  50. #define PLAYER_FFWD 0x49
  51. // fastforward speed (fraction) 
  52. #define PLAYER_FFWD_SPEED 0x4A
  53. // position in fraction (fraction)
  54. #define PLAYER_PERCENT 0x25
  55. // position in time (tick_t) 
  56. #define PLAYER_POSITION 0x28
  57. // duration (tick_t) 
  58. #define PLAYER_DURATION 0x46
  59. // timer shown on screen (tchar_t[]) 
  60. #define PLAYER_TIMER 0x7E
  61. // show left time (bool_t) 
  62. #define PLAYER_TIMER_LEFT 0x7F
  63. // benchmark duration (tick_t) 
  64. #define PLAYER_BENCHMARK 0x55
  65. // benchmark video source size (point) 
  66. #define PLAYER_BENCHMARK_SRC 0xB6
  67. // benchmark video dest size (point) 
  68. #define PLAYER_BENCHMARK_DST 0xB7
  69. // display name (tchar_t[])
  70. #define PLAYER_TITLE 0x29
  71. // current format (format*)
  72. #define PLAYER_FORMAT 0x2B
  73. // current stream (stream*)
  74. #define PLAYER_INPUT 0x2A
  75. // current audio stream (int)
  76. #define PLAYER_VSTREAM 0x76
  77. // current video stream (int)
  78. #define PLAYER_ASTREAM 0x77
  79. // current subtitle stream (int)
  80. #define PLAYER_SUBSTREAM 0x82
  81. // current audio output class (int)
  82. #define PLAYER_AOUTPUTID 0x83
  83. // current video output class (int)
  84. #define PLAYER_VOUTPUTID 0x84
  85. // highest priorty audio output class (readonly int)
  86. #define PLAYER_AOUTPUTID_MAX 0xA0
  87. // highest priorty video output class (readonly int)
  88. #define PLAYER_VOUTPUTID_MAX 0xA1
  89. // current audio output (node*)
  90. #define PLAYER_AOUTPUT 0x2C
  91. // current video output (node*)
  92. #define PLAYER_VOUTPUT 0x2D
  93. // number of files in playlist (int)
  94. #define PLAYER_LIST_COUNT 0x2E
  95. // current file in playlist (int) 
  96. #define PLAYER_LIST_CURRENT 0x2F
  97. // current file index (suffled) in playlist (int) 
  98. #define PLAYER_LIST_CURRIDX 0xA2
  99. // fullscreen zoom factor (fraction_t)
  100. #define PLAYER_FULL_ZOOM 0x35
  101. // skin mode zoom factor (fraction_t)
  102. #define PLAYER_SKIN_ZOOM 0x36
  103. // bilinear zoom (bool_t)
  104. #define PLAYER_SMOOTH50 0x47
  105. // bilinear zoom (bool_t)
  106. #define PLAYER_SMOOTHALWAYS 0x7A
  107. // fullscreen direction flags (int)
  108. #define PLAYER_FULL_DIR 0x39
  109. // non fullscreen direction flags (int)
  110. #define PLAYER_SKIN_DIR 0x45
  111. // current relative dir (readonly) (int)
  112. #define PLAYER_REL_DIR 0x7D
  113. // overlay is on top or clipping needed (bool_t)
  114. #define PLAYER_CLIPPING 0x3B
  115. // skin viewport rectangle (rect)
  116. #define PLAYER_SKIN_VIEWPORT 0x3C
  117. // prerotate portrait movies
  118. #define PLAYER_AUTOPREROTATE 0x3D
  119. // fullscreen mode (bool_t)
  120. #define PLAYER_FULLSCREEN 0x3E
  121. // volume volume (int 0..100)
  122. #define PLAYER_VOLUME 0x40
  123. // volume mute (bool_t)
  124. #define PLAYER_MUTE 0x41
  125. // panning (int -128..128)
  126. #define PLAYER_PAN 0x9D
  127. // preamp (int -128..128)
  128. #define PLAYER_PREAMP 0x9E
  129. // audio quality (int 0..2)
  130. #define PLAYER_AUDIO_QUALITY 0x42
  131. // auto video quality (int 0..2)
  132. #define PLAYER_VIDEO_QUALITY 0xBC
  133. // video idct acceleration (bool_t)
  134. #define PLAYER_VIDEO_ACCEL 0x44
  135. // keep audio playing in background
  136. #define PLAYER_KEEPPLAY_AUDIO 0x63
  137. // keep video playing in background
  138. #define PLAYER_KEEPPLAY_VIDEO 0x72
  139. #define PLAYER_SHOWINBACKGROUND 0xBF
  140. #define PLAYER_SINGLECLICKFULLSCREEN 0xC0 
  141. // microdrive start at in KB (int)
  142. #define PLAYER_BURSTSTART 0xA3
  143. // how much to load (%)
  144. #define PLAYER_UNDERRUN 0x67
  145. // how much to load for audio (int)
  146. #define PLAYER_AUDIO_UNDERRUN 0xBB
  147. // move back step time (tick_t)
  148. #define PLAYER_MOVEBACK_STEP 0x68
  149. // move ffwd step time (tick_t)
  150. #define PLAYER_MOVEFFWD_STEP 0x7C
  151. // stereo enum (int)
  152. #define PLAYER_STEREO 0x74
  153. // aspect ratio (frac)
  154. #define PLAYER_ASPECT 0xBE
  155. // application sent to background (bool_t)
  156. #define PLAYER_BACKGROUND 0x98
  157. // player window is foreground (bool_t)
  158. #define PLAYER_FOREGROUND 0xB4
  159. // set before and after sleep (bool_t)
  160. #define PLAYER_POWEROFF 0xB5
  161. // video caps
  162. #define PLAYER_VIDEO_CAPS 0x64
  163. // discard saved playlist (bool)
  164. #define PLAYER_DISCARDLIST 0xBA
  165. // video output is a real overlay, readonly (bool_t)
  166. #define PLAYER_VIDEO_OVERLAY 0xBD
  167. // player status
  168. #define PLAYER_SYNCING 0x81
  169. #define PLAYER_LOADMODE 0x96
  170. #define PLAYER_STREAMING 0xB8
  171. // notify pin for interface
  172. #define PLAYER_NOTIFY 0x97
  173. // on list changed event
  174. #define PLAYER_LIST_NOTIFY  0x78
  175. // for open dialog
  176. #define PLAYER_CURRENTDIR 0x6D
  177. // commands:
  178. // update video settings
  179. #define PLAYER_UPDATEVIDEO 0x90
  180. // update equalizer settings
  181. #define PLAYER_UPDATEEQUALIZER 0xA5
  182. // begin screen rotation (turn off video)
  183. #define PLAYER_ROTATEBEGIN 0x91
  184. // end screen rotation 
  185. #define PLAYER_ROTATEEND 0x92
  186. // reset video driver
  187. #define PLAYER_RESETVIDEO 0x93
  188. // codec notify about not supported data (pin)
  189. #define PLAYER_NOT_SUPPORTED_DATA 0x9F
  190. // move back
  191. #define PLAYER_MOVEBACK 0x9A
  192. // move forward
  193. #define PLAYER_MOVEFFWD 0x9B
  194. // position bar moving state (boolean)
  195. #define PLAYER_INSEEK 0x9C
  196. // next chapter/track
  197. #define PLAYER_NEXT 0xB0
  198. // prev chapter/track
  199. #define PLAYER_PREV 0xB1
  200. // stop
  201. #define PLAYER_STOP 0xB2
  202. // resync
  203. #define PLAYER_RESYNC 0xB3
  204. // array type params (just a hint)
  205. #define PLAYER_ARRAY 0x1000
  206. // url in playlist (0x1000,0x1001,0x1002...)
  207. #define PLAYER_LIST_URL 0x1000
  208. // title in playlist (0x2000,0x2001,0x2002...)
  209. #define PLAYER_LIST_TITLE 0x2000
  210. // title or filename in playlist
  211. #define PLAYER_LIST_AUTOTITLE 0x5000
  212. // length in playlist (0x4000,0x4001,0x4002...)
  213. #define PLAYER_LIST_LENGTH 0x4000
  214. // input comments 
  215. #define PLAYER_COMMENT 0x3000
  216. typedef void (*playerpaint)(void* This,void* DC,int x0,int y0);
  217. typedef int (*playerprocess)(void* This);
  218. typedef bool_t (*playercomment)(void* This,int Stream,const tchar_t* Name,tchar_t* Value,int ValueLen);
  219. typedef void (*playerswap)(void* This,int a,int b);
  220. typedef struct player_t
  221. {
  222. VMT_NODE
  223. playerpaint Paint;
  224. playercomment CommentByName;
  225. playerswap ListSwap;
  226. playerprocess Process;
  227. } player;
  228. #define MAXCHAPTER 100
  229. #define MAXDIRDEEP 10
  230. void Player_Init();
  231. void Player_Done();
  232. DLL int PlayerAdd(player* Player,int Index, const tchar_t* Path, const tchar_t* Title);
  233. DLL int PlayerAddDir(player* Player,int Index, const tchar_t* Path, const tchar_t* Exts, bool_t ExtFilter, int Deep);
  234. DLL void PlayerSaveList(player* Player,const tchar_t* Path,int Class);
  235. DLL const tchar_t* PlayerComment(int Code); // standard english comment tags
  236. DLL tick_t PlayerGetChapter(player* Player,int No,tchar_t* OutName,int OutNameLen);
  237. DLL bool_t PlayerGetStream(player* Player,int No,packetformat* OutFormat,tchar_t* OutName,int OutNameLen,int* OutPri);
  238. // strings
  239. #define PLAYER_MIME_NOT_FOUND 0x105
  240. #define PLAYER_FORMAT_NOT_FOUND 0x106
  241. #define PLAYER_BUFFER_WARNING 0x107
  242. #define PLAYER_AUDIO_NOT_FOUND 0x108
  243. #define PLAYER_VIDEO_NOT_FOUND 0x109
  244. #define PLAYER_BUFFER_UNDERRUN 0x10A
  245. #define PLAYER_AUDIO_NOT_FOUND2 0x10B
  246. #define PLAYER_VIDEO_NOT_FOUND2 0x10C
  247. #define PLAYERQUALITY_ENUM FOURCC('P','L','A','Q')
  248. #define PLAYERQUALITY_LOW 0x100
  249. #define PLAYERQUALITY_MEDIUM 0x101
  250. #define PLAYERQUALITY_HIGH 0x102
  251. // translated comments
  252. #define COMMENT_TITLE 0x110
  253. #define COMMENT_ARTIST 0x111
  254. #define COMMENT_ALBUM 0x112
  255. #define COMMENT_LANGUAGE 0x113
  256. #define COMMENT_GENRE 0x114
  257. #define COMMENT_AUTHOR 0x115
  258. #define COMMENT_COPYRIGHT 0x116
  259. #define COMMENT_PRIORITY 0x117
  260. #define COMMENT_COMMENT 0x118
  261. #define COMMENT_TRACK 0x119
  262. #define COMMENT_YEAR 0x11A
  263. #define COMMENT_COVER 0x11B
  264. #define COMMENT_REDIRECT 0x11C
  265. // default stream name prefixes
  266. #define STREAM_NAME 0x120
  267. #define STREAM_NAME_NONE (STREAM_NAME + PACKET_NONE)
  268. #define STREAM_NAME_VIDEO (STREAM_NAME + PACKET_VIDEO)
  269. #define STREAM_NAME_AUDIO (STREAM_NAME + PACKET_AUDIO)
  270. #define STREAM_NAME_SUBTITLE (STREAM_NAME + PACKET_SUBTITLE)
  271. #endif