sound2dhandle.cpp 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. /*
  2. ** Command & Conquer Renegade(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /***********************************************************************************************
  19. *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
  20. ***********************************************************************************************
  21. * *
  22. * Project Name : wwaudio *
  23. * *
  24. * $Archive:: /Commando/Code/WWAudio/sound2dhandle.cpp $*
  25. * *
  26. * Author:: Patrick Smith *
  27. * *
  28. * $Modtime:: 10/31/01 3:02p $*
  29. * *
  30. * $Revision:: 3 $*
  31. * *
  32. *---------------------------------------------------------------------------------------------*
  33. * Functions: *
  34. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
  35. #include "sound2dhandle.h"
  36. #include "audiblesound.h"
  37. #include "wwprofile.h"
  38. //////////////////////////////////////////////////////////////////////
  39. //
  40. // Sound2DHandleClass
  41. //
  42. //////////////////////////////////////////////////////////////////////
  43. Sound2DHandleClass::Sound2DHandleClass (void) :
  44. SampleHandle ((HSAMPLE)INVALID_MILES_HANDLE)
  45. {
  46. return ;
  47. }
  48. //////////////////////////////////////////////////////////////////////
  49. //
  50. // ~Sound2DHandleClass
  51. //
  52. //////////////////////////////////////////////////////////////////////
  53. Sound2DHandleClass::~Sound2DHandleClass (void)
  54. {
  55. return ;
  56. }
  57. //////////////////////////////////////////////////////////////////////
  58. //
  59. // Initialize
  60. //
  61. //////////////////////////////////////////////////////////////////////
  62. void
  63. Sound2DHandleClass::Initialize (SoundBufferClass *buffer)
  64. {
  65. WWPROFILE ("Sound2DHandleClass::Initialize");
  66. SoundHandleClass::Initialize (buffer);
  67. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  68. //
  69. // Make sure this handle is fresh
  70. //
  71. ::AIL_init_sample (SampleHandle);
  72. //
  73. // Pass the actual sound data onto the sample
  74. //
  75. if (Buffer != NULL) {
  76. ::AIL_set_named_sample_file (SampleHandle, (char *)Buffer->Get_Filename (),
  77. Buffer->Get_Raw_Buffer (), Buffer->Get_Raw_Length (), 0);
  78. }
  79. }
  80. return ;
  81. }
  82. //////////////////////////////////////////////////////////////////////
  83. //
  84. // Start_Sample
  85. //
  86. //////////////////////////////////////////////////////////////////////
  87. void
  88. Sound2DHandleClass::Start_Sample (void)
  89. {
  90. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  91. ::AIL_start_sample (SampleHandle);
  92. }
  93. return ;
  94. }
  95. //////////////////////////////////////////////////////////////////////
  96. //
  97. // Stop_Sample
  98. //
  99. //////////////////////////////////////////////////////////////////////
  100. void
  101. Sound2DHandleClass::Stop_Sample (void)
  102. {
  103. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  104. ::AIL_stop_sample (SampleHandle);
  105. }
  106. return ;
  107. }
  108. //////////////////////////////////////////////////////////////////////
  109. //
  110. // Resume_Sample
  111. //
  112. //////////////////////////////////////////////////////////////////////
  113. void
  114. Sound2DHandleClass::Resume_Sample (void)
  115. {
  116. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  117. ::AIL_resume_sample (SampleHandle);
  118. }
  119. return ;
  120. }
  121. //////////////////////////////////////////////////////////////////////
  122. //
  123. // End_Sample
  124. //
  125. //////////////////////////////////////////////////////////////////////
  126. void
  127. Sound2DHandleClass::End_Sample (void)
  128. {
  129. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  130. ::AIL_end_sample (SampleHandle);
  131. }
  132. return ;
  133. }
  134. //////////////////////////////////////////////////////////////////////
  135. //
  136. // Set_Sample_Pan
  137. //
  138. //////////////////////////////////////////////////////////////////////
  139. void
  140. Sound2DHandleClass::Set_Sample_Pan (S32 pan)
  141. {
  142. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  143. ::AIL_set_sample_pan (SampleHandle, pan);
  144. }
  145. return ;
  146. }
  147. //////////////////////////////////////////////////////////////////////
  148. //
  149. // Get_Sample_Pan
  150. //
  151. //////////////////////////////////////////////////////////////////////
  152. S32
  153. Sound2DHandleClass::Get_Sample_Pan (void)
  154. {
  155. S32 retval = 0;
  156. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  157. retval = ::AIL_sample_pan (SampleHandle);
  158. }
  159. return retval;
  160. }
  161. //////////////////////////////////////////////////////////////////////
  162. //
  163. // Set_Sample_Volume
  164. //
  165. //////////////////////////////////////////////////////////////////////
  166. void
  167. Sound2DHandleClass::Set_Sample_Volume (S32 volume)
  168. {
  169. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  170. ::AIL_set_sample_volume (SampleHandle, volume);
  171. }
  172. return ;
  173. }
  174. //////////////////////////////////////////////////////////////////////
  175. //
  176. // Get_Sample_Volume
  177. //
  178. //////////////////////////////////////////////////////////////////////
  179. S32
  180. Sound2DHandleClass::Get_Sample_Volume (void)
  181. {
  182. S32 retval = 0;
  183. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  184. retval = ::AIL_sample_volume (SampleHandle);
  185. }
  186. return retval;
  187. }
  188. //////////////////////////////////////////////////////////////////////
  189. //
  190. // Set_Sample_Loop_Count
  191. //
  192. //////////////////////////////////////////////////////////////////////
  193. void
  194. Sound2DHandleClass::Set_Sample_Loop_Count (U32 count)
  195. {
  196. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  197. ::AIL_set_sample_loop_count (SampleHandle, count);
  198. }
  199. return ;
  200. }
  201. //////////////////////////////////////////////////////////////////////
  202. //
  203. // Get_Sample_Loop_Count
  204. //
  205. //////////////////////////////////////////////////////////////////////
  206. U32
  207. Sound2DHandleClass::Get_Sample_Loop_Count (void)
  208. {
  209. U32 retval = 0;
  210. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  211. retval = ::AIL_sample_loop_count (SampleHandle);
  212. }
  213. return retval;
  214. }
  215. //////////////////////////////////////////////////////////////////////
  216. //
  217. // Set_Sample_MS_Position
  218. //
  219. //////////////////////////////////////////////////////////////////////
  220. void
  221. Sound2DHandleClass::Set_Sample_MS_Position (U32 ms)
  222. {
  223. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  224. ::AIL_set_sample_ms_position (SampleHandle, ms);
  225. }
  226. return ;
  227. }
  228. //////////////////////////////////////////////////////////////////////
  229. //
  230. // Get_Sample_MS_Position
  231. //
  232. //////////////////////////////////////////////////////////////////////
  233. void
  234. Sound2DHandleClass::Get_Sample_MS_Position (S32 *len, S32 *pos)
  235. {
  236. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  237. ::AIL_sample_ms_position (SampleHandle, len, pos);
  238. }
  239. return ;
  240. }
  241. //////////////////////////////////////////////////////////////////////
  242. //
  243. // Set_Sample_User_Data
  244. //
  245. //////////////////////////////////////////////////////////////////////
  246. void
  247. Sound2DHandleClass::Set_Sample_User_Data (S32 i, U32 val)
  248. {
  249. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  250. ::AIL_set_sample_user_data (SampleHandle, i, val);
  251. }
  252. return ;
  253. }
  254. //////////////////////////////////////////////////////////////////////
  255. //
  256. // Get_Sample_User_Data
  257. //
  258. //////////////////////////////////////////////////////////////////////
  259. U32
  260. Sound2DHandleClass::Get_Sample_User_Data (S32 i)
  261. {
  262. U32 retval = 0;
  263. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  264. retval = ::AIL_sample_user_data (SampleHandle, i);
  265. }
  266. return retval;
  267. }
  268. //////////////////////////////////////////////////////////////////////
  269. //
  270. // Get_Sample_Playback_Rate
  271. //
  272. //////////////////////////////////////////////////////////////////////
  273. S32
  274. Sound2DHandleClass::Get_Sample_Playback_Rate (void)
  275. {
  276. S32 retval = 0;
  277. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  278. retval = ::AIL_sample_playback_rate (SampleHandle);
  279. }
  280. return retval;
  281. }
  282. //////////////////////////////////////////////////////////////////////
  283. //
  284. // Set_Sample_Playback_Rate
  285. //
  286. //////////////////////////////////////////////////////////////////////
  287. void
  288. Sound2DHandleClass::Set_Sample_Playback_Rate (S32 rate)
  289. {
  290. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  291. ::AIL_set_sample_playback_rate (SampleHandle, rate);
  292. }
  293. return ;
  294. }
  295. //////////////////////////////////////////////////////////////////////
  296. //
  297. // Set_Miles_Handle
  298. //
  299. //////////////////////////////////////////////////////////////////////
  300. void
  301. Sound2DHandleClass::Set_Miles_Handle (uint32 handle)
  302. {
  303. SampleHandle = (HSAMPLE)handle;
  304. return ;
  305. }