]> git.sesse.net Git - casparcg/blobdiff - core/mixer/audio/audio_mixer.cpp
Fixed graph memory-leak.
[casparcg] / core / mixer / audio / audio_mixer.cpp
index 7b997d5f107cae19ddc7f6e8fa2c4fffa6eb3e30..6e35f66b57ff1df0765329e5533076983b387930 100644 (file)
@@ -171,6 +171,14 @@ public:
                std::vector<float> result_ps(audio_cadence_.front(), 0.0f);\r
                BOOST_FOREACH(auto& stream, audio_streams_ | boost::adaptors::map_values)\r
                {\r
+                       //CASPAR_LOG(debug) << stream.audio_data.size() << L" : " << result_ps.size();\r
+\r
+                       if(stream.audio_data.size() < result_ps.size())\r
+                       {\r
+                               stream.audio_data.resize(result_ps.size(), 0.0f);\r
+                               CASPAR_LOG(trace) << L"[audio_mixer] Appended zero samples";\r
+                       }\r
+\r
                        auto out = boost::range::transform(result_ps, stream.audio_data, std::begin(result_ps), std::plus<float>());\r
                        stream.audio_data.erase(std::begin(stream.audio_data), std::begin(stream.audio_data) + std::distance(std::begin(result_ps), out));\r
                }               \r
@@ -183,7 +191,7 @@ public:
 \r
                auto max = boost::range::max_element(result);\r
 \r
-               graph_->update_value("volume", static_cast<double>(std::abs(*max))/std::numeric_limits<int32_t>::max());\r
+               graph_->set_value("volume", static_cast<double>(std::abs(*max))/std::numeric_limits<int32_t>::max());\r
 \r
                return result;\r
        }\r