MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / RiffInitWriteFile

Function RiffInitWriteFile

source/Riff.cpp:37–95  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35static unsigned int g_NumChannels = 2;
36
37bool RiffInitWriteFile(const char* pszFile, unsigned int sample_rate, unsigned int NumChannels)
38{
39 g_hRiffFile = CreateFile(pszFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
40
41 if(g_hRiffFile == INVALID_HANDLE_VALUE)
42 return false;
43
44 g_NumChannels = NumChannels;
45
46 //
47
48 UINT32 temp32;
49 UINT16 temp16;
50
51 DWORD dwNumberOfBytesWritten;
52
53 WriteFile(g_hRiffFile, "RIFF", 4, &dwNumberOfBytesWritten, NULL);
54
55 temp32 = 0; // total size
56 dwTotalOffset = SetFilePointer(g_hRiffFile, 0, NULL, FILE_CURRENT);
57 WriteFile(g_hRiffFile, &temp32, 4, &dwNumberOfBytesWritten, NULL);
58
59 WriteFile(g_hRiffFile, "WAVE", 4, &dwNumberOfBytesWritten, NULL);
60
61 //
62
63 WriteFile(g_hRiffFile, "fmt ", 4, &dwNumberOfBytesWritten, NULL);
64
65 temp32 = 16; // format length
66 WriteFile(g_hRiffFile, &temp32, 4, &dwNumberOfBytesWritten, NULL);
67
68 temp16 = 1; // PCM format
69 WriteFile(g_hRiffFile, &temp16, 2, &dwNumberOfBytesWritten, NULL);
70
71 temp16 = NumChannels; // channels
72 WriteFile(g_hRiffFile, &temp16, 2, &dwNumberOfBytesWritten, NULL);
73
74 temp32 = sample_rate; // sample rate
75 WriteFile(g_hRiffFile, &temp32, 4, &dwNumberOfBytesWritten, NULL);
76
77 temp32 = sample_rate * 2 * NumChannels; // bytes/second
78 WriteFile(g_hRiffFile, &temp32, 4, &dwNumberOfBytesWritten, NULL);
79
80 temp16 = 2 * NumChannels; // block align
81 WriteFile(g_hRiffFile, &temp16, 2, &dwNumberOfBytesWritten, NULL);
82
83 temp16 = 16; // bits/sample
84 WriteFile(g_hRiffFile, &temp16, 2, &dwNumberOfBytesWritten, NULL);
85
86 //
87
88 WriteFile(g_hRiffFile, "data", 4, &dwNumberOfBytesWritten, NULL);
89
90 temp32 = 0; // data length
91 dwDataOffset = SetFilePointer(g_hRiffFile, 0, NULL, FILE_CURRENT);
92 WriteFile(g_hRiffFile, &temp32, 4, &dwNumberOfBytesWritten, NULL);
93
94 return true;

Callers 1

OneTimeInitializationFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected