Spaces:
Running
Running
| /* | |
| Copyright 2015 Google Inc. All rights reserved. | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| class FileResource; | |
| // This class provides the main interface for waveform input/output. The class | |
| // abstracts the implementation of the codec from the rest of the system. | |
| class WaveIO { | |
| public: | |
| WaveIO(); | |
| explicit WaveIO(WaveCodingType coding_type); | |
| ~WaveIO() { } | |
| template<class FileResourceType> | |
| bool Load(const std::string &filename, | |
| std::vector<int16_t> *samples, | |
| int32_t *sample_rate); | |
| // Loads the header-info and the audio data from a file, starting from the | |
| // current position of the FileResource. | |
| bool Load(FileResource *fr, | |
| std::vector<int16_t> *samples, | |
| int32_t *sample_rate); | |
| // Reads the header-info from the FileResource, starting from the current | |
| // position. | |
| bool ReadHeader(FileResource *fr, | |
| int32_t *num_samples_per_channel, | |
| int32_t *sample_rate); | |
| // Reads the audio data from the FileResource, under the condition that the | |
| // current position of the FileResource always points to the beginning of the | |
| // audio-container. The latter condition is preserved by this function. When | |
| // a codec with internal-state is used (i.e. iSAC), the internal state is kept | |
| // between sequential reads. The codec is reset prior non-sequential reads. | |
| bool ReadAudioData(int32_t wave_start, | |
| int32_t num_samples, | |
| std::vector<int16_t> *samples, | |
| FileResource *fr); | |
| // Reads all audio data contained in the audio container held at the current | |
| // position of the FileResource. | |
| bool ReadAudioContainer(int container_size_in_bytes, | |
| std::vector<int16_t> *samples, | |
| FileResource *fr); | |
| // Sets WaveIO to the corresponding codec, and also initializes the codec | |
| // itself. | |
| bool Initialize(WaveCodingType coding_type); | |
| WaveCodingType get_coding_type() const; | |
| private: | |
| CodecApi<WavRiffCodec> codec_riff_; | |
| WaveCodingType coding_type_; | |
| }; | |