Adds a WAVE file into the archive
| 1037 | |
| 1038 | // Adds a WAVE file into the archive |
| 1039 | bool WINAPI SFileAddWave(HANDLE hMpq, const TCHAR * szFileName, const char * szArchivedName, DWORD dwFlags, DWORD dwQuality) |
| 1040 | { |
| 1041 | DWORD dwCompression = 0; |
| 1042 | |
| 1043 | // |
| 1044 | // Note to wave compression level: |
| 1045 | // The following conversion table applied: |
| 1046 | // High quality: WaveCompressionLevel = -1 |
| 1047 | // Medium quality: WaveCompressionLevel = 4 |
| 1048 | // Low quality: WaveCompressionLevel = 2 |
| 1049 | // |
| 1050 | // Starcraft files are packed as Mono (0x41) on medium quality. |
| 1051 | // Because this compression is not used anymore, our compression functions |
| 1052 | // will default to WaveCompressionLevel = 4 when using ADPCM compression |
| 1053 | // |
| 1054 | |
| 1055 | // Convert quality to data compression |
| 1056 | switch(dwQuality) |
| 1057 | { |
| 1058 | case MPQ_WAVE_QUALITY_HIGH: |
| 1059 | // WaveCompressionLevel = -1; |
| 1060 | dwCompression = MPQ_COMPRESSION_PKWARE; |
| 1061 | break; |
| 1062 | |
| 1063 | case MPQ_WAVE_QUALITY_MEDIUM: |
| 1064 | // WaveCompressionLevel = 4; |
| 1065 | dwCompression = MPQ_COMPRESSION_ADPCM_STEREO | MPQ_COMPRESSION_HUFFMANN; |
| 1066 | break; |
| 1067 | |
| 1068 | case MPQ_WAVE_QUALITY_LOW: |
| 1069 | // WaveCompressionLevel = 2; |
| 1070 | dwCompression = MPQ_COMPRESSION_ADPCM_STEREO | MPQ_COMPRESSION_HUFFMANN; |
| 1071 | break; |
| 1072 | } |
| 1073 | |
| 1074 | return SFileAddFileEx(hMpq, |
| 1075 | szFileName, |
| 1076 | szArchivedName, |
| 1077 | dwFlags, |
| 1078 | MPQ_COMPRESSION_PKWARE, // First sector should be compressed as data |
| 1079 | dwCompression); // Next sectors should be compressed as WAVE |
| 1080 | } |
| 1081 | |
| 1082 | //----------------------------------------------------------------------------- |
| 1083 | // bool SFileRemoveFile(HANDLE hMpq, char * szFileName) |
nothing calls this directly
no test coverage detected