Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions multimedia/go2rtc/Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=go2rtc
PKG_VERSION:=1.9.8
PKG_VERSION:=1.9.9
PKG_RELEASE:=1

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

PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
Expand All @@ -17,7 +17,7 @@ PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16

GO_PKG:=github.com/AlexxIT/go2rtc
GO_PKG_EXCLUDES:=test
GO_PKG_EXCLUDES:=examples/

include $(INCLUDE_DIR)/package.mk
include ../../lang/golang/golang-package.mk
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
From bb8b2d421a971fadd6bf08a1656d212e0103a583 Mon Sep 17 00:00:00 2001
From: Vladimir Ermakov <[email protected]>
Date: Fri, 30 May 2025 16:57:51 +0200
Subject: [PATCH 1/6] v4l2: drop codegen file to be able to build with CGO=0

Signed-off-by: Vladimir Ermakov <[email protected]>
---
pkg/v4l2/device/videodev2_arch.c | 163 -------------------------------
1 file changed, 163 deletions(-)
delete mode 100644 pkg/v4l2/device/videodev2_arch.c

--- a/pkg/v4l2/device/videodev2_arch.c
+++ /dev/null
@@ -1,163 +0,0 @@
-#include <stdio.h>
-#include <stddef.h>
-#include <linux/videodev2.h>
-
-#define printconst1(con) printf("\t%s = 0x%08lx\n", #con, con)
-#define printconst2(con) printf("\t%s = %d\n", #con, con)
-#define printstruct(str) printf("type %s struct { // size %lu\n", #str, sizeof(struct str))
-#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))
-#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))
-#define printalign1(str, mem2, mem1) printf("\t_ [%lu]byte // align\n", offsetof(struct str, mem2) - offsetof(struct str, mem1) - sizeof((struct str){0}.mem1))
-#define printfiller(str, mem) printf("\t_ [%lu]byte // filler\n", sizeof(struct str) - offsetof(struct str, mem) - sizeof((struct str){0}.mem))
-
-int main() {
- printf("const (\n");
- printconst1(VIDIOC_QUERYCAP);
- printconst1(VIDIOC_ENUM_FMT);
- printconst1(VIDIOC_G_FMT);
- printconst1(VIDIOC_S_FMT);
- printconst1(VIDIOC_REQBUFS);
- printconst1(VIDIOC_QUERYBUF);
- printf("\n");
- printconst1(VIDIOC_QBUF);
- printconst1(VIDIOC_DQBUF);
- printconst1(VIDIOC_STREAMON);
- printconst1(VIDIOC_STREAMOFF);
- printconst1(VIDIOC_G_PARM);
- printconst1(VIDIOC_S_PARM);
- printf("\n");
- printconst1(VIDIOC_ENUM_FRAMESIZES);
- printconst1(VIDIOC_ENUM_FRAMEINTERVALS);
- printf(")\n\n");
-
- printf("const (\n");
- printconst2(V4L2_BUF_TYPE_VIDEO_CAPTURE);
- printconst2(V4L2_COLORSPACE_DEFAULT);
- printconst2(V4L2_FIELD_NONE);
- printconst2(V4L2_FRMIVAL_TYPE_DISCRETE);
- printconst2(V4L2_FRMSIZE_TYPE_DISCRETE);
- printconst2(V4L2_MEMORY_MMAP);
- printf(")\n\n");
-
- printstruct(v4l2_capability);
- printmember(v4l2_capability, driver, "[16]byte");
- printmember(v4l2_capability, card, "[32]byte");
- printmember(v4l2_capability, bus_info, "[32]byte");
- printmember(v4l2_capability, version, "uint32");
- printmember(v4l2_capability, capabilities, "uint32");
- printmember(v4l2_capability, device_caps, "uint32");
- printmember(v4l2_capability, reserved, "[3]uint32");
- printf("}\n\n");
-
- printstruct(v4l2_format);
- printmember(v4l2_format, type, "uint32");
- printalign1(v4l2_format, fmt, type);
- printunimem(v4l2_format, fmt, pix, "v4l2_pix_format");
- printfiller(v4l2_format, fmt.pix);
- printf("}\n\n");
-
- printstruct(v4l2_pix_format);
- printmember(v4l2_pix_format, width, "uint32");
- printmember(v4l2_pix_format, height, "uint32");
- printmember(v4l2_pix_format, pixelformat, "uint32");
- printmember(v4l2_pix_format, field, "uint32");
- printmember(v4l2_pix_format, bytesperline, "uint32");
- printmember(v4l2_pix_format, sizeimage, "uint32");
- printmember(v4l2_pix_format, colorspace, "uint32");
- printmember(v4l2_pix_format, priv, "uint32");
- printmember(v4l2_pix_format, flags, "uint32");
- printmember(v4l2_pix_format, ycbcr_enc, "uint32");
- printmember(v4l2_pix_format, quantization, "uint32");
- printmember(v4l2_pix_format, xfer_func, "uint32");
- printf("}\n\n");
-
- printstruct(v4l2_streamparm);
- printmember(v4l2_streamparm, type, "uint32");
- printunimem(v4l2_streamparm, parm, capture, "v4l2_captureparm");
- printfiller(v4l2_streamparm, parm.capture);
- printf("}\n\n");
-
- printstruct(v4l2_captureparm);
- printmember(v4l2_captureparm, capability, "uint32");
- printmember(v4l2_captureparm, capturemode, "uint32");
- printmember(v4l2_captureparm, timeperframe, "v4l2_fract");
- printmember(v4l2_captureparm, extendedmode, "uint32");
- printmember(v4l2_captureparm, readbuffers, "uint32");
- printmember(v4l2_captureparm, reserved, "[4]uint32");
- printf("}\n\n");
-
- printstruct(v4l2_fract);
- printmember(v4l2_fract, numerator, "uint32");
- printmember(v4l2_fract, denominator, "uint32");
- printf("}\n\n");
-
- printstruct(v4l2_requestbuffers);
- printmember(v4l2_requestbuffers, count, "uint32");
- printmember(v4l2_requestbuffers, type, "uint32");
- printmember(v4l2_requestbuffers, memory, "uint32");
- printmember(v4l2_requestbuffers, capabilities, "uint32");
- printmember(v4l2_requestbuffers, flags, "uint8");
- printmember(v4l2_requestbuffers, reserved, "[3]uint8");
- printf("}\n\n");
-
- printstruct(v4l2_buffer);
- printmember(v4l2_buffer, index, "uint32");
- printmember(v4l2_buffer, type, "uint32");
- printmember(v4l2_buffer, bytesused, "uint32");
- printmember(v4l2_buffer, flags, "uint32");
- printmember(v4l2_buffer, field, "uint32");
- printalign1(v4l2_buffer, timecode, field);
- printmember(v4l2_buffer, timecode, "v4l2_timecode");
- printmember(v4l2_buffer, sequence, "uint32");
- printmember(v4l2_buffer, memory, "uint32");
- printunimem(v4l2_buffer, m, offset, "uint32");
- printalign1(v4l2_buffer, length, m.offset);
- printmember(v4l2_buffer, length, "uint32");
- printfiller(v4l2_buffer, length);
- printf("}\n\n");
-
- printstruct(v4l2_timecode);
- printmember(v4l2_timecode, type, "uint32");
- printmember(v4l2_timecode, flags, "uint32");
- printmember(v4l2_timecode, frames, "uint8");
- printmember(v4l2_timecode, seconds, "uint8");
- printmember(v4l2_timecode, minutes, "uint8");
- printmember(v4l2_timecode, hours, "uint8");
- printmember(v4l2_timecode, userbits, "[4]uint8");
- printf("}\n\n");
-
- printstruct(v4l2_fmtdesc);
- printmember(v4l2_fmtdesc, index, "uint32");
- printmember(v4l2_fmtdesc, type, "uint32");
- printmember(v4l2_fmtdesc, flags, "uint32");
- printmember(v4l2_fmtdesc, description, "[32]byte");
- printmember(v4l2_fmtdesc, pixelformat, "uint32");
- printmember(v4l2_fmtdesc, mbus_code, "uint32");
- printmember(v4l2_fmtdesc, reserved, "[3]uint32");
- printf("}\n\n");
-
- printstruct(v4l2_frmsizeenum);
- printmember(v4l2_frmsizeenum, index, "uint32");
- printmember(v4l2_frmsizeenum, pixel_format, "uint32");
- printmember(v4l2_frmsizeenum, type, "uint32");
- printmember(v4l2_frmsizeenum, discrete, "v4l2_frmsize_discrete");
- printfiller(v4l2_frmsizeenum, discrete);
- printf("}\n\n");
-
- printstruct(v4l2_frmsize_discrete);
- printmember(v4l2_frmsize_discrete, width, "uint32");
- printmember(v4l2_frmsize_discrete, height, "uint32");
- printf("}\n\n");
-
- printstruct(v4l2_frmivalenum);
- printmember(v4l2_frmivalenum, index, "uint32");
- printmember(v4l2_frmivalenum, pixel_format, "uint32");
- printmember(v4l2_frmivalenum, width, "uint32");
- printmember(v4l2_frmivalenum, height, "uint32");
- printmember(v4l2_frmivalenum, type, "uint32");
- printmember(v4l2_frmivalenum, discrete, "v4l2_fract");
- printfiller(v4l2_frmivalenum, discrete);
- printf("}\n\n");
-
- return 0;
-}
\ No newline at end of file
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
From c6b1584b5fdcbf0a7d5b0a00defcc2d1ce71e803 Mon Sep 17 00:00:00 2001
From: Alex X <[email protected]>
Date: Thu, 13 Mar 2025 15:33:23 +0300
Subject: [PATCH 2/6] Fix support linux + riscv64 #1639

