From dc6dbf19a5091b13900c7f03900644d72bebe0f6 Mon Sep 17 00:00:00 2001 From: Dave Johansen Date: Mon, 21 Jul 2025 12:55:13 -0600 Subject: [PATCH 1/2] Add function to set key_frame for VideoFrame --- av/video/frame.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/av/video/frame.py b/av/video/frame.py index 970ecc4b8..cf81966e3 100644 --- a/av/video/frame.py +++ b/av/video/frame.py @@ -312,6 +312,18 @@ def pict_type(self): def pict_type(self, value): self.ptr.pict_type = value + @key_frame.setter + def key_frame(self, v): + if v is None: + return + if v: + self.ptr.flags |= lib.AV_FRAME_FLAG_KEY + self.pict_type = PictureType.I + else: + self.ptr.flags &= ~lib.AV_FRAME_FLAG_KEY + if self.pict_type == PictureType.I: + self.pict_type = PictureType.P + @property def colorspace(self): """Colorspace of frame. From 5cb09df037045fa77c8b32cb90e146d9b5a2465d Mon Sep 17 00:00:00 2001 From: Dave Johansen Date: Mon, 21 Jul 2025 13:11:13 -0600 Subject: [PATCH 2/2] Explicitly define key_frame in VideoFrame because inherited version isn't working with setter decorator --- av/video/frame.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/av/video/frame.py b/av/video/frame.py index cf81966e3..1606a6858 100644 --- a/av/video/frame.py +++ b/av/video/frame.py @@ -312,6 +312,10 @@ def pict_type(self): def pict_type(self, value): self.ptr.pict_type = value + @property + def key_frame(self): + return super().key_frame + @key_frame.setter def key_frame(self, v): if v is None: