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.8 KiB
Diff
42 lines
1.8 KiB
Diff
From ef1bcd73fa1e37982dfc24f2319e83d5932848a8 Mon Sep 17 00:00:00 2001
|
|
From: CTCaer <ctcaer@gmail.com>
|
|
Date: Tue, 28 Jun 2022 01:37:59 +0000
|
|
Subject: [PATCH 18/39] codecs: nvv4l2: align encoder plane width to 64B
|
|
|
|
Transformations of Block linear formats to linear Pitch formats are done in HW.
|
|
|
|
VIC is responsible for that and has the limitation that width must be aligned to 64 Bytes.
|
|
|
|
This allows the encoder to work with every single non standard resolution, effectively bringing full support to any video.
|
|
|
|
That is particularly important on streaming software that use ffmpeg for encoding which many times can be weird resolutions (e.g. pip).
|
|
|
|
The output encoded frame has the original line width of course.
|
|
---
|
|
libavcodec/nvv4l2_enc.c | 9 ++++++++-
|
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/libavcodec/nvv4l2_enc.c b/libavcodec/nvv4l2_enc.c
|
|
index cb7b7363f3..7bd8e84227 100644
|
|
--- a/libavcodec/nvv4l2_enc.c
|
|
+++ b/libavcodec/nvv4l2_enc.c
|
|
@@ -687,7 +687,14 @@ int nvv4l2_encoder_put_frame(AVCodecContext *avctx, nvv4l2_ctx_t *ctx,
|
|
|
|
/* Import frame into output plane */
|
|
for (uint32_t i = 0; i < buffer->n_planes; i++) {
|
|
- Raw2NvBuffer(frame->payload[i], i, ctx->op_planefmts[i].width,
|
|
+ /*
|
|
+ ** Due to VIC constrains the transformation from Block Linear to Pitch
|
|
+ ** must have aligned widths to 64B. Otherwise the frame might be
|
|
+ ** produced as scrambled.
|
|
+ */
|
|
+ int aligned_plane_width = NVALIGN(ctx->op_planefmts[i].width, 64);
|
|
+
|
|
+ Raw2NvBuffer(frame->payload[i], i, aligned_plane_width,
|
|
ctx->op_planefmts[i].height, buffer->planes[i].fd);
|
|
buffer->planes[i].bytesused = ctx->op_planefmts[i].width *
|
|
ctx->op_planefmts[i].height *
|
|
--
|
|
2.25.1
|
|
|