Skip to content

Commit 35b0938

Browse files
committed
go2rtc: update to 1.9.9
- Update version to 1.9.9 - Add patch to fix build with CGO=0 - Add patch to support RISC-V 64 - Fix excludes not to include examples Signed-off-by: Vladimir Ermakov <vooon341@gmail.com>
1 parent 1bba5b9 commit 35b0938

File tree

5 files changed

+396
-3
lines changed

5 files changed

+396
-3
lines changed

multimedia/go2rtc/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
include $(TOPDIR)/rules.mk
22

33
PKG_NAME:=go2rtc
4-
PKG_VERSION:=1.9.8
4+
PKG_VERSION:=1.9.9
55
PKG_RELEASE:=1
66

77
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
88
PKG_SOURCE_URL:=https://codeload.github.com/AlexxIT/go2rtc/tar.gz/v$(PKG_VERSION)?
9-
PKG_HASH:=86940520f50b9e4ca6e1e4f7f408e21ff5e9e74cde5ade8008124ccab5cd7352
9+
PKG_HASH:=0afb5a9f0cdbd696193288197cfb5ebf44d085f631e7326cc0465026fe3b9196
1010

1111
PKG_LICENSE:=MIT
1212
PKG_LICENSE_FILES:=LICENSE
@@ -17,7 +17,7 @@ PKG_BUILD_PARALLEL:=1
1717
PKG_BUILD_FLAGS:=no-mips16
1818

1919
GO_PKG:=github.com/AlexxIT/go2rtc
20-
GO_PKG_EXCLUDES:=test
20+
GO_PKG_EXCLUDES:=examples/
2121

