Commit graph

1744 commits

Author SHA1 Message Date
Wim Taymans 6da19ffeb2 buffer: more buffer updates 2011-03-29 11:07:36 +02:00
Wim Taymans a12ede3fb1 Merge branch 'master' into 0.11-fdo
Conflicts:
	gst/gst.c
	libs/gst/base/gstcollectpads.c
2011-03-28 20:11:20 +02:00
Wim Taymans 38ffe30745 memory: more work on implementing buffer memory 2011-03-28 20:08:46 +02:00
Wim Taymans d82c8bd2af memory: port code to new buffer data API 2011-03-28 20:08:45 +02:00
Stefan Kost 84eafff61b docs: fix some gtk-doc warnings
Document the queue leaky enums.
2011-03-24 18:32:21 +02:00
Stefan Kost 1177a968cc queue2: set max value for to the matching one for the datatype
The property is guint64, so use G_MAXUINT64 instead of G_MAXUINT.
2011-03-24 18:32:20 +02:00
Sebastian Dröge 489b94444e multiqueue: Don't leak objects when flushing after dequeueing and before pushing the object 2011-03-22 11:04:20 +01:00
Sebastian Dröge 65fbc9398a multiqueue: Really remove unused variable 2011-03-21 17:54:10 +01:00
Sebastian Dröge 383cac91b1 multiqueue: Increment unique item counter with atomic operations
Before it was only protected by the stream lock but every pad
has its own stream lock, making the protection rather useless.
2011-03-21 17:52:59 +01:00
Sebastian Dröge 9e36a51bac multiqueue: Unblock all waiting pads when shutting down 2011-03-21 17:17:22 +01:00
Sebastian Dröge 5b48fd5b24 multiqueue: Remove unused variable 2011-03-21 16:34:19 +01:00
Sebastian Dröge 14eb517849 multiqueue: Exit loop function if the pad is flushing
Fixes possible deadlocks when flushing an unlinked pad that waits
for other pads to advance.
2011-03-21 16:29:40 +01:00
Jason D. Clinton a789096c04 build: fix build with -Werror with GCC 4.6.0
This touches three areas of code, removes unused variables and discards
return values from two functions with (void).

https://bugzilla.gnome.org/show_bug.cgi?id=645267
2011-03-21 09:29:19 +01:00
Sebastian Dröge 69e81448c1 inputselector: Stop waiting for a pad switch when the pad is flushing 2011-03-19 08:57:06 +01:00
Sebastian Dröge d41fe48ce3 inputselector: Move locking and signalling macros from the header to the source file 2011-03-19 08:57:06 +01:00
Sebastian Dröge c8ecd6e9eb inputselector: Hold the selector lock while reading properties of the active pad 2011-03-17 14:21:17 +01:00
Sebastian Dröge 5e60a80268 inputselector: Make sure that EOS is always sent downstream for the active pad
It can happen that the currently active pad got the EOS event
before it was activated and the previously active pad got the
EOS event after it was deactivated. In that case we have to
send the EOS event from an inactive pad downstream.
2011-03-17 14:10:49 +01:00
Sebastian Dröge f19bb850ac inputselector: Return GST_FLOW_OK until the selected pad pushed something downstream
This makes sure that during switches at no point in time all pads
have returned not-linked, which can happen when playing an audio-only
file with playbin2 and switching between the streams for example.

Fixes bug #644935.
2011-03-17 12:06:39 +01:00
Wim Taymans 230c3455ac Merge branch 'master' into 0.11
Conflicts:
	gst/gstregistry.h
2011-03-02 11:08:34 +01:00
Tim-Philipp Müller 1f59906ec1 filesrc, filesink: fix URI creation regression for non-absolute locations
Passing e.g. location=foo would lead to warnings because g_filename_to_uri()
wants an absolute file path and returns NULL otherwise. Use brand-new
gst_filename_to_uri() instead, which will try harder to create a proper
URI for us.

Also add unit test.
2011-02-24 15:36:53 +00:00
Wim Taymans 70be8d8d95 improve type registration 2011-02-23 10:35:36 +01:00
Wim Taymans 6c18c9508d miniobject: more boxed type fixing
More miniobject fixing, leaks horribly somewhere..
2011-02-23 10:35:09 +01:00
Tim-Philipp Müller 5ab1ee11ad fakesink: print new MEDIA4 flag as well 2011-02-21 12:44:05 +00:00
David Schleef 7caf301d3f fakesink: print buffer flags 2011-02-17 19:14:19 -08:00
Sebastian Dröge c4be9526eb filesink: Fix escaping of URIs
Especially don't escape / as path separators
2011-02-15 22:57:28 +01:00
Andoni Morales Alastruey df9f72e78c filesrc: Fix escaping of file uris
Fixes bug #642393.
2011-02-15 22:57:28 +01:00
Mark Nauwelaerts 8bf4c1e1a8 queue2: don't read beyond the end of file upstream in pull mode
... which could lead to a premature eos being reported downstream,
rather than a successful partial read which would result when
performed directly on e.g. basesrc.
2011-02-15 14:51:20 +01:00
Mark Nauwelaerts e14c133587 queue2: properly identity dequeued event as such
... which avoids terminating with ERROR rather than UNEXPECTED.
2011-02-02 15:37:38 +01:00
Olivier Crête 2cfc7adcb1 valve: Only set discont on the first buffer after drops
Reset the discont member after setting discont on the first buffer after
dropping.
2011-01-28 15:38:17 -05:00
Tim-Philipp Müller 5c778e25a5 identity: print unset buffer timestamps or durations as 'none'
Like fakesink and fakesrc do.
2011-01-28 19:59:47 +00:00
Stefan Kost c5a57190ee typefind: don't take object lock for reading the found caps
Once we switch to normal mode, we're not typefinding anymore and thus the caps
will not change. Therefore can avoid the object lock in the data-flow path.
The locking was added in order to fix bug #608877.
2011-01-28 11:17:48 +02:00
Tim-Philipp Müller af0642b6e8 docs: flesh out typefindelement docs some more
Mention that have-type signal may be emitted from streaming
thread or application thread, and fix a typo.
2011-01-25 18:48:40 +00:00
Stefan Kost eed2a350cb typefind: code and comment cleanups
Make code two places of the code the pushes the buffer store more similar. More
comments and debug logging.
2011-01-25 16:25:43 +02:00
Stefan Kost 740e4999b3 typefind: canonicalize signal name 2011-01-25 16:17:14 +02:00
Stefan Kost c91c3d41fe docs: mention have-type signal in the docs. 2011-01-25 16:17:14 +02:00
Mart Raudsepp b387daa6ff docs: Fix GstQueue2:ring-buffer-max-size property Since tag (0.10.31, not 0.10.30) 2011-01-24 14:38:36 +00:00
Stefan Kost 6090f22161 valve: fixe the property link and the sice docs 2011-01-11 15:14:04 +02:00
Thiago Santos f552659504 outputselector: Improve get and set caps functions
Improve sink pad getcaps and setcaps by handling the case where
no src pads exist yet
2011-01-10 14:52:05 -03:00
Tim-Philipp Müller cc1fc8eca8 indexers: fix two small leaks
element factory plugin_names are interned strings these days.
2011-01-07 02:20:45 +00:00
Thiago Santos 757dc90faa output-selector: Add pad-negotiation-mode property
Adds getcaps/setcaps to output-selector and adds a property
to select which type of negotiation should be done.

The available modes are:
 * none:   no negotiation (current behavior), getcaps return ANY and
           setcaps aren't set on any of the peers
 * all:    use all pads (default), getcaps returns the intersection of
           peer pads and setcaps is set on all peers
 * active: getcaps and setcaps are proxied to the active pad

https://bugzilla.gnome.org/show_bug.cgi?id=638381
2011-01-06 18:42:29 +00:00
Tim-Philipp Müller c8ffd4e395 docs: mention extra input-selector pad properties
https://bugzilla.gnome.org/show_bug.cgi?id=638381
2011-01-06 18:18:29 +00:00
Tim-Philipp Müller c57934d7bf inputselector: remove "select-all" property
select-all mode is a bit broken (e.g. newsegment event
handling), so remove that for now. The funnel element
in farsight provides similar functionality.

https://bugzilla.gnome.org/show_bug.cgi?id=539042
https://bugzilla.gnome.org/show_bug.cgi?id=638381
2011-01-05 15:53:28 +00:00
Tim-Philipp Müller 7f7721511c inputselector: make pad's get_type function thread-safe 2010-12-31 12:08:19 +00:00
Tim-Philipp Müller 07e2428afd coreelements: remove unused files 2010-12-31 11:37:56 +00:00
Sebastian Dröge 3f89954c27 inputselector: Protected g_object_notify() calls for the active-pad with a recursive mutex
This works around a thread safety problem in GLib < 2.26.0 and should
be removed when we depend on 2.26.0.

Fixes bug #607513.
2010-12-31 12:27:45 +01:00
Zhang Wanming 8a723cfc93 gstfdsink: fix typo
Signed-off-by: Zhang Wanming <Wanming.Zhang@tieto.com>
2010-12-31 12:20:45 +01:00
Tim-Philipp Müller d692735f49 coreelements: GST_BOILERPLATE already sets parent_class 2010-12-31 00:56:11 +00:00
Tim-Philipp Müller fdd65e382d input-selector, output-selector: minor clean-ups 2010-12-31 00:56:11 +00:00
Tim-Philipp Müller 52617c91f3 coreelements: move input-selector and output-selector to core
Moved to core from gst-plugins-bad.

https://bugzilla.gnome.org/show_bug.cgi?id=614306
2010-12-31 00:55:19 +00:00
Thiago Santos 0cb6c9230d outputselector: Avoid losing the last_buffer when switching
This patch makes outputselector take an extra ref when pushing
the last_buffer to avoid it losing it during the switch function.

This makes resend-latest properly work if the active-pad is changed
during the switch function buffer pushing (on a pad probe, for example).

https://bugzilla.gnome.org/show_bug.cgi?id=629917
2010-12-31 00:54:05 +00:00
Thiago Santos 974ca7713a outputselector: Recheck pending switch after pushing buffer
This patch makes output-selector always recheck if there's a
pending pad switch after pushing a buffer, preventing that
it pushes a buffer on the 'wrong' pad.

https://bugzilla.gnome.org/show_bug.cgi?id=629917
2010-12-31 00:54:05 +00:00
Stefan Kost 246bb32dc5 inputselector: log times in human readable form 2010-12-31 00:54:05 +00:00
Stefan Kost 64beb26a56 inputselector: move reoccuring logs to LOG and remove a double info
Less debug spew in DEBUG category. No need to log pad again if we use
GST_LOG_OBJECT(pad,...).
2010-12-31 00:54:05 +00:00
Stefan Kost d86c6f1956 various (gst): add missing G_PARAM_STATIC_STRINGS flags
Canonicalize property names as needed.
2010-12-31 00:54:05 +00:00
Stefan Kost 04c4e4fb9e inputselector: sync with copy in -base
Use _get_caps_reffed to avoid copies.
2010-12-31 00:54:05 +00:00
Stefan Kost d18e7d25f8 outputselector: move the debug init to the boilerplate macro 2010-12-31 00:54:05 +00:00
Stefan Kost 0da59d0795 inputselector: use GST_BOILERPLATE macro 2010-12-31 00:54:04 +00:00
Benjamin Otte 0b37d8bf36 gst_element_class_set_details => gst_element_class_set_details_simple 2010-12-31 00:54:04 +00:00
Sebastian Dröge 9d21103d42 Revert "inputselector: Protect g_object_notify() with the object's mutex"
This reverts commit 7e067615ff, it's causing
deadlocks with playbin2.
2010-12-31 00:54:04 +00:00
Kipp Cannon 15b1ee56d4 inputselector: Protect g_object_notify() with the object's mutex
This works around the thread unsafety of g_object_notify()

Fixes bug #607513.
2010-12-31 00:54:04 +00:00
Sebastian Dröge acf1616ae1 inputselector: Remove useless variables and fix a uninitialized variable compiler warnings
Merged from gst-plugins-base, dfd51aa82a.
2010-12-31 00:54:04 +00:00
Sebastian Dröge 9b2753c6e9 inputselector: Make sure that running_time->timestamp calculation never becomes negative
Merged from gst-plugins-base, f365385458.
2010-12-31 00:54:04 +00:00
Sebastian Dröge a1f6660655 inputselector: Use the start time (i.e. timestamp) as the last stop
Using the end time makes it impossible to replace buffers, which is
a big problem for subtitles that could have very long durations.

Merged from gst-plugins-base, 27034be461.
2010-12-31 00:54:04 +00:00
Sebastian Dröge 8b2d4ad8a3 inputselector: Improve debugging
Merged from gst-plugins-base.
2010-12-31 00:54:04 +00:00
Wim Taymans 9515cbcd08 Revert "inputselector: use get_caps_reffed()"
This reverts commit 49ec4f796a.

We can't use this new function yet.
2010-12-31 00:54:04 +00:00
Wim Taymans b74b0f04f2 inputselector: use get_caps_reffed() 2010-12-31 00:54:04 +00:00
Stefan Kost e955afd503 inputselector: also add inline to the proto to fix the build 2010-12-31 00:54:04 +00:00
Edward Hervey f0010f15a9 gst: Remove dead assignments and resulting unused variables
Merged from gst-plugins-base, 8cd1b5209b.
2010-12-31 00:54:04 +00:00
Sebastian Dröge d7669fa9cc inputselector: Use the same iterate internal links function as in gst-plugins-base 2010-12-31 00:54:04 +00:00
Tim-Philipp Müller 13cf296cb0 input-selector: Remove GST_DEBUG_FUNCPTR where they're pointless
There's not much point in using GST_DEBUG_FUNCPTR with GObject
virtual functions such as get_property, set_propery, finalize and
dispose, since they'll never be used by anyone anyway. Saves a
few bytes and possibly a sixteenth of a polar bear.

Merged from gst-plugins-base, 6f4c1ac583.
2010-12-31 00:53:58 +00:00
David Schleef 11dc5f63cb input-selector: Remove Ronald Bultje from Authors field
Replaced with "GStreamer maintainers
<gstreamer-devel@lists.sourceforge.net>" or just removed,
depending on the number of other authors.

Merged from gst-plugins-base, 0e9bc5125a.
2010-12-31 00:53:50 +00:00
Wim Taymans 199c1bdbcb inputselector: set output caps before pushing
Set the output caps on the srcpad before pushing the buffer because else core
will do a rather expensive check to see if we can actually accept those caps on
the srcpad.

Merged from gst-plugins-base, bdfb4b46d7.
2010-12-31 00:53:50 +00:00
Wim Taymans 7c7acac0db inputselector: install an acceptcaps function
Install a custom acceptcaps function instead of using the default expensive
check. We accept whatever downstream accepts so we pass along the acceptcaps
call to the downstream peer.

Merged from gst-plugins-base, 5b72f2adf9.
2010-12-31 00:53:50 +00:00
Sebastian Dröge 8ee3931e5d inputselector: Use new single iterator for the internally linked pads
This fixes a deadlock and removes some useless code.
2010-12-31 00:53:50 +00:00
Havard Graff 8669fe97bf outputselector: make GST_FORMAT_TIME the default segment format 2010-12-31 00:53:50 +00:00
Sebastian Dröge 1543b0ea08 inputselector: Use iterate internal links instead of deprecated get internal links 2010-12-31 00:53:50 +00:00
Tommi Myöhänen b79648c180 outputselector: check for pending srcpad in _get_property()
If there is a pending srcpad, return it instead of active srcpad
in gst_output_selector_get_property() function.
2010-12-31 00:53:50 +00:00
Stefan Kost 89e574ce0d outputselector: do the pad_alloc for the pad that is pending and have a fallback
We should do the pad_alloc for the pending pad if any, as we will switch to that
pad on next _chain() call. Also do a fallback alloc, if there is no output yet to
not fail state transitions in dynamic pipelines.
2010-12-31 00:53:50 +00:00
Lasse Laukkanen 8d45bdf144 output-selector: serialize setting and actual changing of new active pad 2010-12-31 00:53:49 +00:00
Lasse Laukkanen 03d8251067 output-selector: unref latest buffer also when resending has been disabled 2010-12-31 00:53:49 +00:00
Lasse Laukkanen c63ecb2b89 output-selector: keep ref to buffer for resending only if explicitly requested 2010-12-31 00:53:49 +00:00
Wim Taymans bccc960734 inputselector: don't leak pads in iterator 2010-12-31 00:53:49 +00:00
Sebastian Dröge e40d20c845 inputselector: Notify when the tags property of the selector sinkpads changes
First part of bug #584686.
2010-12-31 00:53:49 +00:00
Stefan Kost 03d458b212 selector: remove not needed instance var (previous commit). 2010-12-31 00:53:49 +00:00
Stefan Kost 8e8adcd4c8 outputselector: implement pad_alloc on active pad. 2010-12-31 00:53:49 +00:00
Jan Schmidt 33ad3b9fad input-selector: Forward segment events for the active pad immediately.
When a segment event is received on the active pad, forward it downstream
immediately instead of deferring it until the next data buffer arrives. This
fixes problems with segment updates never being sent downstream, like those
needed for sparse streams, or for closing previously opened segments.

