git: 703f5a47c30b - main - GSteamer1: Uppdate to 1.28.5

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Sat, 25 Jul 2026 06:03:37 UTC
The branch main has been updated by jhale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=703f5a47c30b7de3c5cc5a7baa98b0372d1c7449

commit 703f5a47c30b7de3c5cc5a7baa98b0372d1c7449
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2026-07-25 05:45:16 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2026-07-25 06:03:28 +0000

    GSteamer1: Uppdate to 1.28.5
    
    multimedia/gstreamer1-plugins-rust is now a first-class citizen using gstreamer
    tagging.
    
    Refactor custom targets in multimedia/gstreamer1 and fix a few bugs in
    generate-vuxml-entry.py.
    
    MFH:            2026Q3
    Security:       6eee35e6-fca5-4db2-ab73-f27add3e3ef1
---
 Mk/Uses/gstreamer.mk                               |    4 +-
 devel/gstreamer1-devtools/distinfo                 |    6 +-
 multimedia/gstreamer1-editing-services/distinfo    |    6 +-
 multimedia/gstreamer1-libav/distinfo               |    6 +-
 .../gstreamer1-plugins-bad/files/patch-git_3833dd7 |   77 --
 .../gstreamer1-plugins-bad/files/patch-git_6c14677 |  101 --
 .../gstreamer1-plugins-bad/files/patch-git_8c6d4df |   31 -
 .../gstreamer1-plugins-bad/files/patch-git_eec42c2 |   37 -
 .../gstreamer1-plugins-bad/files/patch-git_f3b6692 |  237 -----
 multimedia/gstreamer1-plugins-rust/Makefile        |    4 +-
 multimedia/gstreamer1-plugins-rust/Makefile.crates |  502 +++++-----
 multimedia/gstreamer1-plugins-rust/distinfo        | 1010 ++++++++++----------
 multimedia/gstreamer1-plugins/distinfo             |   18 +-
 multimedia/gstreamer1-rtsp-server/distinfo         |    6 +-
 multimedia/gstreamer1/Makefile                     |   42 +-
 multimedia/gstreamer1/distinfo                     |    6 +-
 .../gstreamer1/files/generate-vuxml-entry.py       |  204 ++--
 multimedia/py-gstreamer1/distinfo                  |    6 +-
 18 files changed, 938 insertions(+), 1365 deletions(-)

diff --git a/Mk/Uses/gstreamer.mk b/Mk/Uses/gstreamer.mk
index f4b12fb34229..82610f1d2d75 100644
--- a/Mk/Uses/gstreamer.mk
+++ b/Mk/Uses/gstreamer.mk
@@ -42,7 +42,7 @@ _GST_VER=	${_GST_VER_DEFAULT}
 
 # When modifying _GST1_VERSION, run `make -C ${PORTSDIR}/multimedia/gstreamer1 makesum-all`
 # to update the distinfo files for the entire suite.
-_GST1_VERSION=		1.28.4
+_GST1_VERSION=		1.28.5
 _GST1_LIB_VER=		1.0
 _GST1_SOVERSION=	0.${_GST1_VERSION:R:E}${${_GST1_VERSION:E} > 9:?:0}${_GST1_VERSION:E}.0
 
@@ -353,8 +353,6 @@ gst-rtsp-server_IMPL=	#
 
 gst-rust_PORT=		multimedia/gstreamer${_GST_VER}-plugins-rust
 gst-rust_IMPL=		#
-gst-rust_GST1_VERSION=	0.15.2
-gst-rust_VERSION=	${gst-rust_GST${_GST_VER}_VERSION}
 
 gst-smoothstreaming_PORT=	multimedia/gstreamer${_GST_VER}-plugins-smoothstreaming
 gst-smoothstreaming_IMPL=	bad