2222
include $(INCLUDE_DIR)/package.mk
2323
include ../../lang/golang/golang-package.mk
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
From bb8b2d421a971fadd6bf08a1656d212e0103a583 Mon Sep 17 00:00:00 2001
2+
From: Vladimir Ermakov <vooon341@gmail.com>
3+
Date: Fri, 30 May 2025 16:57:51 +0200
4+
Subject: [PATCH 1/4] v4l2: drop codegen file to be able to build with CGO=0
5+
6+
Signed-off-by: Vladimir Ermakov <vooon341@gmail.com>
7+
---
8+
pkg/v4l2/device/videodev2_arch.c | 163 -------------------------------
9+
1 file changed, 163 deletions(-)
10+
delete mode 100644 pkg/v4l2/device/videodev2_arch.c
11+
12+
--- a/pkg/v4l2/device/videodev2_arch.c
13+
+++ /dev/null
14+
@@ -1,163 +0,0 @@
15+
-#include <stdio.h>
16+
-#include <stddef.h>
17+
-#include <linux/videodev2.h>
18+
-
19+
-#define printconst1(con) printf("\t%s = 0x%08lx\n", #con, con)
20+
-#define printconst2(con) printf("\t%s = %d\n", #con, con)
21+
-#define printstruct(str) printf("type %s struct { // size %lu\n", #str, sizeof(struct str))
22+
-#define printmember(str, mem, typ) printf("\t%s %s // offset %lu, size %lu\n", #mem == "type" ? "typ" : #mem, typ, offsetof(struct str, mem), sizeof((struct str){0}.mem))
23+
-#define printunimem(str, uni, mem, typ) printf("\t%s %s // offset %lu, size %lu\n", #mem, typ, offsetof(struct str, uni.mem), sizeof((struct str){0}.uni.mem))
24+
-#define printalign1(str, mem2, mem1) printf("\t_ [%lu]byte // align\n", offsetof(struct str, mem2) - offsetof(struct str, mem1) - sizeof((struct str){0}.mem1))
25+
-#define printfiller(str, mem) printf("\t_ [%lu]byte // filler\n", sizeof(struct str) - offsetof(struct str, mem) - sizeof((struct str){0}.mem))
26+
-
27+
-int main() {
28+
- printf("const (\n");
29+
- printconst1(VIDIOC_QUERYCAP);
30+
- printconst1(VIDIOC_ENUM_FMT);
31+
- printconst1(VIDIOC_G_FMT);
32+
- printconst1(VIDIOC_S_FMT);
33+
- printconst1(VIDIOC_REQBUFS);
34+
- printconst1(VIDIOC_QUERYBUF);
35+
- printf("\n");
36+
- printconst1(VIDIOC_QBUF);
37+
- printconst1(VIDIOC_DQBUF);
38+
- printconst1(VIDIOC_STREAMON);
39+
- printconst1(VIDIOC_STREAMOFF);
40+
- printconst1(VIDIOC_G_PARM);
41+
- printconst1(VIDIOC_S_PARM);
42+
- printf("\n");
43+
- printconst1(VIDIOC_ENUM_FRAMESIZES);
44+
- printconst1(VIDIOC_ENUM_FRAMEINTERVALS);
45+
- printf(")\n\n");
46+
-
47+
- printf("const (\n");
48+
- printconst2(V4L2_BUF_TYPE_VIDEO_CAPTURE);
49+
- printconst2(V4L2_COLORSPACE_DEFAULT);
50+
- printconst2(V4L2_FIELD_NONE);
51+
- printconst2(V4L2_FRMIVAL_TYPE_DISCRETE);
52+
- printconst2(V4L2_FRMSIZE_TYPE_DISCRETE);
53+
- printconst2(V4L2_MEMORY_MMAP);
54+
- printf(")\n\n");
55+
-
56+
- printstruct(v4l2_capability);
57+
- printmember(v4l2_capability, driver, "[16]byte");
58+
- printmember(v4l2_capability, card, "[32]byte");
59+
- printmember(v4l2_capability, bus_info, "[32]byte");
60+
- printmember(v4l2_capability, version, "uint32");
61+
- printmember(v4l2_capability, capabilities, "uint32");
62+
- printmember(v4l2_capability, device_caps, "uint32");
63+
- printmember(v4l2_capability, reserved, "[3]uint32");
64+
- printf("}\n\n");
65+
-
66+
- printstruct(v4l2_format);
67+
- printmember(v4l2_format, type, "uint32");
68+
- printalign1(v4l2_format, fmt, type);
69+
- printunimem(v4l2_format, fmt, pix, "v4l2_pix_format");
70+
- printfiller(v4l2_format, fmt.pix);
71+
- printf("}\n\n");
72+
-
73+
- printstruct(v4l2_pix_format);
74+
- printmember(v4l2_pix_format, width, "uint32");
75+
- printmember(v4l2_pix_format, height, "uint32");
76+
- printmember(v4l2_pix_format, pixelformat, "uint32");
77+
- printmember(v4l2_pix_format, field, "uint32");
78+
- printmember(v4l2_pix_format, bytesperline, "uint32");
79+
- printmember(v4l2_pix_format, sizeimage, "uint32");
80+
- printmember(v4l2_pix_format, colorspace, "uint32");
81+
- printmember(v4l2_pix_format, priv, "uint32");
82+
- printmember(v4l2_pix_format, flags, "uint32");
83+
- printmember(v4l2_pix_format, ycbcr_enc, "uint32");
84+
- printmember(v4l2_pix_format, quantization, "uint32");
85+
- printmember(v4l2_pix_format, xfer_func, "uint32");
86+
- printf("}\n\n");
87+
-
88+
- printstruct(v4l2_streamparm);
89+
- printmember(v4l2_streamparm, type, "uint32");
90+
- printunimem(v4l2_streamparm, parm, capture, "v4l2_captureparm");
91+
- printfiller(v4l2_streamparm, parm.capture);
92+
- printf("}\n\n");
93+
-
94+
- printstruct(v4l2_captureparm);
95+
- printmember(v4l2_captureparm, capability, "uint32");
96+
- printmember(v4l2_captureparm, capturemode, "uint32");
97+
- printmember(v4l2_captureparm, timeperframe, "v4l2_fract");
98+
- printmember(v4l2_captureparm, extendedmode, "uint32");
99+
- printmember(v4l2_captureparm, readbuffers, "uint32");
100+
- printmember(v4l2_captureparm, reserved, "[4]uint32");
101+
- printf("}\n\n");
102+
-
103+
- printstruct(v4l2_fract);
104+
- printmember(v4l2_fract, numerator, "uint32");
105+
- printmember(v4l2_fract, denominator, "uint32");
106+
- printf("}\n\n");
107+
-
108+
- printstruct(v4l2_requestbuffers);
109+
- printmember(v4l2_requestbuffers, count, "uint32");
110+
- printmember(v4l2_requestbuffers, type, "uint32");
111+
- printmember(v4l2_requestbuffers, memory, "uint32");
112+
- printmember(v4l2_requestbuffers, capabilities, "uint32");
113+
- printmember(v4l2_requestbuffers, flags, "uint8");
114+
- printmember(v4l2_requestbuffers, reserved, "[3]uint8");
115+
- printf("}\n\n");
116+
-
117+
- printstruct(v4l2_buffer);
118+
- printmember(v4l2_buffer, index, "uint32");
119+
- printmember(v4l2_buffer, type, "uint32");
120+
- printmember(v4l2_buffer, bytesused, "uint32");
121+
- printmember(v4l2_buffer, flags, "uint32");
122+
- printmember(v4l2_buffer, field, "uint32");
123+
- printalign1(v4l2_buffer, timecode, field);
124+
- printmember(v4l2_buffer, timecode, "v4l2_timecode");
125+
- printmember(v4l2_buffer, sequence, "uint32");
126+
- printmember(v4l2_buffer, memory, "uint32");
127+
- printunimem(v4l2_buffer, m, offset, "uint32");
128+
- printalign1(v4l2_buffer, length, m.offset);
129+
- printmember(v4l2_buffer, length, "uint32");
130+
- printfiller(v4l2_buffer, length);
131+
- printf("}\n\n");
132+
-
133+
- printstruct(v4l2_timecode);
134+
- printmember(v4l2_timecode, type, "uint32");
135+
- printmember(v4l2_timecode, flags, "uint32");
136+
- printmember(v4l2_timecode, frames, "uint8");
137+
- printmember(v4l2_timecode, seconds, "uint8");
138+
- printmember(v4l2_timecode, minutes, "uint8");
139+
- printmember(v4l2_timecode, hours, "uint8");
140+
- printmember(v4l2_timecode, userbits, "[4]uint8");
141+
- printf("}\n\n");
142+
-
143+
- printstruct(v4l2_fmtdesc);
144+
- printmember(v4l2_fmtdesc, index, "uint32");
145+
- printmember(v4l2_fmtdesc, type, "uint32");
146+
- printmember(v4l2_fmtdesc, flags, "uint32");
147+
- printmember(v4l2_fmtdesc, description, "[32]byte");
148+
- printmember(v4l2_fmtdesc, pixelformat, "uint32");
149+
- printmember(v4l2_fmtdesc, mbus_code, "uint32");
150+
- printmember(v4l2_fmtdesc, reserved, "[3]uint32");
151+
- printf("}\n\n");
152+
-
153+
- printstruct(v4l2_frmsizeenum);
154+
- printmember(v4l2_frmsizeenum, index, "uint32");
155+
- printmember(v4l2_frmsizeenum, pixel_format, "uint32");
156+
- printmember(v4l2_frmsizeenum, type, "uint32");
157+
- printmember(v4l2_frmsizeenum, discrete, "v4l2_frmsize_discrete");
158+
- printfiller(v4l2_frmsizeenum, discrete);
159+
- printf("}\n\n");
160+
-
161+
- printstruct(v4l2_frmsize_discrete);
162+
- printmember(v4l2_frmsize_discrete, width, "uint32");
163+
- printmember(v4l2_frmsize_discrete, height, "uint32");
164+
- printf("}\n\n");
165+
-
166+
- printstruct(v4l2_frmivalenum);
167+
- printmember(v4l2_frmivalenum, index, "uint32");
168+
- printmember(v4l2_frmivalenum, pixel_format, "uint32");
169+
- printmember(v4l2_frmivalenum, width, "uint32");
170+
- printmember(v4l2_frmivalenum, height, "uint32");
171+
- printmember(v4l2_frmivalenum, type, "uint32");
172+
- printmember(v4l2_frmivalenum, discrete, "v4l2_fract");
173+
- printfiller(v4l2_frmivalenum, discrete);
174+
- printf("}\n\n");
175+
-
176+
- return 0;
177+
-}
178+
\ No newline at end of file
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
From c6b1584b5fdcbf0a7d5b0a00defcc2d1ce71e803 Mon Sep 17 00:00:00 2001
2+
From: Alex X <alexey.khit@gmail.com>
3+
Date: Thu, 13 Mar 2025 15:33:23 +0300
4+
Subject: [PATCH 2/4] Fix support linux + riscv64 #1639
5+
6+
---
7+
internal/v4l2/v4l2.go | 2 +-
8+
internal/v4l2/v4l2_linux.go | 2 ++
9+
2 files changed, 3 insertions(+), 1 deletion(-)
10+
11+
--- a/internal/v4l2/v4l2.go
12+
+++ b/internal/v4l2/v4l2.go
13+
@@ -1,4 +1,4 @@
14+
-//go:build !linux
15+
+//go:build !(linux && (386 || arm || mipsle || amd64 || arm64))
16+
17+
package v4l2
18+
19+
--- a/internal/v4l2/v4l2_linux.go
20+
+++ b/internal/v4l2/v4l2_linux.go
21+
@@ -1,3 +1,5 @@
22+
+//go:build linux && (386 || arm || mipsle || amd64 || arm64)
23+
+
24+
package v4l2
25+
26+
import (
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
From f83445984f2865d219095288c8dde548bd2020ed Mon Sep 17 00:00:00 2001
2+
From: nakata5321 <makar5321@gmail.com>
3+
Date: Thu, 13 Mar 2025 15:13:50 +0200
4+
Subject: [PATCH 3/4] add riscv64 platform for v4l2 package
5+
6+
PR: https://github.com/AlexxIT/go2rtc/pull/1651
7+
---
8+
pkg/v4l2/device/videodev2_riscv64.go | 148 +++++++++++++++++++++++++++
9+
1 file changed, 148 insertions(+)
10+
create mode 100644 pkg/v4l2/device/videodev2_riscv64.go
11+
12+
--- /dev/null
13+
+++ b/pkg/v4l2/device/videodev2_riscv64.go
14+
@@ -0,0 +1,148 @@
15+
+const (
16+
+ VIDIOC_QUERYCAP = 0x80685600
17+
+ VIDIOC_ENUM_FMT = 0xc0405602
18+
+ VIDIOC_G_FMT = 0xc0d05604
19+
+ VIDIOC_S_FMT = 0xc0d05605
20+
+ VIDIOC_REQBUFS = 0xc0145608
21+
+ VIDIOC_QUERYBUF = 0xc0585609
22+
+
23+
+ VIDIOC_QBUF = 0xc058560f
24+
+ VIDIOC_DQBUF = 0xc0585611
25+
+ VIDIOC_STREAMON = 0x40045612
26+
+ VIDIOC_STREAMOFF = 0x40045613
27+
+ VIDIOC_G_PARM = 0xc0cc5615
28+
+ VIDIOC_S_PARM = 0xc0cc5616
29+
+
30+
+ VIDIOC_ENUM_FRAMESIZES = 0xc02c564a
31+
+ VIDIOC_ENUM_FRAMEINTERVALS = 0xc034564b
32+
+)
33+
+
34+
+const (
35+
+ V4L2_BUF_TYPE_VIDEO_CAPTURE = 1
36+
+ V4L2_COLORSPACE_DEFAULT = 0
37+
+ V4L2_FIELD_NONE = 1
38+
+ V4L2_FRMIVAL_TYPE_DISCRETE = 1
39+
+ V4L2_FRMSIZE_TYPE_DISCRETE = 1
40+
+ V4L2_MEMORY_MMAP = 1
41+
+)
42+
+
43+
+type v4l2_capability struct { // size 104
44+
+ driver [16]byte // offset 0, size 16
45+
+ card [32]byte // offset 16, size 32
46+
+ bus_info [32]byte // offset 48, size 32
47+
+ version uint32 // offset 80, size 4
48+
+ capabilities uint32 // offset 84, size 4
49+
+ device_caps uint32 // offset 88, size 4
50+
+ reserved [3]uint32 // offset 92, size 12
51+
+}
52+
+
53+
+type v4l2_format struct { // size 208
54+
+ typ uint32 // offset 0, size 4
55+
+ _ [4]byte // align
56+
+ pix v4l2_pix_format // offset 8, size 48
57+
+ _ [152]byte // filler
58+
+}
59+
+
60+
+type v4l2_pix_format struct { // size 48
61+
+ width uint32 // offset 0, size 4
62+
+ height uint32 // offset 4, size 4
63+
+ pixelformat uint32 // offset 8, size 4
64+
+ field uint32 // offset 12, size 4
65+
+ bytesperline uint32 // offset 16, size 4
66+
+ sizeimage uint32 // offset 20, size 4
67+
+ colorspace uint32 // offset 24, size 4
68+
+ priv uint32 // offset 28, size 4
69+
+ flags uint32 // offset 32, size 4
70+
+ ycbcr_enc uint32 // offset 36, size 4
71+
+ quantization uint32 // offset 40, size 4
72+
+ xfer_func uint32 // offset 44, size 4
73+
+}
74+
+
75+
+type v4l2_streamparm struct { // size 204
76+
+ typ uint32 // offset 0, size 4
77+
+ capture v4l2_captureparm // offset 4, size 40
78+
+ _ [160]byte // filler
79+
+}
80+
+
81+
+type v4l2_captureparm struct { // size 40
82+
+ capability uint32 // offset 0, size 4
83+
+ capturemode uint32 // offset 4, size 4
84+
+ timeperframe v4l2_fract // offset 8, size 8
85+
+ extendedmode uint32 // offset 16, size 4
86+
+ readbuffers uint32 // offset 20, size 4
87+
+ reserved [4]uint32 // offset 24, size 16
88+
+}
89+
+
90+
+type v4l2_fract struct { // size 8
91+
+ numerator uint32 // offset 0, size 4
92+
+ denominator uint32 // offset 4, size 4
93+
+}
94+
+
95+
+type v4l2_requestbuffers struct { // size 20
96+
+ count uint32 // offset 0, size 4
97+
+ typ uint32 // offset 4, size 4
98+
+ memory uint32 // offset 8, size 4
99+
+ capabilities uint32 // offset 12, size 4
100+
+ flags uint8 // offset 16, size 1
101+
+ reserved [3]uint8 // offset 17, size 3
102+
+}
103+
+
104+
+type v4l2_buffer struct { // size 88
105+
+ index uint32 // offset 0, size 4
106+
+ typ uint32 // offset 4, size 4
107+
+ bytesused uint32 // offset 8, size 4
108+
+ flags uint32 // offset 12, size 4
109+
+ field uint32 // offset 16, size 4
110+
+ _ [20]byte // align
111+
+ timecode v4l2_timecode // offset 40, size 16
112+
+ sequence uint32 // offset 56, size 4
113+
+ memory uint32 // offset 60, size 4
114+
+ offset uint32 // offset 64, size 4
115+
+ _ [4]byte // align
116+
+ length uint32 // offset 72, size 4
117+
+ _ [12]byte // filler
118+
+}
119+
+
120+
+type v4l2_timecode struct { // size 16
121+
+ typ uint32 // offset 0, size 4
122+
+ flags uint32 // offset 4, size 4
123+
+ frames uint8 // offset 8, size 1
124+
+ seconds uint8 // offset 9, size 1
125+
+ minutes uint8 // offset 10, size 1
126+
+ hours uint8 // offset 11, size 1
127+
+ userbits [4]uint8 // offset 12, size 4
128+
+}
129+
+
130+
+type v4l2_fmtdesc struct { // size 64
131+
+ index uint32 // offset 0, size 4
132+
+ typ uint32 // offset 4, size 4
133+
+ flags uint32 // offset 8, size 4
134+
+ description [32]byte // offset 12, size 32
135+
+ pixelformat uint32 // offset 44, size 4
136+
+ mbus_code uint32 // offset 48, size 4
137+
+ reserved [3]uint32 // offset 52, size 12
138+
+}
139+
+
140+
+type v4l2_frmsizeenum struct { // size 44
141+
+ index uint32 // offset 0, size 4
142+
+ pixel_format uint32 // offset 4, size 4
143+
+ typ uint32 // offset 8, size 4
144+
+ discrete v4l2_frmsize_discrete // offset 12, size 8
145+
+ _ [24]byte // filler
146+
+}
147+
+
148+
+type v4l2_frmsize_discrete struct { // size 8
149+
+ width uint32 // offset 0, size 4
150+
+ height uint32 // offset 4, size 4
151+
+}
152+
+
153+
+type v4l2_frmivalenum struct { // size 52
154+
+ index uint32 // offset 0, size 4
155+
+ pixel_format uint32 // offset 4, size 4
156+
+ width uint32 // offset 8, size 4
157+
+ height uint32 // offset 12, size 4
158+
+ typ uint32 // offset 16, size 4
159+
+ discrete v4l2_fract // offset 20, size 8
160+
+ _ [24]byte // filler
161+
+}
162+
+

0 commit comments

Comments
 (0)