aboutsummaryrefslogtreecommitdiff
path: root/multimedia/vdr/files/patch-z-cutter.c
blob: 39a4a731af127f0d6c6765bc12ba58e60e5304d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
--- cutter.c.orig
+++ cutter.c
@@ -83,7 +83,18 @@ void cCuttingThread::Action(void)
      int LastIFrame = 0;
      toMarks.Add(0);
      toMarks.Save();
+#ifdef __FreeBSD__
+     // XXX save thread stack space
+     uchar *buffer = MALLOC(uchar, MAXFRAMESIZE);
+     uchar *buffer2 = MALLOC(uchar, MAXFRAMESIZE);
+     if (buffer == NULL || buffer2 == NULL) {
+        free(buffer);
+        error = "malloc";
+        return;
+        }
+#else
      uchar buffer[MAXFRAMESIZE], buffer2[MAXFRAMESIZE];
+#endif
      int Length2;
      bool CheckForSeamlessStream = false;
      bool LastMark = false;
@@ -108,7 +119,7 @@ void cCuttingThread::Action(void)
                  CurrentFileNumber = FileNumber;
                  }
               if (fromFile) {
-                 int len = ReadFrame(fromFile, buffer,  Length, sizeof(buffer));
+                 int len = ReadFrame(fromFile, buffer,  Length, MAXFRAMESIZE);
                  if (len < 0) {
                     error = "ReadFrame";
                     break;
@@ -193,7 +204,7 @@ void cCuttingThread::Action(void)
                     if (FileNumber != CurrentFileNumber)
                        fromFile = fromFileName->SetOffset(FileNumber, FileOffset);
                     if (fromFile) {
-                       int len = ReadFrame(fromFile, buffer2, Length2, sizeof(buffer2));
+                       int len = ReadFrame(fromFile, buffer2, Length2, MAXFRAMESIZE);
                        if (len >= 0 && len == Length2)
                           CheckForSeamlessStream = true;
                        }
@@ -216,6 +227,10 @@ void cCuttingThread::Action(void)
               }
            }
      Recordings.TouchUpdate();
+#ifdef __FreeBSD__
+     free(buffer);
+     free(buffer2);
+#endif
      }
   else
      esyslog("no editing marks found!");
--- thread.c.orig
+++ thread.c
@@ -242,7 +242,7 @@ void cThread::SetPriority(int Priority)
 void cThread::SetIOPriority(int Priority)
 {
 #ifdef __FreeBSD__
-  esyslog("ERROR: syscall(SYS_ioprio_set ...) unsupported on FreeBSD");
+  // esyslog("ERROR: syscall(SYS_ioprio_set ...) unsupported on FreeBSD");
 #else
   if (syscall(SYS_ioprio_set, 1, 0, (Priority & 0xff) | (2 << 13)) < 0) // best effort class
      LOG_ERROR;