-// Intensity Shuttle USB3 capture driver, v0.5.2
+// Intensity Shuttle USB3 capture driver, v0.5.4
// Can download 8-bit and 10-bit UYVY/v210 frames from HDMI, quite stable
// (can do captures for hours at a time with no drops), except during startup
// 576p60/720p60/1080i60 works, 1080p60 does not work (firmware limitation)
#include <libusb.h>
#include <unistd.h>
#include <netinet/in.h>
+#include <pthread.h>
#include <sched.h>
#include <stdint.h>
#include <stdio.h>
{ 0x0103, 1280, 720, 0, 25, 5, 60, 1, false }, // 720p60.
{ 0x0125, 1280, 720, 0, 25, 5, 60, 1, false }, // 720p60.
{ 0x0121, 1280, 720, 0, 25, 5, 60000, 1001, false }, // 720p59.94.
- { 0x01c3, 1920, 1080, 0, 0, 0, 30, 1, false }, // 1080p30.
+ { 0x01c3, 1920, 1080, 0, 20, 25, 30, 1, false }, // 1080p30.
{ 0x0003, 1920, 1080, 583, 20, 25, 30, 1, true }, // 1080i60.
- { 0x01e1, 1920, 1080, 0, 0, 0, 30000, 1001, false }, // 1080p29.97.
+ { 0x01e1, 1920, 1080, 0, 20, 25, 30000, 1001, false }, // 1080p29.97.
{ 0x0021, 1920, 1080, 583, 20, 25, 30000, 1001, true }, // 1080i59.94.
- { 0x0063, 1920, 1080, 0, 0, 0, 25, 1, false }, // 1080p25.
- { 0x0043, 1920, 1080, 0, 0, 0, 25, 1, true }, // 1080p50.
- { 0x008e, 1920, 1080, 0, 0, 0, 24, 1, false }, // 1080p24.
- { 0x00a1, 1920, 1080, 0, 0, 0, 24000, 1001, false }, // 1080p23.98.
+ { 0x0063, 1920, 1080, 0, 20, 25, 25, 1, false }, // 1080p25.
+ { 0x0043, 1920, 1080, 583, 20, 25, 25, 1, true }, // 1080i50.
+ { 0x0083, 1920, 1080, 0, 20, 25, 24, 1, false }, // 1080p24.
+ { 0x00a1, 1920, 1080, 0, 20, 25, 24000, 1001, false }, // 1080p23.98.
};
for (const VideoFormatEntry &entry : entries) {
if (normalized_video_format == entry.normalized_video_format) {
void BMUSBCapture::dequeue_thread_func()
{
+ char thread_name[16];
+ snprintf(thread_name, sizeof(thread_name), "bmusb_dequeue_%d", card_index);
+ pthread_setname_np(pthread_self(), thread_name);
+
if (has_dequeue_callbacks) {
dequeue_init_callback();
}
if (sched_setscheduler(0, SCHED_RR, ¶m) == -1) {
printf("couldn't set realtime priority for USB thread: %s\n", strerror(errno));
}
+ pthread_setname_np(pthread_self(), "bmusb_usb_drv");
while (!should_quit) {
timeval sec { 1, 0 };
int rc = libusb_handle_events_timeout(nullptr, &sec);