]> git.sesse.net Git - casparcg/commitdiff
1.8.2.9: Fixed CG and Video frame compositing to include audio.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sat, 26 Feb 2011 11:09:32 +0000 (11:09 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sat, 26 Feb 2011 11:09:32 +0000 (11:09 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@482 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

server/Application.cpp
server/consumers/bluefish/BluefishPlaybackStrategy.cpp
server/frame/FramePlaybackControl.cpp

index 54c07436a2dc5bc466c9bc3881da3602738a88f8..c0d14a69ba308475cf48ef245184ee64817c0e20 100644 (file)
@@ -91,7 +91,7 @@ using namespace utils;
 enum ControllerTransports { TCP, Serial, TransportsCount };\r
 enum ControllerProtocols { AMCP, CII, CLOCK, ProtocolsCount };\r
 \r
-const TCHAR* Application::versionString_(TEXT("CG 1.8.2.8"));\r
+const TCHAR* Application::versionString_(TEXT("CG 1.8.2.9"));\r
 const TCHAR* Application::serviceName_(TEXT("Caspar service"));\r
 \r
 Application::Application(const tstring& cmdline, HINSTANCE hInstance) :           hInstance_(hInstance), logLevel_(2), logDir_(TEXT("log")), \r
index fdcc251a5101241cc6a8f78f00f09d6b73b6e680..79fcbf70642a9f5e516f77f62898c87dde434aef 100644 (file)
@@ -186,9 +186,12 @@ struct BluefishPlaybackStrategy::Implementation
                memset(dest, 0, size*2);\r
                std::for_each(frame_audio_data.begin(), frame_audio_data.end(), [&](const audio::AudioDataChunkPtr& chunk)\r
                {\r
-                       BLUE_UINT16* src = reinterpret_cast<BLUE_UINT16*>(chunk->GetDataPtr());\r
-                       for(size_t n = 0; n < size; ++n)\r
-                               dest[n] = static_cast<BLUE_UINT16>(static_cast<BLUE_UINT32>(dest[n])+static_cast<BLUE_UINT32>(src[n]));\r
+                       if(chunk->GetLength() == size*2)\r
+                       {\r
+                               BLUE_UINT16* src = reinterpret_cast<BLUE_UINT16*>(chunk->GetDataPtr());\r
+                               for(size_t n = 0; n < size; ++n)\r
+                                       dest[n] = static_cast<BLUE_UINT16>(static_cast<BLUE_UINT32>(dest[n])+static_cast<BLUE_UINT32>(src[n]));\r
+                       }\r
                });\r
        }\r
 \r
index 3bef0120aed464cb197db02f95972e5bf5ad7aa6..a1fae8cbd47702e6b754e5ab6165774fba11cc73 100644 (file)
@@ -553,6 +553,8 @@ void FramePlaybackControl::DoRender(HANDLE& handle, bool bPureCG)
                        pResultFrame = pStrategy_->GetReservedFrame();\r
                        if(pResultFrame) {\r
                                utils::image::PreOver(pResultFrame->GetDataPtr(), pVideoFrame->GetDataPtr(), pCGFrame->GetDataPtr(), pResultFrame->GetDataSize());\r
+                               pResultFrame->GetAudioData().insert(pResultFrame->GetAudioData().end(), pVideoFrame->GetAudioData().begin(), pVideoFrame->GetAudioData().end());\r
+                               pResultFrame->GetAudioData().insert(pResultFrame->GetAudioData().end(), pCGFrame->GetAudioData().begin(), pCGFrame->GetAudioData().end());\r
                        }\r
                }\r
                else\r