DVDPlayerAPI.h
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:12k
源码类别:

DVD

开发平台:

Unix_Linux

  1. /*************************************************************/
  2. /*  DVDPlayerAPI.h - Linux DVD Player Application Interface  */
  3. /*    in accordance with Annex J of the DVD specifications   */
  4. /*    Written 1999/07/28 by Christian Wolff of               */
  5. /*    convergence integrated media GmbH, Berlin              */
  6. /*************************************************************/
  7. // As of 07/September/1999
  8. #ifndef _DVD_PLAYER_API_H_
  9. #define _DVD_PLAYER_API_H_
  10. #define DVD_PLAYER_API_VERSION 1
  11. #define Time2TimeCode(hour,min,sec,frame,rate) (
  12.   ((((hour) /10)<<28)|(((hour) %10)<<24)&0xFF000000L)|
  13.   ((((min)  /10)<<20)|(((min)  %10)<<16)&0x00FF0000L)|
  14.   ((((sec)  /10)<<12)|(((sec)  %10)<<8 )&0x0000FF00L)|
  15.   ((((frame)/10)<<4 )|( (frame)%10)     &0x0000003FL)|
  16.   (((rate)<<6)&0x000000C0L)
  17. )
  18. #define TimeCode2Time(bcdtime,hour,min,sec,frame,rate) {
  19.   hour =((bcdtime>>28)&0x0F)*10+((bcdtime>>24)&0x0F);
  20.   min  =((bcdtime>>20)&0x0F)*10+((bcdtime>>16)&0x0F);
  21.   sec  =((bcdtime>>12)&0x0F)*10+((bcdtime>>8 )&0x0F);
  22.   frame=((bcdtime>>4 )&0x03)*10+( bcdtime     &0x0F);
  23.   rate = (bcdtime>>6 )&0x03; /* 1=25fps, 3=30fps */
  24. }
  25. typedef enum DVDDomain {
  26.   DVDDomainVideoManagerMenu=0x01,
  27.   DVDDomainFirstPlay=0x02,
  28.   DVDDomainVideoTitleSetMenu=0x04,
  29.   DVDDomainTitle=0x08,
  30.   DVDDomainStop=0x10
  31. } DVDDomainID;
  32.      
  33. typedef enum MenuCall {
  34.   MenuIDNone=0,
  35.   MenuIDTitle=2,
  36.   MenuIDRoot=3,
  37.   MenuIDSubPicture=4,
  38.   MenuIDAudio=5,
  39.   MenuIDAngle=6,
  40.   MenuIDPart=7
  41. } MenuCallID;
  42. #define DVD_PLAYER_OK 0              /* Successful */
  43. #define DVD_PLAYER_ERROR 1           /* Unknown or general error */
  44. #define DVD_PLAYER_INVALID 2         /* Invalid parameter */
  45. #define DVD_PLAYER_NOT_AVAILABLE 3   /* Feature or function not available */
  46. #define DVD_PLAYER_WRONG_DOMAIN 4    /* Player is in wrong state for this command */
  47. #define DVD_PLAYER_NOT_FOUND 5       /* Device, path, or file not found */
  48. /* Command functions */
  49. /* Play the specified title of the DVD */
  50. /*   Title:  1..99 */
  51. int TitlePlay(int Title);
  52. /* Play the specified title of the DVD, 
  53.    from the specified part on */
  54. /*   Title:  1..99 */
  55. /*   Part:   1..999 */
  56. int PartPlay(int Title, int Part);
  57. /* Play the specified amount of parts 
  58.    of the specified title of the DVD, 
  59.    from the specified part on */
  60. /*   Title:  1..99 */
  61. /*   Part:   1..999 */
  62. /*   PartsToPlay:   1..999 */
  63. int PartPlayAutoStop(int Title, int Part, int PartsToPlay);
  64. /* Play the specified title of the DVD, 
  65.    from the specified time on */
  66. /*   Title:  1..99 */
  67. /*   Time: hours, minutes, seconds, and frames */
  68. int TimePlay(int Title, unsigned long int TimeCode);
  69. /* Stop playing current title */
  70. int Stop(void);
  71. /* Stop playing current title and 
  72.    play the "GoUp"-program chain */
  73. int GoUp(void);
  74. /* Stop playing current title and 
  75.    play current title from the specified timecode on */
  76. int TimeSearch(unsigned long int TimeCode);
  77. /* Stop playing current title and 
  78.    play current title from the specified part on */
  79. /*   Part:   1..999 */
  80. int PartSearch(int Part);
  81. /* Stop playing current title and 
  82.    play current title from the previous program on */
  83. int PrevPGSearch(void);
  84. /* Stop playing current title and 
  85.    play current title from the first program on */
  86. int TopPGSearch(void);
  87. /* Stop playing current title and 
  88.    play current title from the next program on */
  89. int NextPGSearch(void);
  90. /* Scan play forward at specified speed */
  91. /*   0 < speed < 1 : slow motion
  92.      speed > 1 : fast forward play */
  93. int ForwardScan(float Speed);
  94. /* Scan play backward at specified speed */
  95. /*   0 < speed < 1 : slow motion
  96.      speed > 1 : fast reverse play */
  97. int BackwardScan(float Speed);
  98. /* proposal: 
  99.    make the function to accept negative values 
  100.    for backward scan - more nifty ;-) */
  101. #define ScanPlay(Speed) ((Speed<0)?BackwardScan(-1*Speed):ForwardScan(Speed))
  102. /* Call specified Menu */
  103. /*   MenuIDTitle:      call title menu
  104.      MenuIDRoot:       call root menu
  105.      MenuIDAudio:      call audio menu
  106.      MenuIDSubPicture: call sub picture menu
  107.      MenuIDAngle:      call angle menu
  108.      MenuIDPart:       call title part menu */
  109. int MenuCall(MenuCallID MenuID);
  110. /* End menu mode*/
  111. int Resume(void);
  112. /* Menu action of user arrow keys, 
  113.    moving highlight to next button */
  114. int UpperButtonSelect(void);
  115. int LowerButtonSelect(void);
  116. int LeftButtonSelect(void);
  117. int RightButtonSelect(void);
  118. /* Activate (press) highlighted button */
  119. int ButtonActivate(void);
  120. /* Activate (press) specified button */
  121. /*   Button: 1..36 */
  122. int ButtonSelectAndActivate(int Button);
  123. /* Select button at specified coordinates */
  124. int MouseSelect(int x, int y);
  125. /* Activate (press) button at specified coordinates */
  126. int MouseActivate(int x, int y);
  127. /* Release still mode */
  128. int StillOff(void);
  129. /* Enter pause mode and display still frame*/
  130. int PauseOn(void);
  131. /* Release pause mode */
  132. int PauseOff(void);
  133. /* Set specified language for the menus */
  134. /*   LanguageCode: 2 characters ISO 639 Language Code */
  135. int MenuLanguageSelect(char *LanguageCode);
  136. /* Select specified audio stream */
  137. /*   Audio: 0..7 */
  138. int AudioStreamChange(int Audio);
  139. /* Select specified sub picture stream and
  140.    set if sub picture should be displayed or not*/
  141. /*   Subpicture: 0..31 or 63 (dummy stream) */
  142. /*   Display: 0 or 1 */
  143. int SubpictureStreamChange(int Subpicture, int Display);
  144. /* Select specified angle */
  145. /*   Angle: 1..9 */
  146. int AngleChange(int Angle);
  147. /* Set the level of the parental management system */
  148. /*   ParentalLevel: 0 (disabled) or 1..8 */
  149. int ParentalLevelSelect(int ParentalLevel);
  150. /* Set the country of the parental management system */
  151. /*   CountryCode: 2 characters ISO 3166 Alpha 2 Country Code*/
  152. int ParentalCountrySelect(char *CountryCode);
  153. /*   MixMode: bitmap to set source to mix into left/right channel
  154.      Bit 2:  0=don't mix, 1=mix Ch2 to Ch1 (Melody? to Right?)
  155.      Bit 3:  0=don't mix, 1=mix Ch3 to Ch1 (Voice 1? to Right?)
  156.      Bit 4:  0=don't mix, 1=mix Ch4 to Ch1 (Voice 2? to Right?)
  157.      Bit 10: 0=don't mix, 1=mix Ch2 to Ch0 (Melody? to Left?)
  158.      Bit 11: 0=don't mix, 1=mix Ch3 to Ch0 (Voice 1? to Left?)
  159.      Bit 12: 0=don't mix, 1=mix Ch4 to Ch0 (Voice 2? to Left?) */
  160. int KaraokeAudioPresentationModeChange(int MixMode);
  161. /* Set the Video display presentation mode */
  162. /*   InitialDisplay (...aspect ratio): 0=4:3, 1=not specified 3=16:9
  163.      CurrentDisplay (...mode): 0=Normal (4:3 or 16:9), 1=Pan-Scan, 2=Letterbox */
  164. int VideoPresentationModeChange(int InitialDisplay, int CurrentDisplay);
  165. /* Set the path to the UDF mounted DVD disc */
  166. int SetRoot(char *Path);
  167. /* Set the path to the device that displays the DVD data */
  168. /* This file has to accept the I/O-Controls defined in this */
  169. /* convergence DVD Device API http://linuxtv.org/dvd/api/   */
  170. int SetDevice(char *Path);
  171. /* Informational functions */
  172. /* retrieves content of GPRM[0] thru GPRM[15] in RegisterArray */
  173. /* see DVD-Video Specifications for format */
  174. int GetAllGPRMs(unsigned int *RegisterArray);
  175. /* retrieves content of SPRM[0] thru SPRM[20] in RegisterArray */
  176. /* see DVD-Video Specifications for format */
  177. int GetAllSPRMs(unsigned int *RegisterArray);
  178. /* retrieves 2 bytes video attributes of the current title */
  179. /* */ 
  180. int GetCurrentVideoAttributes(unsigned char *ATR);
  181. /* retrieves 3 characters in LanguageCode: 2 characters ISO 639 or 0xFFXX, */
  182. /* one character extension */
  183. int GetAudioLanguage(int Stream, char *LanguageCode);
  184. /* retrieves number of audio streams in this title and the currently selected one */ 
  185. int GetCurrentAudio(int *StreamsAvailable, int *CurrentStream);
  186. /* retrieves 8 bytes audio attributes of the current title */
  187. /* */ 
  188. int GetCurrentAudioAttributes(unsigned char *ATR);
  189. /* retrieves number of audio streams in this title and the currently selected one */ 
  190. /* IsDisabled is set to 1 if display of stream is disabled, otherwise to 0 */
  191. int GetCurrentSubpicture(int *StreamsAvailable, int *CurrentStream, int *IsDisabled);
  192. /* retrieves 6 bytes sub-picture attributes of the current title */
  193. /* */ 
  194. int GetCurrentSubpictureAttributes(unsigned char *ATR);
  195. /* retrieves 3 characters in LanguageCode: */
  196. /* 2 characters ISO 639 or 0xFFXX, */
  197. /* one character extension */
  198. int GetSubpictureLanguage(int Stream, char *LanguageCode);
  199. /* retrieves number of angles in this title and the currently selected one */ 
  200. int GetCurrentAngle(int *AnglesAvailable, int *CurrentAngle);
  201. /* retrieves number of buttons in this section and the currently selected one */ 
  202. int GetCurrentButton(int *ButtonsAvailable, int *CurrentButton);
  203. /* retrieves the current domain the player is in */
  204. int GetCurrentDomain(DVDDomainID *Domain);
  205. /* retrieves current title and part number, as well as timecode of current play location */
  206. /* TimeCode: hours, minutes, seconds, and frames
  207.    bit 31-24 contain the hour value as 2 digit BCD,
  208.    bit 23-16 contain the minute value as 2 digit BCD,
  209.    bit 15-8 contain the second value as 2 digit BCD,
  210.    bit 5-0 contain the frame value as 1.5 digit BCD,
  211.    bit 7-6 contain the frame rate: 01=25fps, 11=30fps */
  212. int GetCurrentLocation(int *TitleNum, int *PartNum, unsigned long int *TimeCode);
  213. /* retrieves bit table of prohibited user operations */
  214. /* if a bit is set, the corresponding action is prohibited */
  215. /* Bit: Flag:
  216.     0   Title Or Time Play
  217.     1   Part Search Or Play
  218.     2   Title Play
  219.     3   Stop
  220.     4   GoUp
  221.     5   Time Or Part Search
  222.     6   Prev Or Top PG Search
  223.     7   Next PG Search
  224.     8   Forward Scan
  225.     9   Backward Scan
  226.    10   Title Menu Call
  227.    11   Root Menu Call
  228.    12   SubPic Menu Call
  229.    13   Audio Menu Call
  230.    14   Angle Menu Call
  231.    15   Part Menu Call
  232.    16   Resume
  233.    17   Button Select Or Activate
  234.    18   Still Off
  235.    19   Pause On
  236.    20   Audio Stream Change
  237.    21   SubPic Stream Change
  238.    22   Angle Change
  239.    23   Karaoke Audio Pres Mode Change
  240.    24   Video Pres Mode Change */
  241. int GetCurrentUOPS(unsigned long int *UOP);
  242. /* retrieves information about the currently inserted disc */
  243. /* NumOfVol: Total number of volumes in this volume set */
  244. /* ThisVolNum: Volume number of this disc */
  245. /* Side: 1=Side A, 2=Side B */
  246. /* NumOfTitles: number of titles on this disc */
  247. int GetCurrentVolumeInfo(int *NumOfVol, int *ThisVolNum, int *Side, int *NumOfTitles);
  248. /* retreives the txtdt_mg structure of the disc. */
  249. /* if the buffersize, indicated by BufSize, is too small, DVD_PLAYER_INVALID is returned 
  250.    and the required amount of bytes is put into ActualSize */
  251. int GetDVDTextInfo(char *TextManager, int BufSize, int *ActualSize);
  252. /* retrieves the number of Parts of a specified title */
  253. /* Title: 1..99 */
  254. int GetNumberOfParts(int Title, int *NumberOfParts);
  255. /* retrieves the parental settings of the player */
  256. /* ParentalLevel: parental level the player is set to */
  257. /* CountryCode: 2 bytes ISO 639 country code of the player, or 0xFFFF if not set */
  258. int GetPlayerParentalLevel(unsigned int *ParentalLevel, unsigned int *CountryCode);
  259. /* retrieves the combined parental settings of the title */
  260. /* Title: 1..99 */
  261. int GetTitleParentalLevels(int Title, unsigned int *ParentalLevels);
  262. /* retreives 768 bytes (256 trough 1023) of the VMGI_MAT of the current disc */
  263. /* see DVD-Video Specifications for format */
  264. int GetVMGAttributes(unsigned int *ATR);
  265. /* retreives 768 bytes (256 trough 1023) of the VTSI_MAT of the specified title */
  266. /* Title: -1 for current title, or 1..99 */
  267. /* see DVD-Video Specifications for format */
  268. int GetTitleAttributes(int Title, unsigned int *ATR);
  269. /* retreives playback time of the current title */
  270. /* TotalTime: hours, minutes, seconds, and frames
  271.    bit 31-24 contain the hour value as 2 digit BCD,
  272.    bit 23-16 contain the minute value as 2 digit BCD,
  273.    bit 15-8 contain the second value as 2 digit BCD,
  274.    bit 5-0 contain the frame value as 1.5 digit BCD,
  275.    bit 7-6 contain the frame rate: 01=25fps, 11=30fps */
  276. int GetTotalTitleTime(unsigned long int *TotalTime);
  277. /* retreives current path to the DVD disc */
  278. int GetRoot(char *Root, int BufSize, int *ActualSize);
  279. #endif  /* _DVD_PLAYER_API_H_ */