Current range was being updated in the thread performing seek, but as
no locks were kept for a short section, data flow could resume before
current range updated, so data for the new range would be accepted as
from the previous range.
Rather, range should be updated in serialized manner based on
newsegment event.
Since everything GstXML related has been deprecated, we can now skip the
libxml includes from the public headers when GST_DISABLE_DEPRECATED is
defined.
See #463435.
Don't override the default get_times vmethod so that we can use the sync
property.
Set the default sync property to FALSE. It used to be set to TRUE but because
the get_times was NULL, it always behaved like FALSE.
Fixes#621530
Implement a custom acceptcaps function. We can simply check if there is an
intersection with the new caps. This makes the accept caps function much faster.
See #621190
When in download mode and we need to provide data for an offset that we don't
have, also perform a seek to the requested location when we are EOS. The reason
why we shouldn't wait for more data is because after EOS, there simply will be
no more data and we end up waiting forever.
Fixes#620500
Parse a size=value from the query string to specify a size. This is interesting
when reading from a file descriptor that actually has a size (and is not
stat-able, such as the socket of an http connection)
Maintain a separate variable to control src and sink flowreturn values so that
we can unlock the src part without shutting down the sink part.
Add flushing for upstream pull based elements that unblocks our getrange
function. This implements seeking when blocking for more data.
Add some arbitrary threshold before attempting a seek. Add a FIXME for this
because we need to find a sensible threshold based on the input rate.
When in download mode and the requested offset is too far away, attempt to do a
seek request to fetch the data.
Keep track of all downloaded parts and merge ranges when needed.
Fixes#600877
This changes some APIs in compatible ways:
- Some functions now take "const char *" arguments, not "char *"
- Some structs now have "conts char *" members, not "char *"
The changes may cause warnings when compiling with the right warning
flags. You've been warned.
Also adds -Wwrite-strings as a warning flag in configure.ac.
https://bugzilla.gnome.org/show_bug.cgi?id=611692
_create() is a pad function set by ourselves, therefore we're sure basesrc
is a GstFileSrc.
Speeds up _create() by 17% and the total call by 8% (instruction calls measurements
done with valgrind).
Fixes#610246
Initialize new_fd with DEFAULT_FD and fd with -1. Setting the property will set
new_fd and in _update_fd() we cehck fd against -1. Also add a coment about the
warning we get in the log from gst_poll_remove_fd(). We could get rid of the
warning if we want by tracking if fd has been added to fdset.
Typefind might mess up pads modes (pull/push) if a
downstream element is plugged and its pads activated
in 'step 2' of typefind pads activation.
This happens because the following steps don't check
if we already emitted typefound due to upstream setting
caps on buffers being pulled in the typefind helpers.
Avoid that by checking if typefound is already emmited.
Fixes#608036
When a downstream element returns GST_FLOW_UNEXPECTED we want to:
* let the dataqueue task running
* forward the flow return upstream.
This allows upstream elements to push EOS, and have that EOS event come
downstream.
Fixes#609274
When we receive an UNEXPECTED flowreturn from downstream, we must not shutdown
the pushing thread because upstream will at some point push an EOS that we still
need to push further downstream.
To achieve this, convert the UNEXPECTED return value to OK. Add a fixme so that
we implement the right logic to propagate the flowreturn upstream at some point.
Also clean up the unit test a little.
Fixes#608136
Add an option to automatically remove the temp file (TRUE by default). This
should make it possible for the application to keep the temp file by other means
than hardlinking or holding an fd open.
Fixes#607739
For the reason outlined at the beginning of gst_private.h (inline
functions in glib may need the g_log_domain variable). Also include
gst_private.h before using any G_OS_* defines, esp. in plugin loader.