diff options
author | Joerg Mueller <nexyon@gmail.com> | 2020-09-07 19:11:56 +0300 |
---|---|---|
committer | Joerg Mueller <nexyon@gmail.com> | 2020-09-07 19:12:45 +0300 |
commit | 9cac181fbead28c0bf963bf2b9f82fddf3c2b7df (patch) | |
tree | 75d720dabbdc67d706ff916d46984a65545916d1 /extern/audaspace/src/file/FileWriter.cpp | |
parent | 53ca638f2b738af644661bd4fabcf7e3fdf6e73b (diff) |
Audaspace: port changes from upstream.
Adds possibility to report progress during audio mixdown.
Diffstat (limited to 'extern/audaspace/src/file/FileWriter.cpp')
-rw-r--r-- | extern/audaspace/src/file/FileWriter.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/extern/audaspace/src/file/FileWriter.cpp b/extern/audaspace/src/file/FileWriter.cpp index a6bb0f0049a..b28bbc5329d 100644 --- a/extern/audaspace/src/file/FileWriter.cpp +++ b/extern/audaspace/src/file/FileWriter.cpp @@ -27,7 +27,7 @@ std::shared_ptr<IWriter> FileWriter::createWriter(std::string filename,DeviceSpe return FileManager::createWriter(filename, specs, format, codec, bitrate); } -void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IWriter> writer, unsigned int length, unsigned int buffersize) +void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IWriter> writer, unsigned int length, unsigned int buffersize, void(*callback)(float, void*), void* data) { Buffer buffer(buffersize * AUD_SAMPLE_SIZE(writer->getSpecs())); sample_t* buf = buffer.getBuffer(); @@ -53,10 +53,18 @@ void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IW } writer->write(len, buf); + + if(callback) + { + float progress = -1; + if(length > 0) + progress = pos / float(length); + callback(progress, data); + } } } -void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::vector<std::shared_ptr<IWriter> >& writers, unsigned int length, unsigned int buffersize) +void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::vector<std::shared_ptr<IWriter> >& writers, unsigned int length, unsigned int buffersize, void(*callback)(float, void*), void* data) { Buffer buffer(buffersize * AUD_SAMPLE_SIZE(reader->getSpecs())); Buffer buffer2(buffersize * sizeof(sample_t)); @@ -89,6 +97,14 @@ void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::vector<std::s writers[channel]->write(len, buf2); } + + if(callback) + { + float progress = -1; + if(length > 0) + progress = pos / float(length); + callback(progress, data); + } } } |