Statically link ftd2 library

This commit is contained in:
Lorenzooone 2024-06-23 02:00:14 +02:00
parent 8d6d57ca20
commit 65e2950970
16 changed files with 217 additions and 24 deletions

View File

@ -7,6 +7,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
set(CMAKE_HOST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE STRING "Host Compiler")
set(WINDOWS_FTD3XX_USE_SHARED_LIB 0)
set(WINDOWS_FTD2XX_USE_SHARED_LIB 0)
set(BUILD_SHARED_LIBS FALSE)
set(FETCHCONTENT_QUIET FALSE)
set(EXTRA_CXX_FLAGS "")
@ -14,6 +15,8 @@ set(RASPBERRY_PI_COMPILATION FALSE CACHE BOOL "Option for compiling the Raspberr
set(SFML_BUILD_NETWORK FALSE)
set(EXTRA_LIBRARIES "")
set(FINAL_EXTENSION "")
set(SETUP_SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/setup_scripts)
set(USB_RULES_DIR ${CMAKE_SOURCE_DIR}/usb_rules)
if (RASPBERRY_PI_COMPILATION)
set(EXTRA_LIBRARIES "gpiod")
@ -34,29 +37,35 @@ FetchContent_Declare(libusb1
GIT_REPOSITORY https://github.com/libusb/libusb-cmake.git
GIT_TAG main)
set(FTD3XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(FINAL_EXTENSION ".exe")
set(FTD3XX_BUILD_COMMAND ${CMAKE_SOURCE_DIR}/windows_setup_ftd3xx.bat)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
else()
set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS}-DXLIB_BASED 1 ")
endif()
set(FTD3XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd3xx.bat)
set(FTD3XX_URL_TIME 2024/01)
set(FTD3XX_VER 1.3.0.9)
set(FTD3XX_VOL FTD3XXLibrary_v${FTD3XX_VER})
set(FTD3XX_ARCHIVE ${FTD3XX_VOL}.zip)
set(FTD3XX_SUBFOLDER win)
if(${WINDOWS_FTD3XX_USE_SHARED_LIB})
set(WINDOWS_PATH_SPECIFIER DLL)
set(FTD3XX_WINDOWS_PATH_SPECIFIER DLL)
set(FTD3XX_LIB FTD3XX.dll)
else()
set(WINDOWS_PATH_SPECIFIER Static_Lib)
set(FTD3XX_WINDOWS_PATH_SPECIFIER Static_Lib)
set(FTD3XX_LIB FTD3XX.lib)
endif()
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
set(PATH_WINDOWS_ARCH Win32)
set(FTD3XX_PATH_WINDOWS_ARCH Win32)
else ()
set(PATH_WINDOWS_ARCH x64)
set(FTD3XX_PATH_WINDOWS_ARCH x64)
endif()
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
set(FTD3XX_BUILD_COMMAND ${CMAKE_SOURCE_DIR}/macos_setup_ftd3xx.sh)
set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd3xx.sh)
set(FTD3XX_URL_TIME 2023/03)
set(FTD3XX_VER 1.0.5)
set(FTD3XX_VOL d3xx-osx.${FTD3XX_VER})
@ -65,8 +74,7 @@ elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
set(FTD3XX_MOUNTED_FOLDER /Volumes/${FTD3XX_VOL})
set(FTD3XX_SUBFOLDER macos)
else()
set(EXTRA_CXX_FLAGS "${EXTRA_CXX_FLAGS}-DXLIB_BASED 1 ")
set(FTD3XX_BUILD_COMMAND ${CMAKE_SOURCE_DIR}/linux_setup_ftd3xx.sh)
set(FTD3XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx.sh)
set(FTD3XX_URL_TIME 2023/03)
set(FTD3XX_VER 1.0.5)
if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm"))
@ -87,18 +95,80 @@ else()
set(FTD3XX_SUBFOLDER linux)
endif()
set(FTD2XX_BASE_URL https://ftdichip.com/wp-content/uploads/)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/windows_setup_ftd2xx.bat)
set(FTD2XX_URL_TIME 2023/09)
set(FTD2XX_VER 2.12.36.4-WHQL-Certified)
set(FTD2XX_VOL CDM-v${FTD2XX_VER})
set(FTD2XX_ARCHIVE ${FTD2XX_VOL}.zip)
set(FTD2XX_SUBFOLDER win)
if(${WINDOWS_FTD2XX_USE_SHARED_LIB})
set(FTD2XX_WINDOWS_PATH_SPECIFIER "")
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
set(FTD2XX_LIB ftd2xx.dll)
else()
set(FTD2XX_LIB ftd2xx64.dll)
endif()
else()
set(FTD2XX_WINDOWS_PATH_SPECIFIER Static)
set(FTD2XX_LIB ftd2xx.lib)
endif()
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
set(FTD2XX_PATH_WINDOWS_ARCH i386)
else ()
set(FTD2XX_PATH_WINDOWS_ARCH amd64)
endif()
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/macos_setup_ftd2xx.sh)
set(FTD2XX_URL_TIME 2024/04)
set(FTD2XX_VER 1.4.30)
set(FTD2XX_VOL D2XX${FTD2XX_VER})
set(FTD2XX_ARCHIVE ${FTD2XX_VOL}.dmg)
set(FTD2XX_LIB libftd2xx.a)
set(FTD2XX_MOUNTED_FOLDER /Volumes/dmg)
set(FTD2XX_SUBFOLDER macos)
else()
set(FTD2XX_BUILD_COMMAND ${SETUP_SCRIPTS_DIR}/linux_setup_ftd3xx.sh)
set(FTD2XX_URL_TIME 2022/07)
set(FTD2XX_VER 1.4.27)
if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch") OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm"))
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
set(FTD2XX_VOL libftd2xx-arm-v8-${FTD2XX_VER})
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
set(FTD2XX_VOL libftd2xx-arm-v7-hf-${FTD2XX_VER})
endif()
else()
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
set(FTD2XX_VOL libftd2xx-x86_64-${FTD2XX_VER})
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
set(FTD2XX_VOL libftd2xx-x86_32-${FTD2XX_VER})
endif()
endif()
set(FTD2XX_ARCHIVE ${FTD2XX_VOL}.tgz)
set(FTD2XX_LIB libftd2xx.a)
set(FTD2XX_SUBFOLDER linux)
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
FetchContent_Declare(FTD3XX
URL ${FTD3XX_BASE_URL}${FTD3XX_URL_TIME}/${FTD3XX_ARCHIVE}
DOWNLOAD_NO_EXTRACT TRUE
)
FetchContent_Declare(FTD2XX
URL ${FTD2XX_BASE_URL}${FTD2XX_URL_TIME}/${FTD2XX_ARCHIVE}
DOWNLOAD_NO_EXTRACT TRUE
)
else()
FetchContent_Declare(FTD3XX
URL ${FTD3XX_BASE_URL}${FTD3XX_URL_TIME}/${FTD3XX_ARCHIVE}
)
FetchContent_Declare(FTD2XX
URL ${FTD2XX_BASE_URL}${FTD2XX_URL_TIME}/${FTD2XX_ARCHIVE}
)
endif()
FetchContent_MakeAvailable(SFML FTD3XX libusb1)
FetchContent_MakeAvailable(SFML FTD3XX FTD2XX libusb1)
if(IS_DIRECTORY "${sfml_SOURCE_DIR}")
set_property(DIRECTORY ${sfml_SOURCE_DIR} PROPERTY EXCLUDE_FROM_ALL YES)
@ -112,6 +182,10 @@ file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/win)
file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/macos)
file(MAKE_DIRECTORY ${ftd3xx_BINARY_DIR}/linux)
file(MAKE_DIRECTORY ${ftd2xx_BINARY_DIR}/win)
file(MAKE_DIRECTORY ${ftd2xx_BINARY_DIR}/macos)
file(MAKE_DIRECTORY ${ftd2xx_BINARY_DIR}/linux)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
ExternalProject_Add(FTD3XX_BUILD_PROJECT
SOURCE_DIR ${ftd3xx_SOURCE_DIR}
@ -121,11 +195,27 @@ ExternalProject_Add(FTD3XX_BUILD_PROJECT
CONFIGURE_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Add(FTD2XX_BUILD_PROJECT
SOURCE_DIR ${ftd2xx_SOURCE_DIR}
BINARY_DIR ${ftd2xx_BINARY_DIR}
BUILD_COMMAND ${FTD2XX_BUILD_COMMAND} ${ftd2xx_SOURCE_DIR}/${FTD2XX_ARCHIVE} ${FTD2XX_MOUNTED_FOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${FTD2XX_LIB}
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
INSTALL_COMMAND ""
)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
ExternalProject_Add(FTD3XX_BUILD_PROJECT
SOURCE_DIR ${ftd3xx_SOURCE_DIR}
BINARY_DIR ${ftd3xx_BINARY_DIR}
BUILD_COMMAND ${FTD3XX_BUILD_COMMAND} ${ftd3xx_SOURCE_DIR} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${PATH_WINDOWS_ARCH}/${WINDOWS_PATH_SPECIFIER}/${FTD3XX_LIB}
BUILD_COMMAND ${FTD3XX_BUILD_COMMAND} ${ftd3xx_SOURCE_DIR} ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${FTD3XX_PATH_WINDOWS_ARCH}/${FTD3XX_WINDOWS_PATH_SPECIFIER}/${FTD3XX_LIB}
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Add(FTD2XX_BUILD_PROJECT
SOURCE_DIR ${ftd2xx_SOURCE_DIR}
BINARY_DIR ${ftd2xx_BINARY_DIR}
BUILD_COMMAND ${FTD2XX_BUILD_COMMAND} ${ftd2xx_SOURCE_DIR} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${FTD2XX_WINDOWS_PATH_SPECIFIER}/${FTD2XX_PATH_WINDOWS_ARCH}/${FTD2XX_LIB}
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
INSTALL_COMMAND ""
@ -139,6 +229,14 @@ ExternalProject_Add(FTD3XX_BUILD_PROJECT
CONFIGURE_COMMAND ""
INSTALL_COMMAND ""
)
ExternalProject_Add(FTD2XX_BUILD_PROJECT
SOURCE_DIR ${ftd2xx_SOURCE_DIR}
BINARY_DIR ${ftd2xx_BINARY_DIR}
BUILD_COMMAND ${FTD2XX_BUILD_COMMAND} ${ftd2xx_SOURCE_DIR} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} build/${FTD2XX_LIB}
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
INSTALL_COMMAND ""
)
endif()
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
@ -152,11 +250,11 @@ file(MAKE_DIRECTORY ${TOOLS_DATA_DIR})
set(OUTPUT_NAME cc3dsfs)
add_executable(CMakeBin2C tools/bin2c.cpp)
add_executable(${OUTPUT_NAME} source/cc3dsfs.cpp source/utils.cpp source/audio_data.cpp source/audio.cpp source/frontend.cpp source/TextRectangle.cpp source/WindowScreen.cpp source/WindowScreen_Menu.cpp source/3dscapture_ftd3.cpp source/usb_ds_3ds_capture.cpp source/devicecapture.cpp source/conversions.cpp source/ExtraButtons.cpp source/Menus/ConnectionMenu.cpp source/Menus/OptionSelectionMenu.cpp source/Menus/MainMenu.cpp source/Menus/VideoMenu.cpp source/Menus/CropMenu.cpp source/Menus/PARMenu.cpp source/Menus/RotationMenu.cpp source/Menus/OffsetMenu.cpp source/Menus/AudioMenu.cpp source/Menus/BFIMenu.cpp source/Menus/RelativePositionMenu.cpp source/Menus/ResolutionMenu.cpp source/Menus/FileConfigMenu.cpp source/Menus/ExtraSettingsMenu.cpp source/Menus/StatusMenu.cpp source/Menus/LicenseMenu.cpp source/WindowCommands.cpp source/Menus/ShortcutMenu.cpp source/Menus/ActionSelectionMenu.cpp ${TOOLS_DATA_DIR}/font_ttf.cpp)
add_dependencies(${OUTPUT_NAME} FTD3XX_BUILD_PROJECT CMakeBin2C)
target_link_libraries(${OUTPUT_NAME} PRIVATE sfml-graphics sfml-audio sfml-window sfml-system usb-1.0 ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}/${FTD3XX_LIB} ${EXTRA_LIBRARIES})
target_link_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER})
target_include_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${TOOLS_DATA_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include/Menus)
add_executable(${OUTPUT_NAME} source/cc3dsfs.cpp source/utils.cpp source/audio_data.cpp source/audio.cpp source/frontend.cpp source/TextRectangle.cpp source/WindowScreen.cpp source/WindowScreen_Menu.cpp source/3dscapture_ftd3.cpp source/dscapture_ftd2.cpp source/usb_ds_3ds_capture.cpp source/devicecapture.cpp source/conversions.cpp source/ExtraButtons.cpp source/Menus/ConnectionMenu.cpp source/Menus/OptionSelectionMenu.cpp source/Menus/MainMenu.cpp source/Menus/VideoMenu.cpp source/Menus/CropMenu.cpp source/Menus/PARMenu.cpp source/Menus/RotationMenu.cpp source/Menus/OffsetMenu.cpp source/Menus/AudioMenu.cpp source/Menus/BFIMenu.cpp source/Menus/RelativePositionMenu.cpp source/Menus/ResolutionMenu.cpp source/Menus/FileConfigMenu.cpp source/Menus/ExtraSettingsMenu.cpp source/Menus/StatusMenu.cpp source/Menus/LicenseMenu.cpp source/WindowCommands.cpp source/Menus/ShortcutMenu.cpp source/Menus/ActionSelectionMenu.cpp ${TOOLS_DATA_DIR}/font_ttf.cpp)
add_dependencies(${OUTPUT_NAME} FTD3XX_BUILD_PROJECT FTD2XX_BUILD_PROJECT CMakeBin2C)
target_link_libraries(${OUTPUT_NAME} PRIVATE sfml-graphics sfml-audio sfml-window sfml-system usb-1.0 ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER}/${FTD3XX_LIB} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER}/${FTD2XX_LIB} ${EXTRA_LIBRARIES})
target_link_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER})
target_include_directories(${OUTPUT_NAME} PRIVATE ${ftd3xx_BINARY_DIR}/${FTD3XX_SUBFOLDER} ${ftd2xx_BINARY_DIR}/${FTD2XX_SUBFOLDER} ${TOOLS_DATA_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include/Menus)
target_compile_features(${OUTPUT_NAME} PRIVATE cxx_std_20)
target_compile_options(${OUTPUT_NAME} PRIVATE ${EXTRA_CXX_FLAGS})
target_compile_features(CMakeBin2C PRIVATE cxx_std_17)
@ -186,7 +284,7 @@ add_custom_command(
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
install(TARGETS ${OUTPUT_NAME} DESTINATION .)
install(FILES un_quarantine_macos.sh DESTINATION .)
install(FILES ${SETUP_SCRIPTS_DIR}/un_quarantine_macos.sh DESTINATION .)
else()
install(FILES ${CMAKE_SOURCE_DIR}/${OUTPUT_NAME}${FINAL_EXTENSION} DESTINATION .)
endif()
@ -216,15 +314,15 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
add_custom_command(
TARGET ${OUTPUT_NAME}
COMMENT "Set bundle path for Frameworks"
POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/macos_bundle_setup.sh ${FW_APP}/Contents/MacOS/${OUTPUT_NAME}
POST_BUILD COMMAND ${SETUP_SCRIPTS_DIR}/macos_bundle_setup.sh ${FW_APP}/Contents/MacOS/${OUTPUT_NAME}
VERBATIM
)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
else()
install(FILES 51-ftd3xx.rules DESTINATION .)
install(FILES 95-usb3dscapture.rules DESTINATION .)
install(FILES 95-usbdscapture.rules DESTINATION .)
install(FILES ${USB_RULES_DIR}/51-ftd3xx.rules DESTINATION .)
install(FILES ${USB_RULES_DIR}/95-usb3dscapture.rules DESTINATION .)
install(FILES ${USB_RULES_DIR}/95-usbdscapture.rules DESTINATION .)
endif()

View File

@ -21,7 +21,7 @@ cc3dsfs has three build dependencies: CMake, g++ and git.
Make sure all are installed.
On MacOS, [Homebrew](https://brew.sh/) can be used to install both CMake and git. An automatic popup should appear to install g++ at Compile time.
cc3dsfs has three library dependencies: [FTDI's D3XX driver](https://ftdichip.com/drivers/d3xx-drivers/), [libusb](https://libusb.info/) and [SFML](https://www.sfml-dev.org/).
cc3dsfs has four library dependencies: [FTDI's D3XX driver](https://ftdichip.com/drivers/d3xx-drivers/), [FTDI's D2XX driver](https://ftdichip.com/drivers/d2xx-drivers/), [libusb](https://libusb.info/) and [SFML](https://www.sfml-dev.org/).
All of them should get downloaded automatically via CMake during the building process.
Linux users will also need to install the SFML dependencies. Different distributions will require slightly different processes.
@ -58,7 +58,7 @@ To compile the program, assuming CMake, git and g++ are installed on the system,
cmake -B build ; cmake --build build --config Release
```
This will download FTD3XX, libusb and SFML, which may take a while during the first execution of the command. Later runs should be much faster.
This will download FTD3XX, FTD2XX, libusb and SFML, which may take a while during the first execution of the command. Later runs should be much faster.
On MacOS, you may also be prompted to install the Apple Command Line Developer Tools first.
When compiling on a Raspberry Pi, to enable usage of GPIO, use:
@ -129,7 +129,7 @@ On Linux and MacOS, the profiles can be found at the "${HOME}/.config/cc3dsfs" f
On Windows, the profiles can be found in the ".config/cc3dsfs" folder inside the directory in which the program runs from.
## Notes
- On Linux, you may need to include the udev USB access rules. You can use the .rules files available in the repository, or define your own.
- On Linux, you may need to include the udev USB access rules. You can use the .rules files available in the repository's usb\_rules directory, or define your own.
- At startup, the audio may be unstable. It should fix itself, if you give it enough time.
- If, at first, the connection to the 3DS/DS fails, reconnect the 3DS/DS and then try again. If that also doesn't work, try restarting the program. If that also doesn't work, try restarting the computer.
- USB Hubs can be the cause of connection issues. If you're having problems, try checking whether the 3DS/DS connects fine or not without any other devices connected.

19
include/dscapture_ftd2.hpp Executable file
View File

@ -0,0 +1,19 @@
#ifndef __DSCAPTURE_FTD2_HPP
#define __DSCAPTURE_FTD2_HPP
#include <vector>
#include "utils.hpp"
#include "hw_defs.hpp"
#include "capture_structs.hpp"
#include "display_structs.hpp"
#define USE_FTD2
void list_devices_ftd2(std::vector<CaptureDevice> &devices_list);
bool connect_ftd2(bool print_failed, CaptureData* capture_data, CaptureDevice* device);
void ftd2_capture_main_loop(CaptureData* capture_data);
void ftd2_capture_cleanup(CaptureData* capture_data);
void ftd2_convertVideoToOutput(CaptureReceived *p_in, VideoOutputData *p_out, bool enabled_3d);
uint64_t ftd2_get_video_in_size(CaptureData* capture_data);
#endif

View File

@ -0,0 +1,4 @@
hdiutil attach ${1}
cp ${2}/release/build/${4} ${3}
cp ${2}/release/*.h ${3}
hdiutil detach ${2} || true

View File

@ -0,0 +1,8 @@
set "a=%~1"
set "b=%~2"
set "c=%~3"
set "a=%a:/=\%"
set "b=%b:/=\%"
set "c=%c:/=\%"
copy %a%\%c% %b%\
copy %a%\ftd2xx.h %b%\

View File

@ -1,6 +1,7 @@
#include "conversions.hpp"
#include "devicecapture.hpp"
#include "3dscapture_ftd3.hpp"
#include "dscapture_ftd2.hpp"
#include "usb_ds_3ds_capture.hpp"
#include <cstring>
@ -10,6 +11,10 @@ void convertVideoToOutput(CaptureReceived *p_in, VideoOutputData *p_out, Capture
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
ftd3_convertVideoToOutput(p_in, p_out, capture_data->status.enabled_3d);
#endif
#ifdef USE_FTD2
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
ftd2_convertVideoToOutput(p_in, p_out, capture_data->status.enabled_3d);
#endif
#ifdef USE_USB
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
usb_convertVideoToOutput(p_in, p_out, &capture_data->status.device, capture_data->status.enabled_3d);
@ -28,6 +33,10 @@ void convertAudioToOutput(CaptureReceived *p_in, sf::Int16 *p_out, uint64_t n_sa
base_ptr = (uint8_t*)p_in->ftd3_received_3d.audio_data;
}
#endif
#ifdef USE_FTD2
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2) {
}
#endif
#ifdef USE_USB
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB) {
if(!capture_data->status.enabled_3d)

View File

@ -1,5 +1,6 @@
#include "devicecapture.hpp"
#include "3dscapture_ftd3.hpp"
#include "dscapture_ftd2.hpp"
#include "usb_ds_3ds_capture.hpp"
#include <vector>
@ -72,6 +73,9 @@ bool connect(bool print_failed, CaptureData* capture_data, FrontendData* fronten
#ifdef USE_FTD3
list_devices_ftd3(devices_list);
#endif
#ifdef USE_FTD2
list_devices_ftd2(devices_list);
#endif
#ifdef USE_USB
list_devices_usb_ds_3ds(devices_list);
#endif
@ -92,6 +96,10 @@ bool connect(bool print_failed, CaptureData* capture_data, FrontendData* fronten
if((devices_list[chosen_device].cc_type == CAPTURE_CONN_FTD3) && (!connect_ftd3(print_failed, capture_data, &devices_list[chosen_device])))
return false;
#endif
#ifdef USE_FTD2
if((devices_list[chosen_device].cc_type == CAPTURE_CONN_FTD2) && (!connect_ftd2(print_failed, capture_data, &devices_list[chosen_device])))
return false;
#endif
#ifdef USE_USB
if((devices_list[chosen_device].cc_type == CAPTURE_CONN_USB) && (!connect_usb(print_failed, capture_data, &devices_list[chosen_device])))
return false;
@ -122,6 +130,10 @@ void captureCall(CaptureData* capture_data) {
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
ftd3_capture_main_loop(capture_data);
#endif
#ifdef USE_FTD2
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
ftd2_capture_main_loop(capture_data);
#endif
#ifdef USE_USB
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
usb_capture_main_loop(capture_data);
@ -140,6 +152,10 @@ void captureCall(CaptureData* capture_data) {
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
ftd3_capture_cleanup(capture_data);
#endif
#ifdef USE_FTD2
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
ftd2_capture_cleanup(capture_data);
#endif
#ifdef USE_USB
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
usb_capture_cleanup(capture_data);
@ -166,6 +182,10 @@ uint64_t get_video_in_size(CaptureData* capture_data) {
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD3)
return ftd3_get_video_in_size(capture_data);
#endif
#ifdef USE_FTD2
if(capture_data->status.device.cc_type == CAPTURE_CONN_FTD2)
return ftd2_get_video_in_size(capture_data);
#endif
#ifdef USE_USB
if(capture_data->status.device.cc_type == CAPTURE_CONN_USB)
return usb_get_video_in_size(capture_data);

35
source/dscapture_ftd2.cpp Executable file
View File

@ -0,0 +1,35 @@
#include "dscapture_ftd2.hpp"
#include "devicecapture.hpp"
#define FTD2XX_STATIC
#include <ftd2xx.h>
#include <cstring>
#include <thread>
#include <chrono>
#include <iostream>
void list_devices_ftd2(std::vector<CaptureDevice> &devices_list) {
}
uint64_t ftd2_get_video_in_size(CaptureData* capture_data) {
return 0;
}
static uint64_t get_capture_size(CaptureData* capture_data) {
return 0;
}
bool connect_ftd2(bool print_failed, CaptureData* capture_data, CaptureDevice* device) {
return false;
}
void ftd2_capture_main_loop(CaptureData* capture_data) {
}
void ftd2_capture_cleanup(CaptureData* capture_data) {
}
void ftd2_convertVideoToOutput(CaptureReceived *p_in, VideoOutputData *p_out, bool enabled_3d) {
}