mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-07 20:10:13 +02:00
Pass through host provided IBStream objects
So if the host supports IStreamAttributes, we can also provide objects that support the same itnerface to the plugin.
This commit is contained in:
@@ -30,25 +30,25 @@ YaBStream::YaBStream(Steinberg::IBStream* stream) {
|
||||
throw std::runtime_error("Null pointer passed to YaBStream()");
|
||||
}
|
||||
|
||||
if (stream->seek(0, Steinberg::IBStream::IStreamSeekMode::kIBSeekEnd) !=
|
||||
// Copy any existing contents, used for `IComponent::setState` and similar
|
||||
// methods
|
||||
if (stream->seek(0, Steinberg::IBStream::IStreamSeekMode::kIBSeekEnd) ==
|
||||
Steinberg::kResultOk) {
|
||||
throw std::runtime_error(
|
||||
"IBStream passed to YaBStream() does not suport seeking to end");
|
||||
// Now that we're at the end of the stream we know how large the buffer
|
||||
// should be
|
||||
int64 size;
|
||||
assert(stream->tell(&size) == Steinberg::kResultOk);
|
||||
|
||||
int32 num_bytes_read = 0;
|
||||
buffer.resize(size);
|
||||
assert(
|
||||
stream->seek(0, Steinberg::IBStream::IStreamSeekMode::kIBSeekSet) ==
|
||||
Steinberg::kResultOk);
|
||||
assert(stream->read(buffer.data(), size, &num_bytes_read) ==
|
||||
Steinberg::kResultOk);
|
||||
assert(num_bytes_read == 0 || num_bytes_read == size);
|
||||
}
|
||||
|
||||
// Now that we're at the end of the stream we know how large the buffer
|
||||
// should be
|
||||
int64 size;
|
||||
assert(stream->tell(&size) == Steinberg::kResultOk);
|
||||
|
||||
int32 num_bytes_read = 0;
|
||||
buffer.resize(size);
|
||||
assert(stream->seek(0, Steinberg::IBStream::IStreamSeekMode::kIBSeekSet) ==
|
||||
Steinberg::kResultOk);
|
||||
assert(stream->read(buffer.data(), size, &num_bytes_read) ==
|
||||
Steinberg::kResultOk);
|
||||
assert(num_bytes_read == 0 || num_bytes_read == size);
|
||||
|
||||
// Starting at VST 3.6.0 streams provided by the host may contain context
|
||||
// based meta data
|
||||
if (Steinberg::FUnknownPtr<Steinberg::Vst::IStreamAttributes>
|
||||
|
||||
Reference in New Issue
Block a user