Browse Source

win-dshow: Incorporate Elgato submodule

Add automatic tonemap toggle for HD60 S+ as well.
jpark37 3 years ago
parent
commit
87a69f7623

+ 60 - 8
plugins/win-dshow/CMakeLists.txt

@@ -30,9 +30,20 @@ target_sources(
   win-dshow PRIVATE encode-dstr.hpp win-dshow.cpp win-dshow-encoder.cpp
                     dshow-plugin.cpp ffmpeg-decode.c ffmpeg-decode.h)
 
+add_library(libdshowcapture-external INTERFACE)
 add_library(libdshowcapture INTERFACE)
+add_library(OBS::libdshowcapture-external ALIAS libdshowcapture-external)
 add_library(OBS::libdshowcapture ALIAS libdshowcapture)
 
+target_sources(
+  libdshowcapture-external
+  INTERFACE
+    libdshowcapture/external/capture-device-support/Library/EGAVResult.cpp
+    libdshowcapture/external/capture-device-support/Library/ElgatoUVCDevice.cpp
+    libdshowcapture/external/capture-device-support/Library/win/EGAVHIDImplementation.cpp
+    libdshowcapture/external/capture-device-support/SampleCode/DriverInterface.cpp
+)
+
 target_sources(
   libdshowcapture
   INTERFACE libdshowcapture/dshowcapture.hpp
@@ -64,7 +75,15 @@ target_sources(
             libdshowcapture/source/external/IVideoCaptureFilter.h)
 
 target_include_directories(
-  libdshowcapture INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/libdshowcapture)
+  libdshowcapture
+  INTERFACE
+    ${CMAKE_CURRENT_SOURCE_DIR}/libdshowcapture
+    ${CMAKE_CURRENT_SOURCE_DIR}/libdshowcapture/external/capture-device-support/Library
+)
+
+target_compile_definitions(libdshowcapture-external INTERFACE _UP_WINDOWS=1)
+target_compile_definitions(libdshowcapture INTERFACE _UP_WINDOWS=1)
+target_compile_options(libdshowcapture-external INTERFACE /wd4018)
 
 set(MODULE_DESCRIPTION "OBS DirectShow module")
 
@@ -136,6 +155,7 @@ target_link_libraries(
   win-dshow
   PRIVATE OBS::libobs
           OBS::w32-pthreads
+          OBS::libdshowcapture-external
           OBS::libdshowcapture
           setupapi
           strmiids
@@ -145,13 +165,45 @@ target_link_libraries(
           FFmpeg::avcodec
           FFmpeg::avutil)
 
-file(GLOB _LIBOBS_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/libdshowcapture/*.c
-     ${CMAKE_CURRENT_SOURCE_DIR}/libdshowcapture/*.cpp)
-file(GLOB _LIBOBS_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/libdshowcapture/*.h
-     ${CMAKE_CURRENT_SOURCE_DIR}/libdshowcapture/*.hpp)
-
-source_group("libdshowcapture\\Source Files" FILES ${_LIBOBS_SOURCE_FILES})
-source_group("libdshowcapture\\Header Files" FILES ${_LIBOBS_HEADER_FILES})
+source_group(
+  "libdshowcapture-external\\Source Files"
+  FILES
+    libdshowcapture/external/capture-device-support/Library/EGAVResult.cpp
+    libdshowcapture/external/capture-device-support/Library/ElgatoUVCDevice.cpp
+    libdshowcapture/external/capture-device-support/Library/win/EGAVHIDImplementation.cpp
+    libdshowcapture/external/capture-device-support/SampleCode/DriverInterface.cpp
+)
+source_group(
+  "libdshowcapture\\Source Files"
+  FILES libdshowcapture/source/capture-filter.cpp
+        libdshowcapture/source/output-filter.cpp
+        libdshowcapture/source/dshowcapture.cpp
+        libdshowcapture/source/dshowencode.cpp
+        libdshowcapture/source/device.cpp
+        libdshowcapture/source/device-vendor.cpp
+        libdshowcapture/source/encoder.cpp
+        libdshowcapture/source/dshow-base.cpp
+        libdshowcapture/source/dshow-demux.cpp
+        libdshowcapture/source/dshow-enum.cpp
+        libdshowcapture/source/dshow-formats.cpp
+        libdshowcapture/source/dshow-media-type.cpp
+        libdshowcapture/source/dshow-encoded-device.cpp
+        libdshowcapture/source/log.cpp)
+source_group(
+  "libdshowcapture\\Header Files"
+  FILES libdshowcapture/dshowcapture.hpp
+        libdshowcapture/source/capture-filter.hpp
+        libdshowcapture/source/output-filter.hpp
+        libdshowcapture/source/device.hpp
+        libdshowcapture/source/encoder.hpp
+        libdshowcapture/source/dshow-base.hpp
+        libdshowcapture/source/dshow-demux.hpp
+        libdshowcapture/source/dshow-device-defs.hpp
+        libdshowcapture/source/dshow-enum.hpp
+        libdshowcapture/source/dshow-formats.hpp
+        libdshowcapture/source/dshow-media-type.hpp
+        libdshowcapture/source/log.hpp
+        libdshowcapture/source/external/IVideoCaptureFilter.h)
 
 set_target_properties(win-dshow PROPERTIES FOLDER "plugins/win-dshow")
 

+ 1 - 1
plugins/win-dshow/libdshowcapture

@@ -1 +1 @@
-Subproject commit 8f2ef910bae88163abd904dd0eeaf027fd09c10a
+Subproject commit c625af2f4018134cb915a5adcb7172c1b8952182

+ 3 - 15
plugins/win-dshow/virtualcam-module/CMakeLists.txt

@@ -35,8 +35,9 @@ configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in
 target_sources(obs-virtualcam-module PRIVATE virtualcam-module.rc)
 
 target_link_libraries(
-  obs-virtualcam-module PRIVATE OBS::libdshowcapture setupapi winmm strmiids
-                                gdiplus)
+  obs-virtualcam-module
+  PRIVATE OBS::libdshowcapture OBS::libdshowcapture-external setupapi winmm
+          strmiids gdiplus)
 
 target_link_options(obs-virtualcam-module PRIVATE "LINKER:/ignore:4104")
 
@@ -62,19 +63,6 @@ if(MSVC)
 
 endif()
 
-get_target_property(_LIBDSHOW_SOURCES OBS::libdshowcapture INTERFACE_SOURCES)
-
-foreach(_LIBDSHOW_SOURCE ${_LIBDSHOW_SOURCES})
-  get_filename_component(_EXT ${_LIBDSHOW_SOURCE} EXT)
-  if(${_EXT} STREQUAL "hpp" OR ${_EXT} STREQUAL "h")
-    source_group("libdshowcapture\\Header Files" FILES ${_LIBDSHOW_SOURCE})
-  elseif(${_EXT} STREQUAL "cpp" OR ${_EXT} STREQUAL "c")
-    source_group("libdshowcapture\\Source Files" FILES ${_LIBDSHOW_SOURCE})
-  endif()
-endforeach()
-unset(_LIBDSHOW_SOURCE)
-unset(_LIBDSHOW_SOURCES)
-
 set_target_properties(obs-virtualcam-module PROPERTIES FOLDER
                                                        "plugins/win-dshow")