diff --git a/devel/gstreamer1-devtools/distinfo b/devel/gstreamer1-devtools/distinfo
index a211ca5b0303..f9be6d0e6994 100644
--- a/devel/gstreamer1-devtools/distinfo
+++ b/devel/gstreamer1-devtools/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1781903663
-SHA256 (gst-devtools-1.28.4.tar.xz) = 11d4f1188639d3a9762039065bbb7b2c309b7a8ecc6fa4aed12245568bf00db3
-SIZE (gst-devtools-1.28.4.tar.xz) = 1640224
+TIMESTAMP = 1784335603
+SHA256 (gst-devtools-1.28.5.tar.xz) = 7459045db31d6e44600bcbe011dc925750268870e7b90f7e7a0a3af4a21c09e5
+SIZE (gst-devtools-1.28.5.tar.xz) = 1642704
diff --git a/multimedia/gstreamer1-editing-services/distinfo b/multimedia/gstreamer1-editing-services/distinfo
index 57d04d56e064..6484bf27f245 100644
--- a/multimedia/gstreamer1-editing-services/distinfo
+++ b/multimedia/gstreamer1-editing-services/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1781903662
-SHA256 (gst-editing-services-1.28.4.tar.xz) = 6f7eb55e58718dde5b5869f619ed90ebf3b0cfa0376c169c1b83fc773811914a
-SIZE (gst-editing-services-1.28.4.tar.xz) = 864100
+TIMESTAMP = 1784335599
+SHA256 (gst-editing-services-1.28.5.tar.xz) = d02f9df7dd74f2a50243a6fa5e327cfbbd5c12129ce7b6e73d70c08532491a88
+SIZE (gst-editing-services-1.28.5.tar.xz) = 867192
diff --git a/multimedia/gstreamer1-libav/distinfo b/multimedia/gstreamer1-libav/distinfo
index da5e5903397c..9e1fefa3726a 100644
--- a/multimedia/gstreamer1-libav/distinfo
+++ b/multimedia/gstreamer1-libav/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1781903662
-SHA256 (gst-libav-1.28.4.tar.xz) = bd17a5df2874a7a58bcbaf7b940223379ad9613624db8ead783db03e74bb904b
-SIZE (gst-libav-1.28.4.tar.xz) = 213672
+TIMESTAMP = 1784335599
+SHA256 (gst-libav-1.28.5.tar.xz) = 452854656056f0b16511a1d9ad4f2679ff5e5a87c89f90cf7ee5dec005ddb1e4
+SIZE (gst-libav-1.28.5.tar.xz) = 216148
diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-git_3833dd7 b/multimedia/gstreamer1-plugins-bad/files/patch-git_3833dd7
deleted file mode 100644
index 85941d9c1624..000000000000
--- a/multimedia/gstreamer1-plugins-bad/files/patch-git_3833dd7
+++ /dev/null
@@ -1,77 +0,0 @@
-From 3833dd745ef7b1cd5f699c90897ecca3ef09c59b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Tue, 16 Jun 2026 09:30:00 +0300
-Subject: [PATCH] pcapparse: Add missing bounds checks to ensure packets are
- large enough
-
-Patch based on a patch by Junyi Liu, who also reported this.
-
-Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5106
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11867>
----
- .../gst/pcapparse/gstpcapparse.c               | 18 +++++++++++++++---
- 1 file changed, 15 insertions(+), 3 deletions(-)
-
-diff --git a/subprojects/gst-plugins-bad/gst/pcapparse/gstpcapparse.c b/subprojects/gst-plugins-bad/gst/pcapparse/gstpcapparse.c
-index 4f0c77292a3..6e546c8e3ec 100644
---- gst/pcapparse/gstpcapparse.c.orig
-+++ gst/pcapparse/gstpcapparse.c
-@@ -354,6 +354,7 @@ gst_pcap_parse_read_uint32 (GstPcapParse * self, const guint8 * p)
- #define SLL2_HEADER_LEN    20
- #define IP_HEADER_MIN_LEN 20
- #define UDP_HEADER_LEN     8
-+#define TCP_HEADER_MIN_LEN 20
- 
- #define IP_PROTO_UDP      17
- #define IP_PROTO_TCP      6
-@@ -438,7 +439,8 @@ gst_pcap_parse_scan_frame (GstPcapParse * self,
-     return FALSE;
- 
-   ip_header_size = (b & 0x0f) * 4;
--  if (buf_ip + ip_header_size > buf + buf_size)
-+  if (ip_header_size < IP_HEADER_MIN_LEN ||
-+      buf_ip + ip_header_size > buf + buf_size)
-     return FALSE;
- 
-   flags = buf_ip[6] >> 5;
-@@ -460,6 +462,11 @@ gst_pcap_parse_scan_frame (GstPcapParse * self,
-   memcpy (&ip_dst_addr, buf_ip + 16, sizeof (ip_dst_addr));
-   buf_proto = buf_ip + ip_header_size;
-   ip_packet_len = GUINT16_FROM_BE (*(guint16 *) (buf_ip + 2));
-+  if (ip_packet_len < ip_header_size)
-+    return FALSE;
-+
-+  if (buf_proto + 4 > buf + buf_size)
-+    return FALSE;
- 
-   /* ok for tcp and udp */
-   src_port = GUINT16_FROM_BE (*((guint16 *) (buf_proto + 0)));
-@@ -467,6 +474,8 @@ gst_pcap_parse_scan_frame (GstPcapParse * self,
- 
-   /* extract some params and data according to protocol */
-   if (ip_protocol == IP_PROTO_UDP) {
-+    if (buf_proto + 6 > buf + buf_size)
-+      return FALSE;
-     len = GUINT16_FROM_BE (*((guint16 *) (buf_proto + 4)));
-     if (len < UDP_HEADER_LEN || buf_proto + len > buf + buf_size)
-       return FALSE;
-@@ -474,10 +483,13 @@ gst_pcap_parse_scan_frame (GstPcapParse * self,
-     *payload = buf_proto + UDP_HEADER_LEN;
-     *payload_size = len - UDP_HEADER_LEN;
-   } else {
--    if (buf_proto + 12 >= buf + buf_size)
-+    if (buf_proto + 13 > buf + buf_size)
-       return FALSE;
-     len = (buf_proto[12] >> 4) * 4;
--    if (buf_proto + len > buf + buf_size)
-+    if (len < TCP_HEADER_MIN_LEN || buf_proto + len > buf + buf_size)
-+      return FALSE;
-+    if (ip_packet_len < ip_header_size + len ||
-+        buf_ip + ip_packet_len > buf + buf_size)
-       return FALSE;
- 
-     /* all remaining data following tcp header is payload */
--- 
-GitLab
-
diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-git_6c14677 b/multimedia/gstreamer1-plugins-bad/files/patch-git_6c14677
deleted file mode 100644
index c95f4f957f88..000000000000
--- a/multimedia/gstreamer1-plugins-bad/files/patch-git_6c14677
+++ /dev/null
@@ -1,101 +0,0 @@
-From 6c146775d784bbe91ff7afc6701ba351306282ce Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Tue, 16 Jun 2026 10:30:54 +0300
-Subject: [PATCH] vnmdec: Avoid integer overflows when rectangle positions and
- sizes
-
-Patch based on a patch by Junyi Liu, who also reported this.
-
-Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5107
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11869>
----
- .../gst-plugins-bad/gst/vmnc/vmncdec.c        | 39 +++++++++++++++----
- 1 file changed, 31 insertions(+), 8 deletions(-)
-
-diff --git a/subprojects/gst-plugins-bad/gst/vmnc/vmncdec.c b/subprojects/gst-plugins-bad/gst/vmnc/vmncdec.c
-index e6e52af9a11..32dd3978930 100644
---- gst/vmnc/vmncdec.c.orig
-+++ gst/vmnc/vmncdec.c
-@@ -155,6 +155,20 @@ struct RfbRectangle
- typedef int (*rectangle_handler) (GstVMncDec * dec, struct RfbRectangle * rect,
-     const guint8 * data, int len, gboolean decode);
- 
-+static gboolean
-+vmnc_rect_payload_size (struct RfbRectangle *rect, guint bytes_per_pixel,
-+    gsize * size)
-+{
-+  gsize pixels;
-+
-+  if (!g_size_checked_mul (&pixels, rect->width, rect->height))
-+    return FALSE;
-+  if (!g_size_checked_mul (size, pixels, bytes_per_pixel))
-+    return FALSE;
-+
-+  return TRUE;
-+}
-+
- static int
- vmnc_handle_wmvi_rectangle (GstVMncDec * dec, struct RfbRectangle *rect,
-     const guint8 * data, int len, gboolean decode)
-@@ -395,7 +409,8 @@ vmnc_handle_wmvd_rectangle (GstVMncDec * dec, struct RfbRectangle *rect,
- {
-   /* Cursor data. */
-   int datalen = 2;
--  int type, size;
-+  int type;
-+  gsize size;
- 
-   if (len < datalen) {
-     GST_LOG_OBJECT (dec, "Cursor data too short");
-@@ -405,9 +420,19 @@ vmnc_handle_wmvd_rectangle (GstVMncDec * dec, struct RfbRectangle *rect,
-   type = RFB_GET_UINT8 (data);
- 
-   if (type == CURSOR_COLOUR) {
--    datalen += rect->width * rect->height * dec->format.bytes_per_pixel * 2;
-+    if (!vmnc_rect_payload_size (rect, dec->format.bytes_per_pixel, &size) ||
-+        size > ((gsize) G_MAXINT - datalen) / 2) {
-+      GST_WARNING_OBJECT (dec, "Cursor data size overflow");
-+      return ERROR_INVALID;
-+    }
-+    datalen += size * 2;
-   } else if (type == CURSOR_ALPHA) {
--    datalen += rect->width * rect->height * 4;
-+    if (!vmnc_rect_payload_size (rect, 4, &size) ||
-+        size > (gsize) G_MAXINT - datalen) {
-+      GST_WARNING_OBJECT (dec, "Cursor data size overflow");
-+      return ERROR_INVALID;
-+    }
-+    datalen += size;
-   } else {
-     GST_WARNING_OBJECT (dec, "Unknown cursor type: %d", type);
-     return ERROR_INVALID;
-@@ -422,22 +447,20 @@ vmnc_handle_wmvd_rectangle (GstVMncDec * dec, struct RfbRectangle *rect,
-   dec->cursor.type = type;
-   dec->cursor.width = rect->width;
-   dec->cursor.height = rect->height;
--  dec->cursor.type = type;
-   dec->cursor.hot_x = rect->x;
-   dec->cursor.hot_y = rect->y;
- 
-   g_free (dec->cursor.cursordata);
-   g_free (dec->cursor.cursormask);
- 
--  if (type == 0) {
--    size = rect->width * rect->height * dec->format.bytes_per_pixel;
-+  if (type == CURSOR_COLOUR) {
-     dec->cursor.cursordata = g_malloc (size);
-     dec->cursor.cursormask = g_malloc (size);
-     memcpy (dec->cursor.cursordata, data + 2, size);
-     memcpy (dec->cursor.cursormask, data + 2 + size, size);
-   } else {
--    dec->cursor.cursordata = g_malloc (rect->width * rect->height * 4);
--    memcpy (dec->cursor.cursordata, data + 2, rect->width * rect->height * 4);
-+    dec->cursor.cursordata = g_malloc (size);
-+    memcpy (dec->cursor.cursordata, data + 2, size);
-     dec->cursor.cursormask = NULL;
-   }
- 
--- 
-GitLab
-
diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-git_8c6d4df b/multimedia/gstreamer1-plugins-bad/files/patch-git_8c6d4df
deleted file mode 100644
index e8c7ce8c2180..000000000000
--- a/multimedia/gstreamer1-plugins-bad/files/patch-git_8c6d4df
+++ /dev/null
@@ -1,31 +0,0 @@
-From 8c6d4df57b531c7b41a5f3bce28d2c7bc98a1d3d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Tue, 16 Jun 2026 15:23:13 +0300
-Subject: [PATCH] h264parse: Check for enough slice header data being available
-
-Patch provided by Ramesh Adhikari, who also reported this.
-
-Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5108
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11938>
----
- subprojects/gst-plugins-bad/gst/videoparsers/gsth264parse.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/subprojects/gst-plugins-bad/gst/videoparsers/gsth264parse.c b/subprojects/gst-plugins-bad/gst/videoparsers/gsth264parse.c
-index 8bbddb07239..1b97678993f 100644
---- gst/videoparsers/gsth264parse.c.orig
-+++ gst/videoparsers/gsth264parse.c
-@@ -1129,7 +1129,8 @@ gst_h264_parse_process_nal (GstH264Parse * h264parse, GstH264NalUnit * nalu)
-       h264parse->picture_start = TRUE;
- 
-       /* don't need to parse the whole slice (header) here */
--      if (*(nalu->data + nalu->offset + nalu->header_bytes) & 0x80) {
-+      if (nalu->size > nalu->header_bytes &&
-+          *(nalu->data + nalu->offset + nalu->header_bytes) & 0x80) {
-         /* means first_mb_in_slice == 0 */
-         /* real frame data */
-         GST_DEBUG_OBJECT (h264parse, "first_mb_in_slice = 0");
--- 
-GitLab
-
diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-git_eec42c2 b/multimedia/gstreamer1-plugins-bad/files/patch-git_eec42c2
deleted file mode 100644
index da25597b7fb7..000000000000
--- a/multimedia/gstreamer1-plugins-bad/files/patch-git_eec42c2
+++ /dev/null
@@ -1,37 +0,0 @@
-From eec42c2fedda888085d3356b3a5af1ada86f5746 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Wed, 17 Jun 2026 10:03:36 +0300
-Subject: [PATCH] h266parser: Check aspect ratio index against lookup table
- length
-
-Patch provided by Ramesh Adhikari, who also reported this.
-
-Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5109
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11939>
----
- .../gst-libs/gst/codecparsers/gsth266parser.c               | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/codecparsers/gsth266parser.c b/subprojects/gst-plugins-bad/gst-libs/gst/codecparsers/gsth266parser.c
-index ba8cc2fcc91..747227c7435 100644
---- gst-libs/gst/codecparsers/gsth266parser.c.orig
-+++ gst-libs/gst/codecparsers/gsth266parser.c
-@@ -558,9 +558,13 @@ gst_h266_parse_vui_parameters (GstH266VUIParams * vui, NalReader * nr)
-       READ_UINT16 (nr, vui->sar_height, 16);
-       vui->par_n = vui->sar_width;
-       vui->par_d = vui->sar_height;
--    } else {
-+    } else if (vui->aspect_ratio_idc <= 16) {
-       vui->par_n = aspect_ratios[vui->aspect_ratio_idc].par_n;
-       vui->par_d = aspect_ratios[vui->aspect_ratio_idc].par_d;
-+    } else {
-+      GST_WARNING ("Invalid bitstream: aspect_ratio_idc set "
-+          "to value %d (must be 0-16 or %d)",
-+          vui->aspect_ratio_idc, EXTENDED_SAR);
-     }
-   } else {
-     vui->aspect_ratio_constant_flag = 0;
--- 
-GitLab
-
diff --git a/multimedia/gstreamer1-plugins-bad/files/patch-git_f3b6692 b/multimedia/gstreamer1-plugins-bad/files/patch-git_f3b6692
deleted file mode 100644
index 6da58bb99e74..000000000000
--- a/multimedia/gstreamer1-plugins-bad/files/patch-git_f3b6692
+++ /dev/null
@@ -1,237 +0,0 @@
-From f3b66928a194b32b27fac3c3379d3d20e5966442 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Sun, 14 Jun 2026 22:03:25 +0300
-Subject: [PATCH] librfb: Validate framebuffer update rectangles against the
- framebuffer size
-
-Patch provided by Junyi Liu, who also reported this.
-
-Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5105
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11866>
----
- .../gst-plugins-bad/gst/librfb/rfbdecoder.c   | 136 +++++++++++++++---
- 1 file changed, 115 insertions(+), 21 deletions(-)
-
-diff --git a/subprojects/gst-plugins-bad/gst/librfb/rfbdecoder.c b/subprojects/gst-plugins-bad/gst/librfb/rfbdecoder.c
-index f0507a36f46..7f94a28d319 100644
---- gst/librfb/rfbdecoder.c.orig
-+++ gst/librfb/rfbdecoder.c
-@@ -45,6 +45,10 @@ static gboolean rfb_decoder_corre_encoding (RfbDecoder * decoder, gint start_x,
-     gint start_y, gint rect_w, gint rect_h);
- static gboolean rfb_decoder_hextile_encoding (RfbDecoder * decoder,
-     gint start_x, gint start_y, gint rect_w, gint rect_h);
-+static gboolean rfb_decoder_clip_rectangle (RfbDecoder * decoder, gint * x,
-+    gint * y, gint * w, gint * h, gint * skip_x, gint * skip_y);
-+static gboolean rfb_decoder_clip_copyrect (RfbDecoder * decoder, gint * dst_x,
-+    gint * dst_y, gint * src_x, gint * src_y, gint * w, gint * h);
- 
- RfbDecoder *
- rfb_decoder_new (void)
-@@ -802,23 +806,20 @@ rfb_decoder_state_framebuffer_update_rectangle (RfbDecoder * decoder)
-   if (!rfb_decoder_read (decoder, 12))
-     return FALSE;
- 
--  x = RFB_GET_UINT16 (decoder->data + 0) - decoder->offset_x;
--  y = RFB_GET_UINT16 (decoder->data + 2) - decoder->offset_y;
-+  x = RFB_GET_UINT16 (decoder->data + 0);
-+  y = RFB_GET_UINT16 (decoder->data + 2);
-   w = RFB_GET_UINT16 (decoder->data + 4);
-   h = RFB_GET_UINT16 (decoder->data + 6);
-   encoding = RFB_GET_UINT32 (decoder->data + 8);
- 
-+  x -= (gint) decoder->offset_x;
-+  y -= (gint) decoder->offset_y;
-+
-   GST_DEBUG ("update received");
-   GST_DEBUG ("x:%d y:%d", x, y);
-   GST_DEBUG ("w:%d h:%d", w, h);
-   GST_DEBUG ("encoding: %d", encoding);
- 
--  if (((w * h) + (x * y)) > (decoder->width * decoder->height)) {
--    GST_ERROR ("Desktop resize is unsupported.");
--    decoder->state = NULL;
--    return TRUE;
--  }
--
-   switch (encoding) {
-     case ENCODING_TYPE_RAW:
-       ret = rfb_decoder_raw_encoding (decoder, x, y, w, h);
-@@ -857,11 +858,20 @@ static gboolean
- rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
-     gint rect_w, gint rect_h)
- {
--  gint size;
-+  gint copy_x, copy_y, copy_w, copy_h;
-+  gint skip_x = 0, skip_y = 0;
-+  guint32 size;
-   guint8 *frame, *p;
-   guint32 raw_line_size;
-+  guint32 copy_line_size;
-+
-+  if (rect_w <= 0 || rect_h <= 0)
-+    return TRUE;
- 
-   raw_line_size = rect_w * decoder->bytespp;
-+  if (rect_h > 0 && raw_line_size > G_MAXUINT32 / rect_h)
-+    return FALSE;
-+
-   size = rect_h * raw_line_size;
- 
-   GST_DEBUG ("Reading %d bytes (%dx%d)", size, rect_w, rect_h);
-@@ -869,13 +879,23 @@ rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
-   if (!rfb_decoder_read (decoder, size))
-     return FALSE;
- 
-+  copy_x = start_x;
-+  copy_y = start_y;
-+  copy_w = rect_w;
-+  copy_h = rect_h;
-+
-+  if (!rfb_decoder_clip_rectangle (decoder, &copy_x, &copy_y, &copy_w, &copy_h,
-+          &skip_x, &skip_y))
-+    return TRUE;
-+
-   frame =
--      decoder->frame + (((start_y * decoder->rect_width) +
--          start_x) * decoder->bytespp);
--  p = decoder->data;
-+      decoder->frame + (((copy_y * decoder->rect_width) +
-+          copy_x) * decoder->bytespp);
-+  p = decoder->data + (skip_y * raw_line_size) + (skip_x * decoder->bytespp);
-+  copy_line_size = copy_w * decoder->bytespp;
- 
--  while (rect_h--) {
--    memcpy (frame, p, raw_line_size);
-+  while (copy_h--) {
-+    memcpy (frame, p, copy_line_size);
-     p += raw_line_size;
-     frame += decoder->line_size;
-   }
-@@ -887,7 +907,8 @@ static gboolean
- rfb_decoder_copyrect_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
-     gint rect_w, gint rect_h)
- {
--  guint16 src_x, src_y;
-+  gint src_x, src_y;
-+  gint copy_x, copy_y, copy_w, copy_h;
-   gint line_width, copyrect_width;
-   guint8 *src, *dst;
- 
-@@ -895,20 +916,28 @@ rfb_decoder_copyrect_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
-     return FALSE;
- 
-   /* don't forget the offset */
--  src_x = RFB_GET_UINT16 (decoder->data) - decoder->offset_x;
--  src_y = RFB_GET_UINT16 (decoder->data + 2) - decoder->offset_y;
-+  src_x = RFB_GET_UINT16 (decoder->data) - (gint) decoder->offset_x;
-+  src_y = RFB_GET_UINT16 (decoder->data + 2) - (gint) decoder->offset_y;
-   GST_DEBUG ("Copyrect from %d %d", src_x, src_y);
- 
--  copyrect_width = rect_w * decoder->bytespp;
-+  copy_x = start_x;
-+  copy_y = start_y;
-+  copy_w = rect_w;
-+  copy_h = rect_h;
-+  if (!rfb_decoder_clip_copyrect (decoder, &copy_x, &copy_y, &src_x, &src_y,
-+          &copy_w, &copy_h))
-+    return TRUE;
-+
-+  copyrect_width = copy_w * decoder->bytespp;
-   line_width = decoder->line_size;
-   src =
-       decoder->prev_frame + ((src_y * decoder->rect_width) +
-       src_x) * decoder->bytespp;
-   dst =
--      decoder->frame + ((start_y * decoder->rect_width) +
--      start_x) * decoder->bytespp;
-+      decoder->frame + ((copy_y * decoder->rect_width) +
-+      copy_x) * decoder->bytespp;
- 
--  while (rect_h--) {
-+  while (copy_h--) {
-     memcpy (dst, src, copyrect_width);
-     src += line_width;
-     dst += line_width;
-@@ -926,6 +955,9 @@ rfb_decoder_fill_rectangle (RfbDecoder * decoder, gint x, gint y, gint w,
-   guint32 *offset;
-   gint i, j;
- 
-+  if (!rfb_decoder_clip_rectangle (decoder, &x, &y, &w, &h, NULL, NULL))
-+    return;
-+
-   for (i = 0; i < h; i++) {
-     offset =
-         (guint32 *) (decoder->frame + ((x + (y +
-@@ -1101,6 +1133,68 @@ rfb_decoder_hextile_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
-   return TRUE;
- }
- 
-+static gboolean
-+rfb_decoder_clip_rectangle (RfbDecoder * decoder, gint * x, gint * y, gint * w,
-+    gint * h, gint * skip_x, gint * skip_y)
-+{
-+  gint x1, y1, x2, y2;
-+  gint orig_x, orig_y;
-+
-+  if (*w <= 0 || *h <= 0)
-+    return FALSE;
-+
-+  orig_x = *x;
-+  orig_y = *y;
-+  x1 = MAX (orig_x, 0);
-+  y1 = MAX (orig_y, 0);
-+  x2 = MIN (orig_x + *w, (gint) decoder->rect_width);
-+  y2 = MIN (orig_y + *h, (gint) decoder->rect_height);
-+
-+  if (x2 <= x1 || y2 <= y1)
-+    return FALSE;
-+
-+  *x = x1;
-+  *y = y1;
-+  *w = x2 - x1;
-+  *h = y2 - y1;
-+
-+  if (skip_x)
-+    *skip_x = x1 - orig_x;
-+  if (skip_y)
-+    *skip_y = y1 - orig_y;
-+
-+  return TRUE;
-+}
-+
-+static gboolean
-+rfb_decoder_clip_copyrect (RfbDecoder * decoder, gint * dst_x, gint * dst_y,
-+    gint * src_x, gint * src_y, gint * w, gint * h)
-+{
-+  gint left, top, right, bottom;
-+
-+  if (*w <= 0 || *h <= 0)
-+    return FALSE;
-+
-+  left = MAX (0, MAX (-*dst_x, -*src_x));
-+  top = MAX (0, MAX (-*dst_y, -*src_y));
-+  right = MIN (*w, MIN ((gint) decoder->rect_width - *dst_x,
-+          (gint) decoder->rect_width - *src_x));
-+  bottom = MIN (*h, MIN ((gint) decoder->rect_height - *dst_y,
-+          (gint) decoder->rect_height - *src_y));
-+
-+  if (right <= left || bottom <= top)
-+    return FALSE;
-+
-+  *dst_x += left;
-+  *dst_y += top;
-+  *src_x += left;
-+  *src_y += top;
-+  *w = right - left;
-+  *h = bottom - top;
-+
-+  return TRUE;
-+}
-+
- static gboolean
- rfb_decoder_state_set_colour_map_entries (RfbDecoder * decoder)
- {
--- 
-GitLab
-
diff --git a/multimedia/gstreamer1-plugins-rust/Makefile b/multimedia/gstreamer1-plugins-rust/Makefile
index 93b0e697730f..8a09470af610 100644
--- a/multimedia/gstreamer1-plugins-rust/Makefile
+++ b/multimedia/gstreamer1-plugins-rust/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	gstreamer1-plugins-rust
-DISTVERSION=	${gst-rust_VERSION}
-PORTREVISION=	3
+DISTVERSION=	${_GST_VERSION}
 CATEGORIES=	multimedia
 
 MAINTAINER=	multimedia@FreeBSD.org
@@ -22,6 +21,7 @@ USE_GITLAB=	yes
 GL_SITE=	https://gitlab.freedesktop.org
 GL_ACCOUNT=	gstreamer
 GL_PROJECT=	gst-plugins-rs
+GL_TAGNAME=	gstreamer-${DISTVERSION}
 USE_GNOME=	glib20
 USE_GSTREAMER=	webrtc
 
diff --git a/multimedia/gstreamer1-plugins-rust/Makefile.crates b/multimedia/gstreamer1-plugins-rust/Makefile.crates
index bbd9f7907dfb..2e407df8f2fc 100644
--- a/multimedia/gstreamer1-plugins-rust/Makefile.crates
+++ b/multimedia/gstreamer1-plugins-rust/Makefile.crates
@@ -1,6 +1,7 @@
 CARGO_CRATES=	addr2line-0.25.1 \
 		adler2-2.0.1 \
 		aes-0.8.4 \
+		aes-0.9.1 \
 		ahash-0.8.12 \
 		aho-corasick-1.1.4 \
 		aligned-0.4.3 \
@@ -12,15 +13,16 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		anstyle-parse-1.0.0 \
 		anstyle-query-1.1.5 \
 		anstyle-wincon-3.0.11 \
-		anyhow-1.0.102 \
-		anymap3-1.0.1 \
+		anyhow-1.0.103 \
+		anymap3-1.1.0 \
 		arbitrary-1.4.2 \
+		arc-swap-1.9.2 \
 		arg_enum_proc_macro-0.3.4 \
 		array-init-2.1.0 \
-		arrayvec-0.7.6 \
+		arrayvec-0.7.7 \
 		as-slice-0.2.1 \
 		ash-0.38.0+1.3.281 \
-		asn1-rs-0.7.1 \
+		asn1-rs-0.7.2 \
 		asn1-rs-derive-0.6.0 \
 		asn1-rs-impl-0.2.0 \
 		async-channel-2.5.0 \
@@ -35,38 +37,39 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		atomic-waker-1.1.2 \
 		atomic_float-1.1.0 \
 		atomic_refcell-0.1.14 \
-		autocfg-1.5.0 \
+		autocfg-1.5.1 \
 		av-data-0.4.4 \
 		av-scenechange-0.14.1 \
 		av1-grain-0.2.5 \
-		aws-config-1.8.16 \
+		avif-serialize-0.8.9 \
+		aws-config-1.8.18 \
 		aws-credential-types-1.2.14 \
-		aws-runtime-1.7.3 \
-		aws-sdk-kinesisvideo-1.100.0 \
-		aws-sdk-kinesisvideosignaling-1.98.0 \
-		aws-sdk-polly-1.106.0 \
-		aws-sdk-s3-1.132.0 \
-		aws-sdk-sso-1.98.0 \
-		aws-sdk-sts-1.103.0 \
-		aws-sdk-transcribestreaming-1.103.0 \
-		aws-sdk-translate-1.98.0 \
-		aws-sigv4-1.4.3 \
+		aws-runtime-1.7.5 \
+		aws-sdk-kinesisvideo-1.105.0 \
+		aws-sdk-kinesisvideosignaling-1.102.0 \
+		aws-sdk-polly-1.110.0 \
+		aws-sdk-s3-1.137.0 \
+		aws-sdk-sso-1.102.0 \
+		aws-sdk-sts-1.107.0 \
+		aws-sdk-transcribestreaming-1.108.0 \
+		aws-sdk-translate-1.102.0 \
+		aws-sigv4-1.4.5 \
 		aws-smithy-async-1.2.14 \
-		aws-smithy-checksums-0.64.7 \
-		aws-smithy-eventstream-0.60.20 \
+		aws-smithy-checksums-0.64.8 \
+		aws-smithy-eventstream-0.60.21 \
 		aws-smithy-http-0.63.6 \
-		aws-smithy-http-client-1.1.12 \
-		aws-smithy-json-0.62.5 \
+		aws-smithy-http-client-1.1.13 \
+		aws-smithy-json-0.62.7 \
 		aws-smithy-observability-0.2.6 \
 		aws-smithy-query-0.60.15 \
-		aws-smithy-runtime-1.11.1 \
-		aws-smithy-runtime-api-1.12.0 \
+		aws-smithy-runtime-1.11.3 \
+		aws-smithy-runtime-api-1.12.3 \
 		aws-smithy-runtime-api-macros-1.0.0 \
-		aws-smithy-types-1.4.7 \
+		aws-smithy-schema-0.1.0 \
+		aws-smithy-types-1.5.0 \
 		aws-smithy-xml-0.60.15 \
-		aws-types-1.3.15 \
+		aws-types-1.3.16 \
 		backtrace-0.3.76 \
-		base16ct-0.1.1 \
 		base16ct-0.2.0 \
 		base32-0.5.1 \
 		base64-0.21.7 \
@@ -79,48 +82,53 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		bindgen-0.70.1 \
 		bindgen-0.71.1 \
 		bindgen-0.72.1 \
-		bit-set-0.8.0 \
-		bit-vec-0.8.0 \
+		bit-set-0.9.1 \
 		bit-vec-0.9.1 \
+		bit_field-0.10.3 \
 		bitflags-1.3.2 \
-		bitflags-2.11.1 \
+		bitflags-2.13.0 \
 		bitreader-0.3.11 \
 		bitstream-io-4.10.0 \
-		block-0.1.6 \
 		block-buffer-0.10.4 \
-		block-buffer-0.12.0 \
+		block-buffer-0.12.1 \
 		block2-0.6.2 \
+		bon-3.9.3 \
+		bon-macros-3.9.3 \
 		bs58-0.5.1 \
-		bstr-1.12.1 \
-		built-0.8.0 \
-		bumpalo-3.20.2 \
-		burn-0.20.1 \
-		burn-backend-0.20.1 \
-		burn-core-0.20.1 \
-		burn-cpu-0.20.1 \
-		burn-cubecl-0.20.1 \
-		burn-derive-0.20.1 \
-		burn-ir-0.20.1 \
-		burn-ndarray-0.20.1 \
-		burn-nn-0.20.1 \
-		burn-optim-0.20.1 \
-		burn-std-0.20.1 \
-		burn-store-0.20.1 \
-		burn-tensor-0.20.1 \
-		burn-wgpu-0.20.1 \
+		bstr-1.12.3 \
+		built-0.8.1 \
+		bumpalo-3.20.3 \
+		burn-0.21.0 \
+		burn-backend-0.21.0 \
+		burn-core-0.21.0 \
+		burn-cpu-0.21.0 \
+		burn-cubecl-0.21.0 \
+		burn-cubecl-fusion-0.21.0 \
+		burn-derive-0.21.0 \
+		burn-dispatch-0.21.0 \
+		burn-fusion-0.21.0 \
+		burn-ir-0.21.0 \
+		burn-ndarray-0.21.0 \
+		burn-nn-0.21.0 \
+		burn-optim-0.21.0 \
+		burn-std-0.21.0 \
+		burn-store-0.21.0 \
+		burn-tensor-0.21.0 \
+		burn-vision-0.21.0 \
+		burn-wgpu-0.21.0 \
 		byte-slice-cast-1.2.3 \
 		bytemuck-1.25.0 \
 		bytemuck_derive-1.10.2 \
 		byteorder-1.5.0 \
 		byteorder-lite-0.1.0 \
 		byteorder_slice-3.0.0 \
-		bytes-1.11.1 \
+		bytes-1.12.0 \
 		bytes-utils-0.1.4 \
 		bzip2-0.6.1 \
 		c2rust-bitfields-0.20.0 \
 		c2rust-bitfields-derive-0.20.0 \
 		caseless-0.2.2 \
-		cc-1.2.62 \
+		cc-1.2.65 \
 		cdg-0.1.0 \
 		cdg_renderer-0.8.0 \
 		cdp-types-0.3.0 \
@@ -128,12 +136,16 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		cea708-types-0.4.1 \
 		cesu8-1.1.0 \
 		cexpr-0.6.0 \
-		cfg-expr-0.17.2 \
+		cfg-expr-0.20.8 \
 		cfg-if-1.0.4 \
 		cfg_aliases-0.2.1 \
-		chacha20-0.10.0 \
-		chrono-0.4.44 \
+		chacha20-0.10.1 \
+		chrono-0.4.45 \
+		ciborium-0.2.2 \
+		ciborium-io-0.2.2 \
+		ciborium-ll-0.2.2 \
 		cipher-0.4.4 \
+		cipher-0.5.2 \
 		clang-sys-1.8.1 \
 		clap-4.6.1 \
 		clap_builder-4.6.0 \
@@ -141,8 +153,8 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		clap_lex-1.1.0 \
 		claxon-0.4.3 \
 		cmake-0.1.58 \
-		cmov-0.5.3 \
-		codespan-reporting-0.12.0 \
+		cmov-0.5.4 \
+		codespan-reporting-0.13.1 \
 		color-name-1.2.0 \
 		color-thief-0.2.2 \
 		color_quant-1.1.0 \
@@ -158,7 +170,7 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		const-oid-0.10.2 \
 		const-random-0.1.18 \
 		const-random-macro-0.1.16 \
-		constant_time_eq-0.3.1 \
+		constant_time_eq-0.4.2 \
 		constcat-0.6.1 \
 		convert_case-0.8.0 \
 		convert_case-0.10.0 \
@@ -168,50 +180,51 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		core-foundation-0.9.4 \
 		core-foundation-0.10.1 \
 		core-foundation-sys-0.8.7 \
-		core-graphics-types-0.2.0 \
+		cpubits-0.1.1 \
 		cpufeatures-0.2.17 \
 		cpufeatures-0.3.0 \
-		crc-3.3.0 \
-		crc-catalog-2.5.0 \
-		crc-fast-1.9.0 \
+		crc-fast-1.10.0 \
 		crc32fast-1.5.0 \
 		critical-section-1.2.0 \
 		crossbeam-deque-0.8.6 \
 		crossbeam-epoch-0.9.18 \
 		crossbeam-utils-0.8.21 \
 		crunchy-0.2.4 \
-		crypto-bigint-0.4.9 \
 		crypto-bigint-0.5.5 \
 		crypto-common-0.1.7 \
-		crypto-common-0.2.1 \
+		crypto-common-0.2.2 \
 		csound-0.1.8 \
 		csound-sys-0.1.2 \
 		ctr-0.9.2 \
 		ctrlc-3.5.2 \
 		ctutils-0.4.2 \
-		cubecl-0.9.0 \
-		cubecl-common-0.9.0 \
-		cubecl-core-0.9.0 \
-		cubecl-cpp-0.9.0 \
-		cubecl-cpu-0.9.0 \
-		cubecl-cuda-0.9.0 \
-		cubecl-ir-0.9.0 \
-		cubecl-macros-0.9.0 \
-		cubecl-macros-internal-0.9.0 \
-		cubecl-opt-0.9.0 \
-		cubecl-runtime-0.9.0 \
-		cubecl-spirv-0.9.0 \
-		cubecl-std-0.9.0 \
-		cubecl-wgpu-0.9.0 \
-		cubecl-zspace-0.9.0 \
-		cubek-0.1.1 \
-		cubek-attention-0.1.1 \
-		cubek-convolution-0.1.1 \
-		cubek-matmul-0.1.1 \
-		cubek-quant-0.1.1 \
-		cubek-random-0.1.1 \
-		cubek-reduce-0.1.1 \
-		cudarc-0.18.2 \
+		cubecl-0.10.0 \
+		cubecl-common-0.10.0 \
+		cubecl-core-0.10.0 \
+		cubecl-cpp-0.10.0 \
+		cubecl-cpu-0.10.0 \
+		cubecl-cuda-0.10.0 \
+		cubecl-hip-0.10.0 \
+		cubecl-hip-sys-7.2.5321100 \
+		cubecl-ir-0.10.0 \
+		cubecl-macros-0.10.0 \
+		cubecl-macros-internal-0.10.0 \
+		cubecl-opt-0.10.0 \
+		cubecl-runtime-0.10.0 \
+		cubecl-spirv-0.10.0 \
+		cubecl-std-0.10.0 \
+		cubecl-wgpu-0.10.0 \
+		cubecl-zspace-0.10.0 \
+		cubek-0.2.0 \
+		cubek-attention-0.2.0 \
+		cubek-convolution-0.2.0 \
+		cubek-fft-0.2.0 \
+		cubek-matmul-0.2.0 \
+		cubek-quant-0.2.0 \
+		cubek-random-0.2.0 \
+		cubek-reduce-0.2.0 \
+		cubek-std-0.2.0 \
+		cudarc-0.19.8 \
 		curve25519-dalek-4.1.3 \
 		curve25519-dalek-derive-0.1.1 \
 		darling-0.20.11 \
@@ -223,7 +236,7 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		darling_macro-0.20.11 \
 		darling_macro-0.21.3 \
 		darling_macro-0.23.0 \
-		dash-mpd-0.20.2 \
+		dash-mpd-0.20.3 \
 		dasp-0.11.0 \
 		dasp_envelope-0.11.0 \
 		dasp_frame-0.11.0 \
@@ -240,7 +253,9 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		dav1d-sys-0.8.3 \
 		deepgram-0.7.0 \
 		deflate64-0.1.12 \
-		der-0.6.1 \
+		defmt-1.1.0 \
+		defmt-macros-1.1.0 \
+		defmt-parser-1.0.0 \
 		der-0.7.10 \
 		der-parser-10.0.0 \
 		deranged-0.5.8 \
@@ -259,7 +274,8 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		dirs-6.0.0 \
 		dirs-sys-0.5.0 \
 		dispatch2-0.3.1 \
-		displaydoc-0.2.5 \
+		displaydoc-0.2.6 \
+		dlib-0.5.3 \
 		document-features-0.2.12 \
 		dssim-core-3.4.0 \
 		dyn-clone-1.0.20 \
@@ -268,17 +284,13 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		ebml-iterable-specification-0.4.0 \
 		ebml-iterable-specification-derive-0.4.0 \
 		ebur128-0.1.10 \
-		ecdsa-0.14.8 \
 		ecdsa-0.16.9 \
 		ed25519-1.5.3 \
-		ed25519-2.2.3 \
-		ed25519-dalek-2.2.0 \
 		edit-distance-2.2.2 \
-		either-1.15.0 \
-		elliptic-curve-0.12.3 \
+		either-1.16.0 \
 		elliptic-curve-0.13.8 \
 		embassy-futures-0.1.2 \
-		embassy-time-0.4.0 \
+		embassy-time-0.5.1 \
 		embassy-time-driver-0.2.2 \
 		embedded-hal-0.2.7 \
 		embedded-hal-1.0.0 \
@@ -287,39 +299,38 @@ CARGO_CRATES=	addr2line-0.25.1 \
 		encoding_rs-0.8.35 \
 		entities-1.0.1 \
 		enumn-0.1.14 \
-		enumset-1.1.12 \
+		enumset-1.1.13 \
 		enumset_derive-0.15.0 \
-		env_filter-1.0.1 \
-		env_logger-0.11.10 \
+		env_filter-2.0.0 \
+		env_logger-0.11.11 \
 		equator-0.4.2 \
 		equator-macro-0.4.2 \
 		equivalent-1.0.2 \
 		errno-0.3.14 \
*** 2882 LINES SKIPPED ***