Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Mueller <nexyon@gmail.com>2020-09-07 19:11:56 +0300
committerJoerg Mueller <nexyon@gmail.com>2020-09-07 19:12:45 +0300
commit9cac181fbead28c0bf963bf2b9f82fddf3c2b7df (patch)
tree75d720dabbdc67d706ff916d46984a65545916d1 /extern/audaspace/src/file
parent53ca638f2b738af644661bd4fabcf7e3fdf6e73b (diff)
Audaspace: port changes from upstream.
Adds possibility to report progress during audio mixdown.
Diffstat (limited to 'extern/audaspace/src/file')
-rw-r--r--extern/audaspace/src/file/FileWriter.cpp20
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);
+ }
}
}