Fix issues with N3DSXL 3D and speed
Some checks are pending
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux32 flags:32 name:Linux GCC 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux64 flags:64 name:Linux GCC x64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm32 flags:arm32 name:Linux GCC ARM 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm64 flags:arm64 name:Linux GCC ARM 64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:macos name:macOS Apple Silicon os:macos-14]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win32 flags:-A Win32 name:Windows VS2022 Win32 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win64 flags:-A x64 name:Windows VS2022 x64 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:winarm64 flags:-A ARM64 name:Windows VS2022 ARM os:windows-2022]) (push) Waiting to run
CD / Create Pi Mono Setup (push) Blocked by required conditions
CD / Publishing (push) Blocked by required conditions

This commit is contained in:
Lorenzooone 2025-04-02 05:04:06 +02:00
parent 6b040e4d36
commit d71db0761d
5 changed files with 11 additions and 11 deletions

View File

@ -10,6 +10,6 @@ uint64_t ftd3_get_capture_size(CaptureData* capture_data);
std::string ftd3_get_serial(std::string serial_string, int &curr_serial_extra_id);
void ftd3_insert_device(std::vector<CaptureDevice> &devices_list, std::string serial_string, int &curr_serial_extra_id, uint32_t usb_speed, bool is_driver);
void data_output_update(int inner_index, size_t read_data, CaptureData* capture_data, std::chrono::time_point<std::chrono::high_resolution_clock> &base_time, bool is_3d);
bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status);
bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status, bool is_driver);
#endif

View File

@ -57,7 +57,7 @@ static void fast_capture_call(FTD3XXReceivedDataBuffer* received_buffer, Capture
bool could_use_3d = get_3d_enabled(&capture_data->status, true);
bool stored_3d_status = true;
bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status);
bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status, true);
if(!result_3d_setup)
return;
@ -80,7 +80,7 @@ static void fast_capture_call(FTD3XXReceivedDataBuffer* received_buffer, Capture
if(!wait_all_fast_capture_call_async_transfers(received_buffer, capture_data))
return;
result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status);
result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status, true);
if(!result_3d_setup)
return;
@ -116,13 +116,13 @@ static bool safe_capture_call(FTD3XXReceivedDataBuffer* received_buffer, Capture
void* handle = ((ftd3_device_device_handlers*)capture_data->handle)->driver_handle;
bool could_use_3d = get_3d_enabled(&capture_data->status, true);
bool stored_3d_status = true;
bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status);
bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status, true);
if(!result_3d_setup)
return true;
while(capture_data->status.connected && capture_data->status.running) {
if(could_use_3d && (stored_3d_status != capture_data->status.requested_3d)) {
result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status);
result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status, true);
if(!result_3d_setup)
return true;
}

View File

@ -176,7 +176,7 @@ static void ftd3_libusb_capture_main_loop_processing(FTD3LibusbCaptureReceivedDa
bool could_use_3d = get_3d_enabled(&capture_data->status, true);
bool stored_3d_status = true;
bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status);
bool result_3d_setup = ftd3_capture_3d_setup(capture_data, true, stored_3d_status, false);
if(!result_3d_setup)
return;
@ -192,7 +192,7 @@ static void ftd3_libusb_capture_main_loop_processing(FTD3LibusbCaptureReceivedDa
return;
}
result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status);
result_3d_setup = ftd3_capture_3d_setup(capture_data, false, stored_3d_status, false);
if(!result_3d_setup)
return;

View File

@ -236,7 +236,7 @@ static int ftd3_libusb_insert_device(std::vector<CaptureDevice> &devices_list, l
bool result_setup = ftd3_libusb_setup_connection(handle, &claimed_cmd, &claimed_bulk);
uint32_t usb_speed = 0x200;
libusb_speed read_speed = (libusb_speed)libusb_get_device_speed(usb_device);
if((read_speed >= LIBUSB_SPEED_SUPER) || ((read_speed == LIBUSB_SPEED_UNKNOWN) && (usb_descriptor->bcdUSB >= 0x300)))
if((read_speed >= LIBUSB_SPEED_SUPER) || (usb_descriptor->bcdUSB >= 0x300))
usb_speed = 0x300;
if(result_setup)
ftd3_insert_device(devices_list, (std::string)(serial), curr_serial_extra_id, usb_speed, false);

View File

@ -212,7 +212,7 @@ bool connect_ftd3(bool print_failed, CaptureData* capture_data, CaptureDevice* d
return true;
}
bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status) {
bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& stored_3d_status, bool is_driver) {
CaptureStatus tmp_status;
tmp_status.device = capture_data->status.device;
tmp_status.connected = capture_data->status.connected;
@ -249,7 +249,7 @@ bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& sto
return false;
}
if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result)))) {
if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result || (first_pass && is_driver))))) {
capture_error_print(print_failed, capture_data, "Stream failed");
preemptive_close_connection(capture_data);
return false;
@ -262,7 +262,7 @@ bool ftd3_capture_3d_setup(CaptureData* capture_data, bool first_pass, bool& sto
return false;
}
if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result)))) {
if(ftd3_is_error_compat(handlers, ftd3_set_stream_pipe_compat(handlers, BULK_IN, ftd3_get_capture_size(_3d_enabled_result || (first_pass && is_driver))))) {
capture_error_print(print_failed, capture_data, "Stream failed");
preemptive_close_connection(capture_data);
return false;