Commit graph

1606 commits

Author SHA1 Message Date
Edward Hervey
96b9ae287e queue: Use new GstQueueArray for local storage.
Makes _chain() and _loop() 25% faster
2012-07-04 17:46:54 +02:00
Chun-wei Fan
cb5e8f2bb4 fdsink.c: fix G_OS_WIN32 #ifdef
Postpone the #ifdef to a point after glib.h (via gstfdsink.h) is included
so that the needed defines and header includes can be done correctly,
especially on Visual C++ builds.

https://bugzilla.gnome.org/show_bug.cgi?id=679112
2012-07-02 12:05:50 +01:00
Tim-Philipp Müller
31976c426e inputselector: remove some dead code for old GLib versions 2012-06-26 17:30:19 +01:00
Thiago Santos
42fab9db45 inputselector: avoid notify-tags holding lock
unlock before issuing this notification to prevent
deadlocks when other elements reacts to new tags.

Fixes #678220
2012-06-21 11:15:07 -03:00
Wim Taymans
76e8b2ecda task: add GDestroyNotify to _new
Add a GDestroyNotify to the user_data we pass to gst_task_new()
Change gst_pad_start_task() to also take the notify
2012-06-20 10:31:49 +02:00
Sebastian Dröge
7b966e4577 inputselector: Only proxy the allocation query for the active pad and send reconfigure events to the old/new pad when switching pads 2012-06-19 10:32:10 +01:00
Wim Taymans
7fb522718e queue2: fix percent scaling
Use _scale functions to scale the percent values.
Correctly scale the percent values in the buffering ranges.
2012-06-15 15:36:41 +02:00
David Svensson Fors
066b515985 gstfunnel: avoid access of freed pad
Save the value of the pad's got_eos in gst_funnel_release_pad,
before calling gst_element_remove_pad. This is because
gst_element_remove_pad may free the pad.

https://bugzilla.gnome.org/show_bug.cgi?id=678017
2012-06-14 14:10:22 +01:00
Matej Knopp
b3cee7155a typefindelement: Only send caps when pad is being activated
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=677819
2012-06-11 10:47:40 +02:00
Sebastian Dröge
8d6ead8038 elements: Use gst_pad_set_caps() and don't ignore its return value 2012-06-08 15:45:38 +02:00
Wim Taymans
70c3a752be queue2: remove obsolete caps code 2012-06-05 09:40:14 +02:00
Andre Moreira Magalhaes (andrunko)
83559a5970 inputselector: Correctly get current running time when syncing to the segment information
Fixes bug #677263.
2012-06-01 16:37:50 +02:00
Mike Ruprecht
a71f3ce6e8 funnel: Only emit EOS event if all sinkpads have received one
If multiple sources are plugged into the funnel and one of the
sources emits an EOS, that event is propogated through the funnel
even though other sources connected to the funnel may still be
pushing data. This patch waits to send an EOS event until the
funnel has received an EOS event on each sinkpad.

Ported from d397ea97 in 0.10 branch.
2012-05-31 13:39:05 -04:00
Mike Ruprecht
18a73b8ef2 funnel: Fix buffer leak 2012-05-31 13:07:53 -04:00
Andre Moreira Magalhaes (andrunko)
0dca0dac71 inputselector: Don't try to sync on the segment if it has no TIME format
...and wait until it is actually configured and has a format before
trying to sync.
2012-05-31 17:46:23 +02:00
Sebastian Dröge
7aff9dba0e inputselector: No need to broadcast the signal in flush-stop
Everything stopped at this point already.

Conflicts:

	plugins/elements/gstinputselector.c
2012-05-31 17:05:08 +02:00
Bastien Nocera
6654bd0300 queue2: Fix property name in the docs
temp-template, not temp-tmpl

https://bugzilla.gnome.org/show_bug.cgi?id=677170
2012-05-31 12:56:22 +02:00
Andre Moreira Magalhaes (andrunko)
2f6dadaa7c inputselector: Properly sync when changing streams
This adds properties to use the clock time for deciding when
to drop buffers for inactive pads and a property to buffer all
not rendered buffers for the active pad to allow pad switching
without losing any buffers at all.

Conflicts:

	plugins/elements/gstinputselector.c
2012-05-31 12:38:20 +02:00
Tim-Philipp Müller
cd3875857e gst_tag_list_free() -> gst_tag_list_unref() 2012-05-28 00:08:18 +01:00
Tim-Philipp Müller
b259b5c476 fakesrc: put byte position rather than buffer count into GST_BUFFER_OFFSET
If we're sending a segment in BYTE format, the offset
should be in bytes as well.
2012-05-24 23:33:14 +01:00
Tim-Philipp Müller
a49b9a9946 filesrc: remove references to mmap in comments and debug messages 2012-05-15 19:12:58 +01:00
Alban Browaeys
10396f12d4 typefindelement: if sink pad is activated do not change mode
In commit bf0964b6 a check for pad is activated was not carried.
This leads to attempt to pull while in push mode when force_caps
is set. In this case without the attached check even when activated
in pull mode we activate back to push mode.

This is from comment in previous code , case number eight:
 8. if the sink pad is activated, we are in pull mode. succeed.
-     otherwise activate both pads in push mode and succeed.

