From 4e425d5838bef9f14fa1043f45a01534e6d91d2d Mon Sep 17 00:00:00 2001 From: Sreerenj Balachandran Date: Fri, 11 Mar 2016 17:34:03 +0200 Subject: videoparsers: h265: Fix segfault while transforming hevc to nal aligned bytestream Create temporary ParseFrame and copy the nal size buffer region for each nal unit like we did for h264. https://bugzilla.gnome.org/show_bug.cgi?id=763494 --- gst/videoparsers/gsth265parse.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c index 4bbc889f5..4656c7287 100644 --- a/gst/videoparsers/gsth265parse.c +++ b/gst/videoparsers/gsth265parse.c @@ -762,12 +762,21 @@ gst_h265_parse_handle_frame_packetized (GstBaseParse * parse, /* dispatch per NALU if needed */ if (h265parse->split_packetized) { + GstBaseParseFrame tmp_frame; + + gst_base_parse_frame_init (&tmp_frame); + tmp_frame.flags |= frame->flags; + tmp_frame.offset = frame->offset; + tmp_frame.overhead = frame->overhead; + tmp_frame.buffer = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, + nalu.offset, nalu.size); + /* note we don't need to come up with a sub-buffer, since * subsequent code only considers input buffer's metadata. * Real data is either taken from input by baseclass or * a replacement output buffer is provided anyway. */ - gst_h265_parse_parse_frame (parse, frame); - ret = gst_base_parse_finish_frame (parse, frame, nl + nalu.size); + gst_h265_parse_parse_frame (parse, &tmp_frame); + ret = gst_base_parse_finish_frame (parse, &tmp_frame, nl + nalu.size); left -= nl + nalu.size; } -- cgit v1.2.1