Guest User

recfriio patch 20230815-2

a guest
Aug 15th, 2023
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 KB | None | 0 0
  1. diff -uNr recfriio-master.orig/recfriior5/AbstractFriio.cpp recfriio-master/recfriior5/AbstractFriio.cpp
  2. --- recfriio-master.orig/recfriior5/AbstractFriio.cpp 2016-03-24 13:59:48.000000000 +0900
  3. +++ recfriio-master/recfriior5/AbstractFriio.cpp 2023-08-15 18:39:19.521035884 +0900
  4. @@ -96,13 +96,13 @@
  5. return 0;
  6. }
  7.  
  8. - if (req->urb.status != 0) {
  9. + if (req->urb->status != 0) {
  10. std::ostringstream stream;
  11. - stream << "UrbStatus: " << req->urb.status;
  12. + stream << "UrbStatus: " << req->urb->status;
  13. throw usb_error(stream.str());
  14. }
  15.  
  16. - int rlen = req->urb.actual_length;
  17. + int rlen = req->urb->actual_length;
  18.  
  19. *bufp = req->buf;
  20. return rlen;
  21. diff -uNr recfriio-master.orig/recfriior5/IoThread.cpp recfriio-master/recfriior5/IoThread.cpp
  22. --- recfriio-master.orig/recfriior5/IoThread.cpp 2016-03-24 13:59:48.000000000 +0900
  23. +++ recfriio-master/recfriior5/IoThread.cpp 2023-08-15 18:44:36.694324163 +0900
  24. @@ -23,7 +23,7 @@
  25. * 送信したURBをキャンセルする。
  26. */
  27. static void discard_async_request(AsyncRequest *r) {
  28. - int ret = usb_discardurb(r->fd, &(r->urb));
  29. + int ret = usb_discardurb(r->fd, r->urb);
  30. // EINVALは該当URBがkernel側のキューにない場合に返されるので無視で問題ない。
  31. if (ret < 0 && errno != EINVAL) {
  32. if (errno == EINVAL) {
  33. @@ -51,21 +51,25 @@
  34. // リクエスト待ちに空きがある。
  35. AsyncRequest *req = buf->getPushPtr(REQUEST_TIMEOUT_TS, discard_async_request);
  36.  
  37. - memset(&(req->urb), '\0', sizeof(usbdevfs_urb));
  38. +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,0,0)
  39. + memset(req->urb, '\0', sizeof(usbdevfs_urb) + sizeof(usbdevfs_iso_packet_desc));
  40. +#else
  41. + memset(req->urb, '\0', sizeof(usbdevfs_urb));
  42. +#endif
  43. memset(req->buf, '\0', TSDATASIZE);
  44.  
  45. - req->urb.type = USBDEVFS_URB_TYPE_BULK;
  46. - req->urb.endpoint = endpoint;
  47. - req->urb.status = 0;
  48. - req->urb.buffer = req->buf;
  49. - req->urb.buffer_length = TSDATASIZE;
  50. - req->urb.actual_length = 0;
  51. - req->urb.number_of_packets = 0;
  52. - req->urb.signr = 0;
  53. - req->urb.usercontext = req;
  54. + req->urb->type = USBDEVFS_URB_TYPE_BULK;
  55. + req->urb->endpoint = endpoint;
  56. + req->urb->status = 0;
  57. + req->urb->buffer = req->buf;
  58. + req->urb->buffer_length = TSDATASIZE;
  59. + req->urb->actual_length = 0;
  60. + req->urb->number_of_packets = 0;
  61. + req->urb->signr = 0;
  62. + req->urb->usercontext = req;
  63. req->fd = fd;
  64.  
  65. - int r = usb_submiturb(fd, &(req->urb));
  66. + int r = usb_submiturb(fd, req->urb);
  67. if (r < 0) {
  68. err(1, "can't send urb");
  69. }
  70. diff -uNr recfriio-master.orig/recfriior5/IoThread.hpp recfriio-master/recfriior5/IoThread.hpp
  71. --- recfriio-master.orig/recfriior5/IoThread.hpp 2016-03-24 13:59:48.000000000 +0900
  72. +++ recfriio-master/recfriior5/IoThread.hpp 2023-08-15 18:41:48.683725638 +0900
  73. @@ -9,13 +9,29 @@
  74. #include "usbops.hpp"
  75. #include "RingBuf.hpp"
  76.  
  77. +#include <stdlib.h>
  78. +#include <linux/version.h>
  79. +
  80. /**
  81. * URB送信管理用
  82. */
  83. -struct AsyncRequest {
  84. - usbdevfs_urb urb;
  85. +class AsyncRequest {
  86. +public:
  87. + usbdevfs_urb *urb;
  88. int fd;
  89. uint8_t buf[TSDATASIZE];
  90. +
  91. + AsyncRequest() {
  92. +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,0,0)
  93. + urb = (usbdevfs_urb*) malloc(sizeof(usbdevfs_urb) + sizeof(usbdevfs_iso_packet_desc));
  94. +#else
  95. + urb = (usbdevfs_urb*) malloc(sizeof(usbdevfs_urb));
  96. +#endif
  97. + }
  98. +
  99. + ~AsyncRequest() {
  100. + free(urb);
  101. + }
  102. };
  103.  
  104. /**
  105. diff -uNr recfriio-master.orig/recfriior5/Makefile recfriio-master/recfriior5/Makefile
  106. --- recfriio-master.orig/recfriior5/Makefile 2016-03-24 13:59:48.000000000 +0900
  107. +++ recfriio-master/recfriior5/Makefile 2023-08-15 18:42:01.957873377 +0900
  108. @@ -33,7 +33,7 @@
  109.  
  110. CC = gcc
  111. CXX = g++
  112. -CXXFLAGS = -O2 -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25) $(HDUS) $(UDP) $(HTTP) $(TSSL) `pkg-config --cflags glib-2.0`
  113. +CXXFLAGS = -std=c++03 -O2 -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25) $(HDUS) $(UDP) $(HTTP) $(TSSL) `pkg-config --cflags glib-2.0`
  114. LDFLAGS =
  115. LIBS = -lpthread -lboost_thread -lboost_system -lboost_filesystem `pkg-config --libs glib-2.0`
  116.  
  117. diff -uNr recfriio-master.orig/recfriior5/tssplitter_lite.hpp recfriio-master/recfriior5/tssplitter_lite.hpp
  118. --- recfriio-master.orig/recfriior5/tssplitter_lite.hpp 2016-03-24 13:59:48.000000000 +0900
  119. +++ recfriio-master/recfriior5/tssplitter_lite.hpp 2023-08-15 18:39:19.523035907 +0900
  120. @@ -65,7 +65,7 @@
  121. typedef struct _splitbuf_t
  122. {
  123. int size;
  124. - u_char buffer[32*1024*1024];
  125. + u_char buffer[4*1024*1024];
  126. } splitbuf_t;
  127.  
  128. splitter* split_startup(char *sid);
  129.  
Advertisement
Add Comment
Please, Sign In to add comment