Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

363 lines
15 KiB

  1. //------------------------------------------------------------------------------
  2. // File: DVDevCod.h
  3. //
  4. // Desc: List of standard DVD-Video event codes and the expected params.
  5. //
  6. // Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
  7. //------------------------------------------------------------------------------
  8. #ifndef __DVDEVCOD__
  9. #define __DVDEVCOD__
  10. #define EC_DVDBASE 0x0100
  11. #ifndef EXCLUDE_DVDEVCODE_ENUMS
  12. typedef enum _tagDVD_ERROR {
  13. DVD_ERROR_Unexpected=1, // Something unexpected happened, perhaps content
  14. // is incorrectly authored. Playback is stopped.
  15. DVD_ERROR_CopyProtectFail=2, // Key exchange for DVD copy protection failed.
  16. // Playback is stopped.
  17. DVD_ERROR_InvalidDVD1_0Disc=3, // DVD-Video disc is incorrectly authored for v1.0
  18. // of spec. Playback is stopped.
  19. DVD_ERROR_InvalidDiscRegion=4, // The Disc cannot be played because the disc is not
  20. // authored to play in system region.
  21. // The region mismatch may be fixable by
  22. // changing the system region with dvdrgn.exe
  23. DVD_ERROR_LowParentalLevel=5, // Player parental level is lower than the lowest parental
  24. // level available in the DVD content. Playback is stopped.
  25. DVD_ERROR_MacrovisionFail=6, // Macrovision Distribution Failed.
  26. // Playback is stopped.
  27. DVD_ERROR_IncompatibleSystemAndDecoderRegions=7,
  28. // No discs can be played because the system region
  29. // does not match the decoder region.
  30. DVD_ERROR_IncompatibleDiscAndDecoderRegions=8
  31. // The disc cannot be played because the disc is
  32. // not authored to be played in the decoder's region
  33. } DVD_ERROR;
  34. typedef enum _tagDVD_WARNING {
  35. DVD_WARNING_InvalidDVD1_0Disc=1,// DVD-Video disc is incorrectly authored. Playback
  36. // can continue, but unexpected behavior may occur.
  37. DVD_WARNING_FormatNotSupported=2,// A decoder would not support the current format. Playback
  38. // of a stream (audio, video of SP) may not function.
  39. // lParam2 contains the stream type (see AM_DVD_STREAM_FLAGS)
  40. DVD_WARNING_IllegalNavCommand=3,// The internal DVD navigation command processor attempted to
  41. // process an illegal command.
  42. DVD_WARNING_Open = 4, // File Open Failed
  43. DVD_WARNING_Seek = 5, // File Seek Failed
  44. DVD_WARNING_Read = 6 // File Read Failed
  45. } DVD_WARNING;
  46. typedef enum _tagDVD_PB_STOPPED {
  47. DVD_PB_STOPPED_Other=0, // The navigator stopped the playback (no reason available).
  48. DVD_PB_STOPPED_NoBranch=1, // The nav completed the current pgc and there was no more video and
  49. // did not find any other branching instruction for subsequent playback.
  50. DVD_PB_STOPPED_NoFirstPlayDomain =2, // The disc does not contain an initial startup program.
  51. DVD_PB_STOPPED_StopCommand = 3, // The app issued a stop() command or a stop command was authored on the disc.
  52. DVD_PB_STOPPED_Reset=4, // The navigator was reset to the start of the disc (using ResetOnStop).
  53. DVD_PB_STOPPED_DiscEjected=5, // The disc was ejected.
  54. DVD_PB_STOPPED_IllegalNavCommand = 6, // An illegal nav command prevented playback from continuing.
  55. DVD_PB_STOPPED_PlayPeriodAutoStop = 7, // PlayPeriod completed
  56. DVD_PB_STOPPED_PlayChapterAutoStop = 8, // PlayChapter completed
  57. DVD_PB_STOPPED_ParentalFailure = 9, // A parental level failure prevented playback
  58. DVD_PB_STOPPED_RegionFailure = 10, // A region failure prevented playback
  59. DVD_PB_STOPPED_MacrovisionFailure = 11, // A Macrovision failure prevented playback.
  60. DVD_PB_STOPPED_DiscReadError = 12, // A read error prevented playback.
  61. DVD_PB_STOPPED_CopyProtectFailure = 13 // Copy protection failure.
  62. } DVD_PB_STOPPED;
  63. #endif
  64. // DVD-Video event codes
  65. // ======================
  66. //
  67. // All DVD-Video event are always passed on to the application, and are
  68. // never processed by the filter graph
  69. #define EC_DVD_DOMAIN_CHANGE (EC_DVDBASE + 0x01)
  70. // Parameters: ( DWORD, void )
  71. // lParam1 is enum DVD_DOMAIN, and indicates the player's new domain
  72. //
  73. // Raised from following domains: all
  74. //
  75. // Signaled when ever the DVD player changes domains.
  76. #define EC_DVD_TITLE_CHANGE (EC_DVDBASE + 0x02)
  77. // Parameters: ( DWORD, void )
  78. // lParam1 is the new title number.
  79. //
  80. // Raised from following domains: DVD_DOMAIN_Title
  81. //
  82. // Indicates when the current title number changes. Title numbers
  83. // range 1 to 99. This indicates the TTN, which is the title number
  84. // with respect to the whole disc, not the VTS_TTN which is the title
  85. // number with respect to just a current VTS.
  86. #define EC_DVD_CHAPTER_START (EC_DVDBASE + 0x03)
  87. // Parameters: ( DWORD, void )
  88. // lParam1 is the new chapter number (which is the program number for
  89. // One_Sequential_PGC_Titles).
  90. //
  91. // Raised from following domains: DVD_DOMAIN_Title
  92. //
  93. // Signales that DVD player started playback of a new program in the Title
  94. // domain. This is only signaled for One_Sequential_PGC_Titles.
  95. #define EC_DVD_AUDIO_STREAM_CHANGE (EC_DVDBASE + 0x04)
  96. // Parameters: ( DWORD, void )
  97. // lParam1 is the new user audio stream number.
  98. //
  99. // Raised from following domains: all
  100. //
  101. // Signaled when ever the current user audio stream number changes for the main
  102. // title. This can be changed automatically with a navigation command on disc
  103. // as well as through IDVDAnnexJ.
  104. // Audio stream numbers range from 0 to 7. Stream 0xffffffff
  105. // indicates that no stream is selected.
  106. #define EC_DVD_SUBPICTURE_STREAM_CHANGE (EC_DVDBASE + 0x05)
  107. // Parameters: ( DWORD, BOOL )
  108. // lParam1 is the new user subpicture stream number.
  109. // lParam2 is the subpicture's on/off state (TRUE if on)
  110. //
  111. // Raised from following domains: all
  112. //
  113. // Signaled when ever the current user subpicture stream number changes for the main
  114. // title. This can be changed automatically with a navigation command on disc
  115. // as well as through IDVDAnnexJ.
  116. // Subpicture stream numbers range from 0 to 31. Stream 0xffffffff
  117. // indicates that no stream is selected.
  118. #define EC_DVD_ANGLE_CHANGE (EC_DVDBASE + 0x06)
  119. // Parameters: ( DWORD, DWORD )
  120. // lParam1 is the number of available angles.
  121. // lParam2 is the current user angle number.
  122. //
  123. // Raised from following domains: all
  124. //
  125. // Signaled when ever either
  126. // a) the number of available angles changes, or
  127. // b) the current user angle number changes.
  128. // Current angle number can be changed automatically with navigation command
  129. // on disc as well as through IDVDAnnexJ.
  130. // When the number of available angles is 1, the current video is not multiangle.
  131. // Angle numbers range from 1 to 9.
  132. #define EC_DVD_BUTTON_CHANGE (EC_DVDBASE + 0x07)
  133. // Parameters: ( DWORD, DWORD )
  134. // lParam1 is the number of available buttons.
  135. // lParam2 is the current selected button number.
  136. //
  137. // Raised from following domains: all
  138. //
  139. // Signaled when ever either
  140. // a) the number of available buttons changes, or
  141. // b) the current selected button number changes.
  142. // The current selected button can be changed automatically with navigation
  143. // commands on disc as well as through IDVDAnnexJ.
  144. // Button numbers range from 1 to 36. Selected button number 0 implies that
  145. // no button is selected. Note that these button numbers enumerate all
  146. // available button numbers, and do not always correspond to button numbers
  147. // used for IDVDAnnexJ::ButtonSelectAndActivate since only a subset of buttons
  148. // may be activated with ButtonSelectAndActivate.
  149. #define EC_DVD_VALID_UOPS_CHANGE (EC_DVDBASE + 0x08)
  150. // Parameters: ( DWORD, void )
  151. // lParam1 is a VALID_UOP_SOMTHING_OR_OTHER bit-field stuct which indicates
  152. // which IDVDAnnexJ commands are explicitly disable by the DVD disc.
  153. //
  154. // Raised from following domains: all
  155. //
  156. // Signaled when ever the available set of IDVDAnnexJ methods changes. This
  157. // only indicates which operations are explicited disabled by the content on
  158. // the DVD disc, and does not guarentee that it is valid to call methods
  159. // which are not disabled. For example, if no buttons are currently present,
  160. // IDVDAnnexJ::ButtonActivate() won't work, even though the buttons are not
  161. // explicitly disabled.
  162. #define EC_DVD_STILL_ON (EC_DVDBASE + 0x09)
  163. // Parameters: ( BOOL, DWORD )
  164. // lParam1 == 0 --> buttons are available, so StillOff won't work
  165. // lParam1 == 1 --> no buttons available, so StillOff will work
  166. // lParam2 indicates the number of seconds the still will last, with 0xffffffff
  167. // indicating an infinite still (wait till button or StillOff selected).
  168. //
  169. // Raised from following domains: all
  170. //
  171. // Signaled at the beginning of any still: PGC still, Cell Still, or VOBU Still.
  172. // Note that all combinations of buttons and still are possible (buttons on with
  173. // still on, buttons on with still off, button off with still on, button off
  174. // with still off).
  175. #define EC_DVD_STILL_OFF (EC_DVDBASE + 0x0a)
  176. // Parameters: ( void, void )
  177. //
  178. // Indicating that any still that is currently active
  179. // has been released.
  180. //
  181. // Raised from following domains: all
  182. //
  183. // Signaled at the end of any still: PGC still, Cell Still, or VOBU Still.
  184. //
  185. #define EC_DVD_CURRENT_TIME (EC_DVDBASE + 0x0b)
  186. // Parameters: ( DWORD, BOOL )
  187. // lParam1 is a DVD_TIMECODE which indicates the current
  188. // playback time code in a BCD HH:MM:SS:FF format.
  189. // lParam2 == 0 --> time code is 25 frames/sec
  190. // lParam2 == 1 --> time code is 30 frames/sec (non-drop).
  191. // lParam2 == 2 --> time code is invalid (current playback time
  192. // cannot be determined for current title)
  193. //
  194. // Raised from following domains: DVD_DOMAIN_Title
  195. //
  196. // Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec.
  197. // This is only signaled for One_Sequential_PGC_Titles.
  198. #define EC_DVD_ERROR (EC_DVDBASE + 0x0c)
  199. // Parameters: ( DWORD, void)
  200. // lParam1 is an enum DVD_ERROR which notifies the app of some error condition.
  201. //
  202. // Raised from following domains: all
  203. //
  204. #define EC_DVD_WARNING (EC_DVDBASE + 0x0d)
  205. // Parameters: ( DWORD, DWORD)
  206. // lParam1 is an enum DVD_WARNING which notifies the app of some warning condition.
  207. // lParam2 contains more specific information about the warning (warning dependent)
  208. //
  209. // Raised from following domains: all
  210. //
  211. #define EC_DVD_CHAPTER_AUTOSTOP (EC_DVDBASE + 0x0e)
  212. // Parameters: (BOOL, void)
  213. // lParam1 is a BOOL which indicates the reason for the cancellation of ChapterPlayAutoStop
  214. // lParam1 == 0 indicates successful completion of ChapterPlayAutoStop
  215. // lParam1 == 1 indicates that ChapterPlayAutoStop is being cancelled as a result of another
  216. // IDVDControl call or the end of content has been reached & no more chapters
  217. // can be played.
  218. // Indicating that playback is stopped as a result of a call
  219. // to IDVDControl::ChapterPlayAutoStop()
  220. //
  221. // Raised from following domains : DVD_DOMAIN_TITLE
  222. //
  223. #define EC_DVD_NO_FP_PGC (EC_DVDBASE + 0x0f)
  224. // Parameters : (void, void)
  225. //
  226. // Raised from the following domains : FP_DOM
  227. //
  228. // Indicates that the DVD disc does not have a FP_PGC (First Play Program Chain)
  229. // and the DVD Navigator will not automatically load any PGC and start playback.
  230. //
  231. #define EC_DVD_PLAYBACK_RATE_CHANGE (EC_DVDBASE + 0x10)
  232. // Parameters : (LONG, void)
  233. // lParam1 is a LONG indicating the new playback rate.
  234. // lParam1 < 0 indicates reverse playback mode.
  235. // lParam1 > 0 indicates forward playback mode
  236. // Value of lParam1 is the actual playback rate multiplied by 10000.
  237. // i.e. lParam1 = rate * 10000
  238. //
  239. // Raised from the following domains : TT_DOM
  240. //
  241. // Indicates that a rate change in playback has been initiated and the parameter
  242. // lParam1 indicates the new playback rate that is being used.
  243. //
  244. #define EC_DVD_PARENTAL_LEVEL_CHANGE (EC_DVDBASE + 0x11)
  245. // Parameters : (LONG, void)
  246. // lParam1 is a LONG indicating the new parental level.
  247. //
  248. // Raised from the following domains : VMGM_DOM
  249. //
  250. // Indicates that an authored Nav command has changed the parental level
  251. // setting in the player.
  252. //
  253. #define EC_DVD_PLAYBACK_STOPPED (EC_DVDBASE + 0x12)
  254. // Parameters : (DWORD, void)
  255. //
  256. // Raised from the following domains : All Domains
  257. //
  258. // Indicates that playback has been stopped as the Navigator has completed
  259. // playback of the pgc and did not find any other branching instruction for
  260. // subsequent playback.
  261. //
  262. // The DWORD returns the reason for the completion of the playback. See
  263. // The DVD_PB_STOPPED enumeration for details.
  264. //
  265. #define EC_DVD_ANGLES_AVAILABLE (EC_DVDBASE + 0x13)
  266. // Parameters : (BOOL, void)
  267. // lParam1 == 0 indicates that playback is not in an angle block and angles are
  268. // not available
  269. // lParam1 == 1 indicates that an angle block is being played back and angle changes
  270. // can be performed.
  271. //
  272. // Indicates whether an angle block is being played and if angle changes can be
  273. // performed. However, angle changes are not restricted to angle blocks and the
  274. // manifestation of the angle change can be seen only in an angle block.
  275. #define EC_DVD_PLAYPERIOD_AUTOSTOP (EC_DVDBASE + 0x14)
  276. // Parameters: (void, void)
  277. // Sent when the PlayPeriodInTitle completes or is cancelled
  278. //
  279. // Raised from following domains : DVD_DOMAIN_TITLE
  280. //
  281. #define EC_DVD_BUTTON_AUTO_ACTIVATED (EC_DVDBASE + 0x15)
  282. // Parameters: (DWORD button, void)
  283. // Sent when a button is automatically activated
  284. //
  285. // Raised from following domains : DVD_DOMAIN_MENU
  286. //
  287. #define EC_DVD_CMD_START (EC_DVDBASE + 0x16)
  288. // Parameters: (CmdID, HRESULT)
  289. // Sent when a command begins
  290. //
  291. #define EC_DVD_CMD_END (EC_DVDBASE + 0x17)
  292. // Parameters: (CmdID, HRESULT)
  293. // Sent when a command completes
  294. //
  295. #define EC_DVD_DISC_EJECTED (EC_DVDBASE + 0x18)
  296. // Parameters: none
  297. // Sent when the nav detects that a disc was ejected and stops the playback
  298. // The app does not need to take any action to stop the playback.
  299. //
  300. #define EC_DVD_DISC_INSERTED (EC_DVDBASE + 0x19)
  301. // Parameters: none
  302. // Sent when the nav detects that a disc was inserted and the nav begins playback
  303. // The app does not need to take any action to start the playback.
  304. //
  305. #define EC_DVD_CURRENT_HMSF_TIME (EC_DVDBASE + 0x1a)
  306. // Parameters: ( ULONG, ULONG )
  307. // lParam2 contains a union of the DVD_TIMECODE_FLAGS
  308. // lParam1 contains a DVD_HMSF_TIMECODE. Assign lParam1 to a ULONG then cast the
  309. // ULONG as a DVD_HMSF_TIMECODE to use its values.
  310. //
  311. // Raised from following domains: DVD_DOMAIN_Title
  312. //
  313. // Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec.
  314. #define EC_DVD_KARAOKE_MODE (EC_DVDBASE + 0x1b)
  315. // Parameters: ( BOOL, reserved )
  316. // lParam1 is either TRUE (a karaoke track is being played) or FALSE (no karaoke data is being played).
  317. //
  318. #endif // __DVDEVCOD__