mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-01-09 13:45:21 +00:00
600e246a94
Lakka 5.x Switch changes (#1853) Lakka v5.x switchroot 5.1.2 (#1871) Fix Switch Issue's in upstream 5.x (#1888) Minor Switch Changes (#1893) Lakka v5.x switch 3 (#1895) Lakka v5.x switch 4 (#1898) L4T: Xorg-server: Fix build issue (#1924) Switch: remove ra patch Lakka v5.x switch 6 (#1926) Cleanups, More LibreELEC Stuff, more permission fixes, Misc switch stuff. (#1930) Switch: U-Boot: bump version to 2024-NX02 (#1946) L4T/Ayn post-upstreaming fixes - retroarch_joypad_autoconfig: remove spaces from file names - retroarch: remove Switch specific patch merged upstream - libXv: move to L4T packages folder (package removed in upstream) - bring some packages from v5.x to L4T packages - ffmpeg: remove vulkan - remove stella core from Switch build (missing C++ headers) - Ayn/Odin: use proper kernel arg to not hide kernel messages in console - connman: add wpa_supplicant support back
42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From d78e4bc70ec1d97e22c5f0365c027574e740923f Mon Sep 17 00:00:00 2001
|
|
From: CTCaer <ctcaer@gmail.com>
|
|
Date: Fri, 18 Mar 2022 21:50:20 +0000
|
|
Subject: [PATCH 12/39] codecs: nvv4l2: fix hanging on event wait if no full
|
|
frame info
|
|
|
|
Sometimes the decoder can be opened with no packet sent or not many for a frame to be decoded.
|
|
|
|
In such cases the thread will get stuck for 50s waiting for a resolution event to happen.
|
|
|
|
Use the streamon and eos checks properly to get out of such a loop.
|
|
---
|
|
libavcodec/nvv4l2_dec.c | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
|
index 0779f3a4bf..e242857b2e 100644
|
|
--- a/libavcodec/nvv4l2_dec.c
|
|
+++ b/libavcodec/nvv4l2_dec.c
|
|
@@ -417,7 +417,8 @@ static void *dec_capture_thread(void *arg)
|
|
break;
|
|
}
|
|
}
|
|
- while ((event.type != V4L2_EVENT_RESOLUTION_CHANGE) && !ctx->in_error);
|
|
+ while ((event.type != V4L2_EVENT_RESOLUTION_CHANGE) &&
|
|
+ !ctx->in_error && !ctx->eos);
|
|
|
|
/* Received first resolution change event
|
|
** Format and buffers are now set on capture.
|
|
@@ -816,6 +817,8 @@ int nvv4l2_decoder_close(AVCodecContext *avctx, nvv4l2_ctx_t *ctx)
|
|
/* Stop streaming on both planes. */
|
|
ret = v4l2_ioctl(ctx->fd, VIDIOC_STREAMOFF, &ctx->op_buf_type);
|
|
ret = v4l2_ioctl(ctx->fd, VIDIOC_STREAMOFF, &ctx->cp_buf_type);
|
|
+ ctx->op_streamon = false;
|
|
+ ctx->cp_streamon = false;
|
|
|
|
/* Wait for capture thread to exit. */
|
|
if (ctx->capture_thread) {
|
|
--
|
|
2.25.1
|
|
|