SourcePP
Several modern C++20 libraries for sanely parsing Valve's formats.
Loading...
Searching...
No Matches
XWV.h
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <cstddef>
5#include <memory>
6#include <span>
7#include <string>
8#include <vector>
9
11
12namespace sndpp {
13
15
16class XWV {
17public:
18 enum class Frequency : uint8_t {
22 };
23
24 enum class Format : uint8_t {
25 PCM,
26 XMA,
27 ADPCM,
28 MP3,
29 };
30
31 explicit XWV(std::span<const std::byte> xwvData);
32
33 explicit XWV(const std::string& xwvPath);
34
35 explicit operator bool() const;
36
37 [[nodiscard]] const std::vector<std::byte>& getData() const;
38
39 [[nodiscard]] uint32_t getDecodedSampleCount() const;
40
41 [[nodiscard]] int32_t getLoopStart() const;
42
43 [[nodiscard]] uint16_t getLoopBlock() const;
44
45 [[nodiscard]] uint16_t getLeadingSampleCount() const;
46
47 [[nodiscard]] uint16_t getTrailingSampleCount() const;
48
49 [[nodiscard]] Format getFormat() const;
50
51 [[nodiscard]] uint8_t getBitsPerSample() const;
52
53 [[nodiscard]] Frequency getFrequency() const;
54
55 [[nodiscard]] uint8_t getChannelCount() const;
56
57 [[nodiscard]] uint8_t getQuality() const;
58
59protected:
60 std::vector<std::byte> data;
62 int32_t loopStart{};
63 uint16_t loopBlock{};
67 uint8_t bitsPerSample{};
69 uint8_t channelCount{};
70 uint8_t quality{};
71
72 bool opened = false;
73};
74
75} // namespace sndpp
Definition: XWV.h:16
bool opened
Definition: XWV.h:72
Format
Definition: XWV.h:24
uint8_t getQuality() const
Definition: XWV.cpp:80
Format getFormat() const
Definition: XWV.cpp:64
std::vector< std::byte > data
Definition: XWV.h:60
Format format
Definition: XWV.h:66
uint8_t bitsPerSample
Definition: XWV.h:67
Frequency
Definition: XWV.h:18
const std::vector< std::byte > & getData() const
Definition: XWV.cpp:40
uint16_t loopBlock
Definition: XWV.h:63
int32_t getLoopStart() const
Definition: XWV.cpp:48
uint8_t getChannelCount() const
Definition: XWV.cpp:76
uint16_t getLoopBlock() const
Definition: XWV.cpp:52
Frequency getFrequency() const
Definition: XWV.cpp:72
uint16_t trailingSampleCount
Definition: XWV.h:65
uint8_t quality
Definition: XWV.h:70
uint32_t decodedSampleCount
Definition: XWV.h:61
uint8_t channelCount
Definition: XWV.h:69
uint16_t leadingSampleCount
Definition: XWV.h:64
uint8_t getBitsPerSample() const
Definition: XWV.cpp:68
uint16_t getLeadingSampleCount() const
Definition: XWV.cpp:56
uint16_t getTrailingSampleCount() const
Definition: XWV.cpp:60
Frequency frequency
Definition: XWV.h:68
int32_t loopStart
Definition: XWV.h:62
uint32_t getDecodedSampleCount() const
Definition: XWV.cpp:44
Definition: WAV.h:12
constexpr auto XWV_SIGNATURE
Definition: XWV.h:14
consteval uint32_t makeFourCC(const char fourCC[4])
Creates a FourCC identifier from a string of 4 characters.
Definition: Binary.h:18