Wing Commander
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
streamer.cpp
Go to the documentation of this file.
1/**
2 * @file
3 * @ingroup ixlib
4 * @brief Streamer API and package management.
5 *
6 * Originally `D:\Rnd\Prj\ix\Src\Streamer\streamer.cpp`, address range
7 * 442750-443b0f. The assert paths identify the source; INT3 fill before the
8 * worker thread marks the object's end.
9 */
10#include "ix.h"
11#include <stdlib.h>
12
13#define IX_STREAMER_FILE "D:\\Rnd\\Prj\\ix\\Src\\Streamer\\streamer.cpp"
14
15/* Package and worker state. CL places uninitialized globals by identifier
16 * hash, so these spellings reproduce the original order. */
17unsigned int *pStreamerPacketOffsetTable; /* 0x00597BD0 */
18unsigned int dwStreamThreadTick; /* 0x00597BD4 */
19/* Nothing in the shipped executable references this word. */
20unsigned int dwUnusedStreamerWord; /* 0x00597BD8 */
21FILE *pStreamerPackFile; /* 0x00597BDC */
23unsigned int adwStreamCallStack[32]; /* 0x00597BE8 */
24unsigned char *pStreamerLzoBuffer; /* 0x00597C68 */
26unsigned int dwIxStreamerAudioBufferSize; /* 0x00597C70 */
27unsigned char *pIxStreamerInputBuffer; /* 0x00597C74 */
28unsigned char bStreamerIntensityLevel; /* 0x00597C78 */
29HANDLE hStreamThread; /* 0x00597C7C */
35CRITICAL_SECTION csStreamerFileList; /* 0x00597C98 */
36CRITICAL_SECTION csIxStreamerThread; /* 0x00597CB0 */
37unsigned int nStreamerAudioBlock; /* 0x00597CC8 */
38DWORD dwIxStreamerThreadId; /* 0x00597CCC */
39unsigned int dwIxStreamerStatus; /* 0x00597CD0 */
40HANDLE hStreamerWakeupEvent; /* 0x00597CD4 */
41unsigned int nIxStreamerCurrentFileChunk; /* 0x00597CD8 */
42unsigned int dwStreamBytesPerSecond; /* 0x00597CDC */
43CRITICAL_SECTION csStreamer; /* 0x00597CE0 */
45
46unsigned short nStreamerVolume = 0xffff; /* 0x00470E84 */
47char cStreamerBranchTag = -1; /* 0x00470E88 */
48unsigned int nStreamCallStackIndex = 0; /* 0x00470E8C */
49
50/* Function start: 0x00442750 */ /* source line(s) 60;63;75: Streamer already inited! | Failed to init DSP | Failed to start streamer_thread! */
51extern "C" int ix_streamer_init(void)
52{
54 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 60);
55 ix_log_printf("Streamer already inited!");
56 return -1;
57 }
58 if (ix_dsp_init() != 0) {
59 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 63);
60 ix_log_printf("Failed to init DSP");
61 return -1;
62 }
63 InitializeCriticalSection(&csStreamerFileList);
64 InitializeCriticalSection(&csStreamer);
65 InitializeCriticalSection(&csIxStreamerThread);
66 hStreamerWakeupEvent = CreateEventA(0, TRUE, FALSE, 0);
68 CreateThread(0, 0x1000, ix_streamer_thread_proc, 0, 0,
70 if (hStreamThread == 0) {
71 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 75);
72 ix_log_printf("Failed to start streamer_thread!");
73 exit(-1);
74 }
77 return 0;
78}
79
80/* Function start: 0x0044286F */ /* source line(s) 87: Streamer not ready for destroy */
81extern "C" void ix_streamer_destroy(void)
82{
84 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 87);
85 ix_log_printf("Streamer not ready for destroy");
86 return;
87 }
91 SetEvent(hStreamerWakeupEvent);
92 EnterCriticalSection(&csIxStreamerThread);
93 CloseHandle(hStreamerWakeupEvent);
94 DeleteCriticalSection(&csStreamerFileList);
95 DeleteCriticalSection(&csStreamer);
96 DeleteCriticalSection(&csIxStreamerThread);
99}
100
101/* Function start: 0x0044291E */
102extern "C" void ix_streamer_configure(int option, void *value)
103{
104 ix_dsp_configure(option, value);
105}
106
107/* Function start: 0x0044293E */ /* source line(s) 117: Can't change dev_mode while stream files are open! */
109{
110 if (pStreamIdleFiles != 0 ||
111 pStreamReadRequests != 0) {
112 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 117);
113 ix_log_printf("Can't change dev_mode while stream files are open!");
114 exit(-1);
115 }
116 if (mode != 0)
118 else
120}
121
122/* Function start: 0x004429B6 */ /* source line(s) 129;142;146;150;151;157;168;177;186;195;204;238;240: Streamer not ready to open stream file! | Failed to open stream file. | Streamer failed to */
123extern "C" int ix_streamer_open_stream_file(char *path)
124{
126 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 129);
127 ix_log_printf("Streamer not ready to open stream file!");
128 return -1;
129 }
134 nIxStreamerCurrentFileChunk = (unsigned int)-1;
137 if (pStreamerPackFile == 0) {
138 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 142);
139 ix_log_printf("Failed to open stream file.");
140 return -1;
141 }
144 if (pStreamerPackageInfo == 0) {
145 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 146);
146 ix_log_printf("Streamer failed to allocate.");
147 exit(-1);
148 }
151 if (pStreamerPackageInfo->id != *(unsigned int *)"STRM") {
152 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 150);
153 ix_log_printf("Invalid stream ID");
154 return -1;
155 }
156 if (pStreamerPackageInfo->version != 1) {
157 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 151);
158 ix_log_printf("Invalid stream version");
159 return -1;
160 }
163 pIxMalloc(
165 sizeof(IxStreamerAudioChunk));
166 if (pStreamedMusicAudioChunks == 0) {
167 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 157);
168 ix_log_printf("Streamer failed to allocate.");
169 exit(-1);
170 }
176 sizeof(IxStreamerAudioChunk));
178 }
182 sizeof(IxStreamerBranch));
183 if (pMusicStreamBranchList == 0) {
184 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 168);
185 ix_log_printf("Streamer failed to allocate.");
186 exit(-1);
187 }
193 sizeof(IxStreamerBranch));
194 }
198 sizeof(IxStreamerTrigger));
199 if (pStreamTriggerList == 0) {
200 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 177);
201 ix_log_printf("Streamer failed to allocate.");
202 exit(-1);
203 }
209 sizeof(IxStreamerTrigger));
210 }
213 pIxMalloc(
215 sizeof(IxStreamerFileEntry));
216 if (pStreamFileEntries == 0) {
217 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 186);
218 ix_log_printf("Streamer failed to allocate.");
219 exit(-1);
220 }
226 sizeof(IxStreamerFileEntry));
227 }
230 pIxMalloc(
232 sizeof(IxStreamerFileChunk));
233 if (pStreamFileBlocks == 0) {
234 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 195);
235 ix_log_printf("Streamer failed to allocate.");
236 exit(-1);
237 }
243 sizeof(IxStreamerFileChunk));
244 }
246 pStreamerPacketOffsetTable = (unsigned int *)
247 pIxMalloc(
249 sizeof(unsigned int));
251 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 204);
252 ix_log_printf("Streamer failed to allocate.");
253 exit(-1);
254 }
260 sizeof(unsigned int));
261 }
265 ix_dsp_configure(0x100,
276 }
277 pStreamerLzoBuffer = (unsigned char *)
279 if (pStreamerLzoBuffer == 0) {
280 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 238);
281 ix_log_printf("Failed to allocate file_buffer!");
282 exit(-1);
283 }
284 pIxStreamerInputBuffer = (unsigned char *)
286 if (pIxStreamerInputBuffer == 0) {
287 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 240);
288 ix_log_printf("Failed to allocate file_buffer!");
289 exit(-1);
290 }
292 SetEvent(hStreamerWakeupEvent);
293 return 0;
294}
295
296/* Function start: 0x0044307A */ /* source line(s) 250;251: Streamer not ready to open stream file! | Stream file not open! */
297extern "C" void ix_streamer_close_stream_file(void)
298{
299 IxStreamFile *streamFile;
300 IxStreamFile *previousFile;
301
303 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 250);
304 ix_log_printf("Streamer not ready to open stream file!");
305 return;
306 }
308 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 251);
309 ix_log_printf("Stream file not open!");
310 return;
311 }
312 streamFile = pStreamIdleFiles;
313 while (streamFile != 0) {
314 previousFile = streamFile->previous;
315 ix_streamer_close_file(streamFile);
316 streamFile = previousFile;
317 }
318 EnterCriticalSection(&csStreamer);
319 dwIxStreamerStatus &= 0xffffff91;
320 pIxFree(pStreamerPackageInfo);
322 pIxFree(pMusicStreamBranchList);
323 pIxFree(pStreamTriggerList);
324 pIxFree(pStreamFileEntries);
325 pIxFree(pStreamFileBlocks);
327 pIxFree(pStreamerLzoBuffer);
328 pIxFree(pIxStreamerInputBuffer);
329 ix_dsps_free(0);
331 LeaveCriticalSection(&csStreamer);
332 SetEvent(hStreamerWakeupEvent);
333}
334
335/* Function start: 0x004431F3 */ /* source line(s) 286: Stream has no audio */
336extern "C" void ix_streamer_audio_play(void)
337{
339 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 286);
340 ix_log_printf("Stream has no audio");
341 return;
342 }
345 SetEvent(hStreamerWakeupEvent);
346}
347
348/* Function start: 0x00443253 */ /* source line(s) 295: Stream has no audio */
349extern "C" void ix_streamer_audio_stop(void)
350{
352 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 295);
353 ix_log_printf("Stream has no audio");
354 return;
355 }
358 SetEvent(hStreamerWakeupEvent);
359}
360
361/* Function start: 0x004432B6 */ /* source line(s) 304: Stream has no audio */
363{
365 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 304);
366 ix_log_printf("Stream has no audio");
367 return;
368 }
370 SetEvent(hStreamerWakeupEvent);
371}
372
373/* Function start: 0x0044330F */ /* source line(s) 312: Stream has no audio */
375{
377 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 312);
378 ix_log_printf("Stream has no audio");
379 return;
380 }
382 SetEvent(hStreamerWakeupEvent);
383}
384
385/* Function start: 0x0044336B */
386extern "C" void ix_streamer_set_intensity(unsigned char intensity)
387{
388 if (intensity >= 0) {
389 bStreamerIntensityLevel = intensity < 100 ? intensity : 100;
390 } else {
392 }
393}
394
395/* Function start: 0x004433AC */
396unsigned char ix_streamer_get_intensity(void)
397{
399}
400
401/* Function start: 0x004433C1 */
402extern "C" void ix_streamer_set_trigger(char trigger)
403{
404 if (trigger == -1) {
406 } else {
407 if (trigger >= 0) {
409 trigger < 0x40 ? trigger : 0x40;
410 } else {
412 }
413 }
414}
415
416/* Function start: 0x00443419 */
417extern "C" char ix_streamer_get_trigger(void)
418{
419 return cStreamerBranchTag;
420}
421
422/* Function start: 0x0044342E */ /* source line(s) 342: Stream has no audio */
423extern "C" void ix_streamer_force_trigger(char trigger)
424{
425 unsigned int chunk;
426 unsigned int chunkCount;
427
429 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 342);
430 ix_log_printf("Stream has no audio");
431 return;
432 }
433 chunk = nStreamerAudioBlock;
435 EnterCriticalSection(&csStreamer);
436 while (-1 < trigger && chunkCount--) {
437 if (pStreamedMusicAudioChunks[chunk].triggerCount > 0) {
438 unsigned int triggerCount;
439 unsigned int triggerIndex;
440
441 triggerCount =
443 triggerIndex =
445 while (triggerCount--) {
446 if (pStreamTriggerList[triggerIndex].tag ==
447 trigger) {
452 (nStreamCallStackIndex + 1) & 0x1f;
455 triggerIndex].audioChunk;
456 trigger = -1;
457 break;
458 }
459 triggerIndex++;
460 }
461 }
462 chunk++;
463 if (pStreamerPackageInfo->audioChunkCount - 1 <= chunk)
464 chunk = 0;
465 }
467 ix_dsps_stop(0);
469 }
470 LeaveCriticalSection(&csStreamer);
471 SetEvent(hStreamerWakeupEvent);
472}
473
474/* Function start: 0x004435BE */
475extern "C" void ix_streamer_set_volume(unsigned short volume)
476{
477 if (volume >= 0) {
479 volume < 0xffff ? volume : 0xffff;
480 } else {
481 nStreamerVolume = 0;
482 }
483 if ((dwIxStreamerStatus & 2) != 0) {
484 EnterCriticalSection(&csStreamer);
486 LeaveCriticalSection(&csStreamer);
487 }
488}
489
490/* Function start: 0x0044363B */
491extern "C" unsigned short ix_streamer_get_volume(void)
492{
493 return nStreamerVolume;
494}
495
496/* Function start: 0x00443651 */
498{
499 return nStreamerAudioBlock;
500}
501
502/* Function start: 0x00443666 */
503void ix_streamer_seek_chunk(unsigned int chunk)
504{
505 EnterCriticalSection(&csStreamer);
506 if (chunk >= 0) {
510 : chunk;
511 } else {
513 }
514 LeaveCriticalSection(&csStreamer);
515}
516
517/* Function start: 0x004436C0 */
518unsigned int ix_streamer_hash_name(unsigned char *name)
519{
520 int position;
521 unsigned int character;
522 unsigned int hash;
523
524 position = 0;
525 character = *name++;
526 if (character >= 'a' && character <= 'z')
527 character -= 0x20;
528 hash = character << 8;
529 while ((character = *name++) != 0) {
530 if (character >= 'a' && character <= 'z')
531 character -= 0x20;
532 hash += (hash >> 4) * character;
533 hash += position;
534 position++;
535 }
536 return hash;
537}
538
539/* Function start: 0x00443755 */
541{
542 unsigned int lo;
543 unsigned int hi;
544 unsigned int mid;
545 IxStreamerFileEntry *entry;
546
547 lo = 0;
549 while (hi > lo) {
550 mid = (hi + lo) >> 1;
551 entry = &pStreamFileEntries[mid];
552 if (entry->nameHash < hash) {
553 lo = mid + 1;
554 } else if (entry->nameHash > hash) {
555 hi = mid;
556 } else {
557 return entry;
558 }
559 }
560 return 0;
561}
562
563/* Function start: 0x004437E3 */ /* source line(s) 512;526;535;549: open_file failed to allocate memory! | Failed to find_file in stream, %s! | open_file fail */
565 unsigned char priority)
566{
567 IxStreamFile *streamFile;
568 IxStreamerFileEntry *entry;
569 FILE *file;
570
571 streamFile = 0;
574 if (entry != 0) {
575 streamFile = (IxStreamFile *)
576 pIxMalloc(sizeof(IxStreamFile));
577 if (streamFile == 0) {
578 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 512);
579 ix_log_printf("open_file failed to allocate memory!");
580 exit(-1);
581 }
582 streamFile->flags = IX_STREAM_FILE_OPEN;
583 streamFile->entry = entry;
584 streamFile->priority = priority;
585 streamFile->position = 0;
586 streamFile->completionEvent = CreateEventA(0, TRUE, FALSE, 0);
587 streamFile->size = entry->size;
588 EnterCriticalSection(&csStreamerFileList);
589 streamFile->previous = pStreamIdleFiles;
590 streamFile->next = 0;
591 if (pStreamIdleFiles != 0)
592 pStreamIdleFiles->next = streamFile;
593 pStreamIdleFiles = streamFile;
594 LeaveCriticalSection(&csStreamerFileList);
595 } else {
596 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 526);
597 ix_log_printf("Failed to find_file in stream, %s!", name);
598 }
599 } else {
600 file = ix_file_open((char *)name, 1);
601 if (file != 0) {
602 streamFile = (IxStreamFile *)
603 pIxMalloc(sizeof(IxStreamFile));
604 if (streamFile == 0) {
605 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 535);
606 ix_log_printf("open_file failed to allocate memory!");
607 exit(-1);
608 }
609 streamFile->flags = IX_STREAM_FILE_OPEN;
610 streamFile->file = file;
611 streamFile->size = ix_file_size(file);
612 streamFile->priority = priority;
613 streamFile->position = 0;
614 streamFile->completionEvent = CreateEventA(0, TRUE, FALSE, 0);
615 EnterCriticalSection(&csStreamerFileList);
616 streamFile->previous = pStreamIdleFiles;
617 streamFile->next = 0;
618 if (pStreamIdleFiles != 0)
619 pStreamIdleFiles->next = streamFile;
620 pStreamIdleFiles = streamFile;
621 LeaveCriticalSection(&csStreamerFileList);
622 } else {
623 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 549);
624 ix_log_printf("Failed to find_file in stream, %s!", name);
625 }
626 }
627 return streamFile;
628}
629
630/* Function start: 0x00443A5D */
632{
633 streamFile->ix_stream_file_wait();
634 EnterCriticalSection(&csStreamerFileList);
635 if (streamFile->previous != 0)
636 streamFile->previous->next = streamFile->next;
637 if (streamFile->next == 0)
638 pStreamIdleFiles = streamFile->previous;
639 else
640 streamFile->next->previous = streamFile->previous;
641 LeaveCriticalSection(&csStreamerFileList);
643 ix_file_close(streamFile->file);
644 CloseHandle(streamFile->completionEvent);
645 pIxFree(streamFile);
646}
int ix_dsp_init(void)
Definition dsp.cpp:35
void ix_dsp_configure(int option, void *value)
Definition dsp.cpp:77
void ix_dsp_shutdown(void)
Definition dsp.cpp:58
void *__cdecl * pIxMalloc(unsigned int)
void ix_dsps_free(int stream)
Definition dsps.cpp:80
void ix_dsps_stop(int stream)
Definition dsps.cpp:153
void ix_dsps_alloc(int stream, unsigned int size, int freq, int bps, int channels)
Definition dsps.cpp:22
void ix_dsps_set_volume(int stream, unsigned short vol)
Definition dsps.cpp:175
unsigned int dwIxStreamerStatus
Definition ix.h:521
The library's classes and shared declarations.
unsigned int dwStreamBytesPerSecond
Definition streamer.cpp:42
CRITICAL_SECTION csStreamer
Definition streamer.cpp:43
@ IX_STREAM_FILE_OPEN
Definition ix.h:340
void ix_file_close(FILE *file)
Definition ixfile.cpp:44
unsigned int * pStreamerPacketOffsetTable
Definition streamer.cpp:17
DWORD dwIxStreamerThreadId
Definition streamer.cpp:38
void ix_streamer_close_file(IxStreamFile *streamFile)
Definition streamer.cpp:631
FILE * ix_file_open(const char *path, int mode)
Definition ixfile.cpp:30
unsigned int ix_streamer_get_audio_chunk(void)
Definition streamer.cpp:497
unsigned int ix_streamer_hash_name(unsigned char *name)
Definition streamer.cpp:518
IxStreamerFileEntry * ix_streamer_find_entry(unsigned int hash)
Definition streamer.cpp:540
IxStreamFile * pStreamIdleFiles
Definition streamer.cpp:22
IxStreamerAudioChunk * pStreamedMusicAudioChunks
Definition streamer.cpp:32
IxStreamerFileEntry * pStreamFileEntries
Definition streamer.cpp:30
void ix_streamer_audio_reprepare(void)
Definition streamer.cpp:374
FILE * pStreamerPackFile
Definition streamer.cpp:21
unsigned int ix_file_read(FILE *file, void *destination, unsigned int bytes)
Definition ixfile.cpp:62
void ix_streamer_audio_pause(void)
Definition streamer.cpp:362
unsigned int nIxStreamerCurrentFileChunk
Definition streamer.cpp:41
unsigned int dwIxStreamerAudioBufferSize
Definition streamer.cpp:26
void ix_log_printf(const char *fmt,...)
Definition ixlog.cpp:32
void ix_file_seek(FILE *file, long position)
Definition ixfile.cpp:50
unsigned int dwStreamThreadTick
Definition streamer.cpp:18
void ix_streamer_seek_chunk(unsigned int chunk)
Definition streamer.cpp:503
IxStreamerTrigger * pStreamTriggerList
Definition streamer.cpp:44
unsigned char * pIxStreamerInputBuffer
Definition streamer.cpp:27
char cStreamerBranchTag
Definition streamer.cpp:47
IxStreamerFileChunk * pStreamFileBlocks
Definition streamer.cpp:34
unsigned int adwStreamCallStack[32]
Definition streamer.cpp:23
void ix_streamer_set_dev_mode(int mode)
Definition streamer.cpp:108
DWORD WINAPI ix_streamer_thread_proc(void *parameter)
Definition thread.cpp:22
unsigned char ix_streamer_get_intensity(void)
Definition streamer.cpp:396
IxStreamFile * ix_streamer_open_file(unsigned char *name, unsigned char priority)
Definition streamer.cpp:564
unsigned char bStreamerIntensityLevel
Definition streamer.cpp:28
unsigned int nStreamCallStackIndex
Definition streamer.cpp:48
HANDLE hStreamThread
Definition streamer.cpp:29
CRITICAL_SECTION csStreamerFileList
Definition streamer.cpp:35
unsigned int nStreamerAudioBlock
Definition streamer.cpp:37
IxStreamFile * pStreamReadRequests
Definition streamer.cpp:25
CRITICAL_SECTION csIxStreamerThread
Definition streamer.cpp:36
long ix_file_size(FILE *file)
Definition ixfile.cpp:76
unsigned char * pStreamerLzoBuffer
Definition streamer.cpp:24
IxStreamerHeader * pStreamerPackageInfo
Definition streamer.cpp:31
IxStreamerBranch * pMusicStreamBranchList
Definition streamer.cpp:33
@ IX_STREAMER_FILE_OPEN
Definition ix.h:346
@ IX_STREAMER_HAS_AUDIO
Definition ix.h:352
@ IX_STREAMER_DSP_PLAYING
Definition ix.h:350
@ IX_STREAMER_DEVELOPER_MODE
Definition ix.h:353
@ IX_STREAMER_AUDIO_PAUSED
Definition ix.h:348
@ IX_STREAMER_AUDIO_PLAYING
Definition ix.h:347
@ IX_STREAMER_SHUTDOWN
Definition ix.h:354
@ IX_STREAMER_REPREPARE_AUDIO
Definition ix.h:355
@ IX_STREAMER_INITIALIZED
Definition ix.h:345
unsigned short nStreamerVolume
Definition streamer.cpp:46
HANDLE hStreamerWakeupEvent
Definition streamer.cpp:40
#define IX_STREAMER_FILE
Definition streamer.cpp:13
unsigned int dwUnusedStreamerWord
Definition streamer.cpp:20
unsigned char priority
Definition ix.h:431
void ix_stream_file_wait(void)
FILE * file
Definition ix.h:429
unsigned int size
Definition ix.h:430
IxStreamFile * previous
Definition ix.h:437
unsigned int position
Definition ix.h:433
IxStreamFile * next
Definition ix.h:438
unsigned int flags
Definition ix.h:427
IxStreamerFileEntry * entry
Definition ix.h:428
HANDLE completionEvent
Definition ix.h:436
unsigned int triggerCount
Definition ix.h:400
unsigned int firstTrigger
Definition ix.h:401
unsigned int nameHash
Definition ix.h:391
unsigned int size
Definition ix.h:392
unsigned int fileChunkCount
Definition ix.h:377
unsigned int branchCount
Definition ix.h:370
unsigned int fileEntryTableOffset
Definition ix.h:374
unsigned int audioChunkCount
Definition ix.h:368
unsigned int fileEntryCount
Definition ix.h:375
unsigned int id
Definition ix.h:360
unsigned int triggerCount
Definition ix.h:372
unsigned int packetCount
Definition ix.h:379
unsigned int fileBufferSize
Definition ix.h:373
unsigned int packetTableOffset
Definition ix.h:378
unsigned int dspConfigValue
Definition ix.h:366
unsigned int fileChunkTableOffset
Definition ix.h:376
unsigned int triggerTableOffset
Definition ix.h:371
unsigned char channels
Definition ix.h:362
unsigned int branchTableOffset
Definition ix.h:369
unsigned int audioBufferSize
Definition ix.h:365
unsigned int audioChunkTableOffset
Definition ix.h:367
unsigned char bitsPerSample
Definition ix.h:363
unsigned short frequency
Definition ix.h:364
unsigned int version
Definition ix.h:361
unsigned int audioChunk
Definition ix.h:414
void ix_streamer_set_intensity(unsigned char intensity)
Definition streamer.cpp:386
void ix_streamer_configure(int option, void *value)
Definition streamer.cpp:102
void ix_streamer_audio_play(void)
Definition streamer.cpp:336
int ix_streamer_open_stream_file(char *path)
Definition streamer.cpp:123
void ix_streamer_set_trigger(char trigger)
Definition streamer.cpp:402
char ix_streamer_get_trigger(void)
Definition streamer.cpp:417
void ix_streamer_destroy(void)
Definition streamer.cpp:81
unsigned short ix_streamer_get_volume(void)
Definition streamer.cpp:491
int ix_streamer_init(void)
Definition streamer.cpp:51
void ix_streamer_force_trigger(char trigger)
Definition streamer.cpp:423
void ix_streamer_audio_stop(void)
Definition streamer.cpp:349
void ix_streamer_close_stream_file(void)
Definition streamer.cpp:297
void ix_streamer_set_volume(unsigned short volume)
Definition streamer.cpp:475