File streamlink.patch of Package streamlink

diff -U 3 -H -d -r -N -- a/src/streamlink/session/options.py b/src/streamlink/session/options.py
--- a/src/streamlink/session/options.py	2025-06-08 19:50:29.000000000 +0200
+++ b/src/streamlink/session/options.py	2025-06-22 09:19:08.661523780 +0200
@@ -225,6 +225,22 @@
           - ``str | None``
           - ``None``
           - Set the output format of muxed streams, e.g. ``"matroska"``
+        * - ffmpeg-dkey
+          - ``str | None``
+          - ``None``
+          - key
+        * - ffmpeg-dkeys
+          - ``str | None``
+          - ``None``
+          - key
+        * - ffmpeg-video-filter
+          - ``str | None``
+          - ``None``
+          - The video filter to use if transcoding video when muxing streams
+        * - ffmpeg-audio-filter
+          - ``str | None``
+          - ``None``
+          - The audio filter to use if transcoding video when muxing streams
         * - ffmpeg-video-transcode
           - ``str | None``
           - ``None``
@@ -302,6 +318,10 @@
             "ffmpeg-verbose-path": None,
             "ffmpeg-loglevel": None,
             "ffmpeg-fout": None,
+            "ffmpeg-dkey": None,
+            "ffmpeg-dkeys": None,
+            "ffmpeg-video-filter": None,
+            "ffmpeg-audio-filter": None,
             "ffmpeg-video-transcode": None,
             "ffmpeg-audio-transcode": None,
             "ffmpeg-copyts": False,
diff -U 3 -H -d -r -N -- a/src/streamlink/stream/dash/dash.py b/src/streamlink/stream/dash/dash.py
--- a/src/streamlink/stream/dash/dash.py	2025-06-08 19:50:29.000000000 +0200
+++ b/src/streamlink/stream/dash/dash.py	2025-06-22 09:38:23.659175801 +0200
@@ -307,11 +307,11 @@
 
         # Search for suitable video and audio representations
         for aset in period_selection.adaptationSets:
-            if aset.contentProtections:
-                raise PluginError(f"{source} is protected by DRM")
+            # if aset.contentProtections:
+            #     raise PluginError(f"{source} is protected by DRM")
             for rep in aset.representations:
-                if rep.contentProtections:
-                    raise PluginError(f"{source} is protected by DRM")
+                # if rep.contentProtections:
+                #     raise PluginError(f"{source} is protected by DRM")
                 if rep.mimeType.startswith("video"):
                     video.append(rep)
                 elif rep.mimeType.startswith("audio"):  # pragma: no branch
diff -U 3 -H -d -r -N -- a/src/streamlink/stream/ffmpegmux.py b/src/streamlink/stream/ffmpegmux.py
--- a/src/streamlink/stream/ffmpegmux.py	2025-06-08 19:50:29.000000000 +0200
+++ b/src/streamlink/stream/ffmpegmux.py	2025-06-22 09:35:28.813225820 +0200
@@ -184,12 +184,23 @@
         loglevel = session.options.get("ffmpeg-loglevel") or options.pop("loglevel", self.DEFAULT_LOGLEVEL)
         ofmt = session.options.get("ffmpeg-fout") or options.pop("format", self.DEFAULT_OUTPUT_FORMAT)
         outpath = options.pop("outpath", "pipe:1")