---
internal/v4l2/v4l2.go | 2 +-
internal/v4l2/v4l2_linux.go | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)

--- a/internal/v4l2/v4l2.go
+++ b/internal/v4l2/v4l2.go
@@ -1,4 +1,4 @@
-//go:build !linux
+//go:build !(linux && (386 || arm || mipsle || amd64 || arm64))

package v4l2

--- a/internal/v4l2/v4l2_linux.go
+++ b/internal/v4l2/v4l2_linux.go
@@ -1,3 +1,5 @@
+//go:build linux && (386 || arm || mipsle || amd64 || arm64)
+
package v4l2

import (
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
From f83445984f2865d219095288c8dde548bd2020ed Mon Sep 17 00:00:00 2001
From: nakata5321 <[email protected]>
Date: Thu, 13 Mar 2025 15:13:50 +0200
Subject: [PATCH 3/6] add riscv64 platform for v4l2 package

PR: https://github.com/AlexxIT/go2rtc/pull/1651
---
pkg/v4l2/device/videodev2_riscv64.go | 148 +++++++++++++++++++++++++++
1 file changed, 148 insertions(+)
create mode 100644 pkg/v4l2/device/videodev2_riscv64.go

--- /dev/null
+++ b/pkg/v4l2/device/videodev2_riscv64.go
@@ -0,0 +1,148 @@
+const (
+ VIDIOC_QUERYCAP = 0x80685600
+ VIDIOC_ENUM_FMT = 0xc0405602
+ VIDIOC_G_FMT = 0xc0d05604
+ VIDIOC_S_FMT = 0xc0d05605
+ VIDIOC_REQBUFS = 0xc0145608
+ VIDIOC_QUERYBUF = 0xc0585609
+
+ VIDIOC_QBUF = 0xc058560f
+ VIDIOC_DQBUF = 0xc0585611
+ VIDIOC_STREAMON = 0x40045612
+ VIDIOC_STREAMOFF = 0x40045613
+ VIDIOC_G_PARM = 0xc0cc5615
+ VIDIOC_S_PARM = 0xc0cc5616
+
+ VIDIOC_ENUM_FRAMESIZES = 0xc02c564a
+ VIDIOC_ENUM_FRAMEINTERVALS = 0xc034564b
+)
+
+const (
+ V4L2_BUF_TYPE_VIDEO_CAPTURE = 1
+ V4L2_COLORSPACE_DEFAULT = 0
+ V4L2_FIELD_NONE = 1
+ V4L2_FRMIVAL_TYPE_DISCRETE = 1
+ V4L2_FRMSIZE_TYPE_DISCRETE = 1
+ V4L2_MEMORY_MMAP = 1
+)
+
+type v4l2_capability struct { // size 104
+ driver [16]byte // offset 0, size 16
+ card [32]byte // offset 16, size 32
+ bus_info [32]byte // offset 48, size 32
+ version uint32 // offset 80, size 4
+ capabilities uint32 // offset 84, size 4
+ device_caps uint32 // offset 88, size 4
+ reserved [3]uint32 // offset 92, size 12
+}
+
+type v4l2_format struct { // size 208
+ typ uint32 // offset 0, size 4
+ _ [4]byte // align
+ pix v4l2_pix_format // offset 8, size 48
+ _ [152]byte // filler
+}
+
+type v4l2_pix_format struct { // size 48
+ width uint32 // offset 0, size 4
+ height uint32 // offset 4, size 4
+ pixelformat uint32 // offset 8, size 4
+ field uint32 // offset 12, size 4
+ bytesperline uint32 // offset 16, size 4
+ sizeimage uint32 // offset 20, size 4
+ colorspace uint32 // offset 24, size 4
+ priv uint32 // offset 28, size 4
+ flags uint32 // offset 32, size 4
+ ycbcr_enc uint32 // offset 36, size 4
+ quantization uint32 // offset 40, size 4
+ xfer_func uint32 // offset 44, size 4
+}
+
+type v4l2_streamparm struct { // size 204
+ typ uint32 // offset 0, size 4
+ capture v4l2_captureparm // offset 4, size 40
+ _ [160]byte // filler
+}
+
+type v4l2_captureparm struct { // size 40
+ capability uint32 // offset 0, size 4
+ capturemode uint32 // offset 4, size 4
+ timeperframe v4l2_fract // offset 8, size 8
+ extendedmode uint32 // offset 16, size 4
+ readbuffers uint32 // offset 20, size 4
+ reserved [4]uint32 // offset 24, size 16
+}
+
+type v4l2_fract struct { // size 8
+ numerator uint32 // offset 0, size 4
+ denominator uint32 // offset 4, size 4
+}
+
+type v4l2_requestbuffers struct { // size 20
+ count uint32 // offset 0, size 4
+ typ uint32 // offset 4, size 4
+ memory uint32 // offset 8, size 4
+ capabilities uint32 // offset 12, size 4
+ flags uint8 // offset 16, size 1
+ reserved [3]uint8 // offset 17, size 3
+}
+
+type v4l2_buffer struct { // size 88
+ index uint32 // offset 0, size 4
+ typ uint32 // offset 4, size 4
+ bytesused uint32 // offset 8, size 4
+ flags uint32 // offset 12, size 4
+ field uint32 // offset 16, size 4
+ _ [20]byte // align
+ timecode v4l2_timecode // offset 40, size 16
+ sequence uint32 // offset 56, size 4
+ memory uint32 // offset 60, size 4
+ offset uint32 // offset 64, size 4
+ _ [4]byte // align
+ length uint32 // offset 72, size 4
+ _ [12]byte // filler
+}
+
+type v4l2_timecode struct { // size 16
+ typ uint32 // offset 0, size 4
+ flags uint32 // offset 4, size 4
+ frames uint8 // offset 8, size 1
+ seconds uint8 // offset 9, size 1
+ minutes uint8 // offset 10, size 1
+ hours uint8 // offset 11, size 1
+ userbits [4]uint8 // offset 12, size 4
+}
+
+type v4l2_fmtdesc struct { // size 64
+ index uint32 // offset 0, size 4
+ typ uint32 // offset 4, size 4
+ flags uint32 // offset 8, size 4
+ description [32]byte // offset 12, size 32
+ pixelformat uint32 // offset 44, size 4
+ mbus_code uint32 // offset 48, size 4
+ reserved [3]uint32 // offset 52, size 12
+}
+
+type v4l2_frmsizeenum struct { // size 44
+ index uint32 // offset 0, size 4
+ pixel_format uint32 // offset 4, size 4
+ typ uint32 // offset 8, size 4
+ discrete v4l2_frmsize_discrete // offset 12, size 8
+ _ [24]byte // filler
+}
+
+type v4l2_frmsize_discrete struct { // size 8
+ width uint32 // offset 0, size 4
+ height uint32 // offset 4, size 4
+}
+
+type v4l2_frmivalenum struct { // size 52
+ index uint32 // offset 0, size 4
+ pixel_format uint32 // offset 4, size 4
+ width uint32 // offset 8, size 4
+ height uint32 // offset 12, size 4
+ typ uint32 // offset 16, size 4
+ discrete v4l2_fract // offset 20, size 8
+ _ [24]byte // filler
+}
+
Loading
Loading