This fixes playback of DVD menus with a still video frame and an audio track,
for example.

Fixes: #577843
2010-12-31 00:53:49 +00:00
Wim Taymans 5a63373aa5 outputselector: reset state when going to READY
Reset the last-buffer, the pending pad and the segment when going to the READY
state.
Fixes #576712.
2010-12-31 00:53:49 +00:00
Wim Taymans 983ed52e92 selector: merge the tags
Merge the tags received on the input-selector sinkpads instead of only keeping
the last one we saw.
2010-12-31 00:53:49 +00:00
Stefan Kost 6b4f792065 docs: various doc fixes
No short-desc as we have them in the element details.
Also keep things (Makefile.am and sections.txt) sorted.
Reword ambigous returns. No text after since please.
2010-12-31 00:53:49 +00:00
Sebastian Dröge ab025f08e7 inputselector: Fix compilation, activate_sinkpad() has no notify parameter 2010-12-31 00:53:49 +00:00
Michael Smith 55637934d1 input-selector: Activate and notify pad before processing events.
Events should trigger pad selection if we don't already have an
explicitly selected pad, so that events prior to first buffer don't get
lost.
2010-12-31 00:53:49 +00:00
Michael Smith 09424e4b3a Unref event if we don't forward it, unref pads when done with them. 2010-12-31 00:53:48 +00:00
Michael Smith 981d08088c plugins/elements/gstinputselector.c: Ensure we emit notify::active-pad when auto-selecting a pad due to it having activit...
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
Ensure we emit notify::active-pad when auto-selecting a pad
due to it having activity and us not having an existing active
pad. Fixes #563147
2010-12-31 00:53:48 +00:00
Edward Hervey acafa09a74 plugins/elements/gstinputselector.c: Gracefully handle the cases when we dont' have otherpad.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_input_selector_event),
(gst_input_selector_query):
Gracefully handle the cases when we dont' have otherpad.
Fixes #556430
2010-12-31 00:53:47 +00:00
Stefan Kost 832f2f46e7 plugins/elements/gstoutputselector.c: Choose right pad for sending events. Fixes #555244
Original commit message from CVS:
* plugins/elements/gstoutputselector.c:
Choose right pad for sending events. Fixes #555244
2010-12-31 00:53:46 +00:00
Wim Taymans 9020592e1c plugins/elements/gstinputselector.c: Reset the selector state when going to READY.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_reset),
(gst_input_selector_reset), (gst_input_selector_change_state):
Reset the selector state when going to READY.
2010-12-31 00:53:46 +00:00
Wim Taymans f7dad96f47 plugins/elements/gstinputselector.c: Reuse the get_linked_pads for both source and sinkpads because they are the same.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_input_selector_init),
(gst_input_selector_event), (gst_input_selector_query):
Reuse the get_linked_pads for both source and sinkpads because they are
the same.
Implement a custum event handler and get the internally linked pad
directly instead of relying on the default (slower) implementation.
2010-12-31 00:53:45 +00:00
Wim Taymans a7cd6eeb61 plugins/elements/gstinputselector.c: Implement the LATENCY query in a better way by taking the latency of all sinkpads an...
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_input_selector_init),
(gst_input_selector_query):
Implement the LATENCY query in a better way by taking the latency of all
sinkpads and taking the min/max instead of just taking a random pad.
2010-12-31 00:53:44 +00:00
Wim Taymans 81a4e467f8 plugins/elements/gstinputselector.c: Move the select-all logic into the activation of the currently selected pad. We want...
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_bufferalloc),
(gst_selector_pad_chain), (gst_input_selector_getcaps),
(gst_input_selector_activate_sinkpad):
Move the select-all logic into the activation of the currently selected
pad. We want to remember the last pad with activity in select-all mode.
Fix the getcaps function, we can produce the union of the upstream caps
in select-all mode, not the intersection like proxy_getcaps() does.
2010-12-31 00:53:43 +00:00
Stefan Kost dea247966e output-selector: Use BOILERPLATE macro and update test to the latest api changes.
Original commit message from CVS:
* plugins/elements/gstoutputselector.c:
* tests/icles/output-selector-test.c:
Use BOILERPLATE macro and update test to the latest api changes.
2010-12-31 00:53:34 +00:00
Stefan Kost 7408736455 Do not use short_description in section docs for elements. We extract them from element details and there will be war...
Original commit message from CVS:
* ext/dc1394/gstdc1394.c:
* ext/ivorbis/vorbisdec.c:
* ext/jack/gstjackaudiosink.c:
* ext/metadata/gstmetadatademux.c:
* ext/mythtv/gstmythtvsrc.c:
* ext/theora/theoradec.c:
* gst-libs/gst/app/gstappsink.c:
* gst/bayer/gstbayer2rgb.c:
* gst/deinterlace/gstdeinterlace.c:
* gst/rawparse/gstaudioparse.c:
* gst/rawparse/gstvideoparse.c:
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtpsession.c:
* gst/rtpmanager/gstrtpssrcdemux.c:
* plugins/elements/gstinputselector.c:
* plugins/elements/gstoutputselector.c:
* gst/videosignal/gstvideoanalyse.c:
* gst/videosignal/gstvideodetect.c:
* gst/videosignal/gstvideomark.c:
* sys/oss4/oss4-mixer.c:
* sys/oss4/oss4-sink.c:
* sys/oss4/oss4-source.c:
Do not use short_description in section docs for elements. We extract
them from element details and there will be warnings if they differ.
Also fixing up the ChangeLog order.
2010-12-31 00:53:20 +00:00
Wim Taymans 62ba72b862 plugins/elements/gstinputselector.c: Do g_object_notify() only when not holding the lock to get the property because othe...
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
(gst_input_selector_set_active_pad), (gst_input_selector_switch):
Do g_object_notify() only when not holding the lock to get the property
because otherwise we run into a deadlock with the deep-notify handlers
that are possibly installed.
2010-12-31 00:53:19 +00:00
Wim Taymans a64e95d347 plugins/elements/gstinputselector.c: Release the selector lock when pad alloc happens on a non selected pad.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_class_init),
(gst_selector_pad_event), (gst_selector_pad_bufferalloc),
(gst_selector_pad_chain), (gst_input_selector_set_active_pad):
Release the selector lock when pad alloc happens on a non selected pad.
2010-12-31 00:53:18 +00:00
Wim Taymans c9de8f457a plugins/elements/gstinputselector.c: Add pad property to configure behaviour of the unselected pad, it can return OK or N...
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_class_init),
(gst_selector_pad_init), (gst_selector_pad_set_property),
(gst_selector_pad_get_property), (gst_selector_pad_event),
(gst_selector_pad_bufferalloc), (gst_selector_pad_chain),
(gst_input_selector_set_active_pad):
Add pad property to configure behaviour of the unselected pad, it can
return OK or NOT_LINKED, based on the use case.
2010-12-31 00:53:17 +00:00
Wim Taymans a7c7574dcf plugins/elements/gstinputselector.*: Figure out the locking a bit more.
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
(gst_selector_pad_get_running_time), (gst_selector_pad_reset),
(gst_selector_pad_event), (gst_selector_pad_bufferalloc),
(gst_input_selector_wait), (gst_selector_pad_chain),
(gst_input_selector_class_init), (gst_input_selector_init),
(gst_input_selector_dispose), (gst_segment_set_start),
(gst_input_selector_set_active_pad),
(gst_input_selector_set_property),
(gst_input_selector_get_property),
(gst_input_selector_get_linked_pad),
(gst_input_selector_is_active_sinkpad),
(gst_input_selector_activate_sinkpad),
(gst_input_selector_request_new_pad),
(gst_input_selector_release_pad),
(gst_input_selector_change_state), (gst_input_selector_block),
(gst_input_selector_switch):
* plugins/elements/gstinputselector.h:
Figure out the locking a bit more.
Mark buffers with discont after switching.
Fix initial segment forwarding, make sure to only forward one segment
regardless of what the sequence of buffers/segments is. See #522203.
Improve flushing when blocked.
Return NOT_LINKED when a stream is not selected.
Not API change for the switch signal in the docs.
Fix start/time/accum values of the new segment.
Correctly unlock and flush a blocking selector when going to READY.
2010-12-31 00:53:16 +00:00
Wim Taymans 6e03b710e8 plugins/elements/gstinputselector.c: Add lots of debugging.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_event),
(gst_selector_pad_bufferalloc), (gst_selector_pad_chain),
(gst_input_selector_class_init),
(gst_input_selector_set_active_pad),
(gst_input_selector_set_property),
(gst_input_selector_push_pending_stop):
Add lots of debugging.
Fix time member in the newsegment event.
2010-12-31 00:53:15 +00:00
Wim Taymans 3fcc406815 plugins/elements/gstinputselector.*: Various cleanups.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_class_init),
(gst_selector_pad_finalize), (gst_selector_pad_get_property),
(gst_selector_pad_event), (gst_input_selector_class_init),
(gst_input_selector_init), (gst_input_selector_set_active_pad),
(gst_input_selector_set_property),
(gst_input_selector_get_property),
(gst_input_selector_request_new_pad),
(gst_input_selector_release_pad),
(gst_input_selector_push_pending_stop),
(gst_input_selector_switch):
* plugins/elements/gstinputselector.h:
Various cleanups.
Added tags to the pads.
Select active pad based on the pad object instead of its name.
Fix refcount in set_active_pad.
Add property to get the number of pads.
* plugins/elements/gstoutputselector.c:
(gst_output_selector_class_init),
(gst_output_selector_set_property),
(gst_output_selector_get_property):
Various cleanups.
Select the active pad based on the pad object instead of its name.
Fix locking when setting the active pad.
* plugins/elements/gstselector-marshal.list:
* tests/check/elements/selector.c: (cleanup_pad),
(selector_set_active_pad), (run_input_selector_buffer_count):
Fixes for pad instead of padname for pad selection.
2010-12-31 00:53:14 +00:00
Stefan Kost eaff78cc08 plugins/elements/gstoutputselector.c: Fix changing to same pad twice before a chain call.
Original commit message from CVS:
* plugins/elements/gstoutputselector.c:
Fix changing to same pad twice before a chain call.
2010-12-31 00:53:10 +00:00
Stefan Kost 7b742d1cf4 plugins/elements/gstinputselector.*: Added "select-all" property to make it work like aggregator in 0.8.
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
* plugins/elements/gstinputselector.h:
Added "select-all" property to make it work like aggregator in 0.8.
* plugins/elements/gstoutputselector.c:
Fix resend-latest behavoiur.
* tests/check/Makefile.am:
* tests/check/elements/.cvsignore:
* tests/check/elements/selector.c:
Add unit tests for selector.
2010-12-31 00:52:48 +00:00
Stefan Kost dec9d95edb gst/multifile/gstmultifilesink.c: Add a fixme comment.
Original commit message from CVS:
* gst/multifile/gstmultifilesink.c:
Add a fixme comment.
* plugins/elements/gstoutputselector.c:
Fix same leak as in input-selector.
* tests/icles/output-selector-test.c:
Improve the test.
2010-12-31 00:51:13 +00:00
Wim Taymans 2495420116 plugins/elements/gstinputselector.c: Don't leak event on pads that are not linked. Fixes #512826.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_event):
Don't leak event on pads that are not linked. Fixes #512826.
2010-12-31 00:51:12 +00:00
Stefan Kost c9f97beda7 Replace the switch plugin with the selector plugin. Add output- selector as the opposite of input-selectoo (was switc...
Original commit message from CVS:
* configure.ac:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* docs/plugins/gst-plugins-bad-plugins.args:
* docs/plugins/gst-plugins-bad-plugins.hierarchy:
* docs/plugins/gst-plugins-bad-plugins.interfaces:
* docs/plugins/gst-plugins-bad-plugins.signals:
* docs/plugins/inspect/plugin-metadata.xml:
* docs/plugins/inspect/plugin-selector.xml:
* docs/plugins/inspect/plugin-soundtouch.xml:
* docs/plugins/inspect/plugin-switch.xml:
* plugins/elements/.cvsignore:
* plugins/elements/Makefile.am:
* plugins/elements/gstinputselector.c:
* plugins/elements/gstinputselector.h:
* plugins/elements/gstoutputselector.c:
* plugins/elements/gstoutputselector.h:
* plugins/elements/gstselector-marshal.list:
* plugins/elements/gstselector.c:
* plugins/elements/selector.vcproj:
* gst/switch/.cvsignore:
* gst/switch/Makefile.am:
* gst/switch/gstswitch-marshal.list:
* gst/switch/gstswitch.c:
* gst/switch/gstswitch.h:
* gst/switch/switch.vcproj:
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/output-selector-test.c:
Replace the switch plugin with the selector plugin. Add output-
selector as the opposite of input-selectoo (was switch). Add a test
for output-selector. Add docs for the elements. The vcproj needs
update. Fixes #500142.
2010-12-31 00:51:12 +00:00
Tim-Philipp Müller 9c34e289b8 valve: some minor clean-ups 2010-12-31 00:51:12 +00:00
Tim-Philipp Müller ec6336f1a9 valve: fix typo in property description
And rephrase while at it, to make it more concise.
2010-12-31 00:51:12 +00:00
Tim-Philipp Müller 8bdcb84abd elements: add new valve element to build
Moved from gst-plugins-bad

https://bugzilla.gnome.org/show_bug.cgi?id=630808
2010-12-31 00:51:12 +00:00
Stefan Kost ecc9106b9b valve: no need to ref the object in _chain
Don't ref the pad in chain, like elsewhere
2010-12-31 00:51:12 +00:00
Olivier Crête 11eb6ef836 valve: Make the drop variable into an atomic.
Using an atomic allows us to avoid locking the whole object all time time.
As suggested by Stefan Kost.
2010-12-31 00:51:11 +00:00
Olivier Crête 473be88d5d valve: Correctly set the DISCONT flag after dropping buffers 2010-12-31 00:51:11 +00:00
Olivier Crête 37e02eb7c7 valve: Remove superflous checking casts 2010-12-31 00:51:11 +00:00
Olivier Crête 80a766b39b valve: Fix style, improve comments
Minor improvements to the comments and break a few overly long lines
2010-12-31 00:51:11 +00:00
Stefan Kost f90bddfa39 valve: move default: parst in the switch statement to the end
Now sure if it matters, but the previous form looks weired.
2010-12-31 00:51:11 +00:00
Stefan Kost 65f13f70f6 valve: move debug-category registration to type init 2010-12-31 00:51:11 +00:00
Stefan Kost 4b1c3896d6 valve: use G_PARAM_STATIC_STRINGS on properties 2010-12-31 00:51:11 +00:00
Stefan Kost 2b70b14591 valve: GST_BOILERPLATE already sets parent_class 2010-12-31 00:51:11 +00:00
Benjamin Otte a2de9458c1 valve: gst_element_class_set_details => gst_element_class_set_details_simple 2010-12-31 00:51:10 +00:00
Olivier Crête 91190eea08 docs: document valve element 2010-12-31 00:51:10 +00:00
Olivier Crête 59d98afb9b fsvalve: rename to valve 2010-12-31 00:51:10 +00:00
Olivier Crête aad953be13 fsvalve: re-indent gst style 2010-12-31 00:51:10 +00:00
Olivier Crête fc4deda3aa fsvalve: Ignore errors if dropping is set to true 2010-12-31 00:51:10 +00:00
Olivier Crête a3d21f7147 fsvalve: Add getcaps proxying to the valve 2010-12-31 00:51:10 +00:00
Olivier Crête 01fdde0876 fsvalve: Rebase valve onto gstelement instead of basetransform 2010-12-31 00:51:10 +00:00
Olivier Crête 6119abb63c fsvalve: Revert "Fix refcounting issues in prepare_output_buffer"
This reverts commit 65dd460f0a3a9c4882e638c86208f74ef62c3460.
2010-12-31 00:51:10 +00:00
sjoerd@luon.net ff36774a30 fsvalve: Fix refcounting issues in prepare_output_buffer
20080805113057-be0f2-9dc270781f0a0f21c616ed11dbd1f198fd1b326e.gz
2010-12-31 00:51:10 +00:00
Olivier Crete 2b612137d7 fsvalve: Remove unused dispose method in valve
20080409163221-3e2dc-92ccb2db874e46e0d92c15520577c1be0e2bc617.gz
2010-12-31 00:51:10 +00:00
Olivier Crete e384295df0 fsvalve: Dont hold the object lock while calling base alloc function
20071219203230-3e2dc-6519175d8d81496515b2d9060ac316650560f691.gz
2010-12-31 00:51:09 +00:00
Olivier Crete 8362bb9275 fsvalve: Set the DISCONT flag after dropping buffers
20071219203218-3e2dc-bc5f03d88ff5837040b9214de016cc142776dfc2.gz
2010-12-31 00:51:09 +00:00
Olivier Crete 6db2a426c1 fsvalve: Use do the alloc_buffer function in the valve
20071219005739-3e2dc-2a0fdfa2f38f03ab4791fe5c4ab85e8790113683.gz
2010-12-31 00:51:09 +00:00
Olivier Crete 67c6adaf31 fsvalve: Only set passthrough to TRUE on newer versions of gst
20071121200858-3e2dc-b16cdeabbc3c0562c6fc7b11b9b9792c910f569e.gz
2010-12-31 00:51:09 +00:00
Olivier Crete 51af047576 fsvalve: Compare minor, not major
20071121181729-3e2dc-a5997c3b7f5c86966370969714facf8ee242659d.gz
2010-12-31 00:51:09 +00:00
Olivier Crete 1a47ba87dc fsvalve: Make the valve element work with gst < 0.10.13
20071026223749-3e2dc-18f685a4e45fbdce677ac777586876fc719d7222.gz
2010-12-31 00:51:09 +00:00
Olivier Crete 32b5931ae2 fsvalve: Rename valve to fsvalve
20071024224246-3e2dc-c54216af2ef0ef3f1a2206d723e87be2a23ab8ed.gz
2010-12-31 00:51:08 +00:00
Olivier Crete 5ddbaf15d5 fsvalve: Add valve element
20071024224147-3e2dc-f28ab0c073e283894b65c22c4f44397c897dec01.gz
2010-12-31 00:51:08 +00:00
Tim-Philipp Müller 239a63a777 fakesink: make variable static 2010-12-30 18:31:11 +00:00
Tim-Philipp Müller 8a7fc1d8c9 Revert "micro-optim: if (x) is cheaper than if (x > 0) for unsigned integers"
This reverts commit 6aa8ca37ee.

See http://article.gmane.org/gmane.comp.video.gstreamer.devel/32282
2010-12-26 21:21:43 +00:00
David Schleef 3889c3c579 elements: reenable fdsrc/fdsink on MSVC 2010-12-24 14:02:08 -08:00
Mark Nauwelaerts e0f15e666a multiqueue: return upon input when already eos
... rather than hanging incoming thread (as considered full in eos).
2010-12-03 13:35:49 +01:00
Edward Hervey 6aa8ca37ee micro-optim: if (x) is cheaper than if (x > 0) for unsigned integers 2010-12-03 12:03:42 +01:00
Andoni Morales Alastruey d2d42082c3 fakesink: Print sink-message events like a message and the GstMessage structure 2010-12-03 09:50:31 +02:00
Edward Hervey 8f12a5e7cd queue2: Only call update_buffering if needed.
update_buffering is so big it will never be inlined (and shouldn't),
we therefore move the check outside of it.
2010-12-02 19:04:57 +01:00
Edward Hervey 66bba2a49e queue2: Avoid re-checking many times whether an item is a buffer
Avoids calling 6 times gst_buffer_get_type() for every item coming
through queue2
2010-12-02 19:04:56 +01:00
Edward Hervey 080c965f4f queue2: Reduce amount of time locks are taken 2010-12-02 19:04:56 +01:00
Edward Hervey ccb9ed2e80 queue2: Fixup documentation of some properties 2010-12-02 19:04:56 +01:00
Edward Hervey 8a79c1aa98 queue2: Avoid useless segment_to_running_time() calculations.
* Cache src and sink time
* Use a boolean to known whether src/sink time needs to be recalculated

Avoids 50% of calls to gst_segment_to_running_time()
2010-12-02 19:04:56 +01:00
Edward Hervey 0c2086a475 queue: Remove useless checks from e406f7
srcresult was being rechecked in places it couldn't have changed.
queue level was being rechecked in places it couldn't have changed.

https://bugzilla.gnome.org/show_bug.cgi?id=632780
2010-12-02 19:04:56 +01:00
Sebastian Dröge 6720373610 queue2: Remove dead assignment and unused variable 2010-12-02 19:02:08 +01:00
Sebastian Dröge 3b9d85d1a7 queue2: Remove dead assignment and move variable declaration into inner block 2010-12-02 19:02:08 +01:00
Sebastian Dröge e554c7a1f6 queue2: Remove redundant variable
Other than saving an immense amount of 4 bytes of memory this
prevents clang from complaining and keeps the ring buffer state
in a single variable instead of two.
2010-12-02 19:02:08 +01:00
Tim-Philipp Müller 2ee5e4d8ac queue2: don't leak pad ref in pull mode when flushing
Fix pad leak when queue2 is flushing or being shut down.
2010-11-01 12:34:15 +00:00
Tim-Philipp Müller ce35fb79da queue2: don't send seeks beyond the end of the file upstream in pull mode
If downstream is operating in pull mode, short-circuit any pulls beyond
the end of the file and return FLOW_UNEXPECTED immediately instead of
sending a seek beyond the end of the file upstream, since this might
confuse upstream elements (and/or http servers, for example). Fixes
playback of apple trailers in totem and youtube/html5 clips in
WebkitGTK+.

https://bugzilla.gnome.org/show_bug.cgi?id=632977
2010-11-01 12:34:15 +00:00
Jan Schmidt 691807d634 multiqueue: Fix tracking of unlinked streams.
33082eb9e4 introduced a bug
preventing sparse unlinked streams from advancing properly,
leading to the queue blocking.

Fixes: #633176
2010-10-27 18:12:36 +02:00
Edward Hervey cb2c028b39 queue2: Remove unused argument from find_range() 2010-10-13 12:05:44 +02:00
Edward Hervey 3812283854 fdsink: cleanup get_property/set_property 2010-10-13 12:05:38 +02:00
Wim Taymans aa62c60a6c queue: avoid g_cond_signal when we can
Keep track of what cond we are waiting on and only signal when some other thread
is waiting.
2010-10-12 18:48:10 +02:00
Wim Taymans 62ffd66f10 queue2: release queue2 lock before notify
Make sure that we don't hold the lock when we notify the temp-location
property,

Fixes #631853
2010-10-11 18:10:07 +02:00
Wim Taymans 85a23c6f80 queue: add debug statement 2010-10-11 16:45:40 +02:00
Ognyan Tonchev 36b533d5b2 queue: apply sink segment on the source if queue is empty
Apply the sink segment on the source immediatly when it is received
and there is nothing in the queue.

Solves #482147
2010-10-11 15:56:31 +02:00
Edward Hervey 518364e7ac multiqueue: Remove unused variable and simplify code
oldid was only used when we were doing multiple pops per loop.
2010-10-08 13:26:37 +02:00
Tim-Philipp Müller 863d783beb elements: minor performance improvement when doing g_object_notify() for the "last-message" property
Make sure property names passed to g_object_notify() are in the canonical form
(ie. "last-message" not "last_message"), so that g_param_spec_pool_lookup()
doesn't have to do strdup/canonicalize/free for every single notify call.
This only applies when building against older GLib versions (< 2.26).
2010-10-07 19:04:00 +01:00
Tim-Philipp Müller fe9bb36ac7 fakesink: use g_object_notify_by_pspec() and remove work-around for old GLib versions if possible
Use more efficient g_object_notify_by_pspec() if we're compiling against
GLib >= 2.26, and also remove work-around for g_object_notify() thread-
safety issues with older GLib versions if it's not needed any more.
2010-10-07 19:04:00 +01:00
Tim-Philipp Müller 67503c9d43 tee: use g_object_notify_by_pspec() if possible
Use more efficient g_object_notify_by_pspec() if we're compiling against
GLib >= 2.26.
2010-10-07 19:03:55 +01:00
Tim-Philipp Müller b5e8957bfe fakesrc: use g_object_notify_by_pspec() if possible
Use more efficient g_object_notify_by_pspec() if we're compiling against
GLib >= 2.26.
2010-10-07 19:03:42 +01:00
Tim-Philipp Müller cd3f4d7d92 identity: use g_object_notify_by_pspec() and remove work-around for old GLib versions if possible
Use more efficient g_object_notify_by_pspec() if we're compiling against
GLib >= 2.26, and also remove work-around for g_object_notify() thread-
safety issues with older GLib versions if it's not needed any more.
2010-10-07 19:03:42 +01:00
Stefan Kost 41e00e58e7 queue2: remove var only used for debug statement 2010-09-23 15:12:32 +03:00
Wim Taymans 2d1450d777 queue2: only post buffering message when percent changed 2010-09-15 13:29:52 +02:00
Wim Taymans e3176a31e9 queue2: always update buffering status
Update the buffering status even when we are not using a queue so that EOS can
properly finish the buffering.
2010-09-15 13:15:19 +02:00
Sebastian Dröge 62d40fa0db identity: identity is GAP flag aware, no need to let it be unset by basetransform 2010-09-09 16:12:26 +02:00
Philippe Normand 410ca5c164 queue2: buffering_ranges query support
Fixes bug 623121
2010-09-03 19:59:28 +02:00
Stefan Kost def17d30f4 fakesrc: fix use of empty subbuffers
Remove a short cut that was ignoring src->data allocation mode. All
the called code-path below handle size==0.
2010-09-02 14:19:24 +03:00
Stefan Kost e406f7c572 queue: add silent property to suppress signal emission
Allow to turn off signal emission and therefore extra locking if this is not needed.
Fixes #621299
2010-08-30 09:46:53 +03:00
Sebastian Dröge 33082eb9e4 multiqueue: Don't do an infinite loop in the loop function
Instead return after every iteration, which makes sure that the
stream lock is released for a short time after every iteration,
task state changes are checked, etc and this allows the task
to be stopped properly.
2010-08-27 16:59:09 +02:00
Sebastian Dröge 8035f13bbf multiqueue: Flush the data queue if downstream return WRONG_STATE too 2010-08-27 16:59:09 +02:00
Sebastian Dröge 2e6f80bf81 elements: Stop using GST_FLOW_IS_FATAL() 2010-08-27 16:59:09 +02:00
Stefan Kost 4f3cccc77a fakesink: keep properties in order 2010-08-27 16:31:55 +03:00
Stefan Kost 23337eabf9 queue: ARG_ -> PROP_ for property constants 2010-08-27 16:31:55 +03:00
Wim Taymans 77f806bf9f queue2: fix on-disk buffering again 2010-08-26 17:04:20 +02:00
Jonas Holmberg 97cab76ca7 queue: Push newsegment when linking in PLAYING
Fixes #611918
2010-08-20 16:11:41 +02:00
Edward Hervey cc4b33ffdf queue2: Use G_GUINT64_FORMAT where needed
Fixes build on macosx
2010-08-19 09:58:55 +02:00
Stefan Kost 6ee61e4cb3 plugins: add example launch lines and more explanation to the docs.
The plugins where almost undocumented :/ ...
2010-08-16 18:08:39 +03:00
Wim Taymans bb45ff49a9 queue2: fix compilation 2010-08-13 16:38:59 +02:00
Robert Swain dec12cb2b8 queue2: Fix a special case during range management
When a range contained no data, if it was new or newly empty, it would
be mishandled if it were the current range.
2010-08-13 16:38:58 +02:00
Robert Swain 414911b90a queue2: fix locking around init_ranges
This fixes a segfault where the ready to paused state change causes
freeing and allocation of new ranges while another thread is trying to
use them.
2010-08-13 16:38:58 +02:00
Robert Swain 0182c0d88b queue2: More ring buffer fixes
- Set reading_pos correctly in _create_read ()
- Seek to data if it is further than QUEUE_MAX_BYTES (queue) -
  cur_level.bytes away. This should avoid a situation where the ring
  buffer is full but the data offset from which we shall read is not in
  the ring buffer.
- Only update the max_reading_pos to a lower value to protect data when
  necessary
- Always signal an ADD in _locked_enqueue () so that an EOS unlocks the
  reader
- More useful debug output
2010-08-13 16:38:58 +02:00
Robert Swain c78996a313 queue2: ring buffer fixes
One must not affect the values of the current range based on a read
request before the correct range is activated.
2010-08-13 16:38:58 +02:00
Robert Swain 602f4774c7 queue2: Fix bugs
update_buffering () needs to be called every time we write to the ring
buffer so that applications don't get stuck waiting for a 100% buffered
message while queue2 is waiting for space

_create_write () must only be called for temp file/ring buffer cases
2010-08-13 16:38:57 +02:00
Robert Swain 9df54eb4ff queue2: extend ring buffer to support ram mode 2010-08-13 16:38:57 +02:00
Robert Swain e29cca10a4 queue2: merge write buffer functions and fix bugs
Cached data could have been overwritten so it is now protected until
it is read. Similarly data was overread as _have_data () was always
looking for the originally requested data even if part of it had been
read already.
2010-08-13 16:38:57 +02:00
Wim Taymans 04f1572ea2 queue2: small cleanup 2010-08-13 16:38:56 +02:00
Wim Taymans 695da33ef5 queue2: cleanup write_to_ring_buffer
Use cur_level.bytes to see how much space is free in the ringbuffer.
Simplyfy the write function, avoid taking subbuffers, move waiting for free
space in one spot, use simply counter to write data of a buffer.
2010-08-13 16:38:56 +02:00
Wim Taymans abc9ab1747 queue2: cleanups
Add a macro to get the max size of the queue in bytes, which depends on the
max_level.bytes and the ring_buffer_max_size.
Some cleanups.
2010-08-13 16:38:56 +02:00
Wim Taymans ecd8d3be3a queue2: remove unused variable 2010-08-13 16:38:56 +02:00
Wim Taymans 4478c90642 queue2: cleanups
Make sure the cur_level.bytes is updated after we change the writing_pos or the
max_reading_pos.
Refactor get_free_space()
Add some comments
2010-08-13 16:38:55 +02:00
Wim Taymans aec4ea0bfe queue2: remove unneeded signal 2010-08-13 16:38:55 +02:00
Wim Taymans 7de963c0e0 queue2: set buffering mode correctly 2010-08-13 16:38:55 +02:00
Wim Taymans cb6d9b071e queue2: fix calculation of available ringbuffer data 2010-08-13 16:38:55 +02:00
Wim Taymans 8de7cc2222 queue2: reading_pos is updated in create_read only 2010-08-13 16:38:54 +02:00
Wim Taymans cda4967839 queue2: refactor and add debug 2010-08-13 16:38:54 +02:00
Wim Taymans 117d12f325 queue2: fix flushing 2010-08-13 16:38:54 +02:00
Wim Taymans e037dd37ae queue2: add debug 2010-08-13 16:38:53 +02:00
Wim Taymans e882e1b533 queue2: don't try to write 0 bytes 2010-08-13 16:38:53 +02:00
Wim Taymans 73e27fb017 queue2; cleanups and fixes
Make a macro for some frequent checks
Emit the removed signal in all cases when we remove something
2010-08-13 16:38:53 +02:00
Wim Taymans 6339bd0bec queue2: refactorings
Check and handle seek errors
Refactor the wait_free_space function.
2010-08-13 16:38:53 +02:00
Robert Swain c847b981f4 queue2: Use ring-buffer-max-size prop to control ring buffer 2010-08-13 16:38:52 +02:00
Robert Swain 500d6a9986 queue2: Clean up and improve code 2010-08-13 16:38:52 +02:00
Robert Swain bde816451e queue2: Fix conditions where behaviour should differ between ring
buffer and temp file
2010-08-13 16:38:52 +02:00
Robert Swain 68e2275bb9 queue2: add useful debug messages and fix an assumption in _have_data () 2010-08-13 16:38:51 +02:00
Robert Swain 9d11b3e79e queue2: fix buffering percentage in ring buffer mode 2010-08-13 16:38:51 +02:00
Robert Swain 178821aace queue2: various ring buffer fixes
- make _get_range () emit the del signal once a buffer has been read
- use do {} while (); for wait code as queue is locked and no data could
  have been read in the mean time so it makes no sense to check before
  waiting
- make _is_filled () more robust
2010-08-13 16:38:51 +02:00
Robert Swain d1809558e5 queue2: ring buffer work in progress 2010-08-13 16:38:51 +02:00
Robert Swain f093707189 queue2: Add use-ring-buffer and ring-buffer-max-size properties 2010-08-13 16:38:50 +02:00
Robert Swain dbfcc727ab queue2: add ST-Ericsson copyright 2010-08-13 16:38:50 +02:00
Sebastian Dröge 98da78ed2a plugins: Add declarations for _get_type() functions to fix compiler warnings 2010-08-06 19:34:42 +02:00
Shixin Zeng cfefcc7183 plugins: Make *_get_type() in plugins/* thread safe
It's not really needed here but using G_DEFINE_TYPE() reduces
some copy&paste boilerplate code.
2010-08-06 19:30:51 +02:00
Stefan Kost 5486683cb7 typefind: add comment and more logging 2010-08-02 11:45:28 +03:00
Mark Nauwelaerts 2057cf6d79 queue2: download mode; prevent range corruption due to race
Current range was being updated in the thread performing seek, but as
no locks were kept for a short section, data flow could resume before
current range updated, so data for the new range would be accepted as
from the previous range.

Rather, range should be updated in serialized manner based on
newsegment event.
2010-07-29 17:29:00 +02:00
Wim Taymans 808298833a multiqueue: implement acceptcaps function
Our acceptcaps function can simply forward the query.
2010-06-29 09:57:41 +02:00
Tim-Philipp Müller 71f3a6f0f7 Don't include <libxml/parser.h> from public headers if GST_DISABLE_DEPRECATED is defined
Since everything GstXML related has been deprecated, we can now skip the
libxml includes from the public headers when GST_DISABLE_DEPRECATED is
defined.

See #463435.
2010-06-26 10:35:38 +01:00
Wim Taymans 0a84d81901 queue2: fix merging of ranges
When we merge two ranges, don't updata the current range writing_pos with
whereever we were writing earlier in the merged range.  Spotted by bilboed.
2010-06-21 11:41:46 +02:00
Tim-Philipp Müller e1573f194c typefind: make sure buffers' metadata is writable before setting caps on them
Fixes warnings when using playbin2 with dvb:// streams, where typefind
comes after mpegtsparse.
2010-06-18 12:00:53 +01:00
Wim Taymans bd9cd47633 fdsink: make sync property work correctly
Don't override the default get_times vmethod so that we can use the sync
property.
Set the default sync property to FALSE. It used to be set to TRUE but because
the get_times was NULL, it always behaved like FALSE.

Fixes #621530
2010-06-16 13:05:07 +02:00
Wim Taymans 4a5552bf15 fakesink: use method to set sync property
Use the basesink method to configure the sync property instead of poking the
parent structure.
2010-06-14 16:51:39 +02:00
Wim Taymans 2ced5a5d65 filesink: use the default get_times function
Use the default get_times function of basesink so that we honour the sync
property instead of never synchronizing to the clock.

Fixes #621530
2010-06-14 16:50:41 +02:00
Wim Taymans 61db882bae capsfilter: fix printf format 2010-06-14 13:01:55 +02:00
Wim Taymans d612442fde capsfilter: implement custom accept_caps method
Implement a custom acceptcaps function. We can simply check if there is an
intersection with the new caps. This makes the accept caps function much faster.

See #621190
2010-06-14 12:45:20 +02:00
Olivier Crête 24b41d01c8 capsfilter: Remove transform_size
GstBaseTransform now assumes that the size is the same if there is not
transform_size.

https://bugzilla.gnome.org/show_bug.cgi?id=621334
2010-06-14 10:52:23 +02:00
Sebastian Dröge 640ce767d2 queue2: Don't ignore failure to open the temporary file location
And immediately leave the state change function on failures.
2010-06-13 16:31:21 +02:00
Wim Taymans 15141b3954 queue2: don't wait for data when EOS
When in download mode and we need to provide data for an offset that we don't
have, also perform a seek to the requested location when we are EOS. The reason
why we shouldn't wait for more data is because after EOS, there simply will be
no more data and we end up waiting forever.

Fixes #620500
2010-06-07 10:19:30 +02:00
Wim Taymans d970d74842 queue2: add some more debug info 2010-04-09 15:19:12 +02:00
Wim Taymans 65752f7e8d fdsrc: allow specifying the size in bytes on the uri
Parse a size=value from the query string to specify a size. This is interesting
when reading from a file descriptor that actually has a size (and is not
stat-able, such as the socket of an http connection)
2010-04-09 13:21:19 +02:00
Wim Taymans db172aaa6f queue2: when EOS we know the duration
When we are EOS, we don't need to do an upstream query for the duration in bytes
because we already know it is the offset of the last written byte.
2010-04-09 13:21:18 +02:00
Wim Taymans b9ce2133dc queue2: handle write errors
Handle write errors to the temporary download file and post errors when
something went wrong.
2010-03-25 18:43:04 +01:00
Wim Taymans 0b1beba01d queue2: add element query function
Add an element query function that is a little more efficient than the generic
default query handler.
2010-03-25 18:13:02 +01:00
Wim Taymans 49278848d7 queue2: remove fixed FIXME 2010-03-25 18:05:28 +01:00
Wim Taymans bf1f6969bb queue2: add the buffering percent in BUFFERING query 2010-03-25 17:38:02 +01:00
Wim Taymans 1f34682644 queue2: improve buffer level measurement in download mode
Keep track of the current buffer level in the current range in download mode so
that we post the correct buffering messages.
2010-03-25 17:38:01 +01:00
Wim Taymans f9c6a0886e queue2: add more info in the buffering query
Add the estimated download time and estimated time left to the buffering query
results along with the estimated download and playback speed.
2010-03-24 19:03:44 +01:00
Wim Taymans 11304c1257 queue2: implement flushing in download buffering
Maintain a separate variable to control src and sink flowreturn values so that
we can unlock the src part without shutting down the sink part.
Add flushing for upstream pull based elements that unblocks our getrange
function. This implements seeking when blocking for more data.
Add some arbitrary threshold before attempting a seek. Add a FIXME for this
because we need to find a sensible threshold based on the input rate.
2010-03-24 19:03:44 +01:00
Philippe Normand f534e35261 queue2: Fix uninitialized variable compiler warning 2010-03-24 10:57:08 +01:00
Wim Taymans 3f4f5fa59d queue2: implement seeking in download mode
When in download mode and the requested offset is too far away, attempt to do a
seek request to fetch the data.
Keep track of all downloaded parts and merge ranges when needed.

Fixes #600877
2010-03-23 19:28:34 +01:00
Edward Hervey 504f9c7a6c typefind: deactivate pad if we can't get length or it's a length of zero.
Fixes issues when re-using typefind after a file of length zero.
2010-03-17 07:39:29 +01:00
Benjamin Otte 7e7f51f617 Fixes for -Wmissing-declarations -Wmissing-prototypes
Also adds those flags to the configure warning flags

https://bugzilla.gnome.org/show_bug.cgi?id=611692
2010-03-11 10:59:57 +01:00
Benjamin Otte a9d1a493a7 Fixes for -Wwrite-strings
This changes some APIs in compatible ways:
- Some functions now take "const char *" arguments, not "char *"
- Some structs now have "conts char *" members, not "char *"
The changes may cause warnings when compiling with the right warning
flags. You've been warned.

Also adds -Wwrite-strings as a warning flag in configure.ac.

https://bugzilla.gnome.org/show_bug.cgi?id=611692
2010-03-10 20:50:10 +01:00
Sebastian Dröge 1eea2495ff corelements: Combine redundant code 2010-02-19 14:31:54 +01:00
Andoni Morales Alastruey 09bbc1493d Fix compilation of fdsink and fdsrc with MSVC 2010-02-19 14:31:54 +01:00
Mark Nauwelaerts 2aea9ad231 memindex: avoid busy loop when doing EXACT lookup
Fixes #610367.
2010-02-18 17:17:34 +01:00
Edward Hervey 1f0b6f35d5 filesrc: Don't use expensive cast checks in _create
_create() is a pad function set by ourselves, therefore we're sure basesrc
is a GstFileSrc.

Speeds up _create() by 17% and the total call by 8% (instruction calls measurements
done with valgrind).

Fixes #610246
2010-02-17 12:37:11 +01:00
Stefan Kost 3c2abf5581 fdsrc: cleanup parameter initialisation and add comemnt+logging
Initialize new_fd with DEFAULT_FD and fd with -1. Setting the property will set
new_fd and in _update_fd() we cehck fd against -1. Also add a coment about the
warning we get in the log from gst_poll_remove_fd(). We could get rid of the
warning if we want by tracking if fd has been added to fdset.
2010-02-17 11:31:07 +02:00
Stefan Kost 7937808ac7 docs: prefer short desc from GstElementDetails 2010-02-15 23:12:56 +02:00
Edward Hervey ed6f62f763 typefind: Reset the working mode when going to READY/NULL
This allows properly re-using typefind (else it would think it's
already done the typefinding when being re-used with another
stream).
2010-02-13 15:18:05 +01:00
Thiago Santos 51d382e2ee typefind: Avoid messing pads activation
Typefind might mess up pads modes (pull/push) if a
downstream element is plugged and its pads activated
in 'step 2' of typefind pads activation.

This happens because the following steps don't check
if we already emitted typefound due to upstream setting
caps on buffers being pulled in the typefind helpers.

Avoid that by checking if typefound is already emmited.

Fixes #608036
2010-02-12 17:23:29 -03:00
Sebastian Dröge 88736cd675 typefindelement: Protect internal fields from concurrent changes from different threads
Fixes bug #608877.
2010-02-12 11:02:08 +01:00
Edward Hervey 4e0b2dc832 multiqueue: Don't stop threads on UNEXPECTED and forward flow returns.
When a downstream element returns GST_FLOW_UNEXPECTED we want to:
* let the dataqueue task running
* forward the flow return upstream.

This allows upstream elements to push EOS, and have that EOS event come
downstream.

Fixes #609274
2010-02-09 16:15:18 +01:00
Edward Hervey 9cc47f8cba Revert "multiqueue: handle UNEXPECTED flowreturn better"
This reverts commit fbdf4dceda.

Partly fixes #609274
2010-02-09 15:58:36 +01:00
Tim-Philipp Müller 467f0a2c0f filesrc: fix typo in warning message
Spotted by bsreerenj@gmail.com.

Fixes #608442.
2010-01-30 18:57:44 +00:00
Wim Taymans fbdf4dceda multiqueue: handle UNEXPECTED flowreturn better
When we receive an UNEXPECTED flowreturn from downstream, we must not shutdown
the pushing thread because upstream will at some point push an EOS that we still
need to push further downstream.

To achieve this, convert the UNEXPECTED return value to OK. Add a fixme so that
we implement the right logic to propagate the flowreturn upstream at some point.

Also clean up the unit test a little.

Fixes #608136
2010-01-26 17:07:31 +01:00
Wim Taymans 62e0d976f3 queue2: add some docs to mark new property 2010-01-22 18:00:53 +01:00
Wim Taymans 183ffdc126 queue2: add option to remove the temp-file
Add an option to automatically remove the temp file (TRUE by default). This
should make it possible for the application to keep the temp file by other means
than hardlinking or holding an fd open.

Fixes #607739
2010-01-22 17:58:07 +01:00
Tim-Philipp Müller 2b0b3923e8 typefind: don't leak uri string 2010-01-22 02:05:58 +00:00
Tim-Philipp Müller 087aa6ced4 gst_private.h: make sure gst_private.h is included before glib.h
For the reason outlined at the beginning of gst_private.h (inline
functions in glib may need the g_log_domain variable). Also include
gst_private.h before using any G_OS_* defines, esp. in plugin loader.
2010-01-20 01:48:56 +00:00
Tim-Philipp Müller 745b35e7d4 docs: minor gtk-doc markup fixes 2010-01-20 01:48:56 +00:00
Wim Taymans fc2f4ae37a typefindelement: use new typefind function
Refactor a little.
Use the new typefind helper function that uses the extension to speed up
typefinding.
2010-01-12 17:38:32 +01:00
Håvard Graff a3c4a3201a tee: make release_pad threadsafe
Protect the ->removed field with the object lock as well. Take the DYN lock
earlier so that we can mark the pad removed and avoid a race in pad_alloc.

Fixes #606435
2010-01-11 11:55:52 +01:00
Mark Nauwelaerts 7b2c5f5168 multiqueue: set iterate_interal_links function on source pad 2009-12-30 22:59:29 +01:00
Wim Taymans 5e577aa385 tee: small cleanups, use some G_LIKELY 2009-12-22 22:52:02 +01:00
Olivier Crête 3144354aae tee: Don't crash if there is no source pad 2009-12-22 22:31:06 +01:00
Mark Nauwelaerts 5fde7d1ed0 filesrc: printf format fixes 2009-12-15 18:55:38 +01:00
Havard Graff 494495eae6 tee: release pads in dispose
Make sure to release all request-pads in the dispose-method, in case of a
shutdown-race, where a pad-alloc is about to happen.

Fixes #604091
2009-12-09 13:31:07 +01:00
Edward Hervey e572d3bf0b tee: avoid expensive typechecks, and avoid getting ref to parent.
Speeds up tee processing 2 to 5 times.
2009-12-07 09:51:03 +01:00
Tim-Philipp Müller 5351298266 filesink, filesrc: printf format fixes
gstfilesink.c:399: error: format ‘%d’ expects type ‘int’, but argument 8 has type ‘size_t’
gstfilesink.c:399: error: format ‘%d’ expects type ‘int’, but argument 9 has type ‘gsize’
gstfilesrc.c:588: error: format ‘%08llx’ expects type ‘long long unsigned int’, but argument 8 has type ‘off_t’
2009-12-03 20:53:25 +00:00
Stefan Kost c92178827b tee: add special case for only one pad conected
It is not easy to setup a tee on the fly, thus apps need to add them always if
they might need them. This changes the code so, that if only one src-pad is
active, we push buffers directly. In the normal code path all buffers are pushed
with an extra ref, that forces followup inplace elements to copy the data.
2009-12-03 16:44:28 +02:00
Stefan Kost 15bac7df00 tee: only message once per received buffer
Avoids checking for each source pad. The messages would be almost identical
anyway.
2009-12-03 16:11:59 +02:00
Stefan Kost d80750e8d2 tee: remove unused offset member 2009-12-03 16:06:35 +02:00
Stefan Kost 33f9abda38 tee: only notify alloc-pad property if changed. 2009-12-03 16:02:35 +02:00
Edward Hervey 4452672001 queue: Register debug funcptr only once.
Makes creating queue elements 3-4 times faster and avoids contention on the
global funcptr lock.
2009-12-01 19:29:25 +01:00
Thiago Santos 1a50186630 queue2: fix printf format
Cast the variable to gint to conform to the printf format used.
It is casted rather than changing the format because the
message is created with a cast to gint too.
2009-11-10 11:55:34 -03:00
Thiago Santos 245089c9bd queue2: avoid crashing due to negative percent
queue2 would crash when using small buffer sizes because
it would overflow when calculating the percentage, resulting
in the buffering GstMessage not being created and trying to be
used. This patch uses a gint64 instead of a gint to do the
percentage math, making it harder to overflow.
2009-11-10 10:10:56 -03:00
Thiago Santos 5c7104c002 queue2: Fix small doc typo 2009-11-10 09:52:30 -03:00
Bastien Nocera 9581e5887c implement buffering-left argument to buffer messages
Using the current fill level of the queue, and the average input
rate, we can determine how long it will take to finish downloading
the whole stream to the temporary file.

Fixes #600726
2009-11-05 15:22:35 +01:00
Stefan Kost 69ea131cfa build: include stdio.h for FILE 2009-11-03 17:30:14 +02:00
Sebastian Dröge 22fbce48bb queue2: Use "Queue 2" as long name 2009-10-29 11:38:21 +01:00
Sebastian Dröge 0f1c4ab188 queue2: Use GST_BOILERPLATE_FULL() and add pad templates/set details in base_init 2009-10-29 11:35:08 +01:00
Sebastian Dröge 5c821a0df5 queue2: Use gst_element_class_set_details_simple() 2009-10-29 11:30:57 +01:00
Sebastian Dröge 40732dd308 queue2: Integrate into coreplugins 2009-10-29 11:30:11 +01:00
Sebastian Dröge 08e3cb531c queue2: Move struct declarations to a separate header 2009-10-29 11:21:36 +01:00
Sebastian Dröge 9236921a34 queue2: Move queue2 to gstreamer coreplugins
Fixes bug #599996.
2009-10-29 11:18:20 +01:00
Tim-Philipp Müller daecaf0e8a Remove GST_DEBUG_FUNCPTR where they're pointless
There's not much point in using GST_DEBUG_FUNCPTR with GObject
virtual functions such as get_property, set_propery, finalize and
dispose, since they'll never be used by anyone anyway. Saves a
few bytes and possibly a tenth of a polar bear.
2009-10-28 00:44:24 +00:00
Tim-Philipp Müller ff7d9470b7 capsfilter: sprinkle some GST_DEBUG_FUNCPTR 2009-10-28 00:44:07 +00:00
Wim Taymans 03baa04059 multiqueue: buffering is implemented now 2009-10-27 14:40:19 +01:00
Wim Taymans b852da60d4 multiqueue: make sure percent increases
Keep track of the last posted percent message and make sure the next percent
messages are strictly increasing.
2009-10-27 14:40:17 +01:00
Wim Taymans 30fc865162 multiqueue: refactor buffering code
Move the buffering update code to a separate function so that we can call it
when the buffering state changes due to EOS.
Avoid dividing by 0.
2009-10-27 14:40:15 +01:00
Wim Taymans 99dd9830a9 multiqueue: add buffering support
Add support for buffering mode where we post BUFFERING messages based on the
level of the queues. It currently operates on the first queue that goes over or
under the high/low thresholds.
2009-10-27 14:40:12 +01:00
Wim Taymans 07991ae4ab multiqueue: don't check visible items in buffering
In buffering mode we want to ignore the max visible items to decide when the
queue is filled. Instead, we only look at the number of bytes and/or time in the
queue.
2009-10-27 14:40:09 +01:00
Wim Taymans 6ac9191527 multiqueue: hook up low/high percent
Hook up the low/high percent properties for the buffering mode.
2009-10-27 14:40:07 +01:00
Wim Taymans b9d4f6e550 multiqueue: hook up property for buffering 2009-10-27 14:40:02 +01:00
Wim Taymans c6b0d4a43d multiqueue: small cleanups
Remove unused variable to avoid confusion
Fix some typo
2009-10-27 13:22:47 +01:00
Wim Taymans 6082b0bc89 multiqueue: add FIXME for wrong code
Needs further investigation
2009-10-27 13:18:31 +01:00
Wim Taymans 354cf53f81 multiqueue: fix debug output 2009-10-27 13:18:29 +01:00
Wim Taymans 606852c586 multiqueue: avoid shadowing function argument
Don't shadow the sq argument in the underrun_cb function but use
a different variable name to iterate the other queues.
Use the same variable name in the overrun_cb function.
2009-10-27 13:18:25 +01:00
Wim Taymans 814ee012e7 multiqueue: make queue arg explicit
Make the queue argument to IS_FILLED explicit
2009-10-27 13:18:20 +01:00
Wim Taymans c490d7542c multiqueue: fix properties
Fix properties, make the extra-size properties as not implemented.
2009-10-27 13:18:00 +01:00
Wim Taymans 2f7b348fc0 tee: implement custom acceptcaps function
Implement a custom acceptcaps function on the sinkpad. We can accept any caps as
long as it is accepted by all downstream peer elements.
2009-10-21 16:26:01 -04:00
Wim Taymans b95cc5031b multiqueue: avoid lock for taking the counter
The counter for incomming data is already protected with the STREAM_LOCK so we
don't need to add another lock around it.
2009-10-21 13:38:57 -04:00
Stefan Kost 9f9353a84a queue: more queue optimizations
Split gst_queue_locked_enqueue() into variant for buffer and event to get rid of
the if() and make the code more readable (constant boolean parameters are never
nice). Removes the if (item) checks as we dereference the pointer before anyway.

Also apply the same idea of reusing the previous knowledge in
gst_queue_locked_dequeue to remove more type checks.
2009-10-08 10:54:42 +03:00
Stefan Kost 963932b1f1 multiqueue: split gst_multi_queue_item_new
Split gst_multi_queue_item_new into buffer and event variant to make save an if
and make code more readable.
2009-10-08 10:54:35 +03:00
Edward Hervey 4cfe11d42c plugins/gstfilesrc: Make a fast-path for length == 0 buffer creation.
If the requested length is 0, we don't need to read anything from the file.
2009-10-08 08:55:59 +02:00
Michael Smith 0c3a8165b6 filesink: Use _wfopen on win32 to open files with non-ascii filenames correctly. 2009-10-07 16:03:30 -07:00
Mark Nauwelaerts e51a34985f multiqueue: flush queue upon fatal flowreturn and release upstream thread 2009-10-07 18:51:52 +02:00
Edward Hervey 61ec6a561c plugins/multiqueue: Avoid instance check
We know earlier on in the code whether we're handling an event or a buffer,
just pass that information through.

This commit and the previous commit reduce instruction fetch:
* when pushing buffer (_chain) by 10%
* when popping buffer (_loop) by 3%
2009-10-07 10:07:01 +02:00
Edward Hervey c15879f94e plugins/multiqueue: Cache input/output time, avoid expensive calls.
* Cache the input/output time
* Only recalculate it when needed.

Avoids 50% calls to gst_segment_to_running_time
2009-10-07 10:07:01 +02:00
Stefan Kost cfb4aa4627 build: sprintf, sscanf need stdio.h 2009-10-07 10:59:54 +03:00
Edward Hervey 7c6d555848 plugins/multiqueue: Use new GstDataQueue constructor 2009-10-07 09:32:47 +02:00
Edward Hervey 8c67b6390e plugins/multiqueue: Use cached value instead of expensive object get.
The task will always exist as long as its owner (i.e. the pad) and that
owner's owner (i.e. multiqueue) exist.

Reduces the number of instruction fetches by 36%.
2009-10-07 09:25:41 +02:00
Edward Hervey d28a3e7435 plugins/queue: Use previous knowledge of data type to avoid typecheck.
We know whether we have a buffer or an event, use that instead of going
trough the expensive GLib typecheck.

The overall instruction fetch reduction introduced by this commit and the
2 previous commits:
* receiving a buffer (_chain) by 20%
* popping a buffer (_loop) by 14%

Numbers acquired through callgrind passing 100000 buffers through queue.
2009-10-07 09:15:13 +02:00
Edward Hervey 9be7fdc857 plugins/queue: Avoid useless segment_to_running_time() calculations.
* Cache src and sink time
* Use a boolean to know whether src/sink time need to be recalculated

Avoids 50% calls to gst_segment_to_running_time()
2009-10-07 09:06:21 +02:00
Edward Hervey b1945ad429 plugins/queue: Just cast to the object parent instead of typechecking. 2009-10-07 09:06:11 +02:00
Sebastian Dröge d6de0e4cce multiqueue: Improve iterate internal links function
Pads have their GstSingleQueue stored as element private data
so there's no need to iterate over the list of single queues
every time. Also every pad only has a single internal link so
use a single iterator instead of a complex custom iterator.

Set the element private data of the pad to NULL when freeing the
single queue.
2009-10-07 07:18:04 +02:00
Tim-Philipp Müller 6ce1f0cbce dataqueue, elements: avoid unnecessary runtime type checks 2009-10-06 20:04:10 +01:00
Wim Taymans b3d262d730 fix whitespace 2009-09-07 18:32:10 +02:00
Wim Taymans eaf7582b8f queue: whitespace fixes 2009-08-28 17:49:11 +02:00
Sebastian Dröge 269d3581c5 multiqueue: Use iterate_internal_links instead of deprecated get_internal_links 2009-08-18 14:57:18 +02:00
Laurent Glayal abafed991e filesink: Add property to allow to append to an already existing file
Fixes bug #591441.
2009-08-18 08:45:08 +02:00
Mark Nauwelaerts 3352c5d970 queue: post error message when pausing task
If downstream returns error and upstream has already delivered
everything (including EOS) and will no longer be around to find
out that we paused (and why), post error message.  Fixes #589991.
2009-08-06 13:42:25 +02:00
Wim Taymans 2f5ed9e29d capsfilter: only set caps when different
When we have an input buffer with caps and when those caps are different from
the caps we want, only then make a writable copy of the input buffer as the
output buffer and set the caps on that output buffer. This avoids some cases
where we took a subbuffer for setting caps that were the same.
2009-08-06 10:53:12 +02:00
Wim Taymans 49f24e2044 queue: get caps after making writable
Get the caps of the buffer after we made the buffer writable. This did not
cause any problems but it's nicer this way.
2009-08-06 10:52:56 +02:00
Wim Taymans 04f3f096c3 capsfilter: fix refcounting problem
Make sure the metadata is writable before setting the caps on a buffer.
2009-08-06 10:52:45 +02:00
Andoni Morales 741ef2bc80 filesink: Fix segfault with MSVC
Don't use deprecated fileno on MSVC but replace with _fileno

Fixes #587052
2009-07-13 12:00:47 +02:00
Tim-Philipp Müller 480b92006d typefindelement: log probability in debug message 2009-07-02 01:18:57 +01:00
Jan Schmidt 3c87b8850f multiqueue: Fire the overrun signal on EOS
Fixes startup of some short MPEG files with decodebin2/playbin2
where all the data fits in the multiqueue and EOS arrives before
the group is exposed.
2009-06-24 15:22:51 +01:00
Chad Hanna 26d91daacb capsfilter: Add GAP flag support
capsfilter doesn't actually touch the data so we don't want the GAP flag to
be unset by basetransform.

Fixes bug #586566.
2009-06-23 12:58:29 +02:00
Wim Taymans b054530479 tee: add buffer-list support 2009-06-19 19:35:04 +02:00
Tim-Philipp Müller 26f8292860 fdsink: clean up some more error and debug messages 2009-06-19 13:52:41 +01:00
Tim-Philipp Müller 536baf3d65 fdsink: fix error message
Users should never see the term 'file descriptor', much less a file
descriptor number, in an error message. Put that into the debug
string instead and use the default error message.
2009-06-18 11:39:26 +01:00
Wim Taymans 6c1a1634b4 fdsink: add the new field in the header 2009-06-18 11:49:33 +02:00
Benjamin Gaignard 1a6f82f4b0 fdsink: make fdsink seekable
Implement the same logic as filesink to implement seeking.

Fixes #578908
2009-06-18 10:55:39 +02:00
Tim-Philipp Müller 8624aaa415 queue: fix compiler warning
The compiler suggests to add some () to indicate if the && or the || takes
priority, so reflow code a bit so we don't have to add yet another layer
of (). Hopefully this was the intended meaning of the code.
2009-06-15 20:11:05 +01:00
Arnout Vandecappelle 34aeb8ba7e don't lock when min-threshold and max-size conflict.
When min-threshold is set on a queue, it is possible that one of
the minima remains unsatisfied while one of the maxima is already
reached. Therefore, always consider the queue non-empty if it is full.

Fixes #585433.
2009-06-15 19:06:12 +02:00
Stefan Kost 36bb7c76b1 filesrc/sink: turn the bus messages into g_warning
Its a programming error.
2009-06-12 17:55:02 +03:00
Stefan Kost e938861cb8 filesrc/sink: improve warning message a bit (wrong state)
Unify and turn those into element warnings.
2009-06-11 18:16:05 +03:00
Jan Schmidt 2e2695f594 multiqueue: Use the slice allocator for MultiQueueItems 2009-06-11 10:34:28 +01:00
Wim Taymans 5a77f18278 multiqueue: check byte range even when we have timestamps
As found by thaytan on IRC.
Also check the byte limit, even if we have timestamps because there might just
not be a time limit.
2009-06-09 13:08:54 +02:00
Stefan Kost 7e27a53265 fakesrc: add a FIXME comment for blocksize vs. size-max property issue 2009-06-01 09:51:20 +03:00
Tim-Philipp Müller d9df74ea3e identity: hack around g_object_notify() bug by protecting it with a lock
Out-of-band events might lead to us calling g_object_notify() from a
non-streaming thread, which can cause crashes if g_object_notify() is
being called from the streaming thread at the same time. See #554460.
2009-05-31 21:30:18 +01:00
Tim-Philipp Müller 7e4b164c12 fakesink: hack around crasher bug in g_object_notify() for out-of-band events
GObject may crash if two threads do concurrent g_object_notify() on the same
object. This may happen if fakesink receives an out-of-band event such as
FLUSH_START while processing a buffer or serialised event in the streaming
thread. Since this may happen with the default settings during a common
operation like a seek, and there seems to be little chance of a timely fix
in GObject (see #166020), we should hack around this issue by protecting all
of fakesink's direct g_object_notify() calls with a lock.

Also add unit test for the above.

Fixes #554460.
2009-05-31 19:17:33 +01:00
Arnout Vandecappelle ef9ad30fde typefind: don't leak the force-caps property
Fixes #581321
2009-05-12 10:21:26 +02:00
Sebastian Dröge d20e695a00 filesrc: Improve debugging a bit on invalid URIs 2009-05-12 09:02:45 +02:00
Wim Taymans 103b2a41bf fakesink: avoid typecheck 2009-05-11 22:35:08 +02:00
Jan Schmidt 4c6c9c2d5b paramspecs: revert gst_param_spec_is_mutable() for release
Revert the gst_param_spec_is_mutable API for this release so we can
discuss it a bit further first.
2009-04-16 00:48:11 +01:00
David Schleef 1ecf114c0e Add param spec flags for when a property can be changed
Adds GST_PARAM_MUTABLE* flags to indicate in which states a
property can be changed and take effect.  Fixes #571559
2009-04-12 18:45:24 -07:00
Olivier Crete 376bed78ce tee: add property to control the alloc pad
Add a property to control the pad used for proxying the buffer_alloc function on
the sinkpad.
Fixes #577891.
2009-04-09 18:27:21 +02:00
Edward Hervey 00cbbc87c7 Remove unused variables detected by LLVM's Clang static analyzer. 2009-04-03 12:56:48 +02:00
Edward Hervey ca662eb57a capsfilter. Always calls _suggest, even with NULL caps. Fixes #574805 2009-03-31 15:15:29 +02:00
LRN ef5be37882 win32: fix seeking in files >4GB
Use 64-bit functions on windows to implement seeking in files bigger
than 4GB.
Fixes #575988
2009-03-20 14:14:52 +01:00
Stefan Kost 36205e7d42 logging: some additional logging for tracing caps negotiation.
Demote one log that can come quite often. Remove one fixme that is done. Apply
gst-indent changes.
2009-03-10 21:13:40 +02:00
Alessandro Decina c20fb4c16f identity: ignore the return value of gst_pad_event_default when sending out the newsegment event in single-segment mode.
This makes identity single-segment=true ! oggmux work again after a change in
oggmux (commit b0e3d449 in -base).
2009-03-06 12:13:14 +01:00
Edward Hervey 69b8a22ffa capsfilter: Properly reset the capsfilter when setting caps ANY. 2009-02-27 13:35:35 +01:00
Ali Sabil cd1f18bd12 Use the correct unref function 2009-02-22 18:53:10 +01:00
Stefan Kost 4262f6c641 cleanup: remove unused variables in _class_init() and reindent. 2009-02-05 17:25:01 +02:00
Stefan Kost 1ca248bac6 queue: remove unused code
Skip looping thru a dummy implementation.
2009-02-05 13:59:48 +02:00
Jan Schmidt e89ce19497 Update a bunch of gitignores to clean up my git status output 2009-01-23 16:08:40 +00:00
Sebastian Dröge e5ce299593 Improve debug output by logging the offsets. Fixes bug #568678.
In create() also log the offsets and not only the
buffer size.
2009-01-22 13:58:57 +01:00
Wim Taymans 5b868cbbb0 If no type was found using the typefind functions, try doing an upstream
URI query to guess the type from the extension. See #566661.
2009-01-21 12:50:29 +01:00
Stefan Kost 7dd8b92448 gst/gstdebugutils.c: Add some ideas, how to make the graph smaller.
Original commit message from CVS:
* gst/gstdebugutils.c:
Add some ideas, how to make the graph smaller.
* gst/gstutils.c:
Add a comment from a debug session.
* libs/gst/base/gstbasetransform.c:
Log more context.
* libs/gst/controller/gstinterpolationcontrolsource.c:
Indet.
* plugins/elements/gstcapsfilter.c:
Fix typo in docs.
2009-01-01 21:27:06 +00:00
Sebastian Dröge 9b65eb6838 API: Add URI query type. This is useful to query the URI of a sink/source element and can be used by demuxers that ne...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstquark.c:
* gst/gstquark.h:
* gst/gstquery.c: (gst_query_new_uri), (gst_query_set_uri),
(gst_query_parse_uri):
* gst/gstquery.h:
API: Add URI query type. This is useful to query the URI
of a sink/source element and can be used by demuxers that
need to get data from other files.
This query should go upstream by default.
Fixes bug #562949.
* plugins/elements/gstfdsink.c: (gst_fd_sink_query):
* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init),
(gst_fd_src_query):
* plugins/elements/gstfilesink.c: (gst_file_sink_query):
* plugins/elements/gstfilesrc.c: (gst_file_src_class_init),
(gst_file_src_query):
Implement URI query.
2008-12-20 17:33:44 +00:00
Wim Taymans 55eff82256 plugins/elements/gsttee.c: Check for changed pads-list before checking the last returned
Original commit message from CVS:
* plugins/elements/gsttee.c: (gst_tee_handle_buffer):
Check for changed pads-list before checking the last returned
GstFlowReturn because the pad could have been removed and we
need to ignore the value in that case.
2008-12-08 22:28:05 +00:00
Edward Hervey aa1dfbb004 plugins/elements/gstfilesrc.c: Fix memory leak.
Original commit message from CVS:
* plugins/elements/gstfilesrc.c: (gst_file_src_uri_set_uri):
Fix memory leak.
2008-11-24 11:56:44 +00:00
Stefan Kost 9e501b274f plugins/elements/gstidentity.c: Don't warning on offset==-1. Taken from _check_imperfect_offset().
Original commit message from CVS:
* plugins/elements/gstidentity.c:
Don't warning on offset==-1. Taken from _check_imperfect_offset().
2008-11-21 20:57:16 +00:00
Michael Smith 42c08ab20f plugins/elements/gstfilesrc.c: Check for localhost in URI was backwards, fix it. Fixes unit test.
Original commit message from CVS:
* plugins/elements/gstfilesrc.c:
Check for localhost in URI was backwards, fix it. Fixes unit test.
2008-11-21 18:26:14 +00:00
Michael Smith c9a4a6d6f5 plugins/elements/gstfilesrc.c: Use g_filename_from_uri() for URI parsing in filesrc rather than rolling out own sligh...
Original commit message from CVS:
* plugins/elements/gstfilesrc.c:
Use g_filename_from_uri() for URI parsing in filesrc rather than rolling
out own slightly incorrect version. Fixes use of some paths on
win32.
2008-11-20 21:05:14 +00:00
Thomas Vander Stichele a0e5eab525 plugins/elements/gstfilesink.c: Update Author string to match others.
Original commit message from CVS:
* plugins/elements/gstfilesink.c:
Update Author string to match others.
2008-11-10 13:56:51 +00:00
Stefan Kost fa7e7d29a2 plugins/elements/gstidentity.c: Doc typo. Use return value of parent_class->event.
Original commit message from CVS:
* plugins/elements/gstidentity.c:
Doc typo. Use return value of parent_class->event.
* plugins/elements/gsttypefindelement.c:
Chain up at the end for consistency.
2008-10-31 08:53:27 +00:00
Sebastian Dröge 5357a24dbf plugins/elements/: Use gst_buffer_try_new_and_alloc() and handle errors instead of using gst_buffer_new_and_alloc() w...
Original commit message from CVS:
* plugins/elements/gstfdsrc.c: (gst_fd_src_create):
* plugins/elements/gstfilesrc.c: (gst_file_src_create_read):
Use gst_buffer_try_new_and_alloc() and handle errors instead of
using gst_buffer_new_and_alloc() which aborts if the buffer couldn't
be allocated.
2008-10-23 12:52:58 +00:00
Sebastian Dröge 075811e654 plugins/elements/gsttee.c: Fix flow aggregation of tee. Error out immediately for all flow returns except OK and NOT_...
Original commit message from CVS:
* plugins/elements/gsttee.c: (gst_tee_handle_buffer):
Fix flow aggregation of tee. Error out immediately for all flow returns
except OK and NOT_LINKED, return NOT_LINKED if all pads are not linked
and return OK if at least one pad is linked.
Before we errored out on "fatal" flow returns (i.e. not for WRONG_STATE)
and otherwise returned the flow return of the last pad, which is wrong.
* tests/check/elements/tee.c: (_fake_chain), (_fake_chain_error),
(GST_START_TEST), (tee_suite):
Add unit tests for the flow aggregation.
2008-10-14 12:34:56 +00:00
Stefan Kost 35a2a49c00 plugins/: Don't install static libs for plugins. Fixes #550851 for core.
Original commit message from CVS:
* plugins/elements/Makefile.am:
* plugins/indexers/Makefile.am:
Don't install static libs for plugins. Fixes #550851 for core.
2008-10-13 16:47:51 +00:00
Jan Schmidt 18e2042e28 plugins/elements/gstqueue.c: Allow through queries when we don't know how as otherwise it's not possible to query the...
Original commit message from CVS:
* plugins/elements/gstqueue.c:
Allow through queries when we don't know how
to adjust them (not TIME or BYTES), as otherwise it's
not possible to query the current position in order
to seek in other formats at all.
2008-10-08 11:20:17 +00:00
Jan Schmidt 86db1f680c Fix assertion in basetransform when the subclass chooses not to allocate a buffer in prepare_buffer(), and make capsf...
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
* plugins/elements/gstcapsfilter.c:
* tests/check/Makefile.am:
* tests/check/elements/.cvsignore:
* tests/check/elements/capsfilter.c:
Fix assertion in basetransform when the subclass chooses not to
allocate a buffer in prepare_buffer(), and make capsfilter error out
cleanly if requested to apply caps that don't completely specify the
buffer. Fixes #551509
2008-09-28 21:19:15 +00:00
Stefan Kost c55cc1ff39 plugins/elements/: Call super::event() when not handling it. Fixes #544855.
Original commit message from CVS:
reviewed by: Wim Taymans <wim.taymans@collabora.co.uk>
* plugins/elements/gstfakesink.c:
* plugins/elements/gstfakesrc.c:
Call super::event() when not handling it. Fixes #544855.
2008-08-20 07:03:40 +00:00
Alessandro Decina 9693804ba5 plugins/elements/gstfilesrc.c: Use 64 bit variants of stat functions on win32, to enable support of large files there.
Original commit message from CVS:
Patch by: Alessandro Decina <alessandro@nnva.org>
* plugins/elements/gstfilesrc.c:
Use 64 bit variants of stat functions on win32, to enable support
of large files there.
Fixes #547277.
2008-08-19 17:23:18 +00:00
Ole André Vadla Ravnås fe969e6391 plugins/elements/gsttee.*: Protect pad_alloc with a new lock so that we can be sure that nothing is performing a pad_...
Original commit message from CVS:
Patch by: Ole André Vadla Ravnås  <ole.andre.ravnas at tandberg com>
* plugins/elements/gsttee.c: (gst_tee_finalize), (gst_tee_init),
(gst_tee_request_new_pad), (gst_tee_release_pad),
(gst_tee_find_buffer_alloc), (gst_tee_buffer_alloc):
* plugins/elements/gsttee.h:
Protect pad_alloc with a new lock so that we can be sure that nothing is
performing a pad_alloc when removing the pad. Fixes #547835.
* tests/check/elements/tee.c: (buffer_alloc_harness_setup),
(buffer_alloc_harness_teardown), (app_thread_func),
(final_sinkpad_bufferalloc), (GST_START_TEST), (tee_suite):
Added testcase for shutdown race.
2008-08-15 17:01:07 +00:00
Stefan Kost 3897306e70 plugins/elements/gsttee.c: Unlock, instead of locking again.
Original commit message from CVS:
* plugins/elements/gsttee.c:
Unlock, instead of locking again.
2008-08-07 07:01:15 +00:00
Wim Taymans d041a7411a plugins/elements/gstcapsfilter.c: Use new caps suggestion feature of basetransform to request a caps negotiation upst...
Original commit message from CVS:
* plugins/elements/gstcapsfilter.c: (copy_func),
(gst_capsfilter_set_property):
Use new caps suggestion feature of basetransform to request a caps
negotiation upstream.
2008-08-05 11:12:29 +00:00
Sebastian Dröge 4bfb1fe70c Remove GST_DISABLE_(ENUMTYPES|INDEX|URI) everywhere.
Original commit message from CVS:
* configure.ac:
* docs/gst/gstreamer-sections.txt:
* docs/gst/gstreamer.types:
* docs/gst/gstreamer.types.in:
* gst/Makefile.am:
* gst/gst.c:
* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_index_func):
* gst/gstconfig.h.in:
* gst/gstelement.c: (gst_element_get_index):
* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
(gst_registry_binary_load_feature),
(gst_registry_binary_read_cache):
* gst/gstregistryxml.c: (load_feature),
(gst_registry_xml_read_cache), (gst_registry_xml_save_feature):
* plugins/Makefile.am:
* tools/gst-indent:
* tools/gst-inspect.c: (print_index_info), (print_element_list),
(print_plugin_features), (print_element_features):
* tools/gst-xmlinspect.c: (print_event_masks),
(print_element_info):
* win32/common/gstconfig.h:
Remove GST_DISABLE_(ENUMTYPES|INDEX|URI) everywhere.
Disabling the indexers and URI handler code will only reduce the
required amount of memory by a very small amount but on the other hand
requires much more maintaince work. Apart from that many places of
code are broken when disabling them.
Disabling the enum types doesn't reduce the required amount of memory
by more than a few bytes and makes it hard to fix bugs like #539772,
i.e. use the enums as GObject properties.
2008-07-31 15:20:32 +00:00
Wim Taymans f688febd0f plugins/elements/gstcapsfilter.c: Make setting the caps more threadsafe.
Original commit message from CVS:
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_set_property),
(gst_capsfilter_get_property), (gst_capsfilter_transform_caps):
Make setting the caps more threadsafe.
2008-07-31 09:55:14 +00:00
Wim Taymans 66d6f67b02 plugins/elements/gstqueue.c: Add and use a custom acceptcaps function instead of falling back to the potentially less...
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_init),
(gst_queue_acceptcaps):
Add and use a custom acceptcaps function instead of falling back to the
potentially less optimized default implementation.
2008-07-31 08:37:04 +00:00
Stefan Kost f4caf88854 plugins/elements/gsttee.*: Reverting as not everything is clear yet. Needs some general design work.
Original commit message from CVS:
* plugins/elements/gsttee.c:
* plugins/elements/gsttee.h:
Reverting as not everything is clear yet. Needs some general design
work.
2008-07-29 14:32:51 +00:00
Stefan Kost dd7f2c7076 plugins/elements/gsttee.*: Relay tag events in tee. Fixes parts of #474016.
Original commit message from CVS:
* plugins/elements/gsttee.c:
* plugins/elements/gsttee.h:
Relay tag events in tee. Fixes parts of #474016.
2008-07-29 11:57:11 +00:00
Thijs Vermeir 6d4dc1a807 plugins/elements/gstmultiqueue.*: revert extra-size-buffers stuff, caused some race conditions and extra-size-buffers...
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c:
* plugins/elements/gstmultiqueue.h:
revert extra-size-buffers stuff, caused some race conditions
and extra-size-buffers is not used anymore. Docs needs some updates
2008-06-26 20:27:00 +00:00
Thijs Vermeir e25fd35125 plugins/elements/gstmultiqueue.*: Fix dead-lock in underrun_cb
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c:
* plugins/elements/gstmultiqueue.h:
Fix dead-lock in underrun_cb
2008-06-25 15:39:02 +00:00
Thijs Vermeir 15b694fc7a plugins/elements/gstmultiqueue.c: Add functionality to extra-size-buffers property.
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c:
Add functionality to extra-size-buffers property.
2008-06-22 19:19:35 +00:00
Thijs Vermeir d7d1eecb97 plugins/elements/gstmultiqueue.c: Don't update the cur_time on GST_CLOCK_TIME_NONE (#537804) and don't activate the p...
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c:
Don't update the cur_time on GST_CLOCK_TIME_NONE (#537804) and don't
activate the pads if they are added in STATE_NULL.
2008-06-22 14:35:13 +00:00
Stefan Kost ef70805d24 plugins/elements/: Remove short_description. Add basic docs for gsttypefindelement.
Original commit message from CVS:
* plugins/elements/gstcapsfilter.c:
* plugins/elements/gstfakesink.c:
* plugins/elements/gstfakesrc.c:
* plugins/elements/gstfdsink.c:
* plugins/elements/gstfdsrc.c:
* plugins/elements/gstfilesink.c:
* plugins/elements/gstfilesrc.c:
* plugins/elements/gstidentity.c:
* plugins/elements/gstmultiqueue.c:
* plugins/elements/gstqueue.c:
* plugins/elements/gsttee.c:
* plugins/elements/gsttypefindelement.c:
Remove short_description. Add basic docs for gsttypefindelement.
Simplify markup for fakesrc/fdsrc.
2008-06-20 10:14:54 +00:00
Wim Taymans 98440eb49d plugins/elements/gstfdsrc.c: Added Since doc.
Original commit message from CVS:
* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init):
Added Since doc.
2008-06-20 10:07:28 +00:00
joel larsson c8c34e8dff Add timeout property like udpsrc. Fixes #538628.
Original commit message from CVS:
Patch by: joel larsson <tilljoel at gmail dot com>
* docs/plugins/gstreamer-plugins.args:
* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init),
(gst_fd_src_init), (gst_fd_src_update_fd),
(gst_fd_src_set_property), (gst_fd_src_get_property),
(gst_fd_src_create):
* plugins/elements/gstfdsrc.h:
Add timeout property like udpsrc. Fixes #538628.
Add some more docs and example pipelines.
2008-06-20 10:02:14 +00:00
Wim Taymans 7a0d8307e8 plugins/elements/gsttypefindelement.c: Use faster and safer _pad_push_event().
Original commit message from CVS:
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_src_event),
(gst_type_find_element_handle_event):
Use faster and safer _pad_push_event().
2008-05-27 10:57:11 +00:00
Wim Taymans 095ce0b2b3 plugins/elements/: Small cleanups. Add note adbout g_fopen() on windows and why we don't use it yet.
Original commit message from CVS:
* plugins/elements/gstfilesink.c: (gst_file_sink_set_location),
(gst_file_sink_render):
* plugins/elements/gstfilesrc.c: (gst_file_src_set_location),
(gst_file_src_start):
Small cleanups. Add note adbout g_fopen() on windows and why we don't
use it yet.
2008-05-21 16:06:53 +00:00
Sebastian Dröge 65715dbc66 plugins/elements/: Use custom marshalers that take GstMiniObject as first parameter.
Original commit message from CVS:
* plugins/elements/gstfakesink.c:
(marshal_VOID__MINIOBJECT_OBJECT), (gst_fake_sink_class_init):
* plugins/elements/gstfakesrc.c: (marshal_VOID__MINIOBJECT_OBJECT),
(gst_fake_src_class_init):
Use custom marshalers that take GstMiniObject as first parameter.
Using OBJECT as parameter while a GstMiniObject is given will lead
to assertions if built with G_ENABLE_DEBUG. Fixes bug #525532.
2008-05-13 12:54:00 +00:00
Sebastian Dröge f2422145da plugins/elements/gsttypefindelement.c: Clean up on FLUSH_STOP and not FLUSH_START. Forward both events immediately.
Original commit message from CVS:
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_handle_event),
(gst_type_find_element_send_cached_events),
(gst_type_find_element_change_state):
Clean up on FLUSH_STOP and not FLUSH_START. Forward both events
immediately.
2008-05-13 12:38:31 +00:00
Sebastian Dröge 88c412bdc1 plugins/elements/gsttypefindelement.c: Forward FLUSH_START events immediately and clean up instead of caching them.
Original commit message from CVS:
* plugins/elements/gsttypefindelement.c:
(gst_type_find_handle_src_query), (stop_typefinding),
(gst_type_find_element_handle_event),
(gst_type_find_element_send_cached_events),
(gst_type_find_element_change_state):
Forward FLUSH_START events immediately and clean up instead of
caching them.
2008-05-13 11:45:24 +00:00
Jan Schmidt 4fa54750f6 plugins/elements/gstmultiqueue.c: Add documentation for the signals to push our core plugin docs coverage back up to ...
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c:
Add documentation for the signals to push our core plugin docs
coverage back up to 100%.
2008-05-09 14:02:53 +00:00
Wim Taymans ae658f35dd plugins/elements/gstfakesrc.*: Added format property to control the format of the newsegment events.
Original commit message from CVS:
* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init),
(gst_fake_src_init), (gst_fake_src_set_property),
(gst_fake_src_get_property), (gst_fake_src_start):
* plugins/elements/gstfakesrc.h:
Added format property to control the format of the newsegment events.
API: GstFakeSrc:format
2008-05-07 09:34:58 +00:00
Tim-Philipp Müller 76f4e0eec9 plugins/elements/gstmultiqueue.c: Small docs fix.
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c:
Small docs fix.
2008-05-05 16:25:23 +00:00
Tim-Philipp Müller 449a426169 plugins/elements/gstqueue.c: Since we're not called only from the chain function any longer, we can't assume that the...
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_leak_downstream):
Since we're not called only from the chain function any longer,
we can't assume that there's always data in the queue, so move
the is_full check to the beginning of the loop (otherwise we'd
hit the assert when changing the limit properties while the
queue is empty or not running yet).
Also, only set a discont if items were actually removed from
the queue.
* tests/check/elements/queue.c: (test_leaky_downstream):
Test case for the above.
2008-04-30 14:20:48 +00:00
Jonas Holmberg 0da9f87257 plugins/elements/gstqueue.c: When changing thr max capacity of a leaky queue, immediatly drop buffers instead of wait...
Original commit message from CVS:
Patch by: Jonas Holmberg <jonas dot holmberg at axis dot com>
* plugins/elements/gstqueue.c: (gst_queue_leak_downstream),
(gst_queue_chain), (queue_capacity_change),
(gst_queue_set_property):
When changing thr max capacity of a leaky queue, immediatly drop buffers
instead of waiting for a push on the sinkpad. Fixes #530637.
2008-04-30 09:35:43 +00:00
Olivier Crete 8c484d5a14 plugins/elements/gstqueue.c: Add the min-threshold to the min latency if possible. Fixes #529148.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* plugins/elements/gstqueue.c: (gst_queue_handle_src_query):
Add the min-threshold to the min latency if possible. Fixes #529148.
2008-04-21 08:34:09 +00:00
Sebastian Dröge 64bf111c92 plugins/elements/gstidentity.c: Fix imperfect timestamp/offset checks when we get another NEWSEGMENT event after proc...
Original commit message from CVS:
* plugins/elements/gstidentity.c: (gst_identity_event),
(gst_identity_start):
Fix imperfect timestamp/offset checks when we get another NEWSEGMENT
event after processing some data. Fixes bug #526042.
2008-04-09 08:19:36 +00:00
Sebastian Dröge cc253fbc60 plugins/indexers/: Use GSlice when possible.
Original commit message from CVS:
* plugins/indexers/gstfileindex.c: (_file_index_id_free),
(gst_file_index_load), (gst_file_index_add_id),
(gst_file_index_get_assoc_entry):
* plugins/indexers/gstmemindex.c: (gst_mem_index_free_format),
(gst_mem_index_free_id), (gst_mem_index_add_id),
(gst_mem_index_index_format):
Use GSlice when possible.
2008-04-03 07:52:31 +00:00
Wim Taymans 9825935d6d plugins/elements/gsttypefindelement.*: Cleanup properties.
Original commit message from CVS:
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_class_init),
(gst_type_find_element_set_property),
(gst_type_find_element_get_property),
(gst_type_find_element_activate):
* plugins/elements/gsttypefindelement.h:
Cleanup properties.
Fix pad leak when peer query fails.
We can still typefind when the peer returns -1.
Add property to force caps and bypass typefinding. This will be used in
uridecodebin.
API::force-caps
2008-04-02 17:21:40 +00:00
Mark Nauwelaerts d82688054e plugins/elements/gstidentity.c: Identity is not always a passthrough element, it can modify the buffer timestamps whe...
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw at skynet be>
* plugins/elements/gstidentity.c: (gst_identity_class_init),
(gst_identity_init), (gst_identity_prepare_output_buffer):
Identity is not always a passthrough element, it can modify the buffer
timestamps when it has a datarate and operates in single-segment mode.
We therefore make it an in_place filter with a custom buffer prepare
function that conditionally makes the input buffer metadata writable
when needed.  Fixes #523985.
2008-03-24 16:56:36 +00:00
Wim Taymans 4b608cc1f1 plugins/elements/: Also retry our poll_wait when we get EAGAIN. Fixes #524041.
Original commit message from CVS:
* plugins/elements/gstfdsink.c: (gst_fd_sink_render):
* plugins/elements/gstfdsrc.c: (gst_fd_src_create):
Also retry our poll_wait when we get EAGAIN. Fixes #524041.
2008-03-24 16:31:30 +00:00
Wim Taymans 60da0d3654 plugins/elements/gstmultiqueue.c: When trying to make room in the queue, bump the max allowed buffers bigger than the...
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c: (single_queue_overrun_cb),
(single_queue_underrun_cb):
When trying to make room in the queue, bump the max allowed buffers
bigger than the current amount of buffers in the queue. this fixes some
nasty deadlocks in multiqueue when dynamically changing the limits of
the queue.
2008-03-24 10:38:31 +00:00
Sebastian Dröge b0346dff44 Define G_PARAM_STATIC_STRINGS if it's undefined (GLib < 2.13.0) and use it everywhere for GParamSpecs that use static...
Original commit message from CVS:
* docs/pwg/advanced-dparams.xml:
* docs/pwg/building-props.xml:
* docs/pwg/other-source.xml:
* gst/glib-compat.h:
* gst/gstbin.c: (gst_bin_class_init):
* gst/gstclock.c: (gst_clock_class_init):
* gst/gstindex.c: (gst_index_class_init):
* gst/gstobject.c: (gst_object_class_init):
* gst/gstpad.c: (gst_pad_class_init):
* gst/gstpipeline.c: (gst_pipeline_class_init):
* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init):
* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init):
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_class_init):
* libs/gst/base/gstdataqueue.c: (gst_data_queue_class_init):
* libs/gst/check/gstcheck.c: (_gst_check_fault_handler_restore),
(_gst_check_fault_handler_sighandler),
(_gst_check_fault_handler_setup), (gst_check_init):
* libs/gst/controller/gstcontroller.c:
(_gst_controller_class_init):
* libs/gst/controller/gstlfocontrolsource.c:
(gst_lfo_control_source_class_init):
* libs/gst/net/gstnetclientclock.c:
(gst_net_client_clock_class_init):
* libs/gst/net/gstnettimeprovider.c:
(gst_net_time_provider_class_init):
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_class_init):
* plugins/elements/gstfakesink.c: (gst_fake_sink_class_init):
* plugins/elements/gstfakesrc.c: (gst_fake_src_class_init):
* plugins/elements/gstfdsink.c: (gst_fd_sink_class_init):
* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init):
* plugins/elements/gstfilesink.c: (gst_file_sink_class_init):
* plugins/elements/gstfilesrc.c: (gst_file_src_class_init):
* plugins/elements/gstidentity.c: (gst_identity_class_init):
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_class_init):
* plugins/elements/gstqueue.c: (gst_queue_class_init):
* plugins/elements/gsttee.c: (gst_tee_class_init):
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_class_init):
* plugins/indexers/gstfileindex.c: (gst_file_index_class_init):
Define G_PARAM_STATIC_STRINGS if it's undefined (GLib < 2.13.0) and
use it everywhere for GParamSpecs that use static strings (i.e. all).
This gives us less memory usage, fewer allocations and thus less
memory defragmentation. Fixes bug #523806.
2008-03-22 14:56:17 +00:00
Ole André Vadla Ravnås 8a6042989a Remove GstPollMode from the API, it does not make sense to let the application control this.
Original commit message from CVS:
Patch by: Ole André Vadla Ravnås
<ole dot andre dot ravnas at tandberg dot com>
* docs/gst/gstreamer-sections.txt:
* gst/gstpoll.c: (find_index), (gst_poll_free_winsock_event),
(gst_poll_update_winsock_event_mask), (gst_poll_new),
(gst_poll_free), (gst_poll_fd_init), (gst_poll_add_fd_unlocked),
(gst_poll_remove_fd), (gst_poll_fd_ctl_write),
(gst_poll_fd_ctl_read_unlocked), (gst_poll_fd_has_closed),
(gst_poll_fd_has_error), (gst_poll_fd_can_read_unlocked),
(gst_poll_fd_can_write), (gst_poll_wait),
(gst_poll_set_controllable), (gst_poll_restart),
(gst_poll_set_flushing):
* gst/gstpoll.h:
* libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_new):
* libs/gst/net/gstnettimeprovider.c: (gst_net_time_provider_start),
(gst_net_time_provider_new):
* plugins/elements/gstfdsink.c: (gst_fd_sink_start):
* plugins/elements/gstfdsrc.c: (gst_fd_src_start):
* tests/benchmarks/gstpollstress.c: (main):
* tests/check/gst/gstpoll.c: (GST_START_TEST), (gst_poll_suite):
Remove GstPollMode from the API, it does not make sense to let the
application control this.
Add support for Win32.
Fix the testsuite. Fixes #520671.
2008-03-07 15:39:45 +00:00
Edward Hervey fdeea4f9dc Switch to using portabl gsize/gssize instead of size_t/ssize_t
Original commit message from CVS:
* gst/gstregistrybinary.c: (gst_registry_binary_write),
(gst_registry_binary_read_cache):
* gst/gstregistryxml.c: (gst_registry_save):
* gst/gsturi.c: (unescape_string), (gst_uri_has_protocol):
* plugins/elements/gstfilesink.c: (gst_file_sink_open_file):
* plugins/elements/gstfilesrc.c: (gst_file_src_map_region),
(gst_file_src_map_small_region), (gst_file_src_create_mmap):
Switch to using portabl gsize/gssize instead of size_t/ssize_t
Fixes #520152
2008-03-03 18:42:04 +00:00
Sebastian Dröge b997b0545a Correct all relevant warnings found by the sparse semantic code analyzer. This include marking several symbols static...
Original commit message from CVS:
* gst/gstconfig.h.in:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_read_buffer):
* libs/gst/check/gstcheck.c: (gst_check_log_message_func),
(gst_check_log_critical_func), (gst_check_drop_buffers),
(gst_check_element_push_buffer_list):
* libs/gst/controller/gstcontroller.c: (gst_controller_get),
(gst_controller_get_type):
* libs/gst/controller/gsthelper.c: (gst_object_control_properties),
(gst_object_get_controller), (gst_object_get_control_source):
* libs/gst/controller/gstinterpolationcontrolsource.c:
(gst_interpolation_control_source_new):
* libs/gst/controller/gstlfocontrolsource.c:
(gst_lfo_control_source_new):
* libs/gst/dataprotocol/dataprotocol.c:
(gst_dp_event_from_packet_0_2):
* plugins/elements/gstfdsrc.c:
* plugins/elements/gstmultiqueue.c:
* plugins/elements/gsttee.c:
* plugins/elements/gsttypefindelement.c:
* plugins/indexers/gstfileindex.c: (_file_index_id_save_xml),
(gst_file_index_add_association):
* plugins/indexers/gstmemindex.c:
* tests/benchmarks/gstpollstress.c: (mess_some_more):
* tests/check/elements/queue.c: (setup_queue):
* tests/check/gst/gstpipeline.c:
* tests/check/libs/collectpads.c: (setup), (teardown),
(gst_collect_pads_suite):
* tests/examples/adapter/adapter_test.c:
* tests/examples/metadata/read-metadata.c: (make_pipeline):
* tests/examples/xml/createxml.c:
* tests/examples/xml/runxml.c:
* tools/gst-inspect.c:
* tools/gst-run.c:
Correct all relevant warnings found by the sparse semantic code
analyzer. This include marking several symbols static, using
NULL instead of 0 for pointers, not using variable sized arrays
on the stack, moving variable declarations to the beginning of
a block and using "foo (void)" instead of "foo ()" for declarations.
2008-02-29 12:41:33 +00:00
Sebastian Dröge c483eb5489 plugins/elements/: Don't reset GstPollFDs, this is not necessary at all.
Original commit message from CVS:
* plugins/elements/gstfdsink.c: (gst_fd_sink_update_fd):
* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
Don't reset GstPollFDs, this is not necessary at all.
* tests/check/gst/gstpoll.c: (test_poll_wait), (GST_START_TEST),
(delayed_restart), (delayed_control):
Use GST_POLL_FD_INIT.
2008-02-29 12:05:55 +00:00
Wim Taymans a7bc443923 gst/gstpoll.*: Added Since tags.
Original commit message from CVS:
* gst/gstpoll.c: (gst_poll_fd_init):
* gst/gstpoll.h:
Added Since tags.
* plugins/elements/gstfdsink.c: (gst_fd_sink_update_fd):
Use some more init macros.
2008-02-29 11:57:42 +00:00
Wim Taymans 68a10adb81 plugins/elements/: Use init macros and functions.
Original commit message from CVS:
* plugins/elements/gstfdsink.c: (gst_fd_sink_start):
* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
Use init macros and functions.
2008-02-29 11:20:01 +00:00
Sebastian Dröge 4c31dc7cc4 Initialize some uninitialized variables as spotted by valgrind.
Original commit message from CVS:
* plugins/elements/gstfdsink.c: (gst_fd_sink_start),
(gst_fd_sink_update_fd):
* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd):
* tests/check/gst/gstpoll.c: (test_poll_wait), (GST_START_TEST),
(delayed_restart), (delayed_control):
Initialize some uninitialized variables as spotted by valgrind.
2008-02-28 19:58:26 +00:00
Peter Kjellerstedt a711d9f04f plugins/elements/: Port to GstPoll. See #505417.
Original commit message from CVS:
Patch by: Peter Kjellerstedt <pkj at axis dot com>
* plugins/elements/gstfdsink.c: (gst_fd_sink_render),
(gst_fd_sink_start), (gst_fd_sink_stop), (gst_fd_sink_unlock),
(gst_fd_sink_unlock_stop), (gst_fd_sink_update_fd):
* plugins/elements/gstfdsink.h:
* plugins/elements/gstfdsrc.c: (gst_fd_src_update_fd),
(gst_fd_src_start), (gst_fd_src_stop), (gst_fd_src_unlock),
(gst_fd_src_unlock_stop), (gst_fd_src_create),
(gst_fd_src_uri_set_uri):
* plugins/elements/gstfdsrc.h:
Port to GstPoll. See #505417.
2008-02-28 10:18:02 +00:00
Stefan Kost 10a0bd0e5a plugins/elements/gstqueue.c: Ensure that buffer metadata is writeable, before modifying. Spotted by
Original commit message from CVS:
* plugins/elements/gstqueue.c:
Ensure that buffer metadata is writeable, before modifying. Spotted by
Mike.
2008-02-21 10:22:36 +00:00
Stefan Kost 0b9cfcfbcd plugins/elements/gstqueue.*: When dropping buffers in leaky modes, mark next buffers we sent as
Original commit message from CVS:
* plugins/elements/gstqueue.c:
* plugins/elements/gstqueue.h:
When dropping buffers in leaky modes, mark next buffers we sent as
DISCONT.
2008-02-20 15:44:33 +00:00
Tim-Philipp Müller 62aa68ade5 plugins/elements/gstfilesrc.c: Also, if mmap() fails that would be a READ error, not OPEN_READ.
Original commit message from CVS:
* plugins/elements/gstfilesrc.c: (gst_file_src_map_region):
Also, if mmap() fails that would be a READ error, not OPEN_READ.
2008-02-20 12:31:50 +00:00
Tim-Philipp Müller 5a0b5789a3 plugins/elements/: Remove GstBufferStore, no idea why we were still building it.
Original commit message from CVS:
* plugins/elements/Makefile.am:
* plugins/elements/gstbufferstore.c:
* plugins/elements/gstbufferstore.h:
* plugins/elements/gsttypefindelement.h:
Remove GstBufferStore, no idea why we were still building it.
It's not used anywhere and superseded by GstAdapter.
* plugins/elements/gstfilesrc.c: (gst_file_src_map_region),
(gst_file_src_create_mmap):
* plugins/indexers/gstfileindex.c: (gst_file_index_add_association):
Printf format fixes for 64-bit integers.
2008-02-20 12:26:19 +00:00
Sebastian Dröge 109511b55b Properly chain up finalize functions to the parent class.
Original commit message from CVS:
* gst/gstbuffer.c: (gst_buffer_class_init), (gst_buffer_finalize):
* gst/gstevent.c: (gst_event_class_init), (gst_event_finalize):
* gst/gstmessage.c: (gst_message_class_init),
(gst_message_finalize):
* gst/gstquery.c: (gst_query_class_init), (gst_query_finalize):
* plugins/elements/gstfilesrc.c: (gst_mmap_buffer_class_init),
(gst_mmap_buffer_finalize):
Properly chain up finalize functions to the parent class.
2008-02-12 12:04:43 +00:00
Stefan Kost 502337a510 gst/gstconfig.h.in: Add 'id' for example.
Original commit message from CVS:
* gst/gstconfig.h.in:
Add 'id' for example.
* gst/gstpad.c:
* gst/gstutils.c:
* plugins/elements/gstfdsink.c:
Link to signals. Doc and comment fixes.
2008-02-06 12:21:05 +00:00
Sebastian Dröge 2faa733276 Revert previous changes to the behaviour of GstPadTemplates, etc and the possiblity to call them in class_init as it ...
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_base_init),
(gst_bin_class_init):
* gst/gstelement.c: (gst_element_base_class_init),
(gst_element_class_add_pad_template):
* gst/gstpadtemplate.c: (gst_pad_template_init):
* gst/gstpipeline.c: (gst_pipeline_get_type),
(gst_pipeline_base_init), (gst_pipeline_class_init):
* libs/gst/base/gstbasesink.c:
* libs/gst/base/gstbasesrc.c: (gst_base_src_get_type),
(gst_base_src_base_init), (gst_base_src_class_init):
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init),
(gst_capsfilter_class_init):
* plugins/elements/gstfakesink.c: (gst_fake_sink_base_init),
(gst_fake_sink_class_init):
* plugins/elements/gstfakesrc.c: (gst_fake_src_base_init),
(gst_fake_src_class_init):
* plugins/elements/gstfdsink.c: (gst_fd_sink_base_init),
(gst_fd_sink_class_init):
* plugins/elements/gstfdsrc.c: (gst_fd_src_base_init),
(gst_fd_src_class_init):
* plugins/elements/gstfilesink.c: (gst_file_sink_base_init),
(gst_file_sink_class_init):
* plugins/elements/gstfilesrc.c: (gst_file_src_base_init),
(gst_file_src_class_init):
* plugins/elements/gstidentity.c: (gst_identity_base_init),
(gst_identity_class_init):
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
(gst_multi_queue_class_init):
* plugins/elements/gstqueue.c: (gst_queue_base_init),
(gst_queue_class_init):
* plugins/elements/gsttee.c: (gst_tee_base_init),
(gst_tee_class_init):
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_base_init),
(gst_type_find_element_class_init):
* tests/check/gst/gstelement.c: (gst_element_suite):
Revert previous changes to the behaviour of GstPadTemplates, etc
and the possiblity to call them in class_init as it breaks too
many elements. Reopens bug #491501.
Should be applied again for 0.11, thus added a few FIXME 0.11 at
several places.
2008-02-05 14:15:15 +00:00
Sebastian Dröge 9db28f8537 Don't use base_init where not absolutely necessary. For example it's not necessary anymore for adding pad templates o...
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_class_init):
* gst/gstpipeline.c: (gst_pipeline_get_type),
(gst_pipeline_class_init):
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_type),
(gst_base_sink_class_init):
* libs/gst/base/gstbasesrc.c: (gst_base_src_get_type),
(gst_base_src_class_init):
* libs/gst/base/gstbasetransform.c: (gst_base_transform_get_type),
(gst_base_transform_class_init):
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
(gst_collect_pads_class_init):
* libs/gst/base/gstdataqueue.c: (gst_data_queue_get_type):
* libs/gst/net/gstnettimeprovider.c:
(gst_net_time_provider_base_init),
(gst_net_time_provider_class_init):
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init),
(gst_capsfilter_class_init):
* plugins/elements/gstfakesink.c: (gst_fake_sink_base_init),
(gst_fake_sink_class_init):
* plugins/elements/gstfakesrc.c: (gst_fake_src_base_init),
(gst_fake_src_class_init):
* plugins/elements/gstfdsink.c: (gst_fd_sink_base_init),
(gst_fd_sink_class_init):
* plugins/elements/gstfdsrc.c: (gst_fd_src_base_init),
(gst_fd_src_class_init):
* plugins/elements/gstfilesink.c: (gst_file_sink_base_init),
(gst_file_sink_class_init):
* plugins/elements/gstfilesrc.c: (gst_file_src_base_init),
(gst_file_src_class_init):
* plugins/elements/gstidentity.c: (gst_identity_base_init),
(gst_identity_class_init):
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
(gst_multi_queue_class_init):
* plugins/elements/gstqueue.c: (gst_queue_base_init),
(gst_queue_class_init):
* plugins/elements/gsttee.c: (gst_tee_base_init),
(gst_tee_class_init):
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_base_init),
(gst_type_find_element_class_init):
Don't use base_init where not absolutely necessary. For example it's
not necessary anymore for adding pad templates or setting element
details.
Leave empty base_init functions in several places as GST_BOILERPLATE
still defines and uses them.
2008-02-03 12:04:37 +00:00
Julien Moutte 056d393725 docs/gst/gstreamer-sections.txt: Add GST_CHECK_VERSION to the docs
Original commit message from CVS:
2008-02-01  Julien Moutte  <julien@fluendo.com>

* docs/gst/gstreamer-sections.txt: Add GST_CHECK_VERSION to the
docs
* gst/gstindex.c: (gst_index_class_init),
(gst_index_free_writer),
(gst_index_finalize), (gst_index_entry_free),
(gst_index_add_association): Fix memory leaks.
* gst/gstversion.h.in: Add GST_CHECK_VERSION macro.
* plugins/indexers/gstmemindex.c: (gst_mem_index_class_init),
(gst_mem_index_free_format), (gst_mem_index_free_id),
(gst_mem_index_finalize): Fix memory leaks.
* win32/common/config.h: Updated to CVS HEAD.
2008-02-01 16:37:22 +00:00
Wim Taymans 698ecfc5fd docs/design/part-synchronisation.txt: Update some docs.
Original commit message from CVS:
* docs/design/part-synchronisation.txt:
Update some docs.
* docs/plugins/Makefile.am:
* docs/plugins/gstreamer-plugins-docs.sgml:
* docs/plugins/gstreamer-plugins-sections.txt:
* plugins/elements/gstmultiqueue.c:
Add multiqueue to the docs.
2008-02-01 10:17:40 +00:00
Laurent Glayal 2f22776f23 configure.ac: Check for stdio_ext.h for the filesink changes.
Original commit message from CVS:
Based on Patch by: Laurent Glayal <spglegle at yahoo dot fr>
* configure.ac:
Check for stdio_ext.h for the filesink changes.
* plugins/elements/gstfilesink.c: (buffer_mode_get_type),
(gst_file_sink_class_init), (gst_file_sink_init),
(gst_file_sink_dispose), (gst_file_sink_set_property),
(gst_file_sink_get_property), (gst_file_sink_open_file),
(gst_file_sink_close_file):
* plugins/elements/gstfilesink.h:
Add two properties to control the buffering mode and size.
API: GstFileSink::buffer-mode
API: GstFileSink::buffer-size
2007-12-24 19:11:29 +00:00
Wim Taymans 7797419321 plugins/elements/gstfilesink.c: Be a bit smarter when seeking, like, don't try to do a seek when it's not needed. Thi...
Original commit message from CVS:
* plugins/elements/gstfilesink.c: (gst_file_sink_event):
Be a bit smarter when seeking, like, don't try to do a seek when it's
not needed. This avoids errors when the file is not seekable.
Fixes #499771.
2007-11-27 18:45:38 +00:00
Stefan Kost bb523ea0a3 Due to popular request remove preset interface again. :-(.
Original commit message from CVS:
* docs/gst/gstreamer-docs.sgml:
* docs/gst/gstreamer-sections.txt:
* docs/gst/gstreamer.types.in:
* gst/Makefile.am:
* gst/gst.h:
* gst/gstpreset.c:
* gst/gstpreset.h:
* plugins/elements/gstqueue.c:
Due to popular request remove preset interface again. :-(.
2007-11-26 13:16:00 +00:00
Laurent Glayal 54ff34dc2d plugins/elements/gstidentity.*: Add property to disable handoff signal emission. Fixes #498694.
Original commit message from CVS:
Patch by: Laurent Glayal <spglegle at yahoo dot fr>
* plugins/elements/gstidentity.c: (gst_identity_class_init),
(gst_identity_init), (gst_identity_transform_ip),
(gst_identity_set_property), (gst_identity_get_property):
* plugins/elements/gstidentity.h:
Add property to disable handoff signal emission. Fixes #498694.
API: GstIdentity::signal-handoffs
2007-11-21 13:27:50 +00:00
Jan Schmidt c6fdd66fa5 docs/faq/developing.xml: Add a question about how to submit new translations.
Original commit message from CVS:
* docs/faq/developing.xml:
Add a question about how to submit new translations.
* docs/random/release:
Update the contact email address for the Translation Project
* plugins/elements/gstfdsrc.c:
The parent_class for fdsrc is pushsrc, not GstElement.
2007-11-21 00:24:04 +00:00
Stefan Kost 3aca801f4d gst/gstpreset.c: Add some comments and TODOs.
Original commit message from CVS:
* gst/gstpreset.c:
Add some comments and TODOs.
* gst/gstpreset.h:
Add padding for future changes.
* plugins/elements/gstqueue.c:
Implement the iface.
2007-11-17 17:24:53 +00:00
Tim-Philipp Müller b150d54e1c gtk-doc fixes; trailing-comma-in-enum fix.
Original commit message from CVS:
* docs/plugins/gstreamer-plugins-sections.txt:
* gst/gstdebugutils.h:
* gst/gstxml.h:
* plugins/elements/gstqueue.c:
gtk-doc fixes; trailing-comma-in-enum fix.
2007-11-02 17:43:25 +00:00
Tim-Philipp Müller 403da9f500 plugins/elements/gsttypefindelement.c: Post special error message if we can't determine the type of a stream because ...
Original commit message from CVS:
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_handle_event),
(gst_type_find_element_activate):
Post special error message if we can't determine the type of a stream
because it's empty.
2007-10-29 13:10:01 +00:00
Jan Schmidt f37e97764b plugins/elements/gstmultiqueue.c: Make it so that pads are considered linked until a buffer is pushed and discovered ...
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_set_property),
(gst_multi_queue_request_new_pad), (gst_single_queue_flush),
(gst_multi_queue_loop), (gst_multi_queue_sink_activate_push):
Make it so that pads are considered linked until a buffer is pushed
and discovered otherwise. This avoids problems with decodebin2 hanging
after a seek in the filesrc ! decodebin2 name=d ! fakesink d. ! fakesink
case.
Make sure we lock the multiqueue when updating the max-size properties.
Fix a crash on Solaris in a debug statement in get_request_pad that
passes a NULL string to GST_DEBUG.
* tests/check/elements/multiqueue.c: (mq_dummypad_chain),
(run_output_order_test):
Fix the test to allow the first buffer on not-linked pads to come out
of sequence while multiqueue discovers that they are not-linked.
2007-10-25 15:14:02 +00:00
Wim Taymans 5363f86bb1 plugins/elements/: Fix queue negotiation. If acceptcaps unconditionally returns TRUE, upstream is tricked into thinki...
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c: (gst_single_queue_push_one),
(gst_single_queue_new):
* plugins/elements/gstqueue.c: (gst_queue_init),
(gst_queue_push_one):
Fix queue negotiation. If acceptcaps unconditionally returns TRUE,
upstream is tricked into thinking it can suggest a format downstream
while downstream does not support that format. The real problem is that
core calls acceptcaps when pushing a buffer with new caps, for which we
do a little workaround by setting the caps on the srcpad ourselves
before pushing the buffer (until this is figured out). Fixes #486758.
2007-10-15 11:36:37 +00:00
Wim Taymans 7fbe1b8cd5 plugins/elements/gsttypefindelement.c: Move detecting the input caps of the sinkpad to the setcaps function.
Original commit message from CVS:
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_have_type), (gst_type_find_element_init),
(gst_type_find_element_setcaps), (gst_type_find_element_chain):
Move detecting the input caps of the sinkpad to the setcaps function.
This allows us to update the output caps when we receive new input caps
instead of always using the first detected caps.
2007-10-08 10:28:18 +00:00
Edward Hervey 3a63262829 plugins/elements/gstqueue.c: Comment the segment-related code... in the PROPER function.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_locked_enqueue),
(gst_queue_locked_dequeue):
Comment the segment-related code... in the PROPER function.
See #482147 and my commit from yesterday.
2007-10-02 09:21:48 +00:00
Edward Hervey 296befc9c3 plugins/elements/gstqueue.c: Disable code that's breaking the current-time-level reporting.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_locked_dequeue):
Disable code that's breaking the current-time-level reporting.
See #482147
2007-10-01 12:31:28 +00:00