cdda2wav.h
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:4k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. /* @(#)cdda2wav.h 1.3 00/01/25 Copyright 1998,1999 Heiko Eissfeldt */
  2. /***
  3.  * CopyPolicy: GNU Public License 2 applies
  4.  * Copyright (C) by Heiko Eissfeldt
  5.  *
  6.  * prototypes from cdda2wav.c
  7.  */
  8. #ifdef max
  9. #undef max
  10. #endif
  11. #ifdef min
  12. #undef min
  13. #endif
  14. #define max(a,b) ((a) > (b) ? (a) : (b))
  15. #define min(a,b) ((a) < (b) ? (a) : (b))
  16. /* verbose levels */
  17. #define SHOW_TOC 1
  18. #define SHOW_SUMMARY 2
  19. #define SHOW_INDICES 4
  20. #define SHOW_MCN 8
  21. #define SHOW_ISRC 16
  22. #define SHOW_STARTPOSITIONS 32
  23. #define SHOW_TITLES 64
  24. #define SHOW_JUSTAUDIOTRACKS 128
  25. #define SHOW_MAX 255
  26. /* Endianess */
  27. #define GUESS (-2)
  28. #define NONE (-1)
  29. #define LITTLE 0
  30. #define BIG 1
  31. void FatalError __PR((const char *szMessage, ...));
  32. void AnalyzeQchannel __PR(( unsigned frame ));
  33. long SamplesNeeded __PR(( long amount, long undersampling));
  34. #if defined (sun) && !defined(SVR4)
  35. #define  atexit(f) on_exit(f, 0)
  36. #endif
  37. #ifndef _LINUX_CDROM_H
  38. #define _LINUX_CDROM_H
  39. /*
  40.  * some fix numbers
  41.  */
  42. #define CD_MINS             74 /* max. minutes per CD, not really a limit */
  43. #define CD_SECS             60 /* seconds per minute */
  44. #define CD_FRAMES           75 /* frames per second */
  45. #define CD_SYNC_SIZE        12 /* 12 sync bytes per raw data frame, not transfered by the drive */
  46. #define CD_HEAD_SIZE         4 /* header (address) bytes per raw data frame */
  47. #define CD_SUBHEAD_SIZE      8 /* subheader bytes per raw XA data frame */
  48. #define CD_XA_HEAD        (CD_HEAD_SIZE+CD_SUBHEAD_SIZE) /* "before data" part of raw XA frame */
  49. #define CD_XA_SYNC_HEAD   (CD_SYNC_SIZE+CD_XA_HEAD)/* sync bytes + header of XA frame */
  50. #define CD_FRAMESIZE      2048 /* bytes per frame, "cooked" mode */
  51. #define CD_FRAMESIZE_RAW  2352 /* bytes per frame, "raw" mode */
  52. /* most drives don't deliver everything: */
  53. #define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE) /* 2340 */
  54. #define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE) /* 2336 */
  55. /* Optics drive also has a 'read all' mode: */
  56. #define CD_FRAMESIZE_RAWER 2646 /* bytes per frame */
  57. #define CD_EDC_SIZE         4 /* bytes EDC per most raw data frame types */
  58. #define CD_ZERO_SIZE        8 /* bytes zero per yellow book mode 1 frame */
  59. #define CD_ECC_SIZE       276 /* bytes ECC per most raw data frame types */
  60. #define CD_XA_TAIL        (CD_EDC_SIZE+CD_ECC_SIZE) /* "after data" part of raw XA frame */
  61. #define CD_FRAMESIZE_SUB    96 /* subchannel data "frame" size */
  62. #define CD_MSF_OFFSET      150 /* MSF numbering offset of first frame */
  63. #define CD_CHUNK_SIZE       24 /* lowest-level "data bytes piece" */
  64. #define CD_NUM_OF_CHUNKS    98 /* chunks per frame */
  65. #define CD_FRAMESIZE_XA CD_FRAMESIZE_RAW1 /* obsolete name */
  66. #define CD_BLOCK_OFFSET    CD_MSF_OFFSET /* obsolete name */
  67. /*
  68.  * the raw frame layout:
  69.  *
  70.  * - audio (red):                  | audio_sample_bytes |
  71.  *                                 |        2352        |
  72.  *
  73.  * - data (yellow, mode1):         | sync - head - data - EDC - zero - ECC |
  74.  *                                 |  12  -   4  - 2048 -  4  -   8  - 276 |
  75.  *
  76.  * - data (yellow, mode2):         | sync - head - data |
  77.  *                                 |  12  -   4  - 2336 |
  78.  *
  79.  * - XA data (green, mode2 form1): | sync - head - sub - data - EDC - ECC |
  80.  *                                 |  12  -   4  -  8  - 2048 -  4  - 276 |
  81.  *
  82.  * - XA data (green, mode2 form2): | sync - head - sub - data - EDC |
  83.  *                                 |  12  -   4  -  8  - 2324 -  4  |
  84.  */
  85. /*
  86.  * CD-ROM address types (cdrom_tocentry.cdte_format)
  87.  */
  88. #if !defined CDROM_LBA
  89. #define CDROM_LBA 0x01 /* "logical block": first frame is #0 */
  90. #define CDROM_MSF 0x02 /* "minute-second-frame": binary, not bcd here! */
  91. #endif
  92. /*
  93.  * bit to tell whether track is data or audio (cdrom_tocentry.cdte_ctrl)
  94.  */
  95. #define CDROM_DATA_TRACK 0x04
  96. /*
  97.  * The leadout track is always 0xAA, regardless of # of tracks on disc
  98.  */
  99. #define CDROM_LEADOUT 0xAA
  100. /*
  101.  * audio states (from SCSI-2, but seen with other drives, too)
  102.  */
  103. #define CDROM_AUDIO_INVALID 0x00 /* audio status not supported */
  104. #define CDROM_AUDIO_PLAY 0x11 /* audio play operation in progress */
  105. #define CDROM_AUDIO_PAUSED 0x12 /* audio play operation paused */
  106. #define CDROM_AUDIO_COMPLETED 0x13 /* audio play successfully completed */
  107. #define CDROM_AUDIO_ERROR 0x14 /* audio play stopped due to error */
  108. #define CDROM_AUDIO_NO_STATUS 0x15 /* no current audio status to return */
  109. #ifdef FIVETWELVE
  110. #define CDROM_MODE1_SIZE 512
  111. #else
  112. #define CDROM_MODE1_SIZE 2048
  113. #endif /*FIVETWELVE*/
  114. #define CDROM_MODE2_SIZE 2336
  115. #endif