From db7a845d3be4e722ba454960f0a55d05f6123818 Mon Sep 17 00:00:00 2001 From: BigfootACA Date: Thu, 6 Aug 2026 10:52:13 +0800 Subject: [PATCH] fix(hwcodec): release V4L2M2M packets before delivery Copy compressed V4L2M2M output before asynchronous delivery. This releases driver capture buffers and prevents encoder stalls. Signed-off-by: BigfootACA --- libs/hwcodec/src/ffmpeg_ram/encode.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libs/hwcodec/src/ffmpeg_ram/encode.rs b/libs/hwcodec/src/ffmpeg_ram/encode.rs index aa08a26d..7f01dff0 100644 --- a/libs/hwcodec/src/ffmpeg_ram/encode.rs +++ b/libs/hwcodec/src/ffmpeg_ram/encode.rs @@ -592,6 +592,16 @@ impl Encoder { Some(Encoder::packet_callback), ); if result == -11 || result == 0 { + if self.ctx.name.contains("v4l2m2m") { + return Ok(frames + .into_iter() + .map(|frame| EncodeBytesFrame { + data: Bytes::copy_from_slice(frame.data.as_ref()), + pts: frame.pts, + key: frame.key, + }) + .collect()); + } return Ok(frames); } Err(result)