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
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
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.
Raw decoding mode removes almost all buffering in video and audio queues
when a source providing already decoded video/audio is detected, on the
possibly bogus assumption that such a source should provide sufficient
internal queueing. Fixes playback on some DVDs, and improves it
on all.
If one side has a preference for a particular sample rate or set of sample rates, we
should honour this in the caps we advertise and transform to and from, so that elements
actually know about the other side's sample rate preference and can negotiate to it
if supported. Also add unit test for this.
This prevents valgrind warnings when accessing the "x" parts
of xRGB and friends in other elements that handle (and can handle)
xRGB like ARGB (for example videoscale).
When reusing playbin with visualisations, reset the async property on the video
sink because some sinks might dynamically recreate their sinks.
Fixes#576188
When we have the textpad configured, enable and disable the subtitles by setting
the silent flag on the overlay element instead of trying to remove elements.
See #576187