[Spice-commits] server/gstreamer-encoder.c
Frediano Ziglio
fziglio at kemper.freedesktop.org
Wed Mar 22 15:52:50 UTC 2017
server/gstreamer-encoder.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
New commits:
commit 9bad8c306ca38ece8af91763c987d076330fef48
Author: Frediano Ziglio <fziglio at redhat.com>
Date: Tue Mar 21 22:13:22 2017 +0000
Fix GStreamer encoding if stride is not 4 bytes aligned
This is required by GStreamer.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
Acked-by: Pavel Grunt <pgrunt at redhat.com>
diff --git a/server/gstreamer-encoder.c b/server/gstreamer-encoder.c
index df54cad5..1ce8d58a 100644
--- a/server/gstreamer-encoder.c
+++ b/server/gstreamer-encoder.c
@@ -1260,7 +1260,7 @@ static inline int line_copy(SpiceGstEncoder *encoder, const SpiceBitmap *bitmap,
/* Copy the line */
uint8_t *src = chunks->chunk[chunk_index].data + chunk_offset;
- memcpy(dst, src, stream_stride);
+ memcpy(dst, src, MIN(stream_stride, bitmap->stride));
dst += stream_stride;
chunk_offset += bitmap->stride;
}
@@ -1350,7 +1350,8 @@ static int push_raw_frame(SpiceGstEncoder *encoder,
gpointer bitmap_opaque)
{
uint32_t height = src->bottom - src->top;
- uint32_t stream_stride = (src->right - src->left) * encoder->format->bpp / 8;
+ // GStreamer require the stream to be 4 bytes aligned
+ uint32_t stream_stride = GST_ROUND_UP_4((src->right - src->left) * encoder->format->bpp / 8);
uint32_t len = stream_stride * height;
GstBuffer *buffer = gst_buffer_new();
/* TODO Use GST_MAP_INFO_INIT once GStreamer 1.4.5 is no longer relevant */
More information about the Spice-commits
mailing list