avi_def.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:6k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __AVI_DEF_H
  2. #define __AVI_DEF_H
  3. #ifndef mmioFOURCC
  4. #define mmioFOURCC( ch0, ch1, ch2, ch3 )
  5. ( (UINT32)(BYTE)(ch0) | ( (UINT32)(BYTE)(ch1) << 8 ) |
  6. ( (UINT32)(BYTE)(ch2) << 16 ) | ( (UINT32)(BYTE)(ch3) << 24 ) )
  7. #endif
  8. #define RIFF_AVI 1
  9. #define RIFF_WAVE 2
  10. // file_play_state
  11. #define AVI_NORMAL_STATE 0
  12. #define FILE_DROPA_STATE (1<<0)
  13. #define FILE_DROPV_STATE (1<<1)
  14. // file_media_flag
  15. #define AVI_STRM_FLAG_NONE 0
  16. #define AVI_AUDIO (1<<0)
  17. #define AVI_VIDEO (1<<1)
  18. #define AVI_SUBPICTURE (1<<2)
  19. #define AVI_AUDIO_VBR (1<<4)
  20. #define AVI_AUDIO_UNSUPPORTED (1<<5)
  21. #define AVI_VIDEO_UNSUPPORTED (1<<6)
  22. #define AVI_AUDIO_WMA (1<<7)
  23. // avi_file_flag
  24. #define AVI_FILE_FLAG_NONE 0
  25. #define AVI_HDRL (1<<0)
  26. #define AVI_MOVI (1<<1)
  27. #define AVI_IDX1 (1<<2)
  28. #define AVI_DIVX_DRM (1<<3)
  29. #define AVI_FILE_MAND_MASK (AVI_HDRL|AVI_MOVI/*|AVI_IDX1*/)
  30. #define AVI_ERR_CNT_THRESHOLD 20
  31. #define AVI_CHK_SIZE_THRESHOLD (1024*1024)
  32. // FOURCCs
  33. // form types, list types, and chunk types
  34. #define FCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
  35. #define FCC_AVI mmioFOURCC('A', 'V', 'I', ' ')
  36. #define FCC_WAVE mmioFOURCC('W', 'A', 'V', 'E')
  37. #define FCC_AVIX mmioFOURCC('A', 'V', 'I', 'X')
  38. #define FCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
  39. #define FCC_movi mmioFOURCC('m', 'o', 'v', 'i')
  40. #define FCC_rec mmioFOURCC('r', 'e', 'c', ' ')
  41. #define FCC_CSET mmioFOURCC('C', 'S', 'E', 'T')
  42. #define FCC_hdrl mmioFOURCC('h', 'd', 'r', 'l')
  43. #define FCC_avih mmioFOURCC('a', 'v', 'i', 'h')
  44. #define FCC_strl mmioFOURCC('s', 't', 'r', 'l')
  45. #define FCC_strh mmioFOURCC('s', 't', 'r', 'h')
  46. #define FCC_strf mmioFOURCC('s', 't', 'r', 'f')
  47. #define FCC_strd mmioFOURCC('s', 't', 'r', 'd')
  48. #define FCC_strn mmioFOURCC('s', 't', 'r', 'n')
  49. #define FCC_indx mmioFOURCC('i', 'n', 'd', 'x')
  50. #define FCC_idx1 mmioFOURCC('i', 'd', 'x', '1')
  51. // Stream types for the <fccType> field of the stream header.
  52. #define FCC_vids mmioFOURCC('v', 'i', 'd', 's')
  53. #define FCC_auds mmioFOURCC('a', 'u', 'd', 's')
  54. #define FCC_mids mmioFOURCC('m', 'i', 'd', 's')
  55. #define FCC_txts mmioFOURCC('t', 'x', 't', 's')
  56. // codecs
  57. #define FCC_xxxx 0
  58. #define FCC_mjpg mmioFOURCC('m', 'j', 'p', 'g')
  59. #define FCC_MJPG mmioFOURCC('M', 'J', 'P', 'G')
  60. #define FCC_MSVC mmioFOURCC('M', 'S', 'V', 'C')
  61. #define FCC_divx mmioFOURCC('d', 'i', 'v', 'x')
  62. #define FCC_div3 mmioFOURCC('d', 'i', 'v', '3')
  63. #define FCC_div4 mmioFOURCC('d', 'i', 'v', '4')
  64. #define FCC_dx50 mmioFOURCC('d', 'x', '5', '0')
  65. #define FCC_DIVX mmioFOURCC('D', 'I', 'V', 'X')
  66. #define FCC_DIV3 mmioFOURCC('D', 'I', 'V', '3')
  67. #define FCC_DIV4 mmioFOURCC('D', 'I', 'V', '4')
  68. #define FCC_DX50 mmioFOURCC('D', 'X', '5', '0')
  69. #define FCC_xvid mmioFOURCC('x', 'v', 'i', 'd')
  70. #define FCC_XVID mmioFOURCC('X', 'V', 'I', 'D')
  71. #define FCC_rmp4 mmioFOURCC('r', 'm', 'p', '4')
  72. #define FCC_RMP4 mmioFOURCC('R', 'M', 'P', '4')
  73. #define FCC_mp4v mmioFOURCC('m', 'p', '4', 'v')
  74. #define FCC_3iv0 mmioFOURCC('3', 'i', 'v', '0')
  75. #define FCC_3iv1 mmioFOURCC('3', 'i', 'v', '1')
  76. #define FCC_3iv2 mmioFOURCC('3', 'i', 'v', '2')
  77. #define FCC_3ivx mmioFOURCC('3', 'i', 'v', 'x')
  78. #define FCC_MP43 mmioFOURCC('M', 'P', '4', '3')
  79. // type of compression
  80. #define FCC_Comp_divx mmioFOURCC('d', 'i', 'v', 'x')
  81. #define FCC_Comp_div3 mmioFOURCC('d', 'i', 'v', '3')
  82. #define FCC_Comp_div4 mmioFOURCC('d', 'i', 'v', '4')
  83. #define FCC_Comp_div5 mmioFOURCC('d', 'i', 'v', '5')
  84. #define FCC_Comp_div6 mmioFOURCC('d', 'i', 'v', '6')
  85. #define FCC_Comp_dx50 mmioFOURCC('d', 'x', '5', '0')
  86. #define FCC_Comp_DIVX mmioFOURCC('D', 'I', 'V', 'X')
  87. #define FCC_Comp_DIV3 mmioFOURCC('D', 'I', 'V', '3')
  88. #define FCC_Comp_DIV4 mmioFOURCC('D', 'I', 'V', '4')
  89. #define FCC_Comp_DIV5 mmioFOURCC('D', 'I', 'V', '5')
  90. #define FCC_Comp_DIV6 mmioFOURCC('D', 'I', 'V', '6')
  91. #define FCC_Comp_DX50 mmioFOURCC('D', 'X', '5', '0')
  92. #define FCC_Comp_xvid mmioFOURCC('x', 'v', 'i', 'd')
  93. #define FCC_Comp_XVID mmioFOURCC('X', 'V', 'I', 'D')
  94. #define FCC_Comp_rmp4 mmioFOURCC('r', 'm', 'p', '4')
  95. #define FCC_Comp_RMP4 mmioFOURCC('R', 'M', 'P', '4')
  96. #define FCC_Comp_3IV0 mmioFOURCC('3', 'I', 'V', '0')
  97. #define FCC_Comp_3IV1 mmioFOURCC('3', 'I', 'V', '1')
  98. #define FCC_Comp_3IV2 mmioFOURCC('3', 'I', 'V', '2')
  99. #define FCC_Comp_3IVX mmioFOURCC('3', 'I', 'V', 'X')
  100. // Basic data subchunk types
  101. #define FCC_xxdb mmioFOURCC('0', '0', 'd', 'b') // DIB bits
  102. #define FCC_xxdc mmioFOURCC('0', '0', 'd', 'c') // DIB compression
  103. #define FCC_xxdd mmioFOURCC('0', '0', 'd', 'd') // DRM key info for the video frame
  104. #define FCC_xxpc mmioFOURCC('0', '0', 'p', 'c') // palette change
  105. #define FCC_xxwb mmioFOURCC('0', '0', 'w', 'b') // waveform chunk
  106. #define FCC_xxst mmioFOURCC('0', '0', 's', 't') // subtitle (text mode)
  107. #define FCC_xxsb mmioFOURCC('0', '0', 's', 'b') // subtitle (bitmap mode)
  108. #define FCC_xxch mmioFOURCC('0', '0', 'c', 'h') // chapter
  109. // Chunk id to use for extra chunks for padding.
  110. #define FCC_JUNK mmioFOURCC('J', 'U', 'N', 'K')
  111. // main AVI header list flags
  112. #define AVIF_HASINDEX 0x00000010
  113. #define AVIF_MUSTUSEINDEX 0x00000020
  114. #define AVIF_ISINTERLEAVED 0x00000100
  115. #define AVIF_TRUSTCKTYPE 0x00000800
  116. #define AVIF_WASCAPTUREFILE 0x00010000
  117. #define AVIF_COPYRIGHTED 0x00020000
  118. // AVI stream header flags
  119. #define AVISF_DISABLED 0x00000001
  120. #define AVISF_VIDEO_PALCHANGES 0x00010000
  121. // AVI idx1 flags
  122. #define AVIIF_LIST 0x00000001L
  123. #define AVIIF_KEYFRAME 0x00000010L
  124. #define AVIIF_FIRSTPART
  125. #define AVIIF_LASTPART
  126. #define AVIIF_NOTIME 0x00000100L
  127. #define AVIIF_COMPUSE 0x0FFF0000L
  128. // AVI index type
  129. #define AVI_INDEX_OF_INDEXES 0x00 // when each entry in aIndex array points to an index chunk
  130. #define AVI_INDEX_OF_CHUNKS 0x01 // when each entry in aIndex array points to a chunk in the file
  131. #define AVI_INDEX_OF_TIMED_CHUNKS 0x02
  132. #define AVI_INDEX_OF_SUB_2FIELD 0x03
  133. #define AVI_INDEX_IS_DATA 0x80 // when each entry in aIndex is really the data
  134. // AVI index subtype
  135. #define AVI_INDEX_SUB_DEFAULT 0x00
  136. #define AVI_INDEX_2FIELD 0x01 // when fields within frames are also indexed
  137. // avi_video_type
  138. #define AVI_VIDEO_UNCOMPRESSED 0
  139. #define AVI_VIDEO_MJPEG 1
  140. #define AVI_VIDEO_DIVX 2
  141. #endif // __AVI_DEF_H