textoverlay: fix shading for RGBx/RGBA pixel format variants

... for cases where there's padding at the end of each row.

Fixes #4414.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9106>
This commit is contained in:
Tim-Philipp Müller 2025-05-27 19:20:35 +01:00 committed by GStreamer Marge Bot
parent e72e9a95d8
commit d273b790e1

View File

@ -2163,14 +2163,16 @@ gst_base_text_overlay_shade_xRGB (GstBaseTextOverlay * overlay,
{
gint i, j;
guint8 *dest_ptr;
guint stride;
dest_ptr = dest->data[0];
dest_ptr = GST_VIDEO_FRAME_PLANE_DATA (dest, 0);
stride = GST_VIDEO_FRAME_PLANE_STRIDE (dest, 0);
for (i = y0; i < y1; i++) {
for (j = x0; j < x1; j++) {
gint y, y_pos, k;
y_pos = (i * 4 * overlay->width) + j * 4;
y_pos = (i * stride) + j * 4;
for (k = 0; k < 4; k++) {
y = dest_ptr[y_pos + k] - overlay->shading_value;
dest_ptr[y_pos + k] = CLAMP (y, 0, 255);
@ -2240,13 +2242,15 @@ gint x0, gint x1, gint y0, gint y1) \
{ \
gint i, j;\
guint8 *dest_ptr;\
guint stride;\
\
dest_ptr = dest->data[0];\
dest_ptr = GST_VIDEO_FRAME_PLANE_DATA (dest, 0);\
stride = GST_VIDEO_FRAME_PLANE_STRIDE (dest, 0);\
\
for (i = y0; i < y1; i++) {\
for (j = x0; j < x1; j++) {\
gint y, y_pos, k;\
y_pos = (i * 4 * overlay->width) + j * 4;\
y_pos = (i * stride) + j * 4;\
for (k = OFFSET; k < 3+OFFSET; k++) {\
y = dest_ptr[y_pos + k] - overlay->shading_value;\
dest_ptr[y_pos + k] = CLAMP (y, 0, 255);\