206{
207 auto audio = std::dynamic_pointer_cast<AudioBuffer>(audio_buffer);
208 if (!audio) {
210 "TransferProcessor (gpu→audio) requires AudioBuffer.");
211 return;
212 }
213
215 [&audio](const auto& pair) { return pair.second == audio; });
216
219 "No source VKBuffer configured for this AudioBuffer.");
220 return;
221 }
222
223 auto source_gpu = transfer_it->first;
224
226 std::shared_ptr<VKBuffer> staging = (staging_it !=
m_staging_map.end()) ? staging_it->second : nullptr;
227
229}
#define MF_RT_ERROR(comp, ctx,...)
std::unordered_map< std::shared_ptr< VKBuffer >, std::shared_ptr< AudioBuffer > > m_gpu_to_audio_map
std::unordered_map< std::shared_ptr< VKBuffer >, std::shared_ptr< VKBuffer > > m_staging_map
void download_audio_from_gpu(const std::shared_ptr< VKBuffer > &gpu_buffer, const std::shared_ptr< AudioBuffer > &audio_buffer, const std::shared_ptr< VKBuffer > &staging)
Download GPU buffer to AudioBuffer (expects double precision)
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.