Commit graph

722 commits

Author SHA1 Message Date
Edward Hervey
5067664c09 typefind: Keep typefind factories sorted in the registry. Fixes #599147
This avoids having to do the sorting everytime we use typefind

The behaviour of gst_type_find_factory_get_list has subtlely changed
in the sense that the order was previously undefined, whereas now
it returns them sorted by rank and then by name.
2009-10-24 10:44:09 +02:00
Edward Hervey
bb0918279f libs/base/typefindhelper: Remove useless typechecking in tight loop
The list against which we run the comparefunc will only contain
GstPluginFeature, therefore remove the 6 expensive type checks we do
for every single comparision.
2009-10-18 17:17:17 +02:00
Wim Taymans
e9f2714ff9 basesrc: fix race in PLAYING->PAUSED->PLAYING
When we quickly switch from PLAYING to PAUSED and back to PLAYING it's possible
in some cases that the task refuses to start, This is because when we go to
PAUSED, we unschedule the clock timeout, which could return UNSCHEDULED when
we're back to PLAYING, causing the task to PAUSE again with a wrong-state.

This patch checks if we are running when we return with an UNSCHEDULED return
value and if we are, try to create a new buffer.

Fixes #597550
2009-10-15 16:30:36 +02:00
Stefan Kost
7fcd73875f basesink: lets keep -1 for segmenst as they are guint64 and not GstClockTime 2009-10-09 17:44:28 +03:00
Stefan Kost
4efc01a61d basesink: use GST_CLOCK_TIME_NONE and GST_CLOCK_TIME_IS_VALID more 2009-10-09 17:15:52 +03:00
Edward Hervey
a8e03abd17 gst/base/basesink: Remove dead assignment.
The code was previously:
* checking if ret was != OK
* .. but if it was FLOW_STEP, swith it to OK
* .. and then not using ret

Instead we just make it more compact by checking if it's OK or STEP.
2009-10-08 08:53:54 +02:00
Tim-Philipp Müller
07d953b791 docs: fix Since: tags in docs for newly-added API 2009-10-07 23:34:44 +01:00
Stefan Kost
fcc5d783df pad: add variants of gst_pad_get_caps() that don't copy caps. Fixes #590941
In most places in core and baseclasses we just need the caps to do caps-
intersections. In that case ref'ed caps are enough (no need to copy).
This patch also switches the code to use the new functions.
API: gst_pad_get_caps_refed(), gst_pad_peer_get_caps_refed()
2009-10-07 22:41:30 +03:00
Mark Nauwelaerts
5f4daa8fd9 dataqueue: fix API documentation typo 2009-10-07 18:51:51 +02:00
Sebastian Dröge
41f7a3fe09 bytewriter: Add a generic byte writer
Fixes bug #590669.
2009-10-07 18:40:31 +02:00
Sebastian Dröge
f4c12be109 bitreader/bytereader: API: Add gst_(bit|byte)_reader_get_size()
... and GST_(BYTE|BIT)_READER() casts.
2009-10-07 17:59:51 +02:00
Sebastian Dröge
c7438c738b bytereader,bitreader: Remove FIXME 0.11 to remove non-inlined functions
The normal functions are always useful to have for bindings, especially
runtime-created bindings like Seed or new GObject-Introspection based
Python bindings.
2009-10-07 17:59:51 +02:00
Edward Hervey
ea9b0cedcd gstdataqueue: new constructor which takes callbacks.
This allows us to avoid going through glib's signalling system
2009-10-07 09:32:05 +02:00
Tim-Philipp Müller
d600ce0a29 bytereader: add inline version of gst_byte_reader_skip 2009-10-07 00:52:23 +01:00
Tim-Philipp Müller
6ce1f0cbce dataqueue, elements: avoid unnecessary runtime type checks 2009-10-06 20:04:10 +01:00
Sebastian Dröge
3c1f41ee7d introspection: Build pkgconfig before all libraries and set PKG_CONFIG_PATH
This way g-ir-scanner can find the gstreamer-0.10 pkg-config file.
2009-09-12 14:35:09 +02:00
Wim Taymans
b3d262d730 fix whitespace 2009-09-07 18:32:10 +02:00
Wim Taymans
8a19dc610e adapter: fix whitespace 2009-09-07 18:32:10 +02:00
Tim-Philipp Müller
96a565bdca bitreader, bytereader: add some FIXME 0.11 comments and fix indenting 2009-09-06 19:44:20 +01:00
Tim-Philipp Müller
4c103b00b5 bytereader: add unchecked and inline versions of the float getters/peekers
API: gst_byte_reader_get_float*_unchecked()
2009-09-06 18:51:18 +01:00
Tim-Philipp Müller
31ab124487 bytereader: add inline versions of the most common getters and setters 2009-09-06 18:51:18 +01:00
Tim-Philipp Müller
080b2e4fd5 bytereader: add inlined _unchecked() variants for some functions
API: gst_byte_reader_skip_unchecked()
API: gst_byte_reader_peek_*_unchecked()
API: gst_byte_reader_get_*_unchecked()
API: gst_byte_reader_{peek,get,dup}_data_unchecked()
2009-09-06 18:51:13 +01:00
Sebastian Dröge
741a946134 introspection: Strip Gst prefix from all types/functions 2009-09-05 12:30:07 +02:00
Sebastian Dröge
4b7518a4e5 introspection: Fix out-of-tree build 2009-09-05 12:04:59 +02:00
Sebastian Dröge
9f16dc384e introspection: Fix build if gir-repository is not installed 2009-09-05 11:51:55 +02:00
Sebastian Dröge
0bb8634b37 gstbase: Add gobject-introspection support 2009-09-05 10:28:46 +02:00
Tim-Philipp Müller
b9657d7477 docs: fix docs for gst_byte_reader_{get|peek}_float*() 2009-09-04 19:50:39 +01:00
Wim Taymans
bcb9eab392 basesrc: whitespace fixes 2009-09-01 16:52:32 +02:00
Wim Taymans
b6728ca46e adapter: whitespace fixes 2009-08-28 18:04:54 +02:00
Thijs Vermeir
0dd051eeb3 Check suggested caps for proxy alloc
Because we are trying to resolve a suggestion here we don't need
to check on caps for proxy_alloc but we need to check on the
suggested caps instead.
2009-08-28 18:04:50 +02:00
Wim Taymans
378594e520 basesink: whitespace fixes 2009-08-27 12:26:40 +02:00
Wim Taymans
76d9349956 basesrc: return result of _set_caps() 2009-08-24 17:57:16 +02:00
Wim Taymans
989d9861e3 basesink: whitespace fixes 2009-08-24 17:56:32 +02:00
Edward Hervey
8eb9d55627 basesink: Remove dead assignments 2009-08-08 14:47:57 +02:00
Stefan Kost
04470fc794 basetransform: use new _caps_can_intersect() 2009-08-06 15:30:33 +03:00
Stefan Kost
cfacd2cbb3 basetransform: only check caps_is_fixed() if they changed
The previous code could call gst_caps_is_fixed() for the same caps many times.
2009-08-06 15:30:33 +03:00
Wim Taymans
a2a973eafd basetransform: clarify _caps_is_equal() 2009-08-06 10:53:25 +02:00
Wim Taymans
ec4d259b67 basetransform: refactor metadata modifications
Check when we need to touch the metadata of the output buffer after selecting
the output buffer so that we have everything in one place.
Also take flags and timestamp modifications into account.
2009-08-06 10:53:22 +02:00
Wim Taymans
db6ce33e3a basetransform: enable optimisation
When we have the same input as output caps, reuse the input caps object. After
the caps refcounting has been sorted out now, we can finally enable this
optimisation.
2009-08-06 10:53:07 +02:00
Wim Taymans
6cf64beb79 basetransform: fix refcounting problem
Add some more debug info.
Make sure that the output buffer has writable metadata before we attempt to set
caps on it.

