Make playsink go async to the PAUSED state instead of relying on uridecodebin
for async behaviour in playbin. This solves some problems (mainly with DVD)
where the pipeline would go to PLAYING before preroll completed, failing to
select the audiosink clock.
Fixes#581727
When calculating the input/output buffer sizes in the transform_size function,
take the number of channels into account, so we don't end up calculating
a buffer size that only contains a partial number of audio frames.
Also, when going from output size to input size, round down rather than
up, so as to calculate the minimum number of samples that *might* yield
a buffer of the intended destination size.
Fixes: #580470 and #580952
Add the start position of the first segment to the running time
used to generate buffer timestamps in vorbisenc. This avoids generating
buffers which fall outside the initial segment. The element segment
handling requires more extensive fixing, but this at least prevents
regressions. Fixes: #580020
When videorate duplicates a buffer with a DISCONT flag, it copies the discont on
the first pushed buffer but fails to clear it for subsequent buffers. This
causes theoraenc!oggmux and possibly other elements to consider this a discont
stream.
Fix videorate to produce discont as the first buffer and after a flushing seek.
Fixes#580271.
The 2s limit is way too small for a lot of files (which have an interleave
in time of between 3 and 5s). Instead, leave it to the initial 5s value
and reduce the other limits (allowing us to stay memory-efficient).
First check the pad caps if they are raw before setting the raw_decoding_mode to
TRUE. Fixes playback of transport streams and other streams that require large
queues.
Fixes#579734
Don't use REPLACE_ALL merge mode when that's not really what we want,
as now that REPLACE_ALL actually does what it's supposed to do in
core, we drop tags we wanted to keep, such as the various disc id
tags. Add unit test for this as well. Fixes#579463.
Adds a new property in multifdsink, resend-streamheader.
If this property is false, the multifdsink will not send the streamheader if
there's already one set for a particular client.
There are some formats in which every stream needs to start with a certain
blob, but you can't inject this blob at leisure. If the producer wants to
change the blob in question and sets in as the streamheader on the outgoing
buffers' caps, new clients of multifdsink will get the new streamheader, but
old clients will break, because they'll see the blob in the middle of the
stream.
The property is true by default, so existing code will not see any difference.
Fixes#578118.
Add a property to disable listening to client writes. This property is usefull
when other code will deal with reading from the client socket.
API: GstMultiFdSink::handle-read property
Clear the target of our ghostpads before we remove the pad from the element.
This to make sure that the internal pad is not left linked to whatever pad we
were ghosted to. This should only be a problem when we leak the ghostpads.
Also release our subpicture pads.
Fixes#577288.
Use the unadjusted internal clock times to calculate the internal/external
offset when calibrating the clock.
When going to NULL, unparent and free the ringbuffer, like we do in the source
element.
See #578506
Add two methods for getting the unadjusted time of the clock and one for
adjusting an internal time. We will need these methods for correctly handling
the time after a gst_audio_clock_reset().
Add a debug category and some debug lines to the audio clock.
API: gst_audio_clock_get_time()
API: gst_audio_clock_adjust()
API: GST_AUDIO_CLOCK_CAST()