net/freerdp3: Update 3.12.0 → 3.13.0

Changelog:
https://github.com/FreeRDP/FreeRDP/releases/tag/3.13.0

Port changes:
- add RDPECAM option (RDP webcam redirection) to OPTIONS_DEFAULT;
- split long lines.
This commit is contained in:
Vladimir Druzenko 2025-03-09 16:01:52 +03:00
parent 691e0cbdd4
commit 9ba31cc97f
3 changed files with 14 additions and 125 deletions

View file

@ -1,5 +1,5 @@
PORTNAME= freerdp
DISTVERSION= 3.12.0
DISTVERSION= 3.13.0
CATEGORIES= net comms
MASTER_SITES= https://pub.freerdp.com/releases/ \
https://github.com/FreeRDP/FreeRDP/releases/download/${DISTVERSION}/
@ -39,15 +39,17 @@ CMAKE_OFF= CHANNEL_TSMF WITH_DSP_EXPERIMENTAL WITH_FUSE WITH_GPROF \
PLIST_SUB+= PATCHVERSION="${DISTVERSION}"
PLIST_SUB+= MAJORVERSION="${DISTVERSION:R:R}"
OPTIONS_DEFINE= ALSA BROKENFOCUS CUPS FAAC FAAD FDKAAC FFMPEG GSM ICU \
JPEG LAME MANPAGES OPENH264 OPUS PCSC PKCS11 \
PULSEAUDIO RDPECAM SDL2 SDL3 SOXR URIPARSER WAYLAND X11
OPTIONS_DEFINE= ALSA BROKENFOCUS CUPS FAAC FAAD FDKAAC FFMPEG \
GSM ICU JPEG LAME MANPAGES OPENH264 OPUS PCSC \
PKCS11 PULSEAUDIO RDPECAM SDL2 SDL3 SOXR \
URIPARSER WAYLAND X11
OPTIONS_DEFINE_aarch64= SIMD
OPTIONS_DEFINE_amd64= SIMD
OPTIONS_DEFINE_armv7= SIMD
OPTIONS_DEFINE_i386= SIMD
OPTIONS_DEFAULT= AAD CUPS GSSAPI_HEIMDAL ICU JSON_C KEYBOARD_LAYOUT \
MANPAGES SDL2 SDL3 SWSCALE TIMEZONE_FILE WAYLAND WEBKIT X11
OPTIONS_DEFAULT= AAD CUPS GSSAPI_HEIMDAL ICU JSON_C \
KEYBOARD_LAYOUT MANPAGES RDPECAM SDL2 SDL3 \
SWSCALE TIMEZONE_FILE WAYLAND WEBKIT X11
OPTIONS_DEFAULT_aarch64= SIMD
OPTIONS_DEFAULT_amd64= SIMD
OPTIONS_DEFAULT_armv7= SIMD
@ -72,7 +74,7 @@ KEYBOARD_LAYOUT_DESC= Use keyboard definitions from JSON file
OPENH264_DESC= H.264 video codec support via OpenH264
PCSC_DESC= Smart card support (smart card device redirection)
PKCS11_DESC= Use security/pkcs11-helper
RDPECAM_DESC= RDP webcam redirection (experimental)
RDPECAM_DESC= RDP webcam redirection
REQUIRE_JSON_DESC= Options that require JSON
SDL2_DESC= Build FreeRDP SDL 2 client
SDL3_DESC= Build FreeRDP SDL 3 client
@ -160,7 +162,8 @@ PNG_CMAKE_BOOL= WINPR_UTILS_IMAGE_PNG
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
PULSEAUDIO_CMAKE_BOOL= WITH_PULSE
RDPECAM_BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev.h:multimedia/v4l_compat
RDPECAM_BUILD_DEPENDS= ${LOCALBASE}/include/linux/uvcvideo.h:multimedia/v4l_compat \
${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
RDPECAM_LIB_DEPENDS= libv4l2.so:multimedia/libv4l \
libv4lconvert.so:multimedia/libv4l
RDPECAM_CMAKE_BOOL= CHANNEL_RDPECAM_CLIENT

View file

@ -1,3 +1,3 @@
TIMESTAMP = 1739573323
SHA256 (freerdp-3.12.0.tar.gz) = b08c1bfe867cde0feb3e51f72f32ee3fa3a37acbd20d6fdeb5a0f614b549f5cb
SIZE (freerdp-3.12.0.tar.gz) = 10385447
TIMESTAMP = 1741342654
SHA256 (freerdp-3.13.0.tar.gz) = e66c25780ba8abc0f3d43bdc2e73bd47a0a28fba1dca6f09096cbc320c6622bf
SIZE (freerdp-3.13.0.tar.gz) = 10422976

View file

@ -1,114 +0,0 @@
--- channels/rdpecam/client/v4l/uvc_h264.c.orig 2025-02-14 08:49:47 UTC
+++ channels/rdpecam/client/v4l/uvc_h264.c
@@ -25,9 +25,111 @@
#include <sys/ioctl.h>
+#ifndef __FreeBSD__
+
#include <linux/uvcvideo.h>
#include <linux/videodev2.h>
#include <libusb-1.0/libusb.h>
+
+#else // __FreeBSD__
+
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <libusb.h>
+#include <libv4l1-videodev.h>
+
+/*
+ * Dynamic controls
+ */
+
+/* Data types for UVC control data */
+#define UVC_CTRL_DATA_TYPE_RAW 0
+#define UVC_CTRL_DATA_TYPE_SIGNED 1
+#define UVC_CTRL_DATA_TYPE_UNSIGNED 2
+#define UVC_CTRL_DATA_TYPE_BOOLEAN 3
+#define UVC_CTRL_DATA_TYPE_ENUM 4
+#define UVC_CTRL_DATA_TYPE_BITMASK 5
+
+/* Control flags */
+#define UVC_CTRL_FLAG_SET_CUR (1 << 0)
+#define UVC_CTRL_FLAG_GET_CUR (1 << 1)
+#define UVC_CTRL_FLAG_GET_MIN (1 << 2)
+#define UVC_CTRL_FLAG_GET_MAX (1 << 3)
+#define UVC_CTRL_FLAG_GET_RES (1 << 4)
+#define UVC_CTRL_FLAG_GET_DEF (1 << 5)
+/* Control should be saved at suspend and restored at resume. */
+#define UVC_CTRL_FLAG_RESTORE (1 << 6)
+/* Control can be updated by the camera. */
+#define UVC_CTRL_FLAG_AUTO_UPDATE (1 << 7)
+/* Control supports asynchronous reporting */
+#define UVC_CTRL_FLAG_ASYNCHRONOUS (1 << 8)
+
+#define UVC_CTRL_FLAG_GET_RANGE \
+ (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | \
+ UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | \
+ UVC_CTRL_FLAG_GET_DEF)
+
+struct uvc_menu_info {
+ uint32_t value;
+ uint8_t name[32];
+};
+
+struct uvc_xu_control_mapping {
+ uint32_t id;
+ uint8_t name[32];
+ uint8_t entity[16];
+ uint8_t selector;
+
+ uint8_t size;
+ uint8_t offset;
+ uint32_t v4l2_type;
+ uint32_t data_type;
+
+ struct uvc_menu_info *menu_info;
+ uint32_t menu_count;
+
+ uint32_t reserved[4];
+};
+
+struct uvc_xu_control_query {
+ uint8_t unit;
+ uint8_t selector;
+ uint8_t query; /* Video Class-Specific Request Code, */
+ /* defined in linux/usb/video.h A.8. */
+ uint16_t size;
+ uint8_t *data;
+};
+
+#define UVCIOC_CTRL_MAP _IOWR('u', 0x20, struct uvc_xu_control_mapping)
+#define UVCIOC_CTRL_QUERY _IOWR('u', 0x21, struct uvc_xu_control_query)
+
+/*
+ * Metadata node
+ */
+
+/**
+ * struct uvc_meta_buf - metadata buffer building block
+ * @ns: system timestamp of the payload in nanoseconds
+ * @sof: USB Frame Number
+ * @length: length of the payload header
+ * @flags: payload header flags
+ * @buf: optional device-specific header data
+ *
+ * UVC metadata nodes fill buffers with possibly multiple instances of this
+ * struct. The first two fields are added by the driver, they can be used for
+ * clock synchronisation. The rest is an exact copy of a UVC payload header.
+ * Only complete objects with complete buffers are included. Therefore it's
+ * always sizeof(meta->ts) + sizeof(meta->sof) + meta->length bytes large.
+ */
+struct uvc_meta_buf {
+ uint64_t ns;
+ uint16_t sof;
+ uint8_t length;
+ uint8_t flags;
+ uint8_t buf[];
+} __packed;
+
+#endif // __FreeBSD__
#include "uvc_h264.h"