fixes #583999
2009-08-06 10:52:34 +02:00
Wim Taymans
575e1de88b basesink: cleanups in position queries
Use existing boolean flag to pass position queries upstream. Also add upstream
queries for the last position queries.
2009-08-06 10:45:30 +02:00
Stian Selnes
6033efb920 basesink: Query upstream for the position if conversion in PAUSED failed
Fixes bug #590045.
2009-08-06 06:41:57 +02:00
Kipp Cannon
6bc2bf8307 basetransform: Improve debug output in gst_base_transform_acceptcaps()
Fixes bug #589524.
2009-08-06 06:41:57 +02:00
Sebastian Dröge
6fd97a6d64 basetransform: Don't unset GAP flag if working in passthrough mode
Fixes bug #589314.
2009-08-06 06:41:57 +02:00
Mark Nauwelaerts
eeb6d810bc bytereader: avoid wrap-around in buffer size checks. Fixes #590622. 2009-08-03 20:55:21 +02:00
Edward Hervey
cfb22080e2 collectpads: Get the flushing state with the object lock taken.
Fixes #590056
2009-07-29 11:50:17 +02:00
Edward Hervey
c138aa8648 collectpads: Make sure the CollectData list is up-to-date when reading/setting it
Without this, we risked:
* Checking the flushing state on an unexisting list
* Not setting the flushing state on pads that had just been added

Partially fixes #590056
2009-07-29 11:50:06 +02:00
Edward Hervey
fcbba9b15a collectpads: Split out _check_pads into a version without lock taking.
This is so we can use _check_pads in places where we've already taken
the lock in question.

Partially fixes #590056
2009-07-29 11:49:39 +02:00
Robin Stocker
527da05476 basesrc: don't handle SEEKING queries for formats that don't match the one the source operates in
Return FALSE in basesrc's default query handler when we get a SEEKING query for
a format that's not the one the source operates in. Previously (ie. before, in
the git version) we would return TRUE in that case and seekable=FALSE, which
is more correct, but causes backwards compatibility problems. (Before that
we would change the format of the query when answering, which was completely
broken since callers don't expect that or check for it). Since the SEEKING
query is a fairly recent addition, not all demuxers, parsers and decoders
implement it yet, in which case any SEEKING query by an application will
just be passed upstream where it will then be handled by basesrc. Now, if
e.g. totem does a SEEKING query for TIME format and we have a demuxer that
doesn't implement the query, basesrc would answer it with seekable=FALSE in
most cases, and totem can only take that as authoritative answer, not knowing
that the demuxer doesn't implement the SEEKING query. To avoid this, we make
basesrc return FALSE to SEEKING queries in unhandled formats. That way
applications like totem can fall back on assuming seekability depending on
whether a duration is available, or somesuch. Downstream elements doing
such queries are likely to equate an unhandled query with a non-seekable
response as well, so this should be an acceptable fix for the time being.

See #584838, #588944, #589423 and #589424.
2009-07-24 11:54:31 +01:00
Wim Taymans
141e2af580 basesrc: make tag queuing threadsafe
See #588745
2009-07-20 13:40:16 +02:00