Wing Commander II
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
streamer.cpp
Go to the documentation of this file.
1/*
2 * ix / D:\Rnd\Prj\ix\Src\Streamer\streamer.cpp
3 *
4 * Retail address range: 0x0046BD50 - 0x0046D10F (23 functions)
5 * Object boundaries follow retail padding and alignment; diagnostic paths
6 * identify the source subsystem (see docs/ORDER.md).
7 *
8 * Implement in ADDRESS ORDER -- MSVC emits functions in source order, so the
9 * list below is the original source order of this file.
10 */
11#include "ix.h"
12#include <stdlib.h>
13
14#define IX_STREAMER_FILE "D:\\Rnd\\Prj\\ix\\Src\\Streamer\\streamer.cpp"
15
16unsigned int *g_7_pStreamerPacketOffsets; /* 0x005c4b38 */
17unsigned int g_18_dwStreamerThreadTick; /* 0x005c4b3c */
18FILE *g_1_pFeederPackageDisk; /* 0x005c4b44 */
20unsigned int g_13_adwPlayerBranchingStack[32]; /* 0x005c4b50 */
21unsigned char *g_126_pReaderCompressedBuf; /* 0x005c4bd0 */
23unsigned int g_49_nStreamerAudioBufferSize; /* 0x005c4bd8 */
24unsigned char *g_pStreamerFileStore; /* 0x005c4bdc */
25unsigned char g_6_bFeederLevel; /* 0x005c4be0 */
26HANDLE g_4_hStreamerWorker; /* 0x005c4be4 */
32CRITICAL_SECTION g_csStreamerFileFifo; /* 0x005c4c00 */
33CRITICAL_SECTION g_49_csStreamWorker; /* 0x005c4c18 */
34unsigned int g_6_dwStreamSoundChunk; /* 0x005c4c30 */
35DWORD g_dwStreamThreadId; /* 0x005c4c34 */
36unsigned int g_dwStreamerMode; /* 0x005c4c38 */
37HANDLE g_1_hStreamRouseEvent; /* 0x005c4c3c */
38unsigned int g_nSpoolerDiskChunk; /* 0x005c4c40 */
39unsigned int g_16_nStreamerBytesEachSecond; /* 0x005c4c44 */
40CRITICAL_SECTION g_1_csStreamer; /* 0x005c4c48 */
42
43unsigned short g_nStreamerVolume = 0xffff; /* 0x0049e150 */
44char g_cStreamerBranchTag = -1; /* 0x0049e154 */
45unsigned int g_nStreamerBranchStackIndex = 0; /* 0x0049e158 */
46
47/* Function start: 0x46BD50 */ /* source line(s) 60;63;75: Streamer already inited! | Failed to init DSP | Failed to start streamer_thread! */
48extern "C" int ix_streamer_init(void)
49{
51 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 60);
52 ix_log_printf("Streamer already inited!");
53 return -1;
54 }
55 if (ix_dsp_init() != 0) {
56 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 63);
57 ix_log_printf("Failed to init DSP");
58 return -1;
59 }
60 InitializeCriticalSection(&g_csStreamerFileFifo);
61 InitializeCriticalSection(&g_1_csStreamer);
62 InitializeCriticalSection(&g_49_csStreamWorker);
63 g_1_hStreamRouseEvent = CreateEventA(0, TRUE, FALSE, 0);
65 CreateThread(0, 0x1000, ix_streamer_thread_proc, 0, 0,
67 if (g_4_hStreamerWorker == 0) {
68 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 75);
69 ix_log_printf("Failed to start streamer_thread!");
70 exit(-1);
71 }
74 return 0;
75}
76
77/* Function start: 0x46BE6F */ /* source line(s) 87: Streamer not ready for destroy */
78extern "C" void ix_streamer_destroy(void)
79{
81 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 87);
82 ix_log_printf("Streamer not ready for destroy");
83 return;
84 }
88 SetEvent(g_1_hStreamRouseEvent);
89 EnterCriticalSection(&g_49_csStreamWorker);
90 CloseHandle(g_1_hStreamRouseEvent);
91 DeleteCriticalSection(&g_csStreamerFileFifo);
92 DeleteCriticalSection(&g_1_csStreamer);
93 DeleteCriticalSection(&g_49_csStreamWorker);
96}
97
98/* Function start: 0x46BF1E */
99extern "C" void ix_streamer_configure(int option, void *value)
100{
101 ix_dsp_configure(option, value);
102}
103
104/* Function start: 0x46BF3E */ /* source line(s) 117: Can't change dev_mode while stream files are open! */
106{
107 if (g_48_pPumpIdleFiles != 0 ||
109 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 117);
110 ix_log_printf("Can't change dev_mode while stream files are open!");
111 exit(-1);
112 }
113 if (mode != 0)
115 else
117}
118
119/* Function start: 0x46BFB6 */ /* 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 */
120extern "C" int ix_streamer_open_stream_file(char *path)
121{
123 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 129);
124 ix_log_printf("Streamer not ready to open stream file!");
125 return -1;
126 }
131 g_nSpoolerDiskChunk = (unsigned int)-1;
134 if (g_1_pFeederPackageDisk == 0) {
135 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 142);
136 ix_log_printf("Failed to open stream file.");
137 return -1;
138 }
141 if (g_pStreamPrologue == 0) {
142 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 146);
143 ix_log_printf("Streamer failed to allocate.");
144 exit(-1);
145 }
148 if (g_pStreamPrologue->id != *(unsigned int *)"STRM") {
149 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 150);
150 ix_log_printf("Invalid stream ID");
151 return -1;
152 }
153 if (g_pStreamPrologue->version != 1) {
154 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 151);
155 ix_log_printf("Invalid stream version");
156 return -1;
157 }
162 sizeof(IxStreamerAudioChunk));
163 if (g_15_pStreamerSoundChunks == 0) {
164 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 157);
165 ix_log_printf("Streamer failed to allocate.");
166 exit(-1);
167 }
173 sizeof(IxStreamerAudioChunk));
175 }
176 if (g_pStreamPrologue->branchCount != 0) {
179 sizeof(IxStreamerBranch));
180 if (g_7_pStreamBranches == 0) {
181 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 168);
182 ix_log_printf("Streamer failed to allocate.");
183 exit(-1);
184 }
190 sizeof(IxStreamerBranch));
191 }
195 sizeof(IxStreamerTrigger));
196 if (g_6_pFeederTriggers == 0) {
197 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 177);
198 ix_log_printf("Streamer failed to allocate.");
199 exit(-1);
200 }
206 sizeof(IxStreamerTrigger));
207 }
212 sizeof(IxStreamerFileEntry));
213 if (g_3_pReaderFileEntries == 0) {
214 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 186);
215 ix_log_printf("Streamer failed to allocate.");
216 exit(-1);
217 }
223 sizeof(IxStreamerFileEntry));
224 }
229 sizeof(IxStreamerFileChunk));
230 if (g_17_pStreamerFileParts == 0) {
231 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 195);
232 ix_log_printf("Streamer failed to allocate.");
233 exit(-1);
234 }
240 sizeof(IxStreamerFileChunk));
241 }
242 if (g_pStreamPrologue->packetCount != 0) {
243 g_7_pStreamerPacketOffsets = (unsigned int *)
246 sizeof(unsigned int));
248 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 204);
249 ix_log_printf("Streamer failed to allocate.");
250 exit(-1);
251 }
257 sizeof(unsigned int));
258 }
262 ix_dsp_configure(0x100,
273 }
274 g_126_pReaderCompressedBuf = (unsigned char *)
277 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 238);
278 ix_log_printf("Failed to allocate file_buffer!");
279 exit(-1);
280 }
281 g_pStreamerFileStore = (unsigned char *)
283 if (g_pStreamerFileStore == 0) {
284 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 240);
285 ix_log_printf("Failed to allocate file_buffer!");
286 exit(-1);
287 }
289 SetEvent(g_1_hStreamRouseEvent);
290 return 0;
291}
292
293/* Function start: 0x46C67A */ /* source line(s) 250;251: Streamer not ready to open stream file! | Stream file not open! */
294extern "C" void ix_streamer_close_stream_file(void)
295{
296 IxStreamFile *streamFile;
297 IxStreamFile *prev;
298
300 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 250);
301 ix_log_printf("Streamer not ready to open stream file!");
302 return;
303 }
305 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 251);
306 ix_log_printf("Stream file not open!");
307 return;
308 }
309 streamFile = g_48_pPumpIdleFiles;
310 while (streamFile != 0) {
311 prev = streamFile->previous;
312 ix_streamer_close_file(streamFile);
313 streamFile = prev;
314 }
315 EnterCriticalSection(&g_1_csStreamer);
316 g_dwStreamerMode &= 0xffffff91;
317 g_pIxFree(g_pStreamPrologue);
318 g_pIxFree(g_15_pStreamerSoundChunks);
319 g_pIxFree(g_7_pStreamBranches);
320 g_pIxFree(g_6_pFeederTriggers);
321 g_pIxFree(g_3_pReaderFileEntries);
322 g_pIxFree(g_17_pStreamerFileParts);
325 g_pIxFree(g_pStreamerFileStore);
326 ix_dsps_free(0);
328 LeaveCriticalSection(&g_1_csStreamer);
329 SetEvent(g_1_hStreamRouseEvent);
330}
331
332/* Function start: 0x46C7F3 */ /* source line(s) 286: Stream has no audio */
333extern "C" void ix_streamer_audio_play(void)
334{
336 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 286);
337 ix_log_printf("Stream has no audio");
338 return;
339 }
342 SetEvent(g_1_hStreamRouseEvent);
343}
344
345/* Function start: 0x46C853 */ /* source line(s) 295: Stream has no audio */
346extern "C" void ix_streamer_audio_stop(void)
347{
349 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 295);
350 ix_log_printf("Stream has no audio");
351 return;
352 }
355 SetEvent(g_1_hStreamRouseEvent);
356}
357
358/* Function start: 0x46C8B6 */ /* source line(s) 304: Stream has no audio */
360{
362 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 304);
363 ix_log_printf("Stream has no audio");
364 return;
365 }
367 SetEvent(g_1_hStreamRouseEvent);
368}
369
370/* Function start: 0x46C90F */ /* source line(s) 312: Stream has no audio */
372{
374 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 312);
375 ix_log_printf("Stream has no audio");
376 return;
377 }
379 SetEvent(g_1_hStreamRouseEvent);
380}
381
382/* Function start: 0x46C96B */
383extern "C" void ix_streamer_set_intensity(unsigned char intensity)
384{
385 if (intensity >= 0) {
386 g_6_bFeederLevel = intensity < 100 ? intensity : 100;
387 } else {
389 }
390}
391
392/* Function start: 0x46C9AC */
393unsigned char ix_streamer_get_intensity(void)
394{
395 return g_6_bFeederLevel;
396}
397
398/* Function start: 0x46C9C1 */
399extern "C" void ix_streamer_set_trigger(char trigger)
400{
401 if (trigger == -1) {
403 } else {
404 if (trigger >= 0) {
406 trigger < 0x40 ? trigger : 0x40;
407 } else {
409 }
410 }
411}
412
413/* Function start: 0x46CA19 */
415{
417}
418
419/* Function start: 0x46CA2E */ /* source line(s) 342: Stream has no audio */
420extern "C" void ix_streamer_force_trigger(char trigger)
421{
422 unsigned int triggerCount;
423 unsigned int chunkIndex;
424 unsigned int audioChunks;
425 unsigned int triggerIndex;
426
428 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 342);
429 ix_log_printf("Stream has no audio");
430 return;
431 }
432 chunkIndex = g_6_dwStreamSoundChunk;
433 audioChunks = g_pStreamPrologue->audioChunkCount;
434 EnterCriticalSection(&g_1_csStreamer);
435 while (-1 < trigger && audioChunks--) {
436 if (g_15_pStreamerSoundChunks[chunkIndex].triggerCount > 0) {
437 triggerCount =
439 triggerIndex =
441 while (triggerCount--) {
442 if (g_6_pFeederTriggers[triggerIndex].tag ==
443 trigger) {
448 (g_nStreamerBranchStackIndex + 1) & 0x1f;
451 triggerIndex].audioChunk;
452 trigger = -1;
453 break;
454 }
455 triggerIndex++;
456 }
457 }
458 chunkIndex++;
459 if (g_pStreamPrologue->audioChunkCount - 1 <= chunkIndex)
460 chunkIndex = 0;
461 }
463 ix_dsps_stop(0);
465 }
466 LeaveCriticalSection(&g_1_csStreamer);
467 SetEvent(g_1_hStreamRouseEvent);
468}
469
470/* Function start: 0x46CBBE */
471extern "C" void ix_streamer_set_volume(unsigned short volume)
472{
473 if (volume >= 0) {
475 volume < 0xffff ? volume : 0xffff;
476 } else {
478 }
479 if ((g_dwStreamerMode & 2) != 0) {
480 EnterCriticalSection(&g_1_csStreamer);
482 LeaveCriticalSection(&g_1_csStreamer);
483 }
484}
485
486/* Function start: 0x46CC3B */
487extern "C" unsigned short ix_streamer_get_volume(void)
488{
489 return g_nStreamerVolume;
490}
491
492/* Function start: 0x46CC51 */
494{
496}
497
498/* Function start: 0x46CC66 */
499void ix_streamer_seek_chunk(unsigned int chunk)
500{
501 EnterCriticalSection(&g_1_csStreamer);
502 if (chunk >= 0) {
506 : chunk;
507 } else {
509 }
510 LeaveCriticalSection(&g_1_csStreamer);
511}
512
513/* Function start: 0x46CCC0 */
514unsigned int ix_streamer_hash_name(unsigned char *name)
515{
516 int position;
517 unsigned int character;
518 unsigned int hash;
519
520 position = 0;
521 character = *name++;
522 if (character >= 'a' && character <= 'z')
523 character -= 0x20;
524 hash = character << 8;
525 while ((character = *name++) != 0) {
526 if (character >= 'a' && character <= 'z')
527 character -= 0x20;
528 hash += (hash >> 4) * character;
529 hash += position;
530 position++;
531 }
532 return hash;
533}
534
535/* Function start: 0x46CD55 */
537{
538 unsigned int limit;
539 IxStreamerFileEntry *entry;
540 unsigned int first;
541 unsigned int mid;
542
543 first = 0;
545 while (limit > first) {
546 mid = (first + limit) >> 1;
547 entry = &g_3_pReaderFileEntries[mid];
548 if (entry->nameHash < hash) {
549 first = mid + 1;
550 } else if (entry->nameHash > hash) {
551 limit = mid;
552 } else {
553 return entry;
554 }
555 }
556 return 0;
557}
558
559/* Function start: 0x46CDE3 */ /* source line(s) 512;526;535;549: open_file failed to allocate memory! | Failed to find_file in stream, %s! | open_file fail */
561 unsigned char priority)
562{
563 IxStreamFile *streamFile;
564 IxStreamerFileEntry *entry;
565 FILE *file;
566
567 streamFile = 0;
570 if (entry != 0) {
571 streamFile = (IxStreamFile *)
572 g_pIxMalloc(sizeof(IxStreamFile));
573 if (streamFile == 0) {
574 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 512);
575 ix_log_printf("open_file failed to allocate memory!");
576 exit(-1);
577 }
578 streamFile->flags = IX_STREAM_FILE_OPEN;
579 streamFile->entry = entry;
580 streamFile->priority = priority;
581 streamFile->position = 0;
582 streamFile->completionEvent = CreateEventA(0, TRUE, FALSE, 0);
583 streamFile->size = entry->size;
584 EnterCriticalSection(&g_csStreamerFileFifo);
585 streamFile->previous = g_48_pPumpIdleFiles;
586 streamFile->next = 0;
587 if (g_48_pPumpIdleFiles != 0)
588 g_48_pPumpIdleFiles->next = streamFile;
589 g_48_pPumpIdleFiles = streamFile;
590 LeaveCriticalSection(&g_csStreamerFileFifo);
591 } else {
592 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 526);
593 ix_log_printf("Failed to find_file in stream, %s!", name);
594 }
595 } else {
596 file = ix_file_open((char *)name, 1);
597 if (file != 0) {
598 streamFile = (IxStreamFile *)
599 g_pIxMalloc(sizeof(IxStreamFile));
600 if (streamFile == 0) {
601 ix_log_printf("Fatal [%s - %d]:\n", IX_STREAMER_FILE, 535);
602 ix_log_printf("open_file failed to allocate memory!");
603 exit(-1);
604 }
605 streamFile->flags = IX_STREAM_FILE_OPEN;
606 streamFile->file = file;
607 streamFile->size = ix_file_size(file);
608 streamFile->priority = priority;
609 streamFile->position = 0;
610 streamFile->completionEvent = CreateEventA(0, TRUE, FALSE, 0);
611 EnterCriticalSection(&g_csStreamerFileFifo);
612 streamFile->previous = g_48_pPumpIdleFiles;
613 streamFile->next = 0;
614 if (g_48_pPumpIdleFiles != 0)
615 g_48_pPumpIdleFiles->next = streamFile;
616 g_48_pPumpIdleFiles = streamFile;
617 LeaveCriticalSection(&g_csStreamerFileFifo);
618 } else {
619 ix_log_printf("Warning [%s - %d]:\n", IX_STREAMER_FILE, 549);
620 ix_log_printf("Failed to find_file in stream, %s!", name);
621 }
622 }
623 return streamFile;
624}
625
626/* Function start: 0x46D05D */
628{
629 streamFile->ix_stream_file_wait();
630 EnterCriticalSection(&g_csStreamerFileFifo);
631 if (streamFile->previous != 0)
632 streamFile->previous->next = streamFile->next;
633 if (streamFile->next == 0)
634 g_48_pPumpIdleFiles = streamFile->previous;
635 else
636 streamFile->next->previous = streamFile->previous;
637 LeaveCriticalSection(&g_csStreamerFileFifo);
639 ix_file_close(streamFile->file);
640 CloseHandle(streamFile->completionEvent);
641 g_pIxFree(streamFile);
642}
643
644/* Never referenced; retail reserves its storage after the thread tick. */
645unsigned int g_38_nUnusedPumpWord; /* 0x005c4b40 */
int ix_dsp_init(void)
Definition dsp.cpp:40
void ix_dsp_configure(int option, void *value)
Definition dsp.cpp:82
void ix_dsp_shutdown(void)
Definition dsp.cpp:63
void *__cdecl * g_pIxMalloc(unsigned int)
void ix_dsps_set_volume(int stream, unsigned short volume)
Definition dsps.cpp:188
void ix_dsps_free(int stream)
Definition dsps.cpp:88
void ix_dsps_stop(int stream)
Definition dsps.cpp:161
void ix_dsps_alloc(int stream, unsigned int size, int freq, int bps, int channels)
Definition dsps.cpp:30
void ix_streamer_set_intensity(unsigned char intensity)
Definition streamer.cpp:383
void ix_streamer_configure(int option, void *value)
Definition streamer.cpp:99
void ix_streamer_audio_play(void)
Definition streamer.cpp:333
int ix_streamer_open_stream_file(char *path)
Definition streamer.cpp:120
void ix_streamer_set_trigger(char trigger)
Definition streamer.cpp:399
void ix_streamer_destroy(void)
Definition streamer.cpp:78
unsigned short ix_streamer_get_volume(void)
Definition streamer.cpp:487
int ix_streamer_init(void)
Definition streamer.cpp:48
void ix_streamer_force_trigger(char trigger)
Definition streamer.cpp:420
void ix_streamer_audio_stop(void)
Definition streamer.cpp:346
void ix_streamer_close_stream_file(void)
Definition streamer.cpp:294
void ix_streamer_set_volume(unsigned short volume)
Definition streamer.cpp:471
unsigned int g_dwStreamerMode
Definition ix.h:506
Audio classes, DirectSound interfaces and shared ix state.
IxStreamerTrigger * g_6_pFeederTriggers
Definition streamer.cpp:41
IxStreamerHeader * g_pStreamPrologue
Definition streamer.cpp:28
unsigned int g_nStreamerBranchStackIndex
Definition streamer.cpp:45
unsigned int * g_7_pStreamerPacketOffsets
Definition streamer.cpp:16
@ IX_STREAM_FILE_OPEN
Definition ix.h:298
void ix_file_close(FILE *file)
Definition ixfile.cpp:42
void ix_streamer_close_file(IxStreamFile *streamFile)
Definition streamer.cpp:627
HANDLE g_1_hStreamRouseEvent
Definition streamer.cpp:37
HANDLE g_4_hStreamerWorker
Definition streamer.cpp:26
FILE * ix_file_open(const char *path, int mode)
Definition ixfile.cpp:28
unsigned int ix_streamer_get_audio_chunk(void)
Definition streamer.cpp:493
unsigned int ix_streamer_hash_name(unsigned char *name)
Definition streamer.cpp:514
IxStreamFile * g_48_pPumpIdleFiles
Definition streamer.cpp:19
IxStreamerFileEntry * ix_streamer_find_entry(unsigned int hash)
Definition streamer.cpp:536
void ix_streamer_audio_reprepare(void)
Definition streamer.cpp:371
unsigned int ix_file_read(FILE *file, void *destination, unsigned int bytes)
Definition ixfile.cpp:60
void ix_streamer_audio_pause(void)
Definition streamer.cpp:359
FILE * g_1_pFeederPackageDisk
Definition streamer.cpp:18
IxStreamerFileEntry * g_3_pReaderFileEntries
Definition streamer.cpp:27
unsigned int g_nSpoolerDiskChunk
Definition streamer.cpp:38
void ix_log_printf(const char *fmt,...)
Definition stream.cpp:164
void ix_file_seek(FILE *file, long position)
Definition ixfile.cpp:48
unsigned int g_49_nStreamerAudioBufferSize
Definition streamer.cpp:23
CRITICAL_SECTION g_csStreamerFileFifo
Definition streamer.cpp:32
void ix_streamer_seek_chunk(unsigned int chunk)
Definition streamer.cpp:499
unsigned int g_6_dwStreamSoundChunk
Definition streamer.cpp:34
CRITICAL_SECTION g_49_csStreamWorker
Definition streamer.cpp:33
void ix_streamer_set_dev_mode(int mode)
Definition streamer.cpp:105
DWORD WINAPI ix_streamer_thread_proc(void *parameter)
Definition thread.cpp:21
unsigned char * g_pStreamerFileStore
Definition streamer.cpp:24
unsigned short g_nStreamerVolume
Definition streamer.cpp:43
unsigned char ix_streamer_get_intensity(void)
Definition streamer.cpp:393
IxStreamFile * g_1_pPlayerReadQueue
Definition streamer.cpp:22
IxStreamFile * ix_streamer_open_file(unsigned char *name, unsigned char priority)
Definition streamer.cpp:560
char ix_streamer_get_trigger(void)
Definition streamer.cpp:414
char g_cStreamerBranchTag
Definition streamer.cpp:44
unsigned char * g_126_pReaderCompressedBuf
Definition streamer.cpp:21
unsigned int g_13_adwPlayerBranchingStack[32]
Definition streamer.cpp:20
IxStreamerFileChunk * g_17_pStreamerFileParts
Definition streamer.cpp:31
long ix_file_size(FILE *file)
Definition ixfile.cpp:75
CRITICAL_SECTION g_1_csStreamer
Definition streamer.cpp:40
IxStreamerBranch * g_7_pStreamBranches
Definition streamer.cpp:30
unsigned int g_16_nStreamerBytesEachSecond
Definition streamer.cpp:39
@ IX_STREAMER_FILE_OPEN
Definition ix.h:304
@ IX_STREAMER_HAS_AUDIO
Definition ix.h:310
@ IX_STREAMER_DSP_PLAYING
Definition ix.h:308
@ IX_STREAMER_DEVELOPER_MODE
Definition ix.h:311
@ IX_STREAMER_AUDIO_PAUSED
Definition ix.h:306
@ IX_STREAMER_AUDIO_PLAYING
Definition ix.h:305
@ IX_STREAMER_SHUTDOWN
Definition ix.h:312
@ IX_STREAMER_REPREPARE_AUDIO
Definition ix.h:313
@ IX_STREAMER_INITIALIZED
Definition ix.h:303
DWORD g_dwStreamThreadId
Definition streamer.cpp:35
IxStreamerAudioChunk * g_15_pStreamerSoundChunks
Definition streamer.cpp:29
unsigned int g_18_dwStreamerThreadTick
Definition streamer.cpp:17
unsigned char g_6_bFeederLevel
Definition streamer.cpp:25
#define IX_STREAMER_FILE
Definition streamer.cpp:14
unsigned int g_38_nUnusedPumpWord
Definition streamer.cpp:645
unsigned char priority
Definition ix.h:389
FILE * file
Definition ix.h:387
unsigned int size
Definition ix.h:388
IxStreamFile * previous
Definition ix.h:395
unsigned int position
Definition ix.h:391
IxStreamFile * next
Definition ix.h:396
unsigned int flags
Definition ix.h:385
IxStreamerFileEntry * entry
Definition ix.h:386
HANDLE completionEvent
Definition ix.h:394
void ix_stream_file_wait()
unsigned int triggerCount
Definition ix.h:358
unsigned int firstTrigger
Definition ix.h:359
unsigned int nameHash
Definition ix.h:349
unsigned int size
Definition ix.h:350
unsigned int fileChunkCount
Definition ix.h:335
unsigned int branchCount
Definition ix.h:328
unsigned int fileEntryTableOffset
Definition ix.h:332
unsigned int audioChunkCount
Definition ix.h:326
unsigned int fileEntryCount
Definition ix.h:333
unsigned int id
Definition ix.h:318
unsigned int triggerCount
Definition ix.h:330
unsigned int packetCount
Definition ix.h:337
unsigned int fileBufferSize
Definition ix.h:331
unsigned int packetTableOffset
Definition ix.h:336
unsigned int dspConfigValue
Definition ix.h:324
unsigned int fileChunkTableOffset
Definition ix.h:334
unsigned int triggerTableOffset
Definition ix.h:329
unsigned char channels
Definition ix.h:320
unsigned int branchTableOffset
Definition ix.h:327
unsigned int audioBufferSize
Definition ix.h:323
unsigned int audioChunkTableOffset
Definition ix.h:325
unsigned char bitsPerSample
Definition ix.h:321
unsigned short frequency
Definition ix.h:322
unsigned int version
Definition ix.h:319
unsigned int audioChunk
Definition ix.h:372