h265parse->discont = FALSE;
h265parse->discard_bidirectional = FALSE;
+ h265parse->marker = FALSE;
gst_h265_parse_reset_stream_info (h265parse);
}
tmp_frame.buffer = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL,
nalu.offset, nalu.size);
+ /* Set marker on last packet */
+ if (nl + nalu.size == left) {
+ if (GST_BUFFER_FLAG_IS_SET (frame->buffer, GST_BUFFER_FLAG_MARKER))
+ h265parse->marker = TRUE;
+ }
+
/* 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
gst_buffer_unmap (buffer, &map);
if (!h265parse->split_packetized) {
+ h265parse->marker = TRUE;
gst_h265_parse_parse_frame (parse, frame);
ret = gst_base_parse_finish_frame (parse, frame, map.size);
} else {
if (current_off > 0) {
nalu.size = 0;
nalu.offset = nalu.sc_offset;
+ h265parse->marker = TRUE;
break;
}
}
/* If there is a marker flag, or input is AU, we know this is complete */
if (GST_BUFFER_FLAG_IS_SET (frame->buffer, GST_BUFFER_FLAG_MARKER) ||
h265parse->in_align == GST_H265_PARSE_ALIGN_AU) {
+ h265parse->marker = TRUE;
break;
}
h265parse->discont = FALSE;
}
+ if (h265parse->marker) {
+ GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_MARKER);
+ h265parse->marker = FALSE;
+ } else {
+ GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_MARKER);
+ }
+
/* replace with transformed HEVC output if applicable */
av = gst_adapter_available (h265parse->frame_out);
if (av) {