We need a mechanism in PulseAudio to allow running code outside the
mainloop lock. Then we'd be able to post to the bus (taking the
GST_OBJECT_LOCK), without worrying about locking order with the mainloop
lock, which is the current cause of deadlocks while trying to post the
stream status messages.
https://bugzilla.gnome.org/show_bug.cgi?id=736071
Stream headers are updated whenever ::set_caps is called, so we can't assume
they'll be valid before the message body is written out. We *can* assume that
for queued buffers, but SOUP_MEMORY_STATIC is still wrong for those.
Also, add some debug logging for stream header interactions.
https://bugzilla.gnome.org/show_bug.cgi?id=737771
::render sets a new callback for writing out new buffers only if there aren't
already buffers queued for writing with a previously-scheduled callback.
However, if the previously-scheduled callback is interrupted by a state change
(either manually or due to an error) and there are still buffers in the queue,
restarting the pipeline will result in buffers being queued forever, and no
callbacks will ever be scheduled, and no buffers will be written out.
https://bugzilla.gnome.org/show_bug.cgi?id=737739
This gives a quick introduction to how the pulsesink/pulsesrc code
interacts with the pa_threaded_mainloop that we start up to communicate
with the server.
The stream status messages are emitted in the PA mainloop thread, which
means the mainloop lock is taken, followed by the Gst object lock (by
gst_element_post_message()). In all other locations, the order of
locking is reversed (this is unavoidable in a bunch of cases where the
object lock is taken by GstBaseSink or GstAudioBaseSink, and then we get
control to take the mainloop lock).
The only way to guarantee that the defer callback for stream status
messages doesn't deadlock is to either stop posting those messages, or
make sure that the message emission is completed before we proceed to
any point that might take the object lock before the mainloop lock
(which is what we do after this patch).
https://bugzilla.gnome.org/show_bug.cgi?id=736071
packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.
https://bugzilla.gnome.org/show_bug.cgi?id=736252
packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.
https://bugzilla.gnome.org/show_bug.cgi?id=736252
packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.
https://bugzilla.gnome.org/show_bug.cgi?id=736252
In gst_gdk_pixbuf_dec_setup_pool(), query is being allocated using
gst_query_new_allocation(), but the same is not unreferenced
hence calling gst_query_unref() after usage of query.
https://bugzilla.gnome.org/show_bug.cgi?id=735950
They are reported properly by libvpx if the correct struct members are used.
This also fixes handling of resolution changes without input caps changes.
https://bugzilla.gnome.org/show_bug.cgi?id=719359
When we cancel connection attempts and similar things, there are still
some operations pending on our main context from the GCancellables. We
should let them all run before unreffing our context, otherwise we leak
file descriptors.
Unfortunately this requires libsoup 2.47.0 or newer as earlier versions
steal our main context from us and we can't use it for cleanup later
without assertions and funny crashes.
Based on a patch by Dmitry Shatrov <shatrov@gmail.com>.
https://bugzilla.gnome.org/show_bug.cgi?id=663944
fpp can never equal 0 here, or the loop would not execute at all.
Zero fpp was possible before as the loop condition was allowing
it specifically, but no more.
Coverity 1139681
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
Makes libpng deinterlace Adam7 interlaced pictures
by default. It is the only interlaced format available
and if the picture isn't interlaced the code should behave
as before.
https://bugzilla.gnome.org/show_bug.cgi?id=726161
This will happen if we have an incoming stream with a non-TIME segment
Could be improved later to figure out proper pts/duration.
CID #1199702
CID #1199703
If nothing happens after 15 seconds, chances are good that
our connection will never will work. Stop after 15 seconds
instead of waiting until the system's default timeout, which
can be > 1 minute.
Only return EOS the next time create() is called, if at all. basesrc
should already take care of not calling it again.
Also always return immediately if the previous flow return was
not OK. This indicates an error somewhere.
Add log handlers for jack that write to the gst debug log. This avoids spamming
the console when e.g. using autoaudiosink, having the jack elements installed,
but not running jack.
Commit 46fd12ae5e introduced connection
recovery. But when server does not specify content-size,
souphttpsrc tries to reconnect even after regular end of stream.
Http server replies with SOUP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE
but souphttpsrc still emits error instead of EOS.
https://bugzilla.gnome.org/show_bug.cgi?id=724717
Signed-off-by: Branislav Katreniak <bkatreniak@nuvotechnologies.com>
We want to notice ourselves that we're EOS. Otherwise we will
always cancel requests in the very end and confuse the server...
and also make it impossible to use persistent connections.
gstsouputils.c:35:25: error: comparison of constant 9 with expression of type
'SoupLoggerLogLevel' is always false
[-Werror,-Wtautological-constant-out-of-range-compare]
Those are advertised in the template caps, but the
setcaps handler didn't handle them. But then oggmux
and oggparse at least for now still always output
application/ogg anyway, so that wasn't a real problem.
This element and the underlying libshout2 library
can handle video media files too. The code already
handles video/webm so the name gets confusing. Also
add and use DEFAULT_FORMAT macro Instead of hardwiring
SHOUT_FORMAT_VORBIS at init
https://bugzilla.gnome.org/show_bug.cgi?id=721342
libshout2 (we require > 2.0 at config time) supports
both IP and hostname for _set_host(). Dropped an
outdated FIXME regarding this limitation, adjusted
some comments and changed the param blurb to reflect
this too.