mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 08:22:45 +00:00 
			
		
		
		
	 ac9907ee61
			
		
	
	
		ac9907ee61
		
	
	
	
	
		
			
			Renamed "Position" to "Elapsed". "channel/channels" automatically changes now when more than one channel exist. The current file name is now displayed in the window title.
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <AK/String.h>
 | |
| #include <AK/RefPtr.h>
 | |
| #include <AK/StringView.h>
 | |
| #include <LibCore/CFile.h>
 | |
| #include <LibAudio/ABuffer.h>
 | |
| 
 | |
| class ABuffer;
 | |
| 
 | |
| namespace AK {
 | |
| class ByteBuffer;
 | |
| }
 | |
| 
 | |
| // Parses a WAV file and produces an ABuffer instance from it
 | |
| class AWavLoader {
 | |
| public:
 | |
|     explicit AWavLoader(const StringView& path);
 | |
| 
 | |
|     bool has_error() const { return !m_error_string.is_null(); }
 | |
|     const char* error_string() { return m_error_string.characters(); }
 | |
| 
 | |
|     RefPtr<ABuffer> get_more_samples(size_t max_bytes_to_read_from_input = 128 * KB);
 | |
| 
 | |
|     void reset();
 | |
|     void seek(const int position);
 | |
| 
 | |
|     int loaded_samples() const { return m_loaded_samples; }
 | |
|     int total_samples() const { return m_total_samples; }
 | |
|     u32 sample_rate() const { return m_sample_rate; }
 | |
|     u16 num_channels() const { return m_num_channels; }
 | |
|     u16 bits_per_sample() const { return m_bits_per_sample; }
 | |
|     RefPtr<CFile> file() const { return m_file; }
 | |
| 
 | |
| private:
 | |
|     bool parse_header();
 | |
|     RefPtr<CFile> m_file;
 | |
|     String m_error_string;
 | |
|     OwnPtr<AResampleHelper> m_resampler;
 | |
| 
 | |
|     u32 m_sample_rate { 0 };
 | |
|     u16 m_num_channels { 0 };
 | |
|     u16 m_bits_per_sample { 0 };
 | |
| 
 | |
|     int m_loaded_samples { 0 };
 | |
|     int m_total_samples { 0 };
 | |
| };
 |