summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Petridis <jordan@centricular.com>2021-04-20 11:06:09 +0300
committerTim-Philipp Müller <tim@centricular.com>2022-02-01 16:33:15 +0000
commit8d6c1cad181d10c7acca9aecd30606f23bbc97f5 (patch)
treed5d3c8cddd39aa1c09cd916be85b1042ca623ef0
parente274255ee537bed7a59acfb37be81fba95487fc1 (diff)
downloadgstreamer-plugins-base-8d6c1cad181d10c7acca9aecd30606f23bbc97f5.tar.gz
gstvideoencoder: make sure the buffer is writable before modifying metadata
Similar to ae8d0cf3acfaf79d8479647a55bd44b8453d07df Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1294>
-rw-r--r--gst-libs/gst/video/gstvideoencoder.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gst-libs/gst/video/gstvideoencoder.c b/gst-libs/gst/video/gstvideoencoder.c
index 9811ba0d4..ff3031503 100644
--- a/gst-libs/gst/video/gstvideoencoder.c
+++ b/gst-libs/gst/video/gstvideoencoder.c
@@ -2554,6 +2554,9 @@ gst_video_encoder_finish_frame (GstVideoEncoder * encoder,
frame->distance_from_sync = priv->distance_from_sync;
priv->distance_from_sync++;
+ /* We need a writable buffer for the metadata changes below */
+ frame->output_buffer = gst_buffer_make_writable (frame->output_buffer);
+
GST_BUFFER_PTS (frame->output_buffer) = frame->pts;
GST_BUFFER_DTS (frame->output_buffer) = frame->dts;
GST_BUFFER_DURATION (frame->output_buffer) = frame->duration;
@@ -2700,6 +2703,9 @@ gst_video_encoder_finish_subframe (GstVideoEncoder * encoder,
gst_video_encoder_infer_dts_unlocked (encoder, frame);
+ /* We need a writable buffer for the metadata changes below */
+ subframe_buffer = gst_buffer_make_writable (subframe_buffer);
+
GST_BUFFER_PTS (subframe_buffer) = frame->pts;
GST_BUFFER_DTS (subframe_buffer) = frame->dts;
GST_BUFFER_DURATION (subframe_buffer) = frame->duration;