[Bf-blender-cvs] [50a139c] decklink: BGE: Support VideoDeckLink in Linux, compiling but not yet working.

Benoit Bolsee noreply at git.blender.org
Wed Apr 8 20:53:35 CEST 2015


Commit: 50a139cf496ac549ef27d7139aeae11e48667659
Author: Benoit Bolsee
Date:   Wed Apr 8 20:51:25 2015 +0200
Branches: decklink
https://developer.blender.org/rB50a139cf496ac549ef27d7139aeae11e48667659

BGE: Support VideoDeckLink in Linux, compiling but not yet working.

===================================================================

M	CMakeLists.txt
M	build_files/cmake/macros.cmake
M	intern/decklink/CMakeLists.txt
M	intern/decklink/DeckLinkAPI.cpp
M	intern/decklink/DeckLinkAPI.h
M	source/blenderplayer/CMakeLists.txt
M	source/gameengine/VideoTexture/VideoDeckLink.cpp
M	source/gameengine/VideoTexture/VideoDeckLink.h

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc7fa86..d0a9b7f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -220,9 +220,7 @@ option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported
 mark_as_advanced(WITH_SYSTEM_BULLET)
 option(WITH_GAMEENGINE    "Enable Game Engine" ${_init_GAMEENGINE})
 option(WITH_PLAYER        "Build Player" OFF)
-if (WIN32)
-	option(WITH_DECKLINK      "Support BlackMagicDesign DeckLink cards in the BGE" OFF)
-endif()
+option(WITH_DECKLINK      "Support BlackMagicDesign DeckLink cards in the BGE" OFF)
 option(WITH_OPENCOLORIO   "Enable OpenColorIO color management" ${_init_OPENCOLORIO})
 option(WITH_COMPOSITOR    "Enable the tile based nodal compositor" ON)
 
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index eed013c..d660f1f 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -654,8 +654,12 @@ macro(SETUP_BLENDER_SORTED_LIBS)
 		list_insert_after(BLENDER_SORTED_LIBS "ge_logic_ngnetwork" "extern_bullet")
 	endif()
 
+	if(WITH_DECKLINK)
+		list(APPEND BLENDER_SORTED_LIBS bf_intern_decklink)
+	endif()
+
 	if(WIN32)
-		list(APPEND BLENDER_SORTED_LIBS bf_intern_decklink bf_intern_gpudirect)
+		list(APPEND BLENDER_SORTED_LIBS bf_intern_gpudirect)
 	endif()
 
 	foreach(SORTLIB ${BLENDER_SORTED_LIBS})
diff --git a/intern/decklink/CMakeLists.txt b/intern/decklink/CMakeLists.txt
index 37919d6..41dc029 100644
--- a/intern/decklink/CMakeLists.txt
+++ b/intern/decklink/CMakeLists.txt
@@ -43,5 +43,19 @@ if (WIN32)
 	)
 endif()
 
+if (UNIX AND NOT APPLE)
+        list(APPEND SRC
+                linux/DeckLinkAPI.h
+                linux/DeckLinkAPIConfiguration.h
+                linux/DeckLinkAPIDeckControl.h
+                linux/DeckLinkAPIDiscovery.h
+                linux/DeckLinkAPIDispatch.cpp
+                linux/DeckLinkAPIModes.h
+                linux/DeckLinkAPIVersion.h
+                linux/DeckLinkAPITypes.h
+                linux/LinuxCOM.h
+        )
+endif()
+
 
 blender_add_lib(bf_intern_decklink "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/intern/decklink/DeckLinkAPI.cpp b/intern/decklink/DeckLinkAPI.cpp
index a21acfe..fa2a2e2 100644
--- a/intern/decklink/DeckLinkAPI.cpp
+++ b/intern/decklink/DeckLinkAPI.cpp
@@ -43,4 +43,9 @@ IDeckLinkIterator* BMD_CreateDeckLinkIterator(void)
 		return NULL;
 	return pDLIterator;
 }
-#endif
+#else
+IDeckLinkIterator* BMD_CreateDeckLinkIterator(void)
+{
+    return CreateDeckLinkIteratorInstance();
+}
+#endif  // WIN32
diff --git a/intern/decklink/DeckLinkAPI.h b/intern/decklink/DeckLinkAPI.h
index efb0c2b..2208f39 100644
--- a/intern/decklink/DeckLinkAPI.h
+++ b/intern/decklink/DeckLinkAPI.h
@@ -31,8 +31,17 @@
 
 #ifdef WIN32
 	#include "win/DeckLinkAPI_h.h"
