diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c index 61224849c9..8eb301b232 100644 --- a/gst/videoparsers/gsth264parse.c +++ b/gst/videoparsers/gsth264parse.c @@ -714,12 +714,21 @@ gst_h264_parse_handle_frame_packetized (GstBaseParse * parse, /* dispatch per NALU if needed */ if (h264parse->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_h264_parse_parse_frame (parse, frame); - ret = gst_base_parse_finish_frame (parse, frame, nl + nalu.size); + gst_h264_parse_parse_frame (parse, &tmp_frame); + ret = gst_base_parse_finish_frame (parse, &tmp_frame, nl + nalu.size); left -= nl + nalu.size; }