diff --git a/components/streams/src/renderers/screen_render.cpp b/components/streams/src/renderers/screen_render.cpp index b9b5bb73721574ab6e0345d7233718f9ce7c2879..37c46a717a86642dc8f137d0c91c85c7b30cdd53 100644 --- a/components/streams/src/renderers/screen_render.cpp +++ b/components/streams/src/renderers/screen_render.cpp @@ -155,18 +155,19 @@ bool ScreenRender::retrieve(ftl::data::Frame &frame_out) { for (auto &s : sets) { if (s->frameset() == my_id_) continue; // Skip self - auto &mixmap = mixmap_[s->id().id]; - if (mixmap.track == -1) mixmap.track = tracks_++; - // TODO: Render audio also... // Use another thread to merge all audio channels along with // some degree of volume adjustment. Later, do 3D audio. - mixer_.resize(tracks_); + //mixer_.resize(tracks_); // Inject and copy data items for (size_t i=0; i<s->frames.size(); ++i) { auto &f = s->frames[i]; + auto &mixmap = mixmap_[f.id().id]; + if (mixmap.track == -1) mixmap.track = tracks_++; + mixer_.resize(tracks_); + if (mixmap.last_timestamp != f.timestamp() && f.hasChannel(Channel::AudioStereo)) { const auto &audio = f.get<std::list<ftl::audio::Audio>>(Channel::AudioStereo).front(); mixer_.write(mixmap.track, audio.data());