|
|
@@ -13,7 +13,67 @@ set(win-dshow_HEADERS
|
|
|
ffmpeg-decode.h)
|
|
|
|
|
|
set(MODULE_DESCRIPTION "OBS DirectShow module")
|
|
|
+
|
|
|
+set(VIRTUALCAM_GUID "" CACHE STRING "VirtualCam GUID")
|
|
|
+
|
|
|
+set(VIRTUALCAM_ENABLED FALSE)
|
|
|
+if(VIRTUALCAM_GUID STREQUAL "")
|
|
|
+ message(STATUS "VirtualCam GUID not set! VirtualCam disabled.")
|
|
|
+else()
|
|
|
+ set(INVALID_GUID TRUE)
|
|
|
+
|
|
|
+ string(REPLACE "-" ";" GUID_VALS ${VIRTUALCAM_GUID})
|
|
|
+
|
|
|
+ list(LENGTH GUID_VALS GUID_VAL_COUNT)
|
|
|
+ if(GUID_VAL_COUNT EQUAL 5)
|
|
|
+ string(REPLACE ";" "0" GUID_HEX ${GUID_VALS})
|
|
|
+ string(REGEX MATCH "[0-9a-fA-F]+" GUID_ACTUAL_HEX ${GUID_HEX})
|
|
|
+ if(GUID_ACTUAL_HEX STREQUAL GUID_HEX)
|
|
|
+ list(GET GUID_VALS 0 GUID_VALS_DATA1)
|
|
|
+ list(GET GUID_VALS 1 GUID_VALS_DATA2)
|
|
|
+ list(GET GUID_VALS 2 GUID_VALS_DATA3)
|
|
|
+ list(GET GUID_VALS 3 GUID_VALS_DATA4)
|
|
|
+ list(GET GUID_VALS 4 GUID_VALS_DATA5)
|
|
|
+ string(LENGTH ${GUID_VALS_DATA1} GUID_VALS_DATA1_LENGTH)
|
|
|
+ string(LENGTH ${GUID_VALS_DATA2} GUID_VALS_DATA2_LENGTH)
|
|
|
+ string(LENGTH ${GUID_VALS_DATA3} GUID_VALS_DATA3_LENGTH)
|
|
|
+ string(LENGTH ${GUID_VALS_DATA4} GUID_VALS_DATA4_LENGTH)
|
|
|
+ string(LENGTH ${GUID_VALS_DATA5} GUID_VALS_DATA5_LENGTH)
|
|
|
+ if(GUID_VALS_DATA1_LENGTH EQUAL 8 AND
|
|
|
+ GUID_VALS_DATA2_LENGTH EQUAL 4 AND
|
|
|
+ GUID_VALS_DATA3_LENGTH EQUAL 4 AND
|
|
|
+ GUID_VALS_DATA4_LENGTH EQUAL 4 AND
|
|
|
+ GUID_VALS_DATA5_LENGTH EQUAL 12)
|
|
|
+ set(GUID_VAL01 ${GUID_VALS_DATA1})
|
|
|
+ set(GUID_VAL02 ${GUID_VALS_DATA2})
|
|
|
+ set(GUID_VAL03 ${GUID_VALS_DATA3})
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA4} 0 2 GUID_VAL04)
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA4} 2 2 GUID_VAL05)
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA5} 0 2 GUID_VAL06)
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA5} 2 2 GUID_VAL07)
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA5} 4 2 GUID_VAL08)
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA5} 6 2 GUID_VAL09)
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA5} 8 2 GUID_VAL10)
|
|
|
+ string(SUBSTRING ${GUID_VALS_DATA5} 10 2 GUID_VAL11)
|
|
|
+ set(VIRTUALCAM_ENABLED TRUE)
|
|
|
+ set(INVALID_GUID FALSE)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
+if(INVALID_GUID)
|
|
|
+ message(WARNING "Invalid VirtualCam GUID! VirtualCam disabled.")
|
|
|
+endif()
|
|
|
+
|
|
|
+if(VIRTUALCAM_ENABLED)
|
|
|
+ add_definitions(-DVIRTUALCAM_ENABLED)
|
|
|
+endif()
|
|
|
+
|
|
|
configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in win-dshow.rc)
|
|
|
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/virtualcam-guid.h.in ${CMAKE_CURRENT_BINARY_DIR}/virtualcam-guid.h)
|
|
|
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
+
|
|
|
set(win-dshow_SOURCES
|
|
|
win-dshow.cpp
|
|
|
win-dshow-encoder.cpp
|
|
|
@@ -21,13 +81,15 @@ set(win-dshow_SOURCES
|
|
|
ffmpeg-decode.c
|
|
|
win-dshow.rc)
|
|
|
|
|
|
-set(virtualcam-output_SOURCES
|
|
|
- tiny-nv12-scale.c
|
|
|
- shared-memory-queue.c
|
|
|
- virtualcam.c)
|
|
|
-set(virtualcam-output_HEADERS
|
|
|
- tiny-nv12-scale.h
|
|
|
- shared-memory-queue.h)
|
|
|
+if(VIRTUALCAM_ENABLED)
|
|
|
+ set(virtualcam-output_SOURCES
|
|
|
+ tiny-nv12-scale.c
|
|
|
+ shared-memory-queue.c
|
|
|
+ virtualcam.c)
|
|
|
+ set(virtualcam-output_HEADERS
|
|
|
+ tiny-nv12-scale.h
|
|
|
+ shared-memory-queue.h)
|
|
|
+endif()
|
|
|
|
|
|
set(libdshowcapture_SOURCES
|
|
|
libdshowcapture/source/capture-filter.cpp
|
|
|
@@ -80,4 +142,6 @@ source_group("libdshowcapture\\Header Files" FILES ${libdshowcapture_HEADERS})
|
|
|
|
|
|
install_obs_plugin_with_data(win-dshow data)
|
|
|
|
|
|
-add_subdirectory(virtualcam-module)
|
|
|
+if(VIRTUALCAM_ENABLED)
|
|
|
+ add_subdirectory(virtualcam-module)
|
|
|
+endif()
|