Whether a frame is interlaced or not is unknown at the time of
buffer allocation, so caps on the buffer in opaque will have
a previous frame's interlaced flag set. So if interlacedness
changes, we update the buffer (if any) caps with the correct
interlaced flag once we know.
https://bugzilla.gnome.org/show_bug.cgi?id=656155
There seems to be a little bit of non obvious logic where
the QoS logic can decide to not drop decoding a frame and
pass it to ffmpeg, telling it to drop.
In this case, the QoS logic does not drop the frame itself,
but since the frame will end up being dropped, we still
mark it as dropped and post a QoS message.
https://bugzilla.gnome.org/show_bug.cgi?id=657950
This include decoder for ASS, SRT, PGS, DVD and DVB. Those are generated
with bad capabilities and are not usable in GStreamer. Other elements exist
to handle those subtitle formats.
https://bugzilla.gnome.org/show_bug.cgi?id=658019
Always diable EMU_EDGE. Use the bufferpool options to enable extra padding on
allocated frames. If the downstream bufferpool does not support the padding,
disable direct rendering and do the final copy/cropping into the non-padded
output frame.
Store incomming info from the caps, current context and output formats into
separate variables so that we can more easily handle them.
Refactor the negotiation code.
Rework the bufferpool setup code. Take into account that we might want to
negotiate extra borders around the image in direct rendering.
Remove some of the cropping code for now.
Add a max-threads property, which defaults to '0 = auto'
Add a utility function taken from libschroedinger which sets
the ffmpeg worker thread count to match the computer processor
count by default.
When input buffer timestamps are invalid, next timestamp are used for
audio. Then, the next out timestamp is updated with the used timestamp
and the calculated duration. However, if the used timestamp is invalid,
it should not be used. Otherwise, the next buffer will use a wrong
timestamp that is not in the clipped segment, making the buffer to be
dropped.
This fixes playback with SBTVD MPEG TS streams, using AAC LATM.
A keyframe may be quite a while in the future, and the decoder
has no way of knowing this. A poor decision could mean quite some
time with no video output.
This decision should be left to the upstream element: a demuxer
might know about incoming keyframes, or some other element might
be able to request a keyframe.
Fixes bug #649372.