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.
 
 
 
 
 
 

148 line
3.3 KiB

  1. /*
  2. * cd.h -- cd structure
  3. *
  4. * Copyright (C) 2004 Svend Sorensen
  5. * For license terms, see the file COPYING in this distribution.
  6. */
  7. /* references: MMC-3 draft revsion - 10g */
  8. #ifndef CD_H
  9. #define CD_H
  10. #include "cdtext.h"
  11. #define MAXTRACK 99 /* Red Book track limit */
  12. #define MAXINDEX 99 /* Red Book index limit */
  13. /*
  14. * disc modes
  15. * DATA FORM OF MAIN DATA (5.29.2.8)
  16. */
  17. enum DiscMode {
  18. MODE_CD_DA, /* CD-DA */
  19. MODE_CD_ROM, /* CD-ROM mode 1 */
  20. MODE_CD_ROM_XA /* CD-ROM XA and CD-I */
  21. };
  22. /*
  23. * track modes
  24. * 5.29.2.8 DATA FORM OF MAIN DATA
  25. * Table 350 - Data Block Type Codes
  26. */
  27. enum TrackMode {
  28. MODE_AUDIO, /* 2352 byte block length */
  29. MODE_MODE1, /* 2048 byte block length */
  30. MODE_MODE1_RAW, /* 2352 byte block length */
  31. MODE_MODE2, /* 2336 byte block length */
  32. MODE_MODE2_FORM1, /* 2048 byte block length */
  33. MODE_MODE2_FORM2, /* 2324 byte block length */
  34. MODE_MODE2_FORM_MIX, /* 2332 byte block length */
  35. MODE_MODE2_RAW /* 2352 byte block length */
  36. };
  37. /*
  38. * sub-channel mode
  39. * 5.29.2.13 Data Form of Sub-channel
  40. * NOTE: not sure if this applies to cue files
  41. */
  42. enum TrackSubMode {
  43. SUB_MODE_RW, /* RAW Data */
  44. SUB_MODE_RW_RAW /* PACK DATA (written R-W */
  45. };
  46. /*
  47. * track flags
  48. * Q Sub-channel Control Field (4.2.3.3, 5.29.2.2)
  49. */
  50. enum TrackFlag {
  51. FLAG_NONE =0x00, /* no flags set */
  52. FLAG_PRE_EMPHASIS =0x01, /* audio recorded with pre-emphasis */
  53. FLAG_COPY_PERMITTED =0x02, /* digital copy permitted */
  54. FLAG_DATA =0x04, /* data track */
  55. FLAG_FOUR_CHANNEL =0x08, /* 4 audio channels */
  56. FLAG_SCMS =0x10, /* SCMS (not Q Sub-ch.) (5.29.2.7) */
  57. FLAG_ANY =0xff /* any flags set */
  58. };
  59. enum DataType {
  60. DATA_AUDIO,
  61. DATA_DATA,
  62. DATA_FIFO,
  63. DATA_ZERO
  64. };
  65. typedef struct Cd Cd;
  66. typedef struct Track Track;
  67. Cd *cd_init ();
  68. void cd_dump (Cd *cd);
  69. /*
  70. * Cd functions
  71. */
  72. void cd_set_mode (Cd *cd, int mode);
  73. int cd_get_mode (Cd *cd);
  74. void cd_set_catalog (Cd *cd, char *catalog);
  75. char *cd_get_catalog (Cd *cd);
  76. /*
  77. * return pointer to cd's Cdtext
  78. */
  79. Cdtext *cd_get_cdtext (Cd *cd);
  80. /*
  81. * add a new track to cd, increment number of tracks
  82. * and return pointer to new track
  83. */
  84. Track *cd_add_track (Cd *cd);
  85. /*
  86. * return number of tracks in cd
  87. */
  88. int cd_get_ntrack (Cd *cd);
  89. Track *cd_get_track (Cd *cd, int i);
  90. /*
  91. * Track functions
  92. */
  93. void track_set_filename (Track *track, char *filename);
  94. char *track_get_filename (Track *track);
  95. void track_set_start (Track *track, long start);
  96. long track_get_start (Track *track);
  97. void track_set_length (Track *track, long length);
  98. long track_get_length (Track *track);
  99. void track_set_mode (Track *track, int mode);
  100. int track_get_mode (Track *track);
  101. void track_set_sub_mode (Track *track, int sub_mode);
  102. int track_get_sub_mode (Track *track);
  103. void track_set_flag (Track *track, int flag);
  104. void track_clear_flag (Track *track, int flag);
  105. int track_is_set_flag (Track *track, int flag);
  106. void track_set_zero_pre (Track *track, long length);
  107. long track_get_zero_pre (Track *track);
  108. void track_set_zero_post (Track *track, long length);
  109. long track_get_zero_post (Track *track);
  110. void track_set_isrc (Track *track, char *isrc);
  111. char *track_get_isrc (Track *track);
  112. Cdtext *track_get_cdtext (Track *track);
  113. void track_add_index (Track *track, long index);
  114. int track_get_nindex (Track *track);
  115. long track_get_index (Track *track, int i);
  116. #endif