Browse Source

为wavheader添加注释

disinfection_machine
zhaohe 2 years ago
parent
commit
c8cd4807bf
  1. 49
      core/components/audio/wavheader.hpp

49
core/components/audio/wavheader.hpp

@ -30,8 +30,31 @@
namespace iflytop { namespace iflytop {
namespace core { namespace core {
/**
* @brief WAV
*
* WAV WAV 44
*/
class WAVHeader { class WAVHeader {
public: public:
/**
* @brief WAV
*
* WAV
* - "RIFF" 4 chunk_id
* - - 8 4 chunk_size
* - "WAVE" 4 format
* - "fmt " 4 subchunk1_id
* - 16 4 subchunk1_size
* - 1 PCM 2 audio_format
* - 1 2 2 num_channels
* - 44100 4 sample_rate
* - * * / 8 4 byte_rate
* - 2 16 2 2 block_align
* - 8162432 2 bits_per_sample
* - "data" 4 subchunk2_id
* - - 44 4 subchunk2_size
*/
struct WAVHeaderBinary { struct WAVHeaderBinary {
char chunk_id[4]; // 固定为 "RIFF" char chunk_id[4]; // 固定为 "RIFF"
uint32_t chunk_size; // 文件总大小 - 8 uint32_t chunk_size; // 文件总大小 - 8
@ -77,19 +100,19 @@ class WAVHeader {
} }
void dump(shared_ptr<logger> logger) { void dump(shared_ptr<logger> logger) {
logger->info("chunk_id: {}", string(header.chunk_id, 4));
logger->info("chunk_size: {}", header.chunk_size);
logger->info("format: {}", string(header.format,4));
logger->info("subchunk1_id: {}", string(header.subchunk1_id,4));
logger->info("subchunk1_size: {}", header.subchunk1_size);
logger->info("audio_format: {}", header.audio_format);
logger->info("num_channels: {}", header.num_channels);
logger->info("sample_rate: {}", header.sample_rate);
logger->info("byte_rate: {}", header.byte_rate);
logger->info("block_align: {}", header.block_align);
logger->info("bits_per_sample: {}", header.bits_per_sample);
logger->info("subchunk2_id: {}", header.subchunk2_id);
logger->info("subchunk2_size: {}", header.subchunk2_size);
logger->info("chunk_id: {}", string(header.chunk_id, 4));
logger->info("chunk_size: {}", header.chunk_size);
logger->info("format: {}", string(header.format, 4));
logger->info("subchunk1_id: {}", string(header.subchunk1_id, 4));
logger->info("subchunk1_size: {}", header.subchunk1_size);
logger->info("audio_format: {}", header.audio_format);
logger->info("num_channels: {}", header.num_channels);
logger->info("sample_rate: {}", header.sample_rate);
logger->info("byte_rate: {}", header.byte_rate);
logger->info("block_align: {}", header.block_align);
logger->info("bits_per_sample: {}", header.bits_per_sample);
logger->info("subchunk2_id: {}", header.subchunk2_id);
logger->info("subchunk2_size: {}", header.subchunk2_size);
} }
WAVHeader(uint32_t sample_rate, uint16_t bits_per_sample, uint16_t num_channels, uint32_t num_samples) { WAVHeader(uint32_t sample_rate, uint16_t bits_per_sample, uint16_t num_channels, uint32_t num_samples) {

Loading…
Cancel
Save