mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 04:22:27 +00:00
baseparse: simplify code a bit
Avoid repeated checks for testing if a buffer is a header
This commit is contained in:
parent
42d45a0f40
commit
3984f7159a
1 changed files with 14 additions and 12 deletions
|
@ -980,19 +980,21 @@ static GstFlowReturn
|
|||
gst_base_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
|
||||
{
|
||||
GstBuffer *buffer = frame->buffer;
|
||||
gboolean is_header = GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_HEADER);
|
||||
|
||||
if (!GST_BUFFER_PTS_IS_VALID (buffer) && !is_header &&
|
||||
GST_CLOCK_TIME_IS_VALID (parse->priv->next_pts)) {
|
||||
GST_BUFFER_PTS (buffer) = parse->priv->next_pts;
|
||||
}
|
||||
if (!GST_BUFFER_DTS_IS_VALID (buffer) && !is_header &&
|
||||
GST_CLOCK_TIME_IS_VALID (parse->priv->next_dts)) {
|
||||
GST_BUFFER_DTS (buffer) = parse->priv->next_dts;
|
||||
}
|
||||
if (!GST_BUFFER_DURATION_IS_VALID (buffer) && !is_header &&
|
||||
GST_CLOCK_TIME_IS_VALID (parse->priv->frame_duration)) {
|
||||
GST_BUFFER_DURATION (buffer) = parse->priv->frame_duration;
|
||||
/* Avoid updating timestamps of header buffers */
|
||||
if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_HEADER)) {
|
||||
if (!GST_BUFFER_PTS_IS_VALID (buffer) &&
|
||||
GST_CLOCK_TIME_IS_VALID (parse->priv->next_pts)) {
|
||||
GST_BUFFER_PTS (buffer) = parse->priv->next_pts;
|
||||
}
|
||||
if (!GST_BUFFER_DTS_IS_VALID (buffer) &&
|
||||
GST_CLOCK_TIME_IS_VALID (parse->priv->next_dts)) {
|
||||
GST_BUFFER_DTS (buffer) = parse->priv->next_dts;
|
||||
}
|
||||
if (!GST_BUFFER_DURATION_IS_VALID (buffer) &&
|
||||
GST_CLOCK_TIME_IS_VALID (parse->priv->frame_duration)) {
|
||||
GST_BUFFER_DURATION (buffer) = parse->priv->frame_duration;
|
||||
}
|
||||
}
|
||||
return GST_FLOW_OK;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue