Add a reasonably optimized new gst_adapter_masked_scan_uint32() function
to scan the adapter for a pattern after applying a mask.
Add some unit tests.
API: GstAdapter::gst_adapter_masked_scan_uint32()
Fixes#583187
The padding of GstClock is a GstClockTime and not a
gpointer, so adding a pointer requires the padding
size to be changed depending on the pointer size.
Use an union instead.
Fixes bug #582878.
Add a gst_element_lost_state_full() with an extra argument to control
distribution of a new base_time. We will need this for flushing step
operations.
API: GstElement::gst_element_lost_state_full()
Don't use realloc to grow the scratch area because we don't want the memcpy the
old useless data into the new area before we write our new stuff in it.
dot does not take the head/tail labels into account. For unfixed caps they get
quite large. Double the padding to make it sort of readable in more cases. Also
make normal font bigger and caps-label font smaller to increase our luck.
Possibly fixes GObject class creation/unref race conditions when
creating the last-message string in fakesink for events with
structures that have fields with these enum types.
If deserializing a property fails, check if the value type is a string and if so
attempt to create a bin from the string value. This allows to e.g. specify
audio-sink/video-sink for playbin on gst-launch commandline.
Reuse buffer code for bufferlists. Not sure if this measurably impacts performance
for the simple buffer case, if it does after doing some benchmarks, we can
decouple it later.
Fixes#572285
Buffer lists are a means to manage disjoint buffers as one buffer. It's also
possible to put many of those buffers into a list.
The idea is that when support is added to various elements, we will be able to
more efficiently slice and dice buffers, reduce the amount of memcpy and also
reduce data passing overhead.
The implementation is kept simple on purpose, reusing all of the memory
management features we have for miniobjects and buffers.
Access to the bufferlist object is done with an iterator, which allows for
efficient iteration and modification of the list.
See #572285
When a are requested to take a buffer from the adapter that is exactly the
headbuffer, don't make a subbuffer of it but return that head buffer.
Add a unit-test for this new optimisation.
When an element lost its state but was busy doing a state change, still post the
async-start message with the base_time reset flag or else we might end up with
an old base_time.
this can happen when a sink is goin async to paused and then a flushing seek is
performed. This would cause the base_time to remain unmodified because the
async-start message was not sent.