]> git.sesse.net Git - bmusb/blobdiff - bmusb.cpp
Document alternates 3 and 4.
[bmusb] / bmusb.cpp
index 78e6b412d1438cdd41354c671ca3c117aa371c57..16da5f01e467409188f4cb3ab92335631802d401 100644 (file)
--- a/bmusb.cpp
+++ b/bmusb.cpp
@@ -4,29 +4,31 @@
 // 576p60/720p60/1080i60 works, 1080p60 does not work (firmware limitation)
 // Audio comes out as 8-channel 24-bit raw audio.
 
+#include <assert.h>
+#include <errno.h>
+#include <libusb.h>
+#include <netinet/in.h>
+#include <sched.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <libusb.h>
-#include <arpa/inet.h>
-#include <unistd.h>
 #include <string.h>
-#include <fcntl.h>
-#include <stdint.h>
-#include <assert.h>
-#ifdef __SSE2__
+#ifdef __SSE4_1__
 #include <immintrin.h>
 #endif
+#include "bmusb.h"
+
 #include <algorithm>
+#include <atomic>
+#include <condition_variable>
+#include <cstddef>
+#include <cstdint>
+#include <deque>
 #include <functional>
 #include <memory>
-#include <deque>
-#include <utility>
 #include <mutex>
-#include <condition_variable>
-#include <thread>
 #include <stack>
-#include <atomic>
-#include "bmusb.h"
+#include <thread>
 
 using namespace std;
 using namespace std::placeholders;
@@ -281,7 +283,7 @@ void add_to_frame(FrameAllocator::Frame *current_frame, const char *frame_type_n
        }
 }
 
-#ifdef __SSE2__
+#ifdef __SSE4_1__
 
 #if 0
 void avx2_dump(const char *name, __m256i n)
@@ -515,7 +517,7 @@ void decode_packs(const libusb_transfer *xfr,
                const uint8_t *start = xfr->buffer + offset;
                const uint8_t *limit = start + pack->actual_length;
                while (start < limit) {  // Usually runs only one iteration.
-#ifdef __SSE2__
+#ifdef __SSE4_1__
                        start = add_to_frame_fastpath(current_frame, start, limit, sync_pattern[0]);
                        if (start == limit) break;
                        assert(start < limit);
@@ -605,8 +607,6 @@ void BMUSBCapture::cb_xfr(struct libusb_transfer *xfr)
 
 void BMUSBCapture::usb_thread_func()
 {
-       printf("usb thread started\n");
-
        sched_param param;
        memset(&param, 0, sizeof(param));
        param.sched_priority = 1;
@@ -682,6 +682,9 @@ void BMUSBCapture::configure_card()
        // Alternate setting 1 is output, alternate setting 2 is input.
        // Card is reset when switching alternates, so the driver uses
        // this “double switch” when it wants to reset.
+       //
+       // There's also alternate settings 3 and 4, which seem to be
+       // like 1 and 2 except they advertise less bandwidth needed.
        rc = libusb_set_interface_alt_setting(devh, /*interface=*/0, /*alternate_setting=*/1);
        if (rc < 0) {
                fprintf(stderr, "Error setting alternate 1: %s\n", libusb_error_name(rc));