-        videocodec = session.options.get("ffmpeg-video-transcode") or options.pop("vcodec", self.DEFAULT_VIDEO_CODEC)
-        audiocodec = session.options.get("ffmpeg-audio-transcode") or options.pop("acodec", self.DEFAULT_AUDIO_CODEC)
+        videofilter = session.options.get("ffmpeg-video-filter")
+        if videofilter:
+            videocodec = session.options.get("ffmpeg-video-transcode")
+        else:
+            videocodec = session.options.get("ffmpeg-video-transcode") or options.pop("vcodec", self.DEFAULT_VIDEO_CODEC)
+        audiofilter = session.options.get("ffmpeg-audio-filter")
+        if audiofilter:
+            audiocodec = session.options.get("ffmpeg-audio-transcode")
+        else:
+            audiocodec = session.options.get("ffmpeg-audio-transcode") or options.pop("acodec", self.DEFAULT_AUDIO_CODEC)
         metadata = options.pop("metadata", {})
         maps = options.pop("maps", [])
         copyts = session.options.get("ffmpeg-copyts") or options.pop("copyts", False)
         start_at_zero = session.options.get("ffmpeg-start-at-zero") or options.pop("start_at_zero", False)
+        
+        dkey = session.options.get("ffmpeg-dkey") or options.pop("dkey", False)
+        dkeys = session.options.get("ffmpeg-dkeys") or options.pop("dkey", False)
 
         self._cmd = [
             self.command(session),
@@ -200,10 +211,21 @@
         ]
 
         for np in self.pipes:
+            self._cmd.extend(['-thread_queue_size', '32768'])
+            if dkey:
+                self._cmd.extend(['-decryption_key', dkey])
+            if dkeys:
+                self._cmd.extend(['-decryption_keys', dkeys])
             self._cmd.extend(["-i", str(np.path)])
 
-        self._cmd.extend(["-c:v", videocodec])
-        self._cmd.extend(["-c:a", audiocodec])
+        if videofilter:
+            self._cmd.extend(["-vf", videofilter])
+        if videocodec:
+            self._cmd.extend(["-c:v", videocodec])
+        if audiofilter:
+            self._cmd.extend(["-af", audiofilter])
+        if audiocodec:
+            self._cmd.extend(["-c:a", audiocodec])
 
         for m in maps:
             self._cmd.extend(["-map", str(m)])
diff -U 3 -H -d -r -N -- a/src/streamlink_cli/argparser.py b/src/streamlink_cli/argparser.py
--- a/src/streamlink_cli/argparser.py	2025-06-08 19:50:29.000000000 +0200
+++ b/src/streamlink_cli/argparser.py	2025-06-22 09:17:44.007255959 +0200
@@ -1207,6 +1207,34 @@
         """,
     )
     transport_ffmpeg.add_argument(
+        "--ffmpeg-dkey",
+        type=str,
+        metavar="DKEY",
+        help="""
+        Set the decryption key
+        """
+    )
+    transport_ffmpeg.add_argument(
+        "--ffmpeg-dkeys",
+        type=str,
+        metavar="DKEYS",
+        help="""
+        Set the decryption keys with id
+        """
+    )
+    transport_ffmpeg.add_argument(
+        "--ffmpeg-video-filter",
+        help="""
+        Add video filter.
+        """,
+    )
+    transport_ffmpeg.add_argument(
+        "--ffmpeg-audio-filter",
+        help="""
+        Add audio filter.
+        """,
+    )
+    transport_ffmpeg.add_argument(
         "--ffmpeg-video-transcode",
         metavar="CODEC",
         help="""
@@ -1475,6 +1503,10 @@
     ("ffmpeg_verbose_path", "ffmpeg-verbose-path", None),
     ("ffmpeg_loglevel", "ffmpeg-loglevel", None),
     ("ffmpeg_fout", "ffmpeg-fout", None),
+    ("ffmpeg_dkey", "ffmpeg-dkey", None),
+    ("ffmpeg_dkeys", "ffmpeg-dkeys", None),
+    ("ffmpeg_video_filter", "ffmpeg-video-filter", None),
+    ("ffmpeg_audio_filter", "ffmpeg-audio-filter", None),
     ("ffmpeg_video_transcode", "ffmpeg-video-transcode", None),
     ("ffmpeg_audio_transcode", "ffmpeg-audio-transcode", None),
     ("ffmpeg_copyts", "ffmpeg-copyts", None),
openSUSE Build Service is sponsored by