Putting it back fixes playback of webm in webkit+gstreamer 1.0 .

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676003
2012-05-14 12:56:05 +02:00
Raimo Järvi
63234a9dab gst: Fix compiler warnings on mingw-w64
https://bugzilla.gnome.org/show_bug.cgi?id=675525
2012-05-09 09:35:35 +02:00
Руслан Ижбулатов
8a962bc1ab filesrc: rearrange sys/stat.h inclusion point for MinGW
gstplugin.h used to include this for us, but doesn't any longer.

https://bugzilla.gnome.org/show_bug.cgi?id=675171
2012-04-30 21:35:02 +01:00
Руслан Ижбулатов
f771d4619e tee: Remove unneeded unlock 2012-04-18 13:43:32 +02:00
Sebastian Dröge
014d10391c inputselector: Set sequence number on segment events 2012-04-16 10:27:29 +02:00
Sebastian Dröge
3146282d48 inputselector: Forward all sticky events when switching pads 2012-04-16 10:22:53 +02:00
Sebastian Dröge
d2811b19f2 tee: Store pad state directly inside the pads instead of GObject qdata 2012-04-16 10:05:02 +02:00
Sebastian Dröge
655bfbf776 inputselector: Send reconfigure event on the new active pad when pads are switched 2012-04-16 09:46:49 +02:00
Matej Knopp
c4b71c2574 multiqueue: gst_single_queue_flush unlocks the queue twice
https://bugzilla.gnome.org/show_bug.cgi?id=674044
2012-04-13 23:57:35 +01:00
Wim Taymans
8ab260d116 queue2: fix merge error 2012-04-11 13:20:18 +02:00
Wim Taymans
bfc87ac576 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	gst/gsttoc.c
	plugins/elements/gstqueue2.c
2012-04-11 12:50:50 +02:00
Wim Taymans
bdda711d03 queue2: signal delete before waiting
When we don't have the requested data in the ringbuffer and we move our read
pointer to the requested position, signal the delete cond to inform the writer
that we changed the current fill level. If we don't, the writer might stay
blocked and we might wait forever.
2012-04-11 12:45:46 +02:00
Wim Taymans
ccbeb19881 queue2: update current read position before waiting
When we don't have enough bytes in the ringbuffer to satisfy the current
request, first update the current read position before waiting. If we don't do
that, the ringbuffer might appear full and the writer will never write more
bytes to wake us up.
2012-04-11 12:45:41 +02:00
Wim Taymans
463a8d9abf queue2: add range only on sinkpad
Only add the range when we receive a segment event on the sinkpad. The add_range
method will modify the write position, which only makes sense to do on the
sinkpad.
2012-04-11 12:45:37 +02:00
Wim Taymans
e3ca88ea7b queue2: fix debug message
We're not writing to the offset of the buffer
2012-04-11 12:45:31 +02:00
Wim Taymans
30c425c29f queue2: add_range already updates the level 2012-04-11 12:45:24 +02:00
Wim Taymans
05635b374f Merge remote-tracking branch 'origin/0.10' 2012-04-10 16:07:52 +02:00
Wim Taymans
2e28804a6e queue2: clear seeking flag in all cases
Also clear the seeking flag when downstream is in pull mode.
2012-04-10 16:06:41 +02:00
Wim Taymans
393c758a1c Merge remote-tracking branch 'origin/0.10'
Conflicts:
	gst/gst.c
	plugins/elements/gstqueue2.c
2012-04-10 12:55:31 +02:00
Wim Taymans
b7a8051d95 queue2: set seeking flag with the queue lock 2012-04-10 12:44:38 +02:00
Wim Taymans
5755e24379 queue2: Keep track of the seeking state
Set the seeking flag right before we send a seek event upstream and discard all
data untill we see a flush-stop again. We need to do this because we activate
the range that we seek to immediately after sending the seek event and it is
possible that we receive data in our chain function from before the seek
which would then be added to the wrong range resulting in data corruption.
2012-04-10 12:44:35 +02:00
Wim Taymans
49a4b801ac queue2: make range on newsegment for ringbuffer
When using the ringbuffer, handle the newsegment event like we handle it when
using the temp-file mode: create a new range for the new byte segment. The new
segment should normally already be created when we do a seek.
2012-04-10 12:44:30 +02:00
Sebastian Dröge
1a61f3ec19 Merge remote-tracking branch 'origin/0.10' 2012-04-09 16:42:30 +02:00
Sebastian Dröge
829eafad0e multiqueue: Don't use buffer after pushing it downstream 2012-04-09 16:40:47 +02:00
Tim-Philipp Müller
a63829b4ff plugins: use new gst_element_class_set_static_metadata() 2012-04-09 13:05:07 +01:00
Tim-Philipp Müller
4348851cd9 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	gst/gstatomicqueue.c
2012-04-07 15:42:08 +01:00
Tim-Philipp Müller
d05d29d0c9 filesrc: set default block size from local define
Doesn't actually change the default value, just makes use of the
define there is. Superficial testing with fakesink and jpegdec did
not reveal improved performance for bigger block sizes, so leave
default as it is.
2012-04-07 15:21:29 +01:00
Wim Taymans
4638f15de2 queue2: don't update the current reading_pos in flush
A flush from the upstream element should not make buffering go to 0, the next
pull request might be inside a range that we have and then we don't need to
buffer at all. If the next pull is outside anything we have, buffering will
happen as usual anyway.
2012-04-06 16:46:58 +02:00
Wim Taymans
d5d0d10979 queue2: fix for merged changes 2012-04-06 12:42:39 +02:00