Skip to content

Commit 98138c8

Browse files
author
Alexander Matveev
committed
8268219: hlsprogressbuffer should provide PTS after GStreamer update
Reviewed-by: kcr, arapte
1 parent c81a722 commit 98138c8

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

modules/javafx.media/src/main/native/gstreamer/gstreamer-lite/gstreamer/libs/gst/base/gstbaseparse.c

-4
Original file line numberDiff line numberDiff line change
@@ -1336,11 +1336,7 @@ gst_base_parse_sink_event_default (GstBaseParse * parse, GstEvent * event)
13361336
/* not considered BYTE seekable if it is talking to us in TIME,
13371337
* whatever else it might claim */
13381338
parse->priv->upstream_seekable = FALSE;
1339-
#ifndef GSTREAMER_LITE
13401339
next_dts = GST_CLOCK_TIME_NONE;
1341-
#else // GSTREAMER_LITE
1342-
next_dts = in_segment->start;
1343-
#endif // GSTREAMER_LITE
13441340
gst_event_copy_segment (event, &out_segment);
13451341
}
13461342

modules/javafx.media/src/main/native/gstreamer/plugins/progressbuffer/hlsprogressbuffer.c

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2010, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -63,6 +63,8 @@ struct _HLSProgressBuffer
6363
gboolean is_eos;
6464

6565
GstFlowReturn srcresult;
66+
67+
GstClockTime buffer_pts;
6668
};
6769

6870
struct _HLSProgressBufferClass
@@ -191,6 +193,8 @@ static void hls_progress_buffer_init(HLSProgressBuffer *element)
191193
element->is_eos = FALSE;
192194

193195
element->srcresult = GST_FLOW_OK;
196+
197+
element->buffer_pts = GST_CLOCK_TIME_NONE;
194198
}
195199

196200
/**
@@ -419,6 +423,13 @@ static void hls_progress_buffer_loop(void *data)
419423
g_cond_signal(&element->del_cond);
420424
}
421425

426+
if (element->buffer_pts != GST_CLOCK_TIME_NONE)
427+
{
428+
GST_BUFFER_TIMESTAMP(buffer) = element->buffer_pts;
429+
GST_BUFFER_DTS(buffer) = element->buffer_pts;
430+
element->buffer_pts = GST_CLOCK_TIME_NONE;
431+
}
432+
422433
g_mutex_unlock(&element->lock);
423434

424435
// Send the data to the hls progressbuffer source pad
@@ -494,11 +505,13 @@ static gboolean hls_progress_buffer_sink_event(GstPad *pad, GstObject *parent, G
494505
gst_segment_init (&new_segment, GST_FORMAT_TIME);
495506
new_segment.flags = segment.flags;
496507
new_segment.rate = segment.rate;
497-
new_segment.start = 0;
508+
new_segment.start = segment.position;
498509
new_segment.stop = -1;
499510
new_segment.position = segment.position;
500511
new_segment.time = segment.position;
501512

513+
element->buffer_pts = segment.position;
514+
502515
event = gst_event_new_segment (&new_segment);
503516
element->send_new_segment = FALSE;
504517
ret = gst_pad_push_event(element->srcpad, event);

0 commit comments

Comments
 (0)