+    typedef unsigned long   dl_size_t;
+#else
+    #include "linux/DeckLinkAPI.h"
+    /* Windows COM API uses BOOL, linux uses bool */
+    #define BOOL bool
+    typedef uint32_t    dl_size_t;
 #endif
 
+
+
+
 /* OS independent function to get the device iterator */
 IDeckLinkIterator* BMD_CreateDeckLinkIterator(void);
 
diff --git a/source/blenderplayer/CMakeLists.txt b/source/blenderplayer/CMakeLists.txt
index 9ba4771..03ca541 100644
--- a/source/blenderplayer/CMakeLists.txt
+++ b/source/blenderplayer/CMakeLists.txt
@@ -104,8 +104,6 @@ endif()
 		bf_intern_string 
 		bf_intern_ghost
 		bf_intern_ghostndof3dconnexion
-		bf_intern_decklink
-		bf_intern_gpudirect
 		bf_rna
 		bf_blenkernel
 		bf_physics
@@ -211,6 +209,14 @@ endif()
 		list(APPEND BLENDER_SORTED_LIBS bf_intern_locale)
 	endif()
 
+        if(WITH_DECKLINK)
+                list(APPEND BLENDER_SORTED_LIBS bf_intern_decklink)
+        endif()
+
+        if(WIN32)
+                list(APPEND BLENDER_SORTED_LIBS bf_intern_gpudirect)
+        endif()
+
 	foreach(SORTLIB ${BLENDER_SORTED_LIBS})
 		set(REMLIB ${SORTLIB})
 		foreach(SEARCHLIB ${BLENDER_LINK_LIBS})
diff --git a/source/gameengine/VideoTexture/VideoDeckLink.cpp b/source/gameengine/VideoTexture/VideoDeckLink.cpp
index cbf1e08..3d421e4 100644
--- a/source/gameengine/VideoTexture/VideoDeckLink.cpp
+++ b/source/gameengine/VideoTexture/VideoDeckLink.cpp
@@ -393,7 +393,7 @@ ULONG STDMETHODCALLTYPE		PinnedMemoryAllocator::Release(void)
 }
 
 // IDeckLinkMemoryAllocator methods
-HRESULT STDMETHODCALLTYPE	PinnedMemoryAllocator::AllocateBuffer(unsigned long bufferSize, void* *allocatedBuffer)
+HRESULT STDMETHODCALLTYPE	PinnedMemoryAllocator::AllocateBuffer(dl_size_t bufferSize, void* *allocatedBuffer)
 {
 	Lock();
 	if (mBufferCache.empty())
@@ -881,7 +881,7 @@ void VideoDeckLink::calcImage (unsigned int texId, double ts)
 				if (mUse3D) {
 					IDeckLinkVideoFrame3DExtensions *if3DExtensions = NULL;
 					IDeckLinkVideoFrame *rightEyeFrame = NULL;
-					if (pFrame->QueryInterface(&if3DExtensions) == S_OK &&
+                    if (pFrame->QueryInterface(IID_IDeckLinkVideoFrame3DExtensions, (void **)&if3DExtensions) == S_OK &&
 						if3DExtensions->GetFrameForRightEye(&rightEyeFrame) == S_OK) {
 						rightEyeFrame->GetBytes(&rightEyePixels);
 						textureSize += ((uint64_t)rightEyePixels - (uint64_t)videoPixels);
diff --git a/source/gameengine/VideoTexture/VideoDeckLink.h b/source/gameengine/VideoTexture/VideoDeckLink.h
index 5a8b7fd..e9d14d4 100644
--- a/source/gameengine/VideoTexture/VideoDeckLink.h
+++ b/source/gameengine/VideoTexture/VideoDeckLink.h
@@ -72,6 +72,8 @@ struct TextureDesc
 	}
 };
 
+class CaptureDelegate;
+
 // type VideoDeckLink declaration
 class VideoDeckLink : public VideoBase
 {
@@ -183,7 +185,7 @@ public:
 	virtual ULONG STDMETHODCALLTYPE		Release(void);
 
 	// IDeckLinkMemoryAllocator methods
-	virtual HRESULT STDMETHODCALLTYPE	AllocateBuffer(unsigned long bufferSize, void* *allocatedBuffer);
+    virtual HRESULT STDMETHODCALLTYPE	AllocateBuffer(dl_size_t bufferSize, void* *allocatedBuffer);
 	virtual HRESULT STDMETHODCALLTYPE	ReleaseBuffer(void* buffer);
 	virtual HRESULT STDMETHODCALLTYPE	Commit();
 	virtual HRESULT STDMETHODCALLTYPE	Decommit();




More information about the Bf-blender-cvs mailing list