[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