|
1 | 1 | /*
|
2 |
| - * Copyright (c) 2010, 2021, Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
4 | 4 | *
|
5 | 5 | * This code is free software; you can redistribute it and/or modify it
|
@@ -174,6 +174,7 @@ static gpointer progress_buffer_range_monitor(ProgressBuffer *element);
|
174 | 174 | #endif
|
175 | 175 |
|
176 | 176 | static void progress_buffer_set_pending_event(ProgressBuffer *element, GstEvent* new_event);
|
| 177 | +static GstEventType progress_buffer_get_pending_event_type(ProgressBuffer *element); |
177 | 178 |
|
178 | 179 | /**
|
179 | 180 | * progress_buffer_class_init()
|
@@ -513,6 +514,14 @@ static void progress_buffer_set_pending_event(ProgressBuffer *element, GstEvent*
|
513 | 514 | element->pending_src_event = new_event;
|
514 | 515 | }
|
515 | 516 |
|
| 517 | +static GstEventType progress_buffer_get_pending_event_type(ProgressBuffer *element) |
| 518 | +{ |
| 519 | + if (element->pending_src_event) |
| 520 | + return GST_EVENT_TYPE(element->pending_src_event); |
| 521 | + else |
| 522 | + return GST_EVENT_UNKNOWN; |
| 523 | +} |
| 524 | + |
516 | 525 | /**
|
517 | 526 | * send_position_message
|
518 | 527 | * Sends application message on the BUS with the following parameters:
|
@@ -590,7 +599,11 @@ static GstFlowReturn progress_buffer_enqueue_item(ProgressBuffer *element, GstMi
|
590 | 599 | if (element->sink_segment.position < element->sink_segment.stop)
|
591 | 600 | element->sink_segment.stop = element->sink_segment.position;
|
592 | 601 |
|
593 |
| - progress_buffer_set_pending_event(element, NULL); |
| 602 | + // Do not clear pending EOS event if set. If progress buffer |
| 603 | + // set pending EOS event we need to deliver it, otherwise |
| 604 | + // downstream will wait for data forever. |
| 605 | + if (progress_buffer_get_pending_event_type(element) != GST_EVENT_EOS) |
| 606 | + progress_buffer_set_pending_event(element, NULL); |
594 | 607 |
|
595 | 608 | signal = send_position_message(element, TRUE);
|
596 | 609 | gst_event_unref(event); // INLINE - gst_event_unref()
|
|
0 commit comments