Commit graph

6772 commits

Author SHA1 Message Date
Wim Taymans
a59defb90f pad: don't forward scheduling query
The scheduling query should not be forwarded, because elements need to implement
special code to handle different scheduling methods.
2011-06-13 16:30:22 +02:00
Wim Taymans
d837268a77 buffer: add more debug 2011-06-13 12:04:28 +02:00
Wim Taymans
9b9b758688 bufferpool: small indentation fix 2011-06-13 11:51:08 +02:00
Wim Taymans
468dbbbaaf buffer: pass the allocator as const 2011-06-13 11:50:42 +02:00
Wim Taymans
a14623f925 query: add some more checks
Make sure that the alignment is valid.
When we have a 0 size (variable buffer size), we can't have a bufferpool.
2011-06-11 20:45:42 +02:00
Wim Taymans
bb2d7241fa query: set all default values
Fill all query values with good defaults.
2011-06-11 19:54:47 +02:00
Wim Taymans
6ca5d44704 bufferpool: remove postfix parameter
Remove the postfix parameter, it's not used and can be done differently.
2011-06-11 18:52:42 +02:00
Wim Taymans
2b071ea395 bufferpool: use same alignment values as GstMemory
Use the same alignment values for the bufferpool as we use for the GstMemory
API.
2011-06-10 17:50:27 +02:00
Wim Taymans
2d6a59aa83 pad: add _check_reconfigure() method
Add a method to check and clear the RECONFIGURE flag on a pad.
2011-06-10 17:32:20 +02:00
Wim Taymans
eeb07b3f3d buffer: add support for buffer in memory
Fix the code to support allocating the buffer and memory in one memory block.
Add an extra variable to store the memory of the buffer.
This code is disabled still because of complications.
2011-06-10 16:47:29 +02:00
Wim Taymans
3e5c5fb034 memory: expose default alignment
Export the gst_memory_alignment variable so that others can know the default
configured alignment of the system.
2011-06-10 16:46:12 +02:00
Wim Taymans
7c475cc60f memory: fix is_span
Subtract the offset of the parent from is_span.
2011-06-10 16:19:46 +02:00
Wim Taymans
17ff81fc7d memory: respect configured alignment
Move the alignment from GstBuffer to GstMemory.
make sure memory is at least aligned to the configured values.
2011-06-10 13:59:31 +02:00
Wim Taymans
b27ee30a35 buffer: make new _buffer_allocate method
Make a new method to allocate a buffer + memory that takes the allocator and the
alignment as parameters. Provide a macro for the old method but prefer to use
the new method to encourage plugins to negotiate the allocator properly.
2011-06-10 13:49:23 +02:00
Wim Taymans
2d28891528 Merge branch 'master' into 0.11
Conflicts:
	gst/gstelementfactory.c
	gst/gstelementfactory.h
	gst/gstpad.h
	gst/gstpluginfeature.c
	gst/gstpluginfeature.h
2011-06-10 12:09:49 +02:00
Wim Taymans
bbfec45ecc event: add reset_time boolean to flush_stop event
Add a boolean to the flush_stop event to make it possible to implement flushes
that don't reset_time.
Make basesink post async_done with the reset_time property from the flush stop
event.
Fix some unit tests
2011-06-10 11:55:08 +02:00
Javier Jardón
5d25e4a204 Use "const" instead G_CONST_RETURN
G_CONST_RETURN will be deprecated soon.

https://bugzilla.gnome.org/show_bug.cgi?id=652211
2011-06-09 17:54:27 +01:00
Wim Taymans
ab0ab2fbca pad: use new event methods to replace events
Using the new event methods, we can atomically transfer the event from the
pending list to the active list.
2011-06-09 13:37:28 +02:00
Wim Taymans
1b21f2af8f event: make macros for new miniobject methods 2011-06-09 13:36:52 +02:00
Wim Taymans
1b98eb34d7 miniobject: add new methods to manage miniobject pointers
Add a new method to steal the miniobject stored at a location.
Add a new method to store a miniobject in a location and taking ownership
of the miniobject.
2011-06-09 13:35:08 +02:00
Wim Taymans
9d2953288c pad: fix header 2011-06-09 13:34:19 +02:00
Wim Taymans
98fdfa1815 pad: fix spurious include 2011-06-09 12:31:47 +02:00
Wim Taymans
d8212d941c pad: forward events by default
Always forward all events in the default handler. Previously it used to not
forward caps events by default. It makes more sense to forward the caps events,
if the element is interested in the caps, it will implement an event handler to
retrieve the caps and then it can decide to forward or not. If the element has
no event handler, it probably just doesn't care about caps and it probably is
also not going to modify the data in a way that needs a caps change.
2011-06-09 11:49:20 +02:00
Wim Taymans
4a424c379f buffer: fix typo in docs 2011-06-09 11:13:55 +02:00
Wim Taymans
b0a827cc6b message: rename variable
Rename the new_base_time variable to reset_time, which looks better.
2011-06-08 17:25:43 +02:00
Wim Taymans
3798b5fe5b segment: separate the seek and segment flags
Separate the seek flags and segment flags as separate enums because we might
want to have different flags for both.
2011-06-08 16:41:05 +02:00
Wim Taymans
3cb8b33935 message: move the new_base_time flag to async_done
Move the flag to indicate that a new_base_time should be distributed to the
pipeline, from the async_start to the async_done message. This would allow us to
decide when to reset the pipeline time based on other reasons than the
FLUSH_START event.

The main goal eventually is to make the FLUSH events not reset time at all but
reset the time based on the first buffer or segment that prerolls the pipeline
again.
2011-06-08 13:45:19 +02:00
Edward Hervey
d0b30f01b0 gstbuffer: Remove deprecated GST_BUFFER_* macros
data, size, mallocdata and free_func no longer exist.
2011-06-08 13:30:49 +02:00
Wim Taymans
14a0e31e69 pad: remove setcaps function
Remove the setcaps function, elements should use the caps event to be informed
of the format.
2011-06-08 12:58:29 +02:00
Wim Taymans
b84fff07ea memory: Require implementation to implement _share
Require the memory implementations to implement a share operation. This allows
us to remove the fallback share implementation which uses a different allocator
implementation and complicates things too much.
Update design doc a bit.
2011-06-08 12:04:49 +02:00
Wim Taymans
f6dc8eba34 memory: cleanups and improve docs
Make the fallback copy use the same memory allocator as the original object.
Improve some docs.
Require an alloc function when registering an allocator.
Remove gst_memory_allocator_get_default() and merge the feature in
gst_memory_allocator_find()
Fix locks on the hashtable.
Remove defined but not-implemented gst_memory_span() method.
2011-06-08 11:03:50 +02:00
Wim Taymans
cfd3faef5a memory: pass user_data to the alloc function
Pass the user data that was passed to _register to the alloc function of an
allocator.
2011-06-07 17:54:33 +02:00
Wim Taymans
70e799c8fc memory: fix some typos 2011-06-07 17:34:17 +02:00
Wim Taymans
78ea732149 query: add methods to query allocators
Add API to add and query allocator implementations to/from the ALLOCATION query.
2011-06-07 16:35:07 +02:00
Wim Taymans
acb3ee9b2c memory: use allocators to allocate memory
Rename the GstMemoryImpl to GstMemoryAllocator because that's really what it is.
Add an alloc vmethod to the allocator members.
Improve registration of allocators.
Add methods to get and set the default allocator
Always use an allocator to allocate memory, use the default allocator when NULL
is passed.
Add user_data to the allocator Info so that we can pass extra info to the
allocator new method.
2011-06-07 16:19:33 +02:00
Wim Taymans
b5976339e2 event: move some more defines on top 2011-06-07 13:38:35 +02:00
Wim Taymans
44b4312d96 fix some circular includes
typedef some structs before including other files to avoid circular dependencies
in the header files.
2011-06-07 13:25:26 +02:00
Wim Taymans
016e750a41 utils: remove proxy_setcaps
Remove proxy_setcaps, elements should use the caps event and forward caps
themselves.
2011-06-07 10:52:02 +02:00
Wim Taymans
b5351dadcd pad: Improve pad event forward code
Return TRUE when the pad has no parent or when there are no internally linked
pads.
2011-06-07 10:49:34 +02:00
Wim Taymans
9058499eeb pad: Rename and rework the dispatcher function
Rename gst_pad_dispatcher() to gst_pad_forward() and make it more useful by
iterating the internal links of a pad and handling resync properly.
Add a method gst_pad_event_forward() that unconditionally forwards an event to
all internally linked pads.
Update some pad code to use the new forward function.
2011-06-07 10:02:06 +02:00
Wim Taymans
a767bf2bf9 caps: use the caps event
Use the caps event instead of gst_pad_set_caps() and the setcaps function
2011-06-07 09:43:20 +02:00
Edward Hervey
ba8c8bb2c8 gst: Add enum/flags (de)registration in gst_(de)init 2011-06-06 11:21:23 +02:00
Tim-Philipp Müller
4b920eb5d2 docs: update for API changes
Also remove GST_PAD_CHECKGETRANGEFUNC macro
2011-06-05 18:57:56 +01:00
Tim-Philipp Müller
5a8273e527 Merge branch 'master' into 0.11 2011-06-05 15:48:51 +01:00
Tim-Philipp Müller
6d374e54b9 parse: add prototypes for unused functions to avoid compiler warning
The warning is never fatal, because we don't use -Werror for the
parser helper library build, but the warnings are annoying anyway.
2011-06-05 15:27:19 +01:00
Tim-Philipp Müller
bc69efa7cc info: remove GST_XML debug category as well 2011-06-04 15:23:56 +01:00
Tim-Philipp Müller
a4092cd5c4 Remove everything libxml2- and loadsave-related 2011-06-04 15:22:06 +01:00
David Schleef
f3eac7de22 Work around changes in g_atomic API
See #651514 for details.  It's apparently impossible to write code
that avoids both type punning warnings with old g_atomic headers and
assertions in the new.  Thus, macros and a version check.
2011-06-04 00:36:26 -07:00
Edward Hervey
20d1ee87cb gstpad: Small doc fixup 2011-06-03 18:10:24 +02:00
Wim Taymans
07aca4a698 pad: clean up probe flags 2011-06-03 17:24:45 +02:00
Wim Taymans
f851685f92 pad: check flushing in pullrange too 2011-06-03 16:46:26 +02:00
Wim Taymans
8dda6b462d pad: cleanups
Use defines instead of hardcoded values for masks.
2011-06-03 13:56:04 +02:00
Wim Taymans
7b43f02ed3 structure: fix some more 0.11 fixmes
don't allow spaces in structure names and fix unit tests.
2011-06-03 13:25:54 +02:00
Wim Taymans
89121c18e5 bufferpool: make the default behaviour to wait
The most common case is to not specify any flags when doing the allocation. Make
the allocation from a pool with a maximum amount of buffers block by default for
this reason.
2011-06-03 12:40:56 +02:00
Wim Taymans
5426527b70 ghostpad: remove setcaps functions
Remove the setcaps functions, it is now handled with the caps event.
2011-06-02 19:23:47 +02:00
Wim Taymans
539cceab88 buffer: pass the right alignment 2011-06-02 18:28:54 +02:00
Wim Taymans
b05ee3ddb2 memmory: small cleanup 2011-06-02 18:28:17 +02:00
Wim Taymans
c8fc05743d memory: fix alignment calculations
Fix the alignment calculation.
Improve documentation.
2011-06-02 18:13:33 +02:00
Wim Taymans
d2d23074af pool: debug the config 2011-06-02 18:13:10 +02:00
Wim Taymans
de29ae7b92 utils: remove some macros now in glib
We depend on the right glib now
2011-06-02 15:38:43 +02:00
Wim Taymans
04323a0bb9 structure: fix a FIXME 2011-06-02 15:38:29 +02:00
Wim Taymans
589499c07e utils: use g_printerr() as stated in the FIXME 2011-06-02 15:38:04 +02:00
Wim Taymans
0de2f64e12 element: small cleanups 2011-06-02 15:37:41 +02:00
Wim Taymans
9555a7f8d0 element: inline the recursice state lock 2011-06-02 14:09:46 +02:00
Wim Taymans
b5d35162ae pad: inline the recursive stream lock 2011-06-02 13:46:26 +02:00
Wim Taymans
fde7d867bd pad: remove unused fields and methods and signals 2011-06-02 13:35:52 +02:00
Wim Taymans
d863976e59 pad: use new gst_value_fixate instead
Use the new gst_value_fixate() function instead of our own version.
2011-06-02 13:23:53 +02:00
Wim Taymans
e2b6e88d5f value: add function to fixate a value
Add a function to fixate a GValue. This is the same function as is in GstPad.
2011-06-02 13:21:55 +02:00
Wim Taymans
9553ea1c07 caps: remove some custom refcounting methods
Remove some custom made refcounting methods and use the miniobject ones instead.
2011-06-02 13:18:39 +02:00
Wim Taymans
2b9c34cd70 pad: optimize linking
Optimize linking by only releasing the pad locks when there are link functions
installed on the pads.
Add some G_LIKELY here and there.
Move error paths out of the main code flow.
2011-06-02 12:40:05 +02:00
Wim Taymans
50a8e0431c pad: remove deprecated have-data signal 2011-06-02 12:39:34 +02:00
Wim Taymans
541258f0e9 pad: add idle probe for pull method too 2011-06-02 11:21:09 +02:00
Wim Taymans
e2eae110a9 pad: more cleanups
Use miniobject unref when we can
Reuse existing data type identifier instead of an extra boolean.
2011-06-02 11:01:31 +02:00
Wim Taymans
272b3263aa Merge branch 'master' into 0.11
Conflicts:
	plugins/elements/gstoutputselector.c
2011-06-01 19:47:10 +02:00
Wim Taymans
3f51563319 pad: further improve probes and pad blocking
Keep track of installed number of probes to shortcut emission.
Allow NULL callbacks, this is useful for blocking probes.
Improve probe selection based on the mask, an empty mask for the data or the
scheduling flags equals that all probes match.
Add some more debug info.
Don't check the flushing flag in the probe callback handler, this needs to be
done before calling the handler.
Fix blocking probes.
Fix unit tests
2011-06-01 19:39:20 +02:00
Wim Taymans
8abc457a3b pad: implement pad block with probes 2011-06-01 19:39:16 +02:00
Wim Taymans
a5bbf7f369 utils: remove _full variants of probes
Remove the _full variants and add the destroy notify to the regular methods.
2011-06-01 19:39:11 +02:00
Edward Hervey
c72321b260 gstsegment: Remove dead assignment
base is unconditionally written a couple of lines below
2011-05-31 18:30:50 +02:00
Edward Hervey
ceb86a586e gst: Remove obvious dead assignments 2011-05-31 18:30:30 +02:00
Wim Taymans
fce85f75ff pad: Rework pad blocking, another attempt
Make the PadBlock callback take a GstBlockType parameter to handle the different
kind of stages in the pad block. This provides for more backwards compatibility
in the pad block API.
Separate blocking and unblocking into different methods, only blocking can do a
callback, unblock is always immediately. Also removed synchronous blocking, it
can always be implemented with a callback.
2011-05-30 18:29:06 +02:00
Wim Taymans
565f492af2 Revert "pad: rework pad blocking, first part"
This reverts commit 415da89f3c.

Conflicts:

	gst/gstpad.c
2011-05-30 13:40:04 +02:00
Wim Taymans
9f2424123f pad: improve debugging 2011-05-30 12:27:52 +02:00
Sebastian Dröge
0a80b57d74 value: Consider "1" and "{1}" as equal in gst_value_compare()
Previously this was only done in the is_subset() check but
having it only there brings us into definition-hell where
"1" and "{1}" are subset of each other but not equal.
2011-05-30 11:33:57 +02:00
Sebastian Dröge
58302cedfa Merge branch 'master' into 0.11 2011-05-30 07:41:13 +02:00
Sebastian Dröge
f304196148 caps: Fix subset check for equivalent lists and scalar values
For example "{ 1 }" and "1" are not strictly equal but
both are a subset of each other. Also add a unit test
for this.
2011-05-30 07:38:40 +02:00
Stefan Kost
6c2024f881 docs: xrefs more api around GstStateChange and GstStateChangeReturn. 2011-05-28 10:24:37 +03:00
Stefan Kost
dd6a5d81c4 docs: xref the async messages to GstStateChange 2011-05-28 09:52:55 +03:00
Wim Taymans
415da89f3c pad: rework pad blocking, first part
Make pad block call the callback as soon as the pad is not in use. This makes it
possible to make sure that when the callback is called, no activity is happening
on the pad and that no activity will ever happen until the pad is unblocked
again. This makes pad blocking work when there is no dataflow or after EOS and
greatly helps dynamic pipelines.
Move the probe handling right where we wait on the pad block. The two are
related but not the same and the probe can eventually influence the pad
blocking as we'll se later.
Fix up some broken unit tests or tests that fail with the new behaviour.
2011-05-27 17:37:20 +02:00
Sebastian Dröge
30a7fd7b4d Merge branch 'master' into 0.11 2011-05-27 13:58:26 +02:00
Sebastian Dröge
57df188757 caps: Add gst_caps_is_subset_structure()
API: gst_caps_is_subset_structure()

This allows to check if a structure is a subset of given
caps without allocating a new caps instance for it.
2011-05-27 13:55:31 +02:00
Sebastian Dröge
da58834884 structure: Add gst_structure_is_subset()
API: gst_structure_is_subset()
2011-05-27 13:47:11 +02:00
Sebastian Dröge
d98e9acb0f caps: Optimize gst_caps_is_subset()
..and as a result gst_caps_is_equal() and others.

This now only checks if for every subset structure there is
a superset structure in the superset caps. Previously we were
subtracting one from another, creating completely new caps
and then even simplified them.

The new implemention now is about 1.27 times faster and doesn't
break the -base unit tests are anything anymore.
2011-05-27 13:38:51 +02:00
Sebastian Dröge
0cf2dfd0ba caps: Fix subset check in gst_caps_merge()
Caps A are a subset of caps B even if caps B doesn't
have all fields of caps A.

Also add a unit test for this.
2011-05-27 13:37:06 +02:00
Sebastian Dröge
d706ca0859 Revert "caps: Optimize gst_caps_is_subset()"
This reverts commit 32248a9b85.

This breaks some tests in -base and the failures should
be fixed first.
2011-05-27 12:56:43 +02:00
Sebastian Dröge
32248a9b85 caps: Optimize gst_caps_is_subset()
..and as a result gst_caps_is_equal() and others.

This now only checks if for every subset structure there is
a superset structure in the superset caps. Previously we were
subtracting one from another, creating completely new caps
and then even simplified them.

The new implemention now is about 1.27 times faster.
2011-05-27 12:45:59 +02:00
Sebastian Dröge
26ca7546a7 pad: Drop sticky events pushed on flushing srcpads instead of activating them immediately 2011-05-27 11:45:16 +02:00
Wim Taymans
86c8b721b2 pad: refactor _push_event
Rework _push_event() a little so that it drops events on blocking pads.
Make sure that events are forwarded when we unblock.
Add counter on the pad to keep track of busy pads.
2011-05-26 19:45:14 +02:00
Wim Taymans
dd9fb5ebfd pad: refactor pre and post chain code 2011-05-26 18:21:09 +02:00
Wim Taymans
af42e44af5 pad: keep counter for active pads
Keep a counter to mark the amount of threads currently pushing data on the pad.
2011-05-26 17:50:15 +02:00
Wim Taymans
40228b4aa5 pad: refactor pre push code
Refactor the code that is executed as the first step of a push operation where
we check the probes and blocking and resolve the peer.
2011-05-26 17:39:17 +02:00
Wim Taymans
118e325a03 pad: remove pad cache
Remove the pad cache as this is going to be reworked for new pad blocking and
probes.
2011-05-26 17:08:03 +02:00
Wim Taymans
aaba029298 pad: simplify handling of buffer lists
Implement a default buffer-list function in case the element doesn't implement
one.
Also pass buffer-lists to the have-data signal, this allows us to remove some
backward compatibility code.
2011-05-26 16:48:14 +02:00
Wim Taymans
f4f4fa5e8f pad: remove old gst_pad_set_blocked methods 2011-05-26 16:17:31 +02:00
Sebastian Dröge
007b16b024 Merge branch 'master' into 0.11 2011-05-26 13:36:48 +02:00
Tim-Philipp Müller
8a3721a1ca gst: we can now use GLib 2.24 API unconditionally 2011-05-25 16:02:10 +01:00
Руслан Ижбулатов
d56b3ec5aa systemclock: Placate gcc by defining EWOULDBLOCK to something 2011-05-25 12:04:14 +02:00
Руслан Ижбулатов
54a9d8038d poll: Fix WAKE_EVENT() to behave posixly on Windows 2011-05-25 12:04:14 +02:00
Stefan Kost
e0c92982e9 registrybinary: small cleanups
Remove unneeded braces from string define. Small doc improvement.
2011-05-24 20:30:11 +03:00
Stefan Kost
75ba14c79b preset: use guint for the version number parts
Use unsigned integers for extra safety (like we do in plugin version parsing).
2011-05-24 20:30:11 +03:00
Wim Taymans
0d546490f6 remove some more deprecated methods 2011-05-24 18:39:41 +02:00
Wim Taymans
7da32991df padtemplate: remove unused flag 2011-05-24 18:29:48 +02:00
Wim Taymans
2c221a5729 feature: use object name
Remove the name property from the plugin feature and port code to use the object
name instead.
2011-05-24 18:17:24 +02:00
Wim Taymans
65b427bf8e remove old glib check 2011-05-24 18:16:36 +02:00
Wim Taymans
7e6d579301 scheduling: port to new scheduling query 2011-05-24 17:39:56 +02:00
Wim Taymans
5fa3082e19 query: add SCHEDULING query
Add a new query to replace the checkgetrange function.
2011-05-24 17:39:56 +02:00
Sebastian Dröge
0bcb5a421a pad: Add gst_pad_sticky_events_iterate() function 2011-05-24 16:17:53 +02:00
Sebastian Dröge
53e53386d7 debugutils: Fix for GstIterator API changes 2011-05-24 13:28:38 +02:00
Sebastian Dröge
de1c3bdd5a Revert "debugutils: Fix for GstIterator API changes"
This reverts commit e1cc3176d6.

This is not the 0.11 branch...
2011-05-24 13:28:00 +02:00
Sebastian Dröge
e1cc3176d6 debugutils: Fix for GstIterator API changes 2011-05-24 13:27:38 +02:00
Wim Taymans
483c0fe490 Merge branch 'master' into 0.11
Conflicts:
	gst/gstpad.h
2011-05-24 09:48:44 +02:00
Kipp Cannon
696a9a694f clock: improve the GST_TIME_FORMAT/ARGS docs 2011-05-24 00:26:40 +03:00
Stefan Kost
1718abcbbb docs: hide this from the docs 2011-05-23 23:40:20 +03:00
Wim Taymans
32ea413a40 event: use GST_SEGMENT_FORMAT for segments 2011-05-23 18:30:19 +02:00
Wim Taymans
8380949994 pad: improve debugging 2011-05-23 18:14:27 +02:00
Stefan Kost
01d8d7d718 deprecation-guards: fixup for commit 9ff4ec3104
Remove the deprecation guards for GST_PLUGIN_DEFINE_STATIC again (even though it
is deprecated) as we use it in the tests. Remove "_" for intlinkfunc.
2011-05-20 15:50:30 +03:00
Wim Taymans
e8080ab874 element: add method to get metadata
Add a method to get the metadata from a klass.
2011-05-20 12:45:06 +02:00
Wim Taymans
1c5c5177f3 factory: fix typo 2011-05-20 12:45:06 +02:00
Wim Taymans
a9edf7c6aa Merge branch 'master' into 0.11
Conflicts:
	docs/plugins/gstreamer-plugins.hierarchy
2011-05-20 12:07:45 +02:00
Wim Taymans
31a314ac5b pad: add pending event for sticky events
Change the sticky event array so that it contains a pending and an active event.
Events on the sinkpad are copied to the pending array and after the eventfunc
returned TRUE, moved to the active event. This allows us to queue new events
like when we do per-pad offsets without removing the currently active event.
Remove the active argument from the gst_pad_get_sticky_event() method, the
pending events are not something we want to expose.
2011-05-20 11:36:25 +02:00
Stefan Kost
aa2bfc9b7f preset: include cleanup
Only have include in the installed header we need to use it. Move the includes
needed by the implementation to the c file.
2011-05-20 00:39:10 +03:00
Wim Taymans
e83d5320a2 pad: apply pad offset on sinkpad events too
Apply the pad offset in the send_event() function as well.
2011-05-19 19:01:09 +02:00
Wim Taymans
e8b8c4aaa6 pad: add per-pad offsets
When linking pads and when copying a segment event from the sourc pad to the
sinkpad, apply the src and sinkpad offsets to the segment base. Make sure that
we only modify the event stored on the sinkpad and never the one on the source
pad.
When changing the pad offset, perform the segment copy with the updated offsets.
When pushing a segment event, apply the srcpad offset before sending the event
to the peer pad.
This part is missing the adjustment of the segment event on the sinkpad, which
is for a later patch.
2011-05-19 18:34:43 +02:00
Wim Taymans
c8340e7762 pad: add methods to adjust the offset
Add methods to adjust the offset. This will be used to change the segment events
with an offset so that we can tweak the timing of the stream on a per-pad base.
2011-05-19 18:34:43 +02:00
Wim Taymans
4a646e0e76 Merge branch 'master' into 0.11
Conflicts:
	gst/gstghostpad.h
2011-05-19 11:30:06 +02:00
Wim Taymans
be01ecf530 pad: store sticky events on flushing sinkpads too
First store the sticky event on the sinkpad in the inactive state, then check
for the flushing flag. We want to have the events on sinkpads at all times,
ready to be activated when the pad becomes active.
2011-05-18 19:43:44 +02:00
Wim Taymans
500125ab4f pad: move caps check to central location
Make a function to call the eventfunc and perform a caps check when we are
dispatching a caps event.

This makes sure that all code paths correctly check that the caps are
acceptable before sending the caps to the eventfunction.
2011-05-18 18:53:35 +02:00
Wim Taymans
25989f3c8d ghostpad: avoid calling setcaps too many times
Don't call setcaps, the caps event will take care of propagating the caps on all
pads.
2011-05-18 18:52:22 +02:00
Wim Taymans
dc520c11bc query: add allocation query name
Add ALLOCATION query name and guard some functions against invalid queries.
2011-05-18 18:48:03 +02:00
Sebastian Dröge
a46c9c2a62 event: Make SEGMENT event parsing API more consistent with the others 2011-05-18 16:56:43 +02:00
Sebastian Dröge
99962c72e4 pad: Don't forget to take the object lock when getting a sticky event 2011-05-18 16:29:10 +02:00
Sebastian Dröge
6b30f0b056 pad: Add function to get sticky events from a pad
API: gst_pad_get_sticky_event()
2011-05-18 16:26:54 +02:00
Wim Taymans
b1676b8c30 event: fix event copy
Fix parent refcount on event copy.
Fix unit test.
2011-05-18 15:43:20 +02:00
Wim Taymans
fa6bcde7e3 pad: notify caps property change in callsetcaps
Notify the caps property change in the backwards compatible function to call the
setcaps function.
2011-05-18 15:29:25 +02:00
Stefan Kost
79b22cb2ed docs: use the same name for the argument in prototype and docs 2011-05-18 15:03:46 +03:00
Wim Taymans
e39182a085 Merge branch 'master' into 0.11
Conflicts:
	gst/gstminiobject.c
	gst/gstpad.c
	gst/gstpad.h
	gst/gstplugin.h
	libs/gst/base/gstbaseparse.c
2011-05-18 13:14:57 +02:00
Wim Taymans
029ac4597e pad: rework sticky events a little
Update the design docs with some clear rules for how sticky events are
handled.
Reimplement the sticky tags, use a small structure to hold the event and its
current state (active or inactive).
Events on sinkpads only become active when the event function returned success
for the event.
When linking, only update events that are different.
Avoid making a copy of the event array, use the object lock to protect the event
array and release it only to call the event function. This will need to check
if something changed, later.
Disable a test in the unit test, it can't work yet.
2011-05-18 11:08:52 +02:00
Stefan Kost
bd302bb63d pluginfeature: avoid duplicating feature->name
The feature name is not supposed to change over time anyway. In order to enforce
this parentize features to the registry and make the feature->name pointing to
GstObject:name. In 0.11 we could consider of removing the feature->name variable
(FIXME comment added).

Fixes: #459466
2011-05-18 09:55:57 +03:00
Stefan Kost
9ff4ec3104 docs: add deprecation guards
Move GstPadIntLinkFunction to private header to avoid a dozen #ifdefs. Use a
gpointer in public header instead.
2011-05-18 09:55:57 +03:00
Wim Taymans
93a80e2d91 pad: don't push sticky events on flush
Only allow serialized and non-flush events forward the sticky events.
2011-05-17 19:03:30 +02:00
Wim Taymans
ba534c6416 pad: add more debug 2011-05-17 18:23:06 +02:00
Wim Taymans
5642f9db8c ghostpad: remove unused code
The code to make sure that caps are properly set on both pads, it now happens
automatically with the caps event.
2011-05-17 18:21:38 +02:00
Wim Taymans
82cc487776 segment: handle wraparound better
Now that we use unsigned values for the segment, handle wraparound when seeking
better.
2011-05-17 17:51:58 +02:00
Sebastian Dröge
b0d106fefa event: The RECONFIGURE element only exists in 0.11
Implementing it properly in 0.10 seems to be impossible.
2011-05-17 14:01:05 +02:00
Sebastian Dröge
c7789694fb gst: Update for caps/pad template related API changes 2011-05-17 13:14:04 +02:00
Sebastian Dröge
5f406248eb element: Consider GstPadTemplate as immutable
Don't copy the templates when creating subclasses but only increase
their refcount.
2011-05-17 13:13:51 +02:00
Sebastian Dröge
be00534878 padtemplate: Create pad templates with floating refs
And take ownership of the floating ref in gst_element_add_pad_template()
2011-05-17 13:13:51 +02:00
Sebastian Dröge
dd89e924db padtemplate: Improve reference handling of the template's caps
gst_pad_template_new() does not take ownership of the caps anymore.
2011-05-17 13:13:51 +02:00
Tim-Philipp Müller
da21881f28 miniobject: delay private data initialisation until actually needed
We only use the private instance data for weak references for now,
so can delay initialisation until actually needed (microoptimisation)
2011-05-17 11:38:30 +01:00
Sebastian Dröge
b5bc5b459a pad: Let template related functions return new references
gst_pad_template_get_caps(), gst_pad_get_pad_template_caps()
and gst_pad_get_pad_template() return a new reference of the
caps or template now and the return value needs to be
unreffed after usage.
2011-05-17 12:00:18 +02:00
Sebastian Dröge
50f91c0825 Revert "event: example of how to optimize events"
This reverts commit fa28e2c5e6.

The optimization only has minimal impact on the performance and
makes everything more complex.
2011-05-17 11:45:46 +02:00
Sebastian Dröge
b7482263cc Revert "event: update the structure when needed"
This reverts commit 905100cdbe.
2011-05-17 11:45:42 +02:00
Sebastian Dröge
077cf48689 structure: Fix compilation 2011-05-17 11:22:58 +02:00
Sebastian Dröge
3d2127f865 Revert "query: allow _make_writable on query handlers"
This reverts commit cf4fbc005c.

This change did not improve the situation for bindings because
queries are usually created, then directly passed to a function
and not stored elsewhere, and the writability problem with
miniobjects usually happens with buffers or caps instead.
2011-05-17 11:21:41 +02:00
Sebastian Dröge
d0f34fe6b2 Revert "bin: Dereference GstQuery** before passing it to GST_QUERY_TYPE_NAME"
This reverts commit 437c92b403.
2011-05-17 11:21:41 +02:00
Sebastian Dröge
c096199fb9 Revert "ghostpad: fix g_return_* with new query"
This reverts commit 877c1c28ff.
2011-05-17 11:21:36 +02:00
Sebastian Dröge
e34c26b509 Merge branch 'master' into 0.11
Conflicts:
	win32/common/libgstreamer.def
2011-05-17 09:43:21 +02:00
Sebastian Dröge
b4dea3a1d3 structure: Make both parameters to gst_structure_is_equal() const 2011-05-17 09:35:54 +02:00
Sebastian Dröge
53ef31718d structure: Update Since markers to the correct version 2011-05-17 09:33:47 +02:00
Sebastian Dröge
a08a17dfbd structure: Add gst_structure_intersect()
API: gst_structure_intersect()
2011-05-17 09:33:04 +02:00
Edward Hervey
64725facb5 gststructure: Add gst_structure_can_intersect API
Allows checking if two structures can intersect without having to
go through GstCaps

API: gst_structure_can_intersect

https://bugzilla.gnome.org/show_bug.cgi?id=629300
2011-05-17 09:28:06 +02:00
Edward Hervey
ae46eb3a38 gstructure: New API: gst_structure_is_equal
Allows checking equality of GstStructure without having to create
intermediary GstCaps.

API: gst_structure_is_equal

https://bugzilla.gnome.org/show_bug.cgi?id=629300
2011-05-17 09:28:00 +02:00
Wim Taymans
887838aefe pad: avoid setting NULL caps on pads 2011-05-16 19:04:35 +02:00
Wim Taymans
32f1899354 caps: only add the structure when we could set the parent 2011-05-16 18:12:33 +02:00
Wim Taymans
877c1c28ff ghostpad: fix g_return_* with new query 2011-05-16 17:53:48 +02:00
Sebastian Dröge
b935a814d9 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	docs/gst/gstreamer-sections.txt
	gst/gstbin.c
	gst/gstelement.c
	gst/gstelement.h
	gst/gstghostpad.c
	gst/gstminiobject.c
	gst/gstminiobject.h
	libs/gst/base/gstbasesrc.c
	libs/gst/base/gstbasetransform.c
	plugins/elements/gstinputselector.c
	tests/check/gst/gstminiobject.c
2011-05-16 16:53:04 +02:00
Sebastian Dröge
3fa1594aaf gst: Add a filter caps parameter to all get_caps() functions
This is used to pass the possible caps and preferences to
the pad and to allow better negotiation decisions.
2011-05-16 15:33:10 +02:00
Wim Taymans
bdbc069348 Rework GstSegment handling
Improve GstSegment, rename some fields. The idea is to have the GstSegment
structure represent the timing structure of the buffers as they are generated by
the source or demuxer element.
gst_segment_set_seek() -> gst_segment_do_seek()
Rename the NEWSEGMENT event to SEGMENT.
Make parsing of the SEGMENT event into a GstSegment structure.
Pass a GstSegment structure when making a new SEGMENT event. This allows us to
pass the timing info directly to the next element. No accumulation is needed in
the receiving element, all the info is inside the element.
Remove gst_segment_set_newsegment(): This function as used to accumulate
segments received from upstream, which is now not needed anymore because the
segment event contains the complete timing information.
2011-05-16 11:37:52 +02:00
Sebastian Dröge
ddf2489be4 pad: Re-implement notify::caps 2011-05-16 10:25:10 +02:00
Tim-Philipp Müller
76ccd2a1e9 docs: fix up some Since markers and update for new multiqueue args 2011-05-14 14:05:52 +01:00
Sebastian Dröge
7316a88387 bin: Don't interprete pipelines without sink elements as always being in EOS state
Some tests (e.g. elements/capsfilter) have pipelines with dangling
sinkpads and without a sink element. These pipelines can never post
an EOS message (because this is only valid by a sink) and as such
should never get an EOS message posted by the bin.
2011-05-14 11:39:36 +02:00
Sebastian Dröge
cdffc1d5d5 systemclock: Only retry writing to the socket for EAGAIN, EWOULDBLOCK and EINTR
Fixes infinite loop in some cases, bug #650002.
2011-05-14 11:39:35 +02:00
Sebastian Dröge
116972d6eb miniobject: Minor cleanup of last commit 2011-05-14 11:39:35 +02:00
José Alburquerque
cf671d7b0a miniobject: Add weak referencing functionality
API: gst_mini_object_weak_ref()
API: gst_mini_object_weak_unref()

Add weak referencing functionality to GstMiniObject, which
allows to get notifications when an mini object is destroyed
but doesn't increase the real refcount. This is mostly
useful for bindings.

Fixes bug #609473.
2011-05-14 11:39:35 +02:00
Sebastian Dröge
4a836cae9f bin: Only post EOS messages after reaching the PLAYING state
Fixes bug #647756.
2011-05-14 11:39:35 +02:00
Sebastian Dröge
3872b816d2 element: Add GstElement::state_changed vfunc
API: GstElement::state_changed

This is always called when the state of an element has changed and
before the corresponding state-changed message is posted on the bus.
2011-05-14 11:39:35 +02:00
Sebastian Dröge
3c760a3ee5 ghostpad: Add docs for all the new, public functions 2011-05-14 11:39:35 +02:00
Sebastian Dröge
800b738715 ghostpad: Add guards against invalid parameters to the new, public functions 2011-05-14 11:39:35 +02:00
Sebastian Dröge
6807e536b0 ghostpad: Rename ghostpad/proxypad default functions
API: gst_ghost_pad_activate_pull_default
API: gst_ghost_pad_activate_push_default
API: gst_ghost_pad_internal_activate_pull_default
API: gst_ghost_pad_internal_activate_push_default
API: gst_ghost_pad_link_default
API: gst_ghost_pad_setcaps_default
API: gst_ghost_pad_unlink_default
API: gst_proxy_pad_acceptcaps_default
API: gst_proxy_pad_bufferalloc_default
API: gst_proxy_pad_chain_default
API: gst_proxy_pad_chain_list_default
API: gst_proxy_pad_checkgetrange_default
API: gst_proxy_pad_event_default
API: gst_proxy_pad_fixatecaps_default
API: gst_proxy_pad_getcaps_default
API: gst_proxy_pad_getrange_default
API: gst_proxy_pad_iterate_internal_links_default
API: gst_proxy_pad_query_default
API: gst_proxy_pad_query_type_default
API: gst_proxy_pad_setcaps_default
2011-05-14 11:39:34 +02:00
Sebastian Dröge
4c1e594ae5 ghostpad: Make all the internal caps functions public
This is useful if ghostpad/proxypads should be used but
additional code should be executed, e.g. for tracking
segments in the event function.
2011-05-14 11:39:34 +02:00
Sebastian Dröge
b36ce63f38 ghostpad: Only implement the iterate_internal_links function on proxypads
ghostpads inherit it from their parent class. Also make it threadsafe.
2011-05-14 11:39:34 +02:00
Sebastian Dröge
a216426bb6 ghostpad: API: Expose gst_proxy_pad_get_internal()
This allows to get the internal pad of ghostpads and
proxypads without using gst_pad_iterate_internal_links()
and is much more convenient.

The internal pad of a ghostpad is the pad of the opposite direction
that is used to link to the ghostpad target.
2011-05-14 11:39:34 +02:00
Sebastian Dröge
6e57ce32e5 caps: Merge structures when intersecting instead of appending them
This prevents adding duplicates over and over again to the resulting
caps if they already describe the new intersection result.

While this changes intersection from O(n*m) to O(n^2*m), it results in
smaller caps, which in the end will decrease further processing times.

For example in an audioconvert ! audioconvert ! audioconvert pipeline,
when forwarding the downstream caps preference in basetransform
(see e26da72de25a91c3eaad9f7c8b2f53ba888a0394) this results in
16 instead of 191 caps structures.
2011-05-14 11:39:34 +02:00
Miguel Angel Cabrera Moya
f450817d7f parse: don't unescape inside quotes
Escaped characters inside quoted strings are supposed to be unescaped by
deserialization functions, not by parsing functions.

https://bugzilla.gnome.org/show_bug.cgi?id=648025
2011-05-14 11:39:34 +02:00
Sebastian Dröge
f07b637d86 pad: Remove unnecessary FIXME
Resetting the result is not necessary when resyncing because
pads that previously got the event will be skipped and we
need to consider the results of the previous pushes.
2011-05-14 11:39:33 +02:00
Sebastian Dröge
2f947f3993 element: If activating one pad failed error out early instead of trying to activate the next pads
If one pad fails to activate the complete activation process will fail
anyway and trying to activate the other pads only wastes time.
2011-05-14 11:39:33 +02:00
Sebastian Dröge
f3f1f7d69a bin: If activating one pad failed error out early instead of trying to activate the next pads
If one pad fails to activate the complete activation process will fail
anyway and trying to activate the other pads only wastes time.
2011-05-14 11:39:33 +02:00
Wim Taymans
9339a59583 meta: remove (de)serialize functions
Add a GType to the metadata to identify the GstMetaInfo.
We can remove the (de)serialize functions for the metadata because we can
register GTtype transform functions between various types to implement
serialization later.
2011-05-11 19:10:24 +02:00
Wim Taymans
9597545d23 structure: more cleanups
gst_structure_get_type() -> _gst_structure_type to avoid method calls for
getting the GType that initialized at the start.
Hide some structure fields in private data so that we can change the
implementation.
Move structure equality check from caps.c to structure.c where it belongs.
2011-05-11 18:17:45 +02:00
Sebastian Dröge
437c92b403 bin: Dereference GstQuery** before passing it to GST_QUERY_TYPE_NAME 2011-05-11 16:47:33 +02:00
Wim Taymans
905100cdbe event: update the structure when needed
When we get the structure of an event, make sure it also contains the fields
that we keep in fast variables, this way we can easily serialize and debug
the events. We would probably later simply prefer to register a transform
function to G_TYPE_STRING and G_TYPE_BYTEARRAY etc..
2011-05-11 16:06:50 +02:00
Wim Taymans
e2452c8c78 caps: cleanups
We don't need to check if the type is 0, the init function is only called once
in the beginning.
2011-05-11 16:06:50 +02:00
Wim Taymans
0bfbce4463 event: clean up some macros
Avoid executing a method for GST_TYPE_EVENT but instead use the type variable
directly. We can do this because we register it before anything else.
2011-05-11 16:06:49 +02:00
Sebastian Dröge
9ec1673cae bus: Fix GST_DEBUG parameters to be consistent with the format string 2011-05-11 15:49:11 +02:00
Wim Taymans
fa28e2c5e6 event: example of how to optimize events
Use a structure for the QoS event by 'extending' the GstEventImpl structure.
This should avoid allocation of GstStructures and its contents.
2011-05-11 11:06:36 +02:00
Wim Taymans
cf4fbc005c query: allow _make_writable on query handlers
Pass a GstQuery ** to the query handlers so that they can make the query
writable before using a setter on it.
Port code to new API.
2011-05-10 18:36:33 +02:00
Wim Taymans
84a1f4ba7f element: use request_new_pad_full as the default
Add GstCaps to request_new_pad so that request_new_pad_full can be removed.
Fix elements.
2011-05-10 16:41:36 +02:00
Wim Taymans
df4a8e2f23 query: make sure query is writable
Make sure the Query is writable before executing the setters.
2011-05-10 15:41:54 +02:00
Wim Taymans
933446ec44 query: Hide GstStructure in queries
Hide the GstStructure from the query API.
Rename some methods to match the more common names in GObject libraries.
Add some more useful query API.
2011-05-10 15:33:53 +02:00
Wim Taymans
108dff2210 message: hide the message structure field
Make a private structure to hold the GstStructure bits of the message.
Add some more useful macros like we have for events.
2011-05-10 13:34:10 +02:00
Wim Taymans
8f13bb9e27 caps: fix the macros a little 2011-05-10 12:29:06 +02:00
Wim Taymans
bd540bfb66 event: Hide the GstStructure
Hide the GstStructure of the event in the implementation specific part so that
we can change it.
Add methods to check and make the event writable.
Add a new method to get a writable GstStructure of the element.
Avoid directly accising the event structure.
2011-05-10 11:50:16 +02:00
Wim Taymans
7f24a48387 event: _qos_full -> _qos 2011-05-09 18:48:55 +02:00
Wim Taymans
c07b57fc05 segment: remove _full version
Rename the _full versions of the functions to the normal function names.
2011-05-09 17:51:07 +02:00
Wim Taymans
d63829fc9a segment: remove abs_rate from segment structure
Remove the abs_rate field from the segment structure, we can trivially compute
it when needed.
2011-05-09 16:39:13 +02:00
Wim Taymans
b5456cc6f4 caps: remove caps from buffers and pads
Remove the GstCaps from buffers and pads. We now use CAPS events to negotiate
formats between element.
2011-05-09 16:21:28 +02:00
Edward Hervey
b84afab3fa gstbuffer: Fix unitialized variables 2011-05-09 13:45:49 +02:00
Wim Taymans
22d64af104 tools: avoid using pad caps
Avoid directly accessing the pad caps, use gst_pad_get_current_caps() instead.
2011-05-09 10:54:10 +02:00
Wim Taymans
24573211c6 Merge branch 'master' into 0.11 2011-05-08 13:14:55 +02:00
Wim Taymans
bf7c80b5f6 pad: improve caps event handling
Fix replace of caps events when linking: we need to unref the old ones.
Make sure we pass error values around.
Move backward compat code into the default handler for now.
2011-05-08 12:43:26 +02:00
Wim Taymans
73f3b3fb75 event: don't ref the caps
Use a different way of getting the caps from the caps event so that no
refcounting happens.
2011-05-08 12:38:05 +02:00
Wim Taymans
d43cdfbf37 buffer: avoid using buffer caps 2011-05-08 12:37:44 +02:00
Wim Taymans
02e5feb2bf pad: avoid using the old GST_PAD_CAPS
Don't use GST_PAD_CAPS but instead use the new gst_pad_get_current_caps()
method.
Avoid setting caps on buffers.
2011-05-06 19:04:54 +02:00
Wim Taymans
62b1a5a7be pad: add 2 new caps methods
Add method to get the currently configured caps on the pad.
Add a method to check if caps are configured on a pad.
2011-05-06 19:03:33 +02:00
Wim Taymans
b35a700d3e pad: implement fixed caps with an object flag
Implement fixed caps with an object flag instead of a custom getcaps function.
2011-05-06 17:59:33 +02:00
Wim Taymans
92b4c8967b pad: don't use buffer caps for negotiation
Don't use the buffer caps for negotiation anymore but use the CAPS events.
Make the _set_caps method produce the CAPS event, add some backward
compatibility code to trigger the setcaps functions on src and sinkpads.
Remove all negotiation code from the chain functions.
Don't use the GST_PAD_CAPS variable anymore to store the caps but retrieve the
caps from the sticky event array.
2011-05-06 17:39:09 +02:00
Wim Taymans
dcc5570f7f bin: let the pad clean up in activate 2011-05-06 17:39:08 +02:00
Wim Taymans
3d949e988b element: don't mess with pad caps in activate
When deactivating a pad, let the pad decide what fields to clear.
2011-05-06 17:39:08 +02:00
Wim Taymans
3122f429cd event: only allow fixed caps in caps event 2011-05-06 17:39:08 +02:00
Sebastian Dröge
903dadef17 event: Improve documentation of gst_event_new_reconfigure() 2011-05-06 13:01:24 +02:00
Wim Taymans
fb3da828e5 element: rename gst_element_lost_state_full()
Rename gst_element_lost_state_full() to gst_element_lost_state() and
remove the old method name.
2011-05-06 12:19:16 +02:00
Wim Taymans
0637aa95c5 pad: clean up the .h file a bit 2011-05-06 12:09:00 +02:00
Wim Taymans
4372869e80 pad: implement more sticky events
Remove the context again, adding an extra layer of refcounting and object
creation to manage an array is too complicated and inefficient. Use a simple
array again.
Also implement event updates when calling gst_pad_chain() and
gst_event_send_event() directly.
2011-05-06 11:14:02 +02:00
Stefan Kost
218bc52c7f info: avoid redefinition of symbols when debugging is off
The refactoring of gst_debug_add_log_function() now causes build failure when
debug-logging is turned off. Just move it to the conditional part of the header.
2011-05-06 12:02:52 +03:00
Wim Taymans
14b619c170 event: reorder events
Reorder the sticky events so that they are in the order they should be pushed.
2011-05-06 11:00:18 +02:00
Wim Taymans
f663c9770b pad: simplify some more
If we get a context in the chain functions we always need to do a full update of
the context on the peer pad.
2011-05-05 19:24:46 +02:00
Wim Taymans
d3e0a37900 pad: improve context passing some more
Pass the context downstream when it got updated.
Have two ways of informing downstream of events, do a full context update when
the CONTEXT_PENDING flag is set and simply forward the event otherwise.
Set the CONTENT_PENDING flag when linking pads.
We don't need to old context anymore when updating the context of a pad.
2011-05-05 19:01:21 +02:00
Sebastian Dröge
292806f60e pad: Fix refcount leak of the parent in the default event dispatch function 2011-05-05 17:05:21 +02:00
Wim Taymans
dfef1d027d pad: improve passing around the context
Improve passing around the context, only send the context to the peer element
when the CONTEXT_PENDING flag is set.
2011-05-05 16:34:29 +02:00
Sebastian Dröge
98d1ee4a8f gst: Update everything for the new GstIterator API 2011-05-05 15:36:03 +02:00
Sebastian Dröge
348563bc19 iterator: Refactor GstIterator to be more binding friendly and have saner refcounting
Fixes bug #638987.
2011-05-05 15:33:29 +02:00
Johan Dahlin
62c7339847 iterator: register as a boxed type
https://bugzilla.gnome.org/show_bug.cgi?id=638987
2011-05-05 15:33:29 +02:00
Johan Dahlin
b5a4aad134 iterator: use GSlice
https://bugzilla.gnome.org/show_bug.cgi?id=638987
2011-05-05 15:33:29 +02:00
Johan Dahlin
0e2cf0caa1 iterator: free struct in gst_iterator_free
https://bugzilla.gnome.org/show_bug.cgi?id=638987
2011-05-05 15:33:28 +02:00
Johan Dahlin
47ebd0755b iterator: store size in the struct
https://bugzilla.gnome.org/show_bug.cgi?id=638987
2011-05-05 15:33:28 +02:00
Sebastian Dröge
dc63e38219 caps: Merge structures when intersecting instead of appending them
This prevents adding duplicates over and over again to the resulting
caps if they already describe the new intersection result.

While this changes intersection from O(n*m) to O(n^2*m), it results in
smaller caps, which in the end will decrease further processing times.

For example in an audioconvert ! audioconvert ! audioconvert pipeline,
when forwarding the downstream caps preference in basetransform
(see e26da72de25a91c3eaad9f7c8b2f53ba888a0394) this results in
16 instead of 191 caps structures.
2011-05-05 15:22:14 +02:00
Sebastian Dröge
5a7ec99214 pad: Keep track of reconfigure events and the pad-needs-reconfiguring status 2011-05-05 15:11:51 +02:00
Sebastian Dröge
25916cff66 event: Rename renegotiate event to reconfigure
In 0.11 this event will also do reconfiguration of buffer pools
and similar things, not just renegotiation.
2011-05-05 15:06:00 +02:00
Olivier Crête
40cff0eb6d pad: Send renegotiate event on link 2011-05-05 15:04:33 +02:00
Olivier Crête
581533cd00 pad: Drop renegotiate event if there is no getcaps function on a sink pad
If there is no custom getcaps function on a sink pad, then changes in
downstream caps will never be propagated, so there is no point in trying to
renegotiate the capabilities.
2011-05-05 15:04:25 +02:00
Thiago Santos
a3dd59e97a event: Adding new renegotiate event 2011-05-05 15:02:39 +02:00
Wim Taymans
77569e0a9a pad: pass the context around
Pass the context from srcpad to sinkpad before dataflow when something
changed.
2011-05-05 13:17:08 +02:00
Wim Taymans
f16180a761 pad: update the context lazyly 2011-05-05 13:17:08 +02:00
Wim Taymans
e72d062b33 gst: init the GType early 2011-05-05 13:17:08 +02:00
Wim Taymans
08dbe37f6f context: add foreach function
Add a function to iterate over all stored events.
2011-05-05 13:17:08 +02:00
Wim Taymans
c4751ec8c1 Revert "context: use context on buffers instead of caps"
This reverts commit 9ef1346b1f.

Way to much for one commit and I'm not sure we want to get rid of the pad caps
just like that. It's nice to have the buffer and its type in onw nice bundle
without having to drag the complete context with it.
2011-05-05 13:17:08 +02:00
Miguel Angel Cabrera Moya
419f48d0d1 parse: don't unescape inside quotes
Escaped characters inside quoted strings are supposed to be unescaped by
deserialization functions, not by parsing functions.

https://bugzilla.gnome.org/show_bug.cgi?id=648025
2011-05-05 12:30:05 +02:00
Sebastian Dröge
e22f5d8a68 bin: Only post EOS messages after reaching the PLAYING state
Fixes bug #647756.
2011-05-05 12:30:05 +02:00
Sebastian Dröge
c6e9ce64ae pad: Remove unnecessary FIXME
Resetting the result is not necessary when resyncing because
pads that previously got the event will be skipped and we
need to consider the results of the previous pushes.
2011-05-05 12:30:05 +02:00
Sebastian Dröge
5a6ef6408f element: If activating one pad failed error out early instead of trying to activate the next pads
If one pad fails to activate the complete activation process will fail
anyway and trying to activate the other pads only wastes time.
2011-05-05 12:30:05 +02:00
Sebastian Dröge
5c84883f2e bin: If activating one pad failed error out early instead of trying to activate the next pads
If one pad fails to activate the complete activation process will fail
anyway and trying to activate the other pads only wastes time.
2011-05-05 12:30:05 +02:00
Sebastian Dröge
65eafd9340 Merge branch 'master' into 0.11
Conflicts:
	docs/gst/gstreamer-sections.txt
	gst/gstelementfactory.c
	gst/gstminiobject.c
2011-05-05 12:27:51 +02:00
Wim Taymans
9ef1346b1f context: use context on buffers instead of caps
Put the srcpad context on buffers instead of caps. This allows us to associate
all the relevant info contained in events with a buffer.
2011-05-04 18:59:47 +02:00
Wim Taymans
9136abf623 pad: use the context to store sticky events
Store the sticky events in the context of a source pad.
2011-05-04 15:53:21 +02:00
Wim Taymans
0fee137dbc context: add helper object to manage events
Add a helper object to manage the events that define the context of a buffer and
a stream.
2011-05-04 15:20:10 +02:00
Wim Taymans
6cfd9d57e2 event: add new CAPS event
Add a new CAPS event that will be used to negotiate downstream elements. It'll
also stick on pad so that we can remove the GstCaps field on pads and the
GstCaps field on buffers.
2011-05-04 11:03:05 +02:00
Wim Taymans
bc9cffda90 pad: more sticky events work
Copy the sticky events from the srcpad to the sinkpad when linking pads. Set the
STICKY_PENDING flag to make sure that the sticky events are dispatched before
pushing the next buffer to the element.
2011-05-03 18:58:18 +02:00
Thiago Santos
a750aac2dd miniobject: Fix dup_mini_object function to handle NULL gvalues
g_value_dup_object handles gvalues that contain NULL pointers,
gst_value_dup_mini_object should do the same.

https://bugzilla.gnome.org/show_bug.cgi?id=649195
2011-05-03 08:15:51 -03:00
Stefan Kost
58fc672362 docs: fix copy'n'paste doc header mistake 2011-05-03 13:03:21 +03:00
Stefan Kost
c45ff2b12a docs: add two trivial doc blobs 2011-05-03 13:03:21 +03:00
Stefan Kost
319eef8aa9 docs: improve the syntax for the capsintersectmode docs 2011-05-03 13:03:20 +03:00
Stefan Kost
41754faaaf docs: fixup broken xref 2011-05-03 13:03:20 +03:00
Stefan Kost
a482babf55 docs: fix gtk-doc syntax 2011-05-03 13:03:20 +03:00
Stefan Kost
81c32bc56e docs: we don't need to document private members in opaque structs 2011-05-03 13:03:20 +03:00
Philippe Normand
4e36f93924 core: store presets, registry and plugins in XDG directories.
Presets and plugins moved to $XDG_DATA_HOME/gstreamer-0.11/
root directory. Registry moved to $XDG_CACHE_HOME/gstreamer-0.11/.

Fixes bug #518597.
2011-05-03 09:43:22 +02:00
Sebastian Dröge
5fe9bcd989 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	gst/gstbus.c
2011-05-03 09:42:58 +02:00
Wim Taymans
2243adffa1 event: add sticky flags to events
Add the sticky flag to events and a sticky index.
Keep sticky events in an array on each pad.
Remove GST_EVENT_SRC(), it is causing refcycles with sticky events, was not used
and is not very interesting anyway.
2011-05-02 18:34:18 +02:00
Wim Taymans
9d80fbac23 query: improve allocation parameters query
Use the same parameters as those used for the bufferpool. Make sure we can pass
a minimum and maximum amount of buffers needed.
2011-05-02 11:09:52 +02:00
Tim-Philipp Müller
1ebff8a510 pluginfeature: include plugin.h in header where we use a GstPlugin pointer
Should fix issue with gstreamermm build where <gst/gstindex.h> is included
directly instead of gst/gst.h.
2011-04-29 23:44:55 +01:00
Wim Taymans
6ab7e6c15d Remove pad_alloc, this can now be done better
Remove pad_alloc and all references. This can now be done more efficiently and
more flexible with the ALLOCATION query and the bufferpool objects. There is no
reverse negotiation yet but that will be done with an event later.
2011-04-29 13:26:19 +02:00
Wim Taymans
ed1862269a query: init the ALLOCATION query correctly
Don't add the 'pool' property instead of adding it with a NULL array.
2011-04-29 12:11:56 +02:00
Wim Taymans
ccfaa53fb2 query: fix parsing of the ALLOCATION query
Add methods for parsing the caps and the need_pool boolean.
2011-04-29 10:50:17 +02:00
Wim Taymans
6ea2e71c48 query: fix typo in method name and improve docs
Fixed typo in method name and add/improve the docs.
2011-04-28 16:20:22 +02:00
Wim Taymans
06f6935107 bufferpool: add query to request pool and configuration
Add a query to request allocation parameters and optionally a bufferpool as
well. This should allow elements to discover downstream capabilities and also
use the downstream allocators.
2011-04-28 15:31:48 +02:00
Wim Taymans
7c8405fa28 bus: fix timeout handling 2011-04-27 18:10:55 +02:00
Wim Taymans
442193f3f3 bufferpool: fix some docs 2011-04-27 17:56:12 +02:00
Wim Taymans
a61e0e5bde event: improve argument names of segments 2011-04-27 17:55:20 +02:00
Tim-Philipp Müller
06ca275916 Revert lockfree GstBus for the release
Drop in old GstBus code for the release to play it safe, since
regressions that are apparently hard to track down and reproduce
have been reported (on windows/OSX mostly) against the lockfree
version, and more time is needed to fix them.

This reverts commit 03391a8970.
This reverts commit 43cdbc17e6.
This reverts commit 80eb160e0f.
This reverts commit c41b0ade28.
This reverts commit 874d60e589.
This reverts commit 79370d4b17.
This reverts commit 2cb3e52351.
This reverts commit bd1c400114.
This reverts commit 4bf8f1524f.
This reverts commit 14d7db1b52.

https://bugzilla.gnome.org/show_bug.cgi?id=647493
2011-04-26 16:14:00 +01:00
Josep Torra
5ccda2f8f4 Small cosmetic cleanups
Make sure the return values from g_return_* are of the right type.
2011-04-25 11:10:47 +02:00
Wim Taymans
070cdaab7c Merge branch 'master' into 0.11 2011-04-25 10:30:41 +02:00
David Schleef
36fc7179cb minor inline documentation fix 2011-04-24 18:31:12 -07:00
Tim-Philipp Müller
f9625dbe55 registry: when removing a cached-but-no-longer-existing plugin, only remove features that belong to it
When a plugin file no longer exists, e.g. because it's been removed or
renamed, don't remove all features in the registry based on the *name*
of the plugin they belong to, but only remove those who actually belong
to that particular plugin (object/pointer).

This fixes issues of plugin features disappearing when a plugin .so file
is renamed.

https://bugzilla.gnome.org/show_bug.cgi?id=604094
2011-04-24 11:27:56 +01:00
Tim-Philipp Müller
4926ce31c7 pluginfeature: store pointer to plugin in addition to the plugin name
So we can reliably remove plugin features for a specific plugin later.

https://bugzilla.gnome.org/show_bug.cgi?id=604094
2011-04-24 11:27:19 +01:00
Tim-Philipp Müller
d3d5b98c2f registry: use TRACE log level to log files that don't look like plugins
Cuts down the noise in uninstalled setups.
2011-04-24 11:05:58 +01:00
Mark Nauwelaerts
03391a8970 bus: also allow popping a message without timeout if no poll available
... which happens in particular flushing a bus, possibly as part
of a state change, e.g. when having a pipeline in a pipeline
and then changing state back to NULL. The interior pipeline
will/might then flush the bus, which is a child bus from the
parent which does not have a poll anymore these days.

https://bugzilla.gnome.org/show_bug.cgi?id=648297
2011-04-21 12:29:34 +01:00
Wim Taymans
d939bea074 element: remove unused variable 2011-04-20 19:03:49 +02:00
Wim Taymans
9ccd6b1134 element: don't touch base_time or clock in state change
Don't touch the base_time or the clock when setting an element to the READY or
NULL state. It is the parent that will manage this for us.
2011-04-20 19:03:16 +02:00
Sebastian Dröge
4db7fc58d2 bufferlist: Implement gst_buffer_list_foreach() 2011-04-19 20:52:05 +02:00
Wim Taymans
8e76da20b6 Merge branch 'master' into 0.11 2011-04-19 19:30:28 +02:00
Wim Taymans
b8c1e81328 buffer: add method to compare buffer data
Add method to compare the data in a buffer.
2011-04-19 18:57:43 +02:00
Wim Taymans
24bb414035 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
2011-04-19 16:21:15 +02:00
Havard Graff
547d451772 pad: unlock before freeing the cache to avoid deadlock
https://bugzilla.gnome.org/show_bug.cgi?id=648199
2011-04-19 15:15:34 +01:00
Tim-Philipp Müller
60bbb9c24f docs: add note/warning to gst_index_get_writer_id() docs about the OBJECT_LOCK
https://bugzilla.gnome.org/show_bug.cgi?id=646811
2011-04-19 13:23:19 +01:00
Tim-Philipp Müller
f4b178af3b query: const-ify formats arguments to gst_query_set_formatsv() 2011-04-19 11:48:05 +01:00
Sebastian Dröge
0f3f816f3f utils: Remove GST_BOILERPLATE and friends 2011-04-19 11:45:32 +02:00
Sebastian Dröge
6e41a3cf2f pad: Make the size parameter of gst_pad_alloc_buffer() unsigned
Internally guints were used everywhere already.
2011-04-18 10:47:26 +02:00
Sebastian Dröge
9b2a8b8480 pad: Don't allow fixating ANY caps and remove FIXME 2011-04-18 10:41:18 +02:00
Sebastian Dröge
7c8617ea82 bin: Enable DURATION query caching
Elements must now post a DURATION message on the bus if they
change the duration in PAUSED or PLAYING.
2011-04-18 10:36:41 +02:00
Sebastian Dröge
caaf5ad528 Merge branch 'master' into 0.11 2011-04-16 16:06:02 +02:00
Sebastian Dröge
a9e69dc3be gst: Don't use base_init and use G_DEFINE_TYPE instead of GST_BOILERPLATE 2011-04-16 15:59:40 +02:00
Sebastian Dröge
aad57970de element: Inherit element metadata and pad templates from parent classes
This allows to add pad templates and set metadata in class_init instead of
base_init. base_init is a concept that is not supported by almost all
languages and copying the templates/metadata for subclasses is the more
intuitive way of doing things.

Subclasses can override pad templates of parent classes by adding a new
template with the same now.

Also gst_element_class_add_pad_template() now takes ownership of the
pad template, which was assumed by all code before anyway.

Fixes bug #491501.
2011-04-16 15:59:35 +02:00
Tim-Philipp Müller
d22ad73e74 gst: gobject-introspection scanner doesn't need to scan or update plugin info 2011-04-16 13:49:45 +01:00
Sebastian Dröge
bc68243123 gst: make sure gobject-introspection scanner calls gst_init()
https://bugzilla.gnome.org/show_bug.cgi?id=647922
2011-04-16 14:34:41 +02:00
Sebastian Dröge
8bfdd8c817 Merge branch 'master' into 0.11 2011-04-16 09:33:06 +02:00
Sebastian Dröge
f51a23a83c Merge branch 'master' into 0.11 2011-04-16 08:59:58 +02:00
Tim-Philipp Müller
f660536eb3 pluginloader: only run gst-plugin-scanner with /usr/bin/arch wrapper on OS X >= 10.5
Based on patch by: Daniel Macks <dmacks@netspace.org>

Earlier versions of OSX don't support proper multiarch and
trying to use /usr/bin/arch -foo with those versions would
just break things.

https://bugzilla.gnome.org/show_bug.cgi?id=615357
2011-04-15 21:02:35 +01:00
Sebastian Dröge
379d5dfb07 bufferlist: Add boxed type for GstBufferListIterator for gobject-introspection 2011-04-14 16:14:02 +02:00
Sebastian Dröge
2d7c81f1d7 parse: Add boxed type for GstParseContext for gobject-introspection 2011-04-14 16:14:01 +02:00
Sebastian Dröge
bf6c3ea6df gst: Add some more gobject-introspection annotations 2011-04-14 16:14:01 +02:00
Sebastian Dröge
151b7264e8 utils: Fix caps leaks in gst_element_factory_can_accept_{any,all}_caps_in_direction() 2011-04-14 09:00:44 +02:00
David Schleef
0b6430f6e8 parser: Allow element names to begin with digits 2011-04-13 12:24:12 -07:00
Ole André Vadla Ravnås
7dd38cdcf4 ghostpad: Fix pad callbacks so they handle when parent goes away
1) We need to lock and get a strong ref to the parent, if still there.
2) If it has gone away, we need to handle that gracefully.

This is necessary in order to safely modify a running pipeline. Has been
observed when a streaming thread is doing a buffer_alloc() while an
application thread sends an event on a pad further downstream, and from
within a pad probe (holding STREAM_LOCK) carries out the pipeline plumbing
while the streaming thread has its buffer_alloc() in progress.
2011-04-13 17:37:54 +02:00
Tim-Philipp Müller
918a62abcf pluginloader: fix compiler warnings
Cast string constants to make compiler happy.
2011-04-11 12:52:12 +01:00
Jan Schmidt
159cf687a1 pluginloader: make sure gst-plugin-scanner is called with the right arch on OSX
On OSX, GStreamer might be built as a 'fat/universal' binary containing
both 32-bit and 64-bit code. We must take care that gst-plugin-scanner
is executed with the same architecture as the GStreamer core, otherwise
bad things may happen and core/scanner will not be able to communicate
properly.

Should fix issues with (32-bit) firefox using a 32-bit GStreamer core
which then spawns a 'universal' gst-plugin-scanner binary which gets
run in 64-bit mode, causing 100% cpu usage / busy loops or just hanging
firefox until killed.

https://bugzilla.gnome.org/show_bug.cgi?id=615357
2011-04-11 11:41:19 +01:00
Robert Swain
fd5aa095da pad: Allow tracking of buffers in GST_SCHEDULING debug output
As GST_SCHEDULING reports when buffers pass through pads due to
gst_pad_push calls, they are a good way of tracking the progress of
buffers through pipelines. As such, adding output of the buffer pointers
to these messages allows tracking of specific buffers, easing debugging.
2011-04-11 11:05:24 +02:00
Wim Taymans
6be4dbdb5a Merge branch 'master' into 0.11
Conflicts:
	android/base.mk
	android/controller.mk
	android/dataprotocol.mk
	android/elements.mk
	android/gst-inspect.mk
	android/gst-launch.mk
	android/gst-plugin-scanner.mk
	android/gst.mk
	android/indexers.mk
	android/net.mk
	win32/common/libgstbase.def
2011-04-11 10:26:54 +02:00
Wim Taymans
df85690cfd buffer: add FIXME 2011-04-11 10:20:10 +02:00
Alessandro Decina
3f1ef2255a android: make it ready for androgenizer
Remove the android/ top dir
Fixe the Makefile.am to be androgenized

To build gstreamer for android we are now using androgenizer which generates the needed Android.mk files.
Androgenizer can be found here: http://git.collabora.co.uk/?p=user/derek/androgenizer.git
2011-04-11 01:08:07 +02:00
Tim-Philipp Müller
76559d4160 trace: don't put code with side effects into g_return_if_fail() 2011-04-09 23:54:20 +01:00
Tim-Philipp Müller
3fc68cf9e8 element: unref event in default_send_event in case element has no pads
Spotted by  Haakon Sporsheim.
2011-04-09 18:04:55 +01:00
Edward Hervey
87d16a992c gst: Don't forget to dist gstelementmetadata.h 2011-04-09 04:05:20 +02:00
David Schleef
e57cb6b47a baseparse: Create baseparse library 2011-04-08 15:44:56 +01:00
Mark Nauwelaerts
3882b7f2ed baseparse: tune QUERY_SEEKING response
Even if we currently do not have a duration yet, assume seekable if
it looks like we'll likely be able to determine it later on
(which coincides with needed information to perform seeking).

Fixes #641047.
2011-04-08 15:44:56 +01:00
Arun Raghavan
694d5c4b75 baseparse: Update min/max bitrate before first posting them
This avoids posting an initial min-bitrate of G_UINTMAX and max-bitrate
of 0.

https://bugzilla.gnome.org/show_bug.cgi?id=641857
2011-04-08 15:44:56 +01:00
Mark Nauwelaerts
ae23eb9955 baseparse: tune default duration estimate update interval
Rather than a fixed default frame count, estimate frame count to aim for
an interval duration depending on fps if available, otherwise use old
fixed default.
2011-04-08 15:44:56 +01:00
Mark Nauwelaerts
d6d56d2420 baseparse: reverse playback; mind keyframes for fragment boundary 2011-04-08 15:44:55 +01:00
Mark Nauwelaerts
6f933050b0 baseparse: ensure non-empty candidate frames 2011-04-08 15:44:55 +01:00
Mark Nauwelaerts
123b2b063c baseparse: clarify some debug statements 2011-04-08 15:44:55 +01:00
Mark Nauwelaerts
dccb20cd58 baseparse: properly track upstream timestamps
... rather than with a delay.
2011-04-08 15:44:55 +01:00
Mark Nauwelaerts
212eae966a baseparse: need proper frame duration to obtain sensible frame bitrate 2011-04-08 15:44:55 +01:00
Mark Nauwelaerts
ebf124251f baseparse: proper initial values for index tracking variables 2011-04-08 15:44:55 +01:00
Mark Nauwelaerts
ef641d0515 baseparse: arrange for consistent event handling 2011-04-08 15:44:55 +01:00
Mark Nauwelaerts
ec835b45b7 baseparse: header style cleaning 2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
070db250b3 baseparse: provide some more initial frame metadata in parse_frame
... and document accordingly.
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
c38fbf8879 baseparse: refactor passthrough into format flags
Also add a format flag to signal baseparse that subclass/format can provide
(parsed) timestamp rather than an estimated one.  In particular, such "strong"
timestamp then allows to e.g. determine duration.
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
75bf0cfa32 baseparse: introduce a baseparse frame to serve as context
... and adjust subclass parsers accordingly
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
a27cc4ad83 baseparse: restrict duration scanning to pull mode and avoid extra set_caps call 2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
efe6f065d6 baseparse: update some documentation
Also add some more debug.
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
e567d1776c baseparse: allow increasing min_size for current frame parsing only
Also check that subclass actually either directs to skip bytes or
increases expected frame size to avoid going nowhere in bogus
indefinite looping.
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
cb4ec7388a baesparse: fix refactor regression in loop based parsing 2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
3cf81d066f baseparse: pass all available data to subclass rather than minimum
Also reduce some adapter calls and add a few debug statements.
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
c0cbab6981 baseparse: fix reverse playback handling 2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
d191e8b496 baseparse: minor typo and debug statement cleanup 2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
c1adec7c76 baseparse: reduce locking
... which is either already mute and/or implicitly handled by STREAM_LOCK.
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
d45cdf65d5 baseparse: avoid loop in frame locating interpolation 2011-04-08 15:44:54 +01:00
Thiago Santos
a3e55038ac audioparsers: baseparse: Be careful to not lose the event ref
Don't unref the event if it hasn't been handled, because the caller
assumes it is still valid and might reuse it.

I ran into this problem when transcoding an AVI (with mp3 inside)
to gpp.

https://bugzilla.gnome.org/show_bug.cgi?id=639555
2011-04-08 15:44:54 +01:00
Tim-Philipp Müller
40a5458392 docs: minor baseparse docs/comment fixes
Remove copy'n'paste leftovers.
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
4dc486ddc5 baseparse: increase keyframe awareness
... which is not particular relevant for audio parsing, but more so
in video cases.  In particular, auto-determine if dealing with video (caps).
2011-04-08 15:44:54 +01:00
Mark Nauwelaerts
aed933c0ce baseparse: avoid unexpected stray metadata 2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
0cb02472f0 baseparse: use proper _NONE output value when applicable 2011-04-08 15:44:53 +01:00
Edward Hervey
dab512bb15 audioparsers: Remove dead assignments 2011-04-08 15:44:53 +01:00
Andoni Morales Alastruey
fc4885a3a3 audioparse: fix possible division-by-zero
https://bugzilla.gnome.org/show_bug.cgi?id=635786
2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
4230c0b2e1 baseparse: use correct offset when adding index entry
... bearing in mind that BUFFER_OFFSET is media specific and may not
reflect the basic offset after having been parsed.
2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
3faccbd29f baseparse: enhancements for timestamp marked framed formats
That is, as such formats allow subclass to extract position from frame,
it is possible to extract duration (if not otherwise provided)
from (near) last frame, and a seek can fairly accurately target the required
position.

Fixes #631389.
2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
454f21f077 baseparse: refactor frame scanning peformed by _loop 2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
10eae096fe baseparse: slightly optimize sending of pending newsegment events 2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
6d3447c6ec baseparse: minor fixes and enhancements
Arrange for upstream as well as downstream flushing when seeking.
Also determine upstream size as well as seekability.  Adjust some comments
to reality and employ debug statement in proper order.
2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
0f9435888a baseparse: use only upstream duration if it provides one 2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
78ef0387e7 baseparse: reflow update_bitrate code
... which makes local variables represent real state better, and avoids
triggering unneeded updates/actions.
2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
85307bf969 baseparse: add some debug statements 2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
9394662f35 baseparse: perform bitrate handling and posting after newsegment sending 2011-04-08 15:44:53 +01:00
Mark Nauwelaerts
07eff44306 baseparse: immediately post subclass provided bitrate 2011-04-08 15:44:53 +01:00
Tim-Philipp Müller
a4f5db7088 Revert "baseparse: add skip property"
This reverts commit b5a3d60363.

Reverting this for now, since no one really seems to remember why this
property exists or what it could possibly be good for. It seems to have
been in the original mp3parse since the beginning of time and was back-
ported from there.
2011-04-08 15:44:52 +01:00
Sebastian Dröge
ad6ce1e2d8 audioparser: Let the format string agree with the parameters to fix compiler warning 2011-04-08 15:44:52 +01:00
Arun Raghavan
c56f223da7 baseparse: Fix debug output
We lose the reference to the buffer after gst_pad_push(), so the debug
print should happen before.

https://bugzilla.gnome.org/show_bug.cgi?id=622276
2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
cc8d04dad5 baseparse: support reverse playback
... in pull mode or upstream driven.
2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
5e9cfceb26 baseparse: remove done TODOs and update documentation 2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
67666768a2 baseparse: use determined seekability in answering SEEKING query 2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
ba3d5da1ee baseparse: add skip property 2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
038821d30e baseparse: use _set_frame_props to configure frame lead_in and lead_out
... provided a corresponding decoder with sufficient leading and following
frames to carry out full decoding for a particular segment.
2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
668ad3836a baseparse: use _set_duration to configure duration update interval
... as it logically belongs there as one or the other; either subclass
can provide a duration, or an estimate must be made (reguarly updated).
2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
6b33f59406 baseparse: localize use of provided fps information 2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
9db9d2eabf baseparse: seek table and accurate seek support 2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
3304f194a9 baseparse: proper and more extended segment and seek handling
That is, loop pause handling, segment seek support, newsegment for gaps, etc
2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
4d20688af3 baseparse: add index support 2011-04-08 15:44:52 +01:00
Mark Nauwelaerts
224af37314 baseparse: refactor state reset 2011-04-08 15:44:51 +01:00
Mark Nauwelaerts
35bfc86e67 baseparse: prevent indefinite resyncing 2011-04-08 15:44:51 +01:00
Mark Nauwelaerts
31e676e4d7 baseparse: specific EOS handling if no output so far 2011-04-08 15:44:51 +01:00
Mark Nauwelaerts
d801f74366 baseparse: adjust _set_frame_prop documentation and set default as claimed 2011-04-08 15:44:51 +01:00
Mark Nauwelaerts
745de19963 baseparse: fix bitrate copy-and-paste and update heuristic 2011-04-08 15:44:51 +01:00
Mark Nauwelaerts
60a8533d48 baseparse: post duration message if average bitrates is updated 2011-04-08 15:44:51 +01:00
Mark Nauwelaerts
7ba1b6e4d7 baseparse: remove is_seekable vmethod and use a set_seek instead
Seekability, like duration, etc is unlikely to change (frequently), and
the default assumption covers most cases, so let subclass set when needed.
At the same time, allow subclass to indicate if it has seek-metadata (table)
available, and possibly have it provide an average bitrate.
2011-04-08 15:44:51 +01:00
Mark Nauwelaerts
4b0f92db79 baseparse: add another hook for subclass prior to pushing buffer
... and allow subclass to perform custom segment clipping, or to
emit tags or messages at this time.
2011-04-08 15:44:50 +01:00
Mark Nauwelaerts
b51b5d4b29 baseparse: 0 converts to 0 by default 2011-04-08 15:44:50 +01:00
Mark Nauwelaerts
3c656232eb baseparse: refactor conversion using helper function and export default convert 2011-04-08 15:44:50 +01:00
Mark Nauwelaerts
12cc228d84 baseparse: streamline query handling 2011-04-08 15:44:50 +01:00
Mark Nauwelaerts
e274ebb292 baseparse: cleanup struct and remove unused member 2011-04-08 15:44:50 +01:00
Arun Raghavan
03164ad8ab baseparse: Allow chaining of subclass event handlers
This allows the child class to chain its event handler with
GstBaseParse, so that subclasses don't have to duplicate all the default
event handling logic.

https://bugzilla.gnome.org/show_bug.cgi?id=622276
2011-04-08 15:44:50 +01:00
Sebastian Dröge
f3f338f14a baseparse: Don't use GST_FLOW_IS_FATAL()
Also don't post an error message for UNEXPECTED and do it
for NOT_LINKED.
2011-04-08 15:44:49 +01:00
Mark Nauwelaerts
08e8dbf027 baseparse: non-TIME seek event is simply not handled 2011-04-08 15:44:49 +01:00
Mark Nauwelaerts
dc80b52372 baseparse: fix seek event ref handling 2011-04-08 15:44:49 +01:00
Mark Nauwelaerts
b4f1778a7d baseparse: prevent arithmetic overflows in pull mode buffer cache handling 2011-04-08 15:44:49 +01:00
Mark Nauwelaerts
1b8a96e999 baseparse: fix seek handling
Allow a few more seek event type combinations, and really use the result
of gst_segment_set_seek to perform the seek.  Also add some debug.
2011-04-08 15:44:49 +01:00
Arun Raghavan
eb73b3e933 baseparse: Don't emit bitrate tags too early
We wait to parse a minimum number of frames (10, arbitrarily) before
emiting bitrate tags so that our early estimates are not wildly
inaccurate for streams that start with a silence. If the stream ends
before that, we just emit the tags anyway.

While it _would_ be nicer to be specify the threshold to start pushing
the tags in terms of duration, this would introduce more complexity than
this merits.

https://bugzilla.gnome.org/show_bug.cgi?id=614991
2011-04-08 15:44:49 +01:00
Sebastian Dröge
a6b20b62bd baseparse: Set the last stop to the buffer starttime if the duration is invalid
...instead of not setting it at all.
2011-04-08 15:44:49 +01:00
Joshua M. Doe
e85f8c8ab6 baseparse: Send NEWSEGMENT event with correct start and position
Instead of taking the last stop (which could be buffer endtime instead
of starttime) always take the buffer starttime.

Fixes bug #614016.
2011-04-08 15:44:49 +01:00
Tim-Philipp Müller
b0b9163125 audioparsers: remove unused GstBaseParseClassPrivate structure 2011-04-08 15:44:49 +01:00
Arun Raghavan
102ee0cf41 audioparsers: Add bitrate calculation to baseparse
This makes baseparse keep a running average of the stream bitrate, as
well as the minimum and maximum bitrates. Subclasses can override a
vfunc to make sure that per-frame overhead from the container is not
accounted for in the bitrate calculation.

We take care not to override the bitrate, minimum-bitrate, and
maximum-bitrate tags if they have been posted upstream. We also
rate-limit the emission of bitrate so that it is only triggered by a
change of >10 kbps.
2011-04-08 15:44:49 +01:00
Mark Nauwelaerts
8a2141f001 audioparsers: rename baseparse GType name to avoid possible conflicts 2011-04-08 15:44:49 +01:00
Mark Nauwelaerts
cbc6dcc04b audioparsers: documentation fixes 2011-04-08 15:44:49 +01:00
Mark Nauwelaerts
d249e34fb4 baseparse: adjust seek handling and newsegment sending
Perform sanity check on type of seek, and only perform one that is
appropriately supported.  Adjust downstream newsegment event
to first buffer timestamp that is sent downstream.
2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
192aa0d41f baseparse: minor refactor cleanup
Also add some debug logging.
2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
abadf63413 baseparse: implement leftover draining in pull mode 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
b67b86fcdb baseparse: provide default conversion using bps if no fps available
Also store estimated duration as such, rather than pretending otherwise
(e.g. set by subclass).
2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
d0ea041a38 baseparse: check for remaining data when draining in push mode 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
497105ca1b baseparse: fix pull mode cache size comparison 2011-04-08 15:44:48 +01:00
Michael Smith
ab3bf9fd95 audioparse: fix a format string as reported on irc. 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
0f85a2b685 baseparse: custom bufferflag indicates not to count frame in stats 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
f3d49be227 audioparsers: reference GstBaseParse now lives here 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
3a4e980038 audioparsers: rename 'aacparse' plugin to generic 'audioparsers' plugin 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
1dd6b12316 baseparse: reset passthrough mode to default (disabled) on activation 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
a9de98830a baseparse: ensure buffer metadata is writable 2011-04-08 15:44:48 +01:00
Mark Nauwelaerts
1bc8301c79 baseparse: fix/enhance DISCONT marking
In particular, consider DISCONT == !sync, and allow subclass to query
sync state, as it may want to perform additional checks depending
on whether sync was achieved earlier on.
Also arrange for subclass to query whether leftover data is being drained.
2011-04-08 15:44:47 +01:00
Mark Nauwelaerts
48b4912c2e baseparse: add timestamp handling, and default conversion
In particular, (optionally) provide baseparse with a notion of frames per second
(and therefore also frame duration) and have it track frame and byte counts.
This way, subclass can provide baseparse with fps and have it provide default
buffer time metadata and conversions, though subclass can still install
callbacks to handle such itself.
2011-04-08 15:44:47 +01:00
Mark Nauwelaerts
899a6de75b baseparse: documentation fixes 2011-04-08 15:44:47 +01:00
Mark Nauwelaerts
14a3a9f42a baseparse: use_fixed_caps for src pad
After all, stream is as-is, and there is little molding to downstream's
taste that can be done.  If subclass can and wants to do so, it can
still override as such.
2011-04-08 15:44:47 +01:00
Julien Moutte
9f5bb92e74 aacparse: Fix compilation warnings 2011-04-08 15:44:47 +01:00
Josep Torra
3803cc4411 aacparse: fix warnings in macosx snow leopard 2011-04-08 15:44:47 +01:00
Mark Nauwelaerts
deb9e7bb30 aacparse: forego (bogus) parsing of already parsed (raw) input 2011-04-08 15:44:47 +01:00
Mark Nauwelaerts
d6d066892e baseparse: prevent infinite loop when draining 2011-04-08 15:44:47 +01:00
Mark Nauwelaerts
569064282c baseparse: fix minor memory leak 2011-04-08 15:44:47 +01:00
Sebastian Dröge
bd50c29658 aacparse: Add function for the baseparse subclass to push buffers downstream
Also handle the case gracefully where the subclass decides to drop
the first buffers and has no caps set yet. It's still required to
have valid caps set when the first buffer should be passed downstream.
2011-04-08 15:44:47 +01:00
Sebastian Dröge
2e4ed802a7 baseparse: Fix seek event leaking 2011-04-08 15:44:47 +01:00
Tim-Philipp Müller
d49e8731c0 baseparse: propagate return value of GstBaseParse::set_sink_caps()
gst_base_parse_sink_setcaps() presumably should fail if the subclass
returns FALSE from its ::set_sink_caps() function.
2011-04-08 15:44:47 +01:00
Tim-Philipp Müller
09243a12bd baseparse: don't try to GST_LOG an already-freed caps string
The proper way to log caps is via GST_PTR_FORMAT anyway.
2011-04-08 15:44:46 +01:00
Mark Nauwelaerts
56605e51a7 baseparse: fix debug category 2011-04-08 15:44:46 +01:00
Mark Nauwelaerts
ae1956092f baseparse: fix (regression in) newsegment handling
(aacparse, amrparse, flacparse).  Fixes #580133.
2011-04-08 15:44:46 +01:00
René Stadler
922c644bf3 baseparse: Fix slightly broken buffer-in-segment check (aacparse, amrparse, flacparse) 2011-04-08 15:44:46 +01:00
René Stadler
da8fb9be91 baseparse: Fix push mode seeking (aacparse, amrparse)
Sending the flush-start event forward before taking the stream lock actually
works, in contrast to deadlocking in downstream preroll_wait (hunk 1).

After that we get the chain function being stuck in a busy loop. This is fixed
by updating the minimum frame size inside the synchronization loop because the
subclass asks for more data in this way (hunk 2).

Finally, this leads to a very probable crash because the subclass can find a
valid frame with a size greater than the currently available data in the
adapter. This makes the subsequent gst_adapter_take_buffer call return NULL,
which is not expected (hunk 3).
2011-04-08 15:44:46 +01:00
Mark Nauwelaerts
1b93e8ec03 baseparse: Delay newsegment as long as possible.
If newsegment is sent (too) early, caps may not yet be fixed/set,
and downstream may not have been linked.
2011-04-08 15:44:46 +01:00
Stefan Kost
5a971be3aa baseparse: revert last change and properly fix
Baseparse internaly breaks the semantics of a _chain function by calling it with
buffer==NULL. The reson I belived it was okay to remove it was that there is
also an unchecked access to buffer later in _chain. Actually that code is wrong,
as it most probably wants to set discont on the outgoing buffer.
2011-04-08 15:44:46 +01:00
Stefan Kost
c0f1db7ebe baseparse: remove checks for buffer==NULL
Accordifn to docs for GstPadChainFunction buffer cannot be NULL. If we would
leave the check, we would also need more such check below.
2011-04-08 15:44:46 +01:00
Jan Schmidt
2f2e8a1c33 Fix the return value of the default parse_frame function.
Fix the return value of the default parse_frame function in both
copies of GstBaseParse
2011-04-08 15:44:46 +01:00
Stefan Kost
e9da652db6 gst/: Fix baseparse type name.
Original commit message from CVS:
* gst/aacparse/gstbaseparse.c:
* gst/amrparse/gstbaseparse.c:
Fix baseparse type name.
2011-04-08 15:44:46 +01:00
Stefan Kost
e37b6081ed Add two new baseparse based parsers (aac and amr) from Bug #518857.
Original commit message from CVS:
* configure.ac:
* gst/aacparse/Makefile.am:
* gst/aacparse/gstaacparse.c:
* gst/aacparse/gstaacparse.h:
* gst/aacparse/gstbaseparse.c:
* gst/aacparse/gstbaseparse.h:
* gst/amrparse/Makefile.am:
* gst/amrparse/gstamrparse.c:
* gst/amrparse/gstamrparse.h:
* gst/amrparse/gstbaseparse.c:
* gst/amrparse/gstbaseparse.h:
Add two new baseparse based parsers (aac and amr) from Bug #518857.
2011-04-08 15:44:46 +01:00
Stian Selnes
c19f44e1d2 iterator: resync to avoid infinite loop 2011-04-08 14:43:21 +02:00
Sebastian Dröge
43cdbc17e6 bus: Removed unused GCond 2011-04-08 09:15:56 +02:00
Sebastian Dröge
80eb160e0f bus: Immediately drop messages after calling the sync handler if this is a synchronous bus
Otherwise we might wait forever for the message to be popped from
the queue if a sync handler returned GST_BUS_ASYNC.

https://bugzilla.gnome.org/show_bug.cgi?id=647005
2011-04-08 09:15:56 +02:00
Sebastian Dröge
c41b0ade28 bus: Use a construct-only property to distinguish between child buses and normal buses
This allows to only create the socketpair when it is really required instead
of always creating it and immediately destroying it again for child buses.

https://bugzilla.gnome.org/show_bug.cgi?id=647005
2011-04-08 09:15:56 +02:00
Wim Taymans
a5e1ec0edc memory: add NO_SHARE flag to memory
Add a NO_SHARE flag to memory to indicate that it should not be shared
between buffers.
2011-04-07 16:02:43 +02:00
Wim Taymans
a13740db3f memory: don't follow the parent in the fallback share 2011-04-06 19:19:55 +02:00
Wim Taymans
f332b700d5 buffer: make memory writable in _peek
Make the memory writable when we are asked to _peek with MAP_WRITE.
Improve debugging of miniobject.
2011-04-06 19:00:28 +02:00
Wim Taymans
20ba453244 miniobject: fix debug 2011-04-06 16:37:40 +02:00
Sebastian Dröge
08b98cc7e9 Merge branch 'master' into 0.11 2011-04-06 14:20:59 +02:00
Sebastian Dröge
874d60e589 bus: Add private API to set a GstBus in child mode
This is used by GstBin to create a child bus without
a socketpair because child buses will always work
synchronous. Otherwise too many sockets could be
created and the limit of file descriptors for the
process could be reached.

Fixes bug #646624.
2011-04-06 14:18:35 +02:00
Sebastian Dröge
79370d4b17 Revert "bus: Only create the signalling socket pair when required"
This reverts commit 4bf8f1524f.
2011-04-06 14:12:26 +02:00
Sebastian Dröge
2cb3e52351 Revert "bus: Check if pending messages are in the queue"
This reverts commit bd1c400114.
2011-04-06 14:12:26 +02:00
Sebastian Dröge
bd1c400114 bus: Check if pending messages are in the queue
We can't rely completely on the poll fd because the fd might be
created after messages were posted to the bus.
2011-04-06 12:03:18 +02:00
Sebastian Dröge
4bf8f1524f bus: Only create the signalling socket pair when required
Otherwise a new one would be created for every single bus and
the process could easily run out of file descriptors.

Fixes bug #646624.
2011-04-05 16:30:55 +02:00
Sebastian Dröge
5860734aaf structure: Add date as a type abbreviation of GDate
See bug #646696.
2011-04-05 14:37:55 +02:00
Wim Taymans
8bcaf95662 Merge branch 'master' into 0.11 2011-04-04 11:17:28 +02:00
Andoni Morales Alastruey
7c6d9c2725 gstpoll: retry reading the control socket to release properly all wakeups
if set->control_pending is set to 0 but we didn't not succed reading
the control socket, future calls to gst_poll_wait() will be awaiken
by the control socket which will not be released properly because
set->control_pending is already 0, causing an infinite loop.
2011-04-04 11:05:45 +02:00
Sebastian Dröge
eba33c1de1 structure: Don't allow invalid GDates in all structures and don't allow NULL GDates in taglists
Some code (e.g. gstvorbistag.c) assumes non-NULL GDates in taglists and
explodes otherwise and NULL or invalid GDates don't make much sense anyway.
2011-04-04 10:18:14 +02:00
Thomas Kristensen
d0d27e83fe poll: don't call WSAWaitForMultipleEvents with no events
Fixes error caught by Microsoft Application Verifier.
2011-04-04 09:23:57 +02:00
Tim-Philipp Müller
e1ac508cab docs: add pointer to part-seeking.txt design docs to event seek flags docs 2011-04-03 16:18:54 +01:00
Bastien Nocera
08e189badb utils: Avoid using "type" as name for a variable and a macro argument in GST_BOILERPLATE
This caused "re-declaration" problems.
./clutter-gst-video-sink.c: In function ‘clutter_gst_video_sink_init_interfaces’:
./clutter-gst-video-sink.c:231:1: warning: declaration of ‘ClutterGstVideoSink’ shadows a global declaration [-Wshadow]
./clutter-gst-video-sink.h:64:44: warning: shadowed declaration is here [-Wshadow]

https://bugzilla.gnome.org/show_bug.cgi?id=646531
2011-04-02 15:12:46 +01:00
Sebastian Dröge
38c07bac1d element: When requesting an existing pad print a g_critical() instead of using an assertion
Some applications are requesting the same pad name multiple times
and the behaviour is undefined and different from element to element
but we don't want to break applications that work just fine.

In 0.11 this check should be an assertion again, although elements
have to do manual checking if the pad already exists again because
it can't be done in a threadsafe way here.
2011-04-01 13:58:43 +02:00
Sebastian Dröge
9f3e48b55b element: Use gint64/guint64 string parsing functions
And check that the requested pad names are inside the valid
gint/guint range.
2011-04-01 13:58:43 +02:00
Josep Torra
c40dba242c element: strto[u]l() returns a g[u]long 2011-04-01 13:58:43 +02:00
Wim Taymans
468ec5bc40 bufferlist: simplify bufferlists
We now have multiple memory blocks as part of the buffers and we can therefore
reduce the bufferlist to a simple array of buffers.
2011-03-31 17:51:02 +02:00
Wim Taymans
7a62d32a07 Merge branch 'master' into 0.11-fdo
Conflicts:
	docs/plugins/gstreamer-plugins.hierarchy
	gst/gstelement.c
2011-03-30 19:58:52 +02:00
Wim Taymans
7cae289036 docs: update docs 2011-03-30 19:01:13 +02:00
Wim Taymans
800def04e2 docs: update documentation 2011-03-30 18:45:08 +02:00
Wim Taymans
ebb14d95b2 buffer: more API tweaks
_trim -> _resize
_create_sub -> copy_region
2011-03-30 16:47:55 +02:00
Wim Taymans
db230b6121 design: update docs 2011-03-30 13:04:34 +02:00
Wim Taymans
030fcde837 memory: further memory tweaking
Allow for automatic merging of memory block in the _map function and automatic
freeing of the temporary memory.
Remove some unneeded functions.
Add possibility to force writable spanned memory.
2011-03-29 19:17:55 +02:00
Wim Taymans
edbfc492bb buffer: implement COPY_MERGE 2011-03-29 17:17:46 +02:00
Wim Taymans
4e32ac8463 buffer: clean up _span and add more g_return_if.. 2011-03-29 16:52:21 +02:00
Sebastian Dröge
b8ea24d466 element: Fix sanity checks for request pad templates without % 2011-03-29 16:22:46 +02:00
Wim Taymans
d9becdcd27 buffer: optimize memory handling 2011-03-29 13:51:25 +02:00
Sebastian Dröge
cb3f09a719 element: Add some more sanity checks to the pad name checking of request pads in all cases
Especially check if a pad with that name already exists.
2011-03-29 11:57:58 +02:00
Sebastian Dröge
c9238f6f56 element: Check %u too when trying to find a pad template for a request pad 2011-03-29 11:52:06 +02:00
Wim Taymans
a6d2490b10 buffer: move implementation details in private struct 2011-03-29 11:31:30 +02:00
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
121b82ce27 buffer: fix subbuffers 2011-03-28 20:08:47 +02:00
Wim Taymans
9ff103b3a5 buffer: implemet trim and set_size 2011-03-28 20:08:47 +02:00
Wim Taymans
826a7d83d4 buffer: more fixes 2011-03-28 20:08:47 +02:00
Wim Taymans
a12373b2ee buffer: add more methods 2011-03-28 20:08:47 +02:00
Wim Taymans
100a3799bb gst: add class init 2011-03-28 20:08:46 +02:00
Wim Taymans
beac9c4a95 buffer: fix remaining unit tests 2011-03-28 20:08:46 +02:00
Wim Taymans
f35847a094 buffer: fix unit test 2011-03-28 20:08:46 +02:00
Wim Taymans
121ab46aa6 memory: remove memory metadata again 2011-03-28 20:08:46 +02:00
Wim Taymans
6f2af5aa87 memory: more fixes
Automatically make the memory of a buffer writable when the buffer is writable
and the memory is asked to mapped WRITE.
Add docs
2011-03-28 20:08:46 +02:00
Wim Taymans
38ffe30745 memory: more work on implementing buffer memory 2011-03-28 20:08:46 +02:00
Wim Taymans
1af328e785 memory: more work on porting the unit tests 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
Wim Taymans
1eed0785af memory: more fixes
Fix span and is_span
Implement buffer memory
2011-03-28 20:08:45 +02:00
Wim Taymans
6015312cf1 WIP use memory in buffer 2011-03-28 20:08:45 +02:00
Wim Taymans
dd74a925c9 memory: more improvements 2011-03-28 20:08:45 +02:00
Wim Taymans
b35c0df940 memory: more memory improvements 2011-03-28 20:08:45 +02:00
Wim Taymans
1a7e600f39 memory: add more memory operations 2011-03-28 20:08:45 +02:00
Wim Taymans
063abd4cf1 memory: add memory implementation 2011-03-28 20:08:45 +02:00
Wim Taymans
4fef929ed0 memory: add API for handling memory blocks
Adds some API to handle memory blocks.
2011-03-28 20:08:45 +02:00
Wim Taymans
c5983ac47c meta: fix docs 2011-03-28 20:06:35 +02:00
Arun Raghavan
bae67f116c basesrc: Return FALSE if we don't handle an event
basesrc's default event handler returns TRUE regardless of whether the
event is handled or not. This fixes the handler to conform with the
expected behaviour (which is to only return TRUE when the event has
actually benn handled). gst_bin_do_latency_func() depended on this
(incorrect) behaviour, and is now modified as well.

(Remaining 1-liner change in gstbasesrc.c is to keep gst-indent happy)
2011-03-28 21:48:23 +05:30
Edward Hervey
09d83e589a gstcaps: new API : gst_caps_intersect_full
Just like gst_caps_intersect, but adds a new parameter 'mode'
that allows selecting the intersection algorithm to use.

Currently we have GST_CAPS_INTERSECT_MODE_ZIG_ZAG (default) and
GST_CAPS_INTERSECT_MODE_FIRST.

API: gst_caps_intersect_full
API: GstCapsIntersectMode
API: GST_CAPS_INTERSECT_MODE_ZIG_ZAG
API: GST_CAPS_INTERSECT_MODE_FIRST

https://bugzilla.gnome.org/show_bug.cgi?id=617045
2011-03-24 11:14:18 -03:00
Thiago Santos
2f0dab0f44 gstelement: Fix typo in the docs
GST_ELEMENT_INFO will post a INFO message, not a WARNING
2011-03-22 16:27:35 -03:00
Thiago Santos
4b322b215a tagsetter: Removing unused debug category
tagsetter's debug category had a typo and was unused. Removing it.
2011-03-22 16:27:35 -03: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
27c0a2b9b1 event: Add since marker to GST_EVENT_SINK_MESSAGE 2011-03-19 10:39:28 +01:00
Tim-Philipp Müller
02d27de048 task: fix GST_TASK_BROADCAST
Surprisingly enough, you can't "breadcast" on a GCond.

Spotted by Rune Sætre.

https://bugzilla.gnome.org/show_bug.cgi?id=645022
2011-03-17 23:42:48 +00:00
Sebastian Dröge
e86973bc10 utils: Remove deprecated gst_element_factory_can_{sink,src}_caps() 2011-03-17 10:54:27 +01:00
Sebastian Dröge
4e16347bfa Merge branch 'master' into 0.11
Conflicts:
	gst/gstbufferlist.c
2011-03-17 10:50:43 +01:00
Sebastian Dröge
b8d83f4e01 pad: Document that pad blocks only make sense for sink pads in pull mode and src pads in push mode
See bug #644907.
2011-03-16 12:01:21 +01:00
Sebastian Dröge
256e7238b4 ghostpad: The internally linked pad of the proxypad is the ghostpad
Previously we were returning the peerpad, which is the target
of the ghostpad.
2011-03-16 11:53:53 +01:00
Jonas Holmberg
c4c06a2b88 bufferlist: Use a GQueue instead of a GList
Adding a buffer to the end of a GstBufferList is supposed to be a fast
operation, but it was not since the iterator does not advance its
nextpointer when adding buffers and GList does not have a tail pointer.
Using a GQueue to store the buffers makes it easier to add buffers to
the end of the list and this operation will now be much more efficient.

Adding an entire GList of buffers using
gst_buffer_list_iterator_add_list() will however have to iterate over
the list being added to be able to update the tail pointer in the
GQueue.
2011-03-11 14:31:14 +01:00
Tim-Philipp Müller
90b4dc4869 utils: fix ABI break when compiling gstreamer with -DGST_DISABLE_DEPRECATED
GST_DISABLE_DEPRECATED should only affect visibility of declarations in headers,
not actually remove symbols. See GitDeveloperGuidelines and DeprecatingAPI
pages in wiki.

https://bugzilla.gnome.org/show_bug.cgi?id=402141
2011-03-10 17:50:51 +00:00
Wim Taymans
f0e3902a37 Merge branch 'master' into 0.11 2011-03-10 10:25:07 +01:00
Thijs Vermeir
dbc21e0174 gstutils: replace gst_element_factory_can_{sink,src}_caps
Add new functions to clarify how the caps are compared to the template caps of
the element factory. Improve the docs to point out the difference.

Deprecate: gst_element_factory_can_{src|sink}_caps
API: add gst_element_factory_can_{src|sink}_{any|all}_capps

https://bugzilla.gnome.org/show_bug.cgi?id=402141
2011-03-09 15:28:05 +02:00
Wim Taymans
fa0d993372 meta: implement transform function
Replace subbuffer and copy vmethods by a more generic transform function that
can then be parametrised by transform specific data. This should allow us to
implement make-writable and more future transform functions.
2011-03-08 17:11:23 +00:00
Wim Taymans
fd0fd97200 Merge branch 'master' into 0.11 2011-03-08 17:06:30 +00:00
Stefan Kost
8aa3f380a5 padtemplate: add missing ; in example (and trim whitespace) 2011-03-08 12:12:20 +02:00
Stefan Kost
d963503b26 structure: gst_structure_empty_new() does better error checking
No need to check for media_type!=NULL as the function we call that actual create
the structure does a full check anyway.
2011-03-08 10:07:17 +02:00
Stefan Kost
4d9e645551 caps,structure: trim trailing whitespace 2011-03-08 10:07:03 +02:00
Jonathan Matthew
2bbfa3304c caps: don't create broken caps for invalid media types
Check if structure has been created before appending it to the caps. Free the
caps in the case of an error to not conceal it be returning empty caps.

Fixes #642271
2011-03-08 10:06:12 +02:00
Wim Taymans
dea2351539 miniobject: remove FIXME
Now that we don't subclass buffers anymore, the FIXME about limited
functionality of the copy function is irrelevant.
2011-03-04 18:11:19 +01:00
Wim Taymans
3b916bf57c gst: add flag registration 2011-03-04 17:43:24 +01:00
Wim Taymans
f505f778cc pad: more preroll lock to basesink
Move the preroll lock to basesink where it belongs.
2011-03-04 17:25:02 +01:00
Wim Taymans
b11ede5984 bufferpool: add more debug info 2011-03-04 12:06:11 +01:00
Wim Taymans
52a3fa9346 bufferpool: add debug 2011-03-04 10:17:06 +01:00
Wim Taymans
dbcb6eee72 bufferpool: add some more debug info 2011-03-04 10:16:54 +01:00
Wim Taymans
695facd923 bufferpool: add caps to the config
Add the caps to the configuration parameters of the pool.
Initialize the private data
2011-03-04 10:16:35 +01:00
Wim Taymans
673d90fb99 buffer: release buffer to pool in dispose
Use the dispose method to release the buffer to the pool when it is configured.
2011-03-02 11:57:06 +01:00
Wim Taymans
a55bc30f81 buffer: add pool to buffer structure
Keep a pointer to the bufferpool. Release the buffer to the pool when
finalizing. Make sure the pool sets itself as the pool member of buffers that it
sends out.
2011-03-02 11:33:24 +01:00
Wim Taymans
0a89debaf7 gst: add pool flags type 2011-03-02 11:24:27 +01:00
Wim Taymans
0986f3a64a bufferpool: Refactor stopping of the pool
Move some methods around.
Make sure we check for config parsing errors.
Increment the outstanding buffers before calling acquire so that we can be sure
that set_active() doesn't free the pool from under us.
2011-03-02 11:23:21 +01:00
Wim Taymans
e566910a18 bufferpool: Rework buffer management a little
Add start/stop methods to allow for bulk allocation of buffers.
Free buffers only when all outstanding buffers returned.
Make things more threadsafe wrt flushing and starting/stopping by
keeping track of start and stop method calls.
2011-03-02 11:23:21 +01:00
Wim Taymans
419a01af0f bufferpool: memory management cleanups
Use a lock to protect concurrect execution of set_config and set_active.
Start freeing the buffers when flushing and all buffers are returned to the
pool.
Make a copy of the config to avoid crashing with concurrent access.
2011-03-02 11:23:21 +01:00
Stefan Kost
1dff415d8a bufferpool: also allow NULL params in _acquire 2011-03-02 11:23:21 +01:00
Wim Taymans
9b1cadc329 bufferpool: more updates
Keep track if the buffer is configured and block activation when not configured
yet.
Keep track of outstanding buffers and disallow configuration when not all
buffers are returned to the pool. We need to do this or else we might end up
with wrong buffers in the pool.
Add return value to set_active.
Small cleanups. Fix finalize.
2011-03-02 11:23:21 +01:00
Wim Taymans
dd16af7a6c bufferpool: rename 'flushing' to 'active'
Rename the flushing variable and methods to active to better match
the other gstreamer name conventions
2011-03-02 11:23:21 +01:00
Wim Taymans
2496523b3e bufferpool: prealloc when unset flushing
According to the design doc we need to prealloc buffers when we unset the
flushing state, not in set_config.
Set the flushing state better.
2011-03-02 11:23:21 +01:00
Wim Taymans
2b50d0a2f4 bufferpool: use quarks for structure fields 2011-03-02 11:23:21 +01:00
Wim Taymans
0caa41e173 bufferpool: use GstStructure to configure the pool
Use a GstStructure to provide the pool with the right configuration. Also
provide some helper methods to configure such a structure.
don't pass the config in alloc_buffer, pool implementation will already have
parsed it during set_config.
Update defs
2011-03-02 11:23:21 +01:00
Wim Taymans
8c9e3e6af3 bufferpool: add simple bufferpool helper object 2011-03-02 11:22:44 +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
c71241d9dd docs: typo fixes
convinience -> convenience
2011-02-28 15:01:54 +00:00
Stefan Kost
c7881a21b5 docs: small updates as suggested on a blog
Link from convinience api to the underlying api.
2011-02-28 16:33:22 +02:00
Wim Taymans
d96cacc66c meta: add timing metadata 2011-02-28 10:05:47 +01:00
Wim Taymans
3a29d34923 miniobject: fix whitespace 2011-02-28 10:05:38 +01:00
Wim Taymans
cb86bf99bc meta: simplify a bit 2011-02-27 20:54:58 +01:00
Wim Taymans
362a724cfb meta: add default memory metadata
Add a metadata implementation for normall malloced memory.
2011-02-27 20:42:15 +01:00
Wim Taymans
58060d7528 meta: separate add and get methods
Make separate api for getting and adding metadata. This allows us to pass extra
parameters to the init functions when creating metadata, which is needed for
specific API implementations.
Add beginnings of memory metadata.
2011-02-27 19:40:45 +01:00
Wim Taymans
0969106993 docs: update docs and defs 2011-02-27 12:21:32 +01:00
Wim Taymans
9a3f158c73 buffer: remove useless method
Remove the method to retrieve metadata by api. One will always use the
GstMetaInfo to get metadata.
2011-02-26 18:14:36 +01:00
Wim Taymans
23aa5508f3 buffer: remove owner_priv now that we have metadata
Now that we have metadata we can remove the owner_priv field.
2011-02-25 16:31:11 +01:00
Wim Taymans
6f4a733063 metadata: Rename to GstMeta
Rename to the shorter GstMeta
Add docs
Add api to get metadata by API
2011-02-25 13:15:25 +01:00
Philippe Normand
376089db14 buffer: fix memory corruption 2011-02-25 10:34:52 +01:00
Wim Taymans
45645a11a1 buffermeta: fix compilation 2011-02-25 10:34:52 +01:00
Wim Taymans
8e4ab802f9 updates 2011-02-25 10:34:52 +01:00
Wim Taymans
8468dadc77 buffermeta: add beginnings of buffer metadata
Add first implementation of arbitrary buffer metadata. We use a simple linked
linked of slice allocated metadata chunks. Future implementations could use
something more performant.
Add get, remove, iterate methods to handle the metadata.
2011-02-25 10:34:47 +01:00
Tim-Philipp Müller
d3e7981527 uri: make win32 buildbot happy
gsturi.c:854:16: error: unused variable 'abs_clean'
gsturi.c:788:1: error: 'gst_file_utils_canonicalise_path' defined but not used
2011-02-24 17:12:00 +00:00
Tim-Philipp Müller
27027a2dd2 uri: add gst_filename_to_uri() that takes relative filenames
Add function that (unlike the GLib equivalent) also accepts paths that
aren't absolute and will clean up relative markers such as ./ and ../
before forming a URI.

Fixes warnings with e.g. filesrc location=foo ! typefind caused by the
recent switch to g_filename_to_uri(), but also actually creates valid
URIs for the first time.

Windows code paths could need some more work, e.g. we don't clean up
the relative markers there for now (because path could have \ and /
as separators).

API: gst_filename_to_uri()
2011-02-24 15:36:52 +00:00
Wim Taymans
39d486e526 buffer: add owner private as intermediate solution
Add an owner private field where the owner of a buffer can store some extra
information. We can use this to implement most of the subclassing that happens
now. Later this will be removed and replaced by arbitrary buffer metadata.
2011-02-24 13:55:35 +01:00
Wim Taymans
7e769a32b8 caps: remove poisoning 2011-02-24 10:28:20 +01:00
Wim Taymans
b108e3b999 miniobject: cleanups
Use the stored size in the miniobject to free the miniobject.
Refactor some init methods.
2011-02-23 16:48:00 +01:00
Wim Taymans
97be4713ea caps: warn when make_writable result is ignored 2011-02-23 12:44:54 +01:00
Wim Taymans
f78ceed43a gst: fix type registration
We need to have the types of the miniobjects before registering the
tranforms.
2011-02-23 12:01:55 +01:00
Wim Taymans
293ddfc5aa elementfactory: improve caps string management 2011-02-23 12:01:16 +01:00
Wim Taymans
be21f9cf42 miniobject: clear flags in init 2011-02-23 12:00:42 +01:00
Wim Taymans
fd59a2cead miniobject: fix flags 2011-02-23 10:35:36 +01:00
Wim Taymans
43b8ade170 fix compilation after rebase 2011-02-23 10:35:36 +01:00
Wim Taymans
70be8d8d95 improve type registration 2011-02-23 10:35:36 +01:00
Wim Taymans
cdde34f0ee fix compilation 2011-02-23 10:35:36 +01:00
Wim Taymans
b82a0f5050 fix macros 2011-02-23 10:35:36 +01:00
Wim Taymans
509abb2162 pad: set boxed type correctly 2011-02-23 10:35:36 +01:00
Wim Taymans
d62ca7c063 miniobject: small fixes
Make dataflow happen.
2011-02-23 10:35:22 +01:00
Wim Taymans
6c18c9508d miniobject: more boxed type fixing
More miniobject fixing, leaks horribly somewhere..
2011-02-23 10:35:09 +01:00
Wim Taymans
317af67bc4 miniobject: make queries a boxed type
More minionject stuff.
2011-02-23 10:34:45 +01:00
Wim Taymans
56a3364183 messages: make message a simple boxed type 2011-02-23 10:34:27 +01:00
Wim Taymans
fda9686b35 miniobject: work on making caps a boxed type
More work on making miniobject a simple allocated struct.
2011-02-23 10:34:08 +01:00
Wim Taymans
086aac764d miniobject: make miniobject a boxed type
First attempt at making miniobject a simple boxed type.
2011-02-23 10:33:44 +01:00
Wim Taymans
5dd9ab1cab cleanups
Fix padding, remove deprecated symbols.
2011-02-22 16:04:12 +01:00
Wim Taymans
0894ed2053 Merge branch 'master' into 0.11 2011-02-22 15:08:51 +01:00
Wim Taymans
238b9a57cc Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	gst/gstelement.c
	gst/gstelement.h
	gst/gstpad.c
	gst/gstutils.c
	libs/gst/base/Makefile.am
	libs/gst/check/Makefile.am
	libs/gst/controller/Makefile.am
	libs/gst/dataprotocol/Makefile.am
	libs/gst/net/Makefile.am
	win32/common/libgstreamer.def
2011-02-22 14:11:59 +01:00
Philip Jägenstedt
9cb1dec018 docs: fix typo in gst_index_new() docs
https://bugzilla.gnome.org/show_bug.cgi?id=642869
2011-02-21 13:05:11 +00:00
Robert Swain
2edb4fef54 miniobject, buffer: steal miniobject flag for use as MEDIA4 buffer flag
This was required to add a new MEDIA4 buffer flag for indicating
progressive/mixed telecine video buffers. There is no space for
additional flags in GstBuffer, so steal one from GstMiniObject.

https://bugzilla.gnome.org/show_bug.cgi?id=642671
2011-02-21 12:37:26 +00:00
Tim-Philipp Müller
9b076246af docs: add some more Since: markers to atomic queue docs 2011-02-21 11:28:11 +00:00
Edward Hervey
b39ccb5ac3 Revert "element: Call ->release_pad() to clean up pad"
This commit changes the request pad behaviour for plugins and applications.

Reopens Bug #402562

The proper fix for that bug is to keep track of created request pads.

This reverts commit a5e44ffffa.
2011-02-21 11:55:50 +01:00
Stefan Kost
2a60eea4c4 index: add FIXME-0.11: comments 2011-02-21 10:04:15 +02:00
Stefan Kost
1a53df3eef docs: improve index docs 2011-02-18 17:17:29 +02:00
David Schleef
a5e44ffffa element: Call ->release_pad() to clean up pad
Fixes #636011 and #402562.
2011-02-17 19:14:19 -08:00
Stefan Kost
af15626258 index: fix creation of writer id for unparented pads
Also do some cleanup in the impl.
2011-02-17 14:54:05 +02:00
Tim-Philipp Müller
3a744ca442 value: add (de)serialisation function for uchar
.. since we sadly have a plugin in -good that has a uchar property
(cmmlenc)

https://bugzilla.gnome.org/show_bug.cgi?id=642522
2011-02-17 10:55:28 +00:00
Wim Taymans
cc5edeefcd atomicqueue: fix include order
atomicqueue: fix include order# Please enter the commit message for your changes. Lines starting
2011-02-16 19:54:57 +01:00
Wim Taymans
14d7db1b52 bus: make the bus almost lockfree
Use new GstPoll functionality to wakeup the mainloop.
Use an atomic queue on the writer side to post the messages.
The reader side it protected with the lock still because we don't want multiple
concurrent readers.
2011-02-16 17:56:39 +01:00
Wim Taymans
5f81eac5e1 atomicqueue: use correct array sizes 2011-02-16 17:56:39 +01:00
Wim Taymans
6b2c2a043d atomicqueue: fix docs some more 2011-02-16 17:56:39 +01:00
Wim Taymans
905fea098f atomicqueue: add refcounting and docs 2011-02-16 17:56:39 +01:00
Wim Taymans
ebb37b48d8 atomicqueue: make sure a min initial_size is used 2011-02-16 17:56:38 +01:00
Wim Taymans
4c9287687b atomicqueue: add an atomic queue
Add an atomic queue. The queue can be used from multiple threads simultaneously
and without taking any locks or doing any blocking operations. This makes it
highly scalable for things like the bus, bufferpools and object recycling.
2011-02-16 17:56:38 +01:00
Wim Taymans
1037fd9919 deinit: add progress type class unref 2011-02-16 17:56:38 +01:00
Stefan Kost
5e35837402 utils: tell also what pad a pad is already linked against 2011-02-16 15:15:26 +02:00
Wim Taymans
ea21e404a7 message: add timeout to progress message
Add a timeout member to the progress messages to let the application know about
the timeout so that it can do some gui things with it.
2011-02-15 18:55:23 +01:00
Wim Taymans
ec1bbd36bf message: rename category to code 2011-02-15 18:55:22 +01:00
Wim Taymans
37fbb5e20f message: add new message quark 2011-02-15 18:55:22 +01:00
Wim Taymans
4a1ad4407d gst: register new type 2011-02-15 18:55:22 +01:00
Wim Taymans
f5b175972c message: add progress message functions 2011-02-15 18:55:22 +01:00
Chen Rui
b164a8232a utils: return real error in compatible link check
We need to ensure we call gst_pad_check_link() with the two pads in the correct
order. The order depends on wheter we iterate src or sink pads.

Signed-off-by: Chen Rui <rui.chen@tieto.com>
2011-02-14 22:45:50 +02:00
Wim Taymans
12d2d01663 pad: Check sinkpad for flushing
Check the sinkpad for the flushing state before calling the chainfunction on the
pad. We do this by checking the cache (which is also cleared on the srcpad when
the sink is set to flushing).

Fixes #641928
2011-02-14 17:31:25 +01:00
Stefan Kost
61d84b9469 parse-launch: trim whitespaces 2011-02-14 15:39:21 +02:00
Stefan Kost
8f9f95cd78 parse-launch: fix typo in pad-list length comparision
It was comparing the length with itself.

Fixes #642071.
2011-02-14 15:37:23 +02:00
Wim Taymans
56826a5ee6 event: add QoS event type
Add a parameter to the QoS event to specify the QoS event type.
Update docs and add unit test.

See #638891
2011-02-10 15:21:45 +01:00
Wim Taymans
aa32e1fab1 clock: fix parameter docs 2011-02-10 15:21:45 +01:00
Tim-Philipp Müller
2d37f06ce8 events: fix g-i annotation for gst_event_new_tag() which takes ownership of the tag list 2011-02-10 10:20:10 +00:00
Tim-Philipp Müller
1a6f61a1c9 docs: mention that it's necessary to set the state of elements added to an already-running pipeline
https://bugzilla.gnome.org/show_bug.cgi?id=641631
2011-02-10 00:04:09 +00:00
Stefan Kost
306c09e1b2 docs: clarify the NOMINAL_BITRATE docs
Tell that its a target bitrate and actual values might be different.
2011-02-09 15:23:13 +02:00
Mark Nauwelaerts
50d566d9ad poll: trigger rebuild setup in _new
Failing to do so in the Windows case (implicitly triggered otherwise)
would have a subsequent _wait return immediately leading to high CPU
usage timeout loops.

Fixes #640675.
2011-02-03 15:52:18 +01:00
Tim-Philipp Müller
609a75eae2 info: make adding/removing of gst_debug_log_default() work properly
Make adding/removing gst_debug_log_default() work reliably in all
circumstances. The problem was that depending on platform and linker
flags the function argument might resolve to different addresses,
which made it impossible to remove the default log function added
in gst_init() from application code (because the pointer values
didn't match). The new approach should keep things simple by passing
NULL for the default function, which the code in libgstreamer can
then handle.

https://bugzilla.gnome.org/show_bug.cgi?id=625396
https://bugzilla.gnome.org/show_bug.cgi?id=640771
2011-02-03 10:53:27 +00:00
Tim-Philipp Müller
74ff936752 Revert "info: use the publicly visible address to fix the tests"
This reverts commit eb56687a6d.

While this commit may have fixed a problem on one of the build bots,
it didn't actually fix the original bug reported for win32.

Also, it causes other problems, such as the lookup failing when
called from C++ code (gst-phonon, amarok).

This needs to be fixed differently.

https://bugzilla.gnome.org/show_bug.cgi?id=640771
https://bugzilla.gnome.org/show_bug.cgi?id=625396
2011-02-03 10:28:01 +00:00
Sreerenj Balachandran
de55965ebe taglist: add a new "encoded-by" tag
Usecase: ID3v2 TENC ("Encoded by") frame.

API: GST_TAG_ENCODED_BY

https://bugzilla.gnome.org/show_bug.cgi?id=627268
2011-02-01 14:09:48 +00:00
Tim-Philipp Müller
b93b05653e bus: honour any per-thread default main context set via g_main_thread_push_thread_default()
Makes gst_bus_add_watch(), gst_bus_add_watch_full(), gst_bus_add_signal_watch(),
and gst_bus_add_signal_watch_full() convenience functions automatically pick up
any non-default main contexts set for the current thread via
g_main_thread_push_thread_default().
2011-01-31 15:58:18 +00:00
Bastien Nocera
e6de18ea99 GstElement: Fix warning with GCC 4.6
gstelement.c: In function ‘gst_element_get_request_pad’:
gstelement.c:1052:18: error: variable ‘tmp’ set but not used [-Werror=unused-but-set-variable]

https://bugzilla.gnome.org/show_bug.cgi?id=640850
2011-01-28 19:59:56 +00:00
Stefan Kost
43c9eb2791 trace: ensure messages are \0 terminated 2011-01-25 16:17:15 +02:00
Stefan Kost
f0b3839677 registry: remove dead code
The GError is only used for the mmap operations. If we have an error we handle
and clean it there already.
2011-01-25 16:17:14 +02:00
Sebastian Dröge
8163e51bad clock: API: Add function to re-init periodic GstClockIDs 2011-01-24 19:15:29 +01:00
Vincent Penquerc'h
6b84f4573c gstpluginloader: do not leak the description string
The description string was changed to an inlined string a while back.
(But: no need to intern the const strings here, we just use the interning
to avoid allocating duplicates and make memory management easier,
since the strings will be around for the life-time of the app anyway).

https://bugzilla.gnome.org/show_bug.cgi?id=640071
2011-01-24 16:44:04 +00:00
Wim Taymans
52978bd4e6 buffer: clarify docs 2011-01-24 16:35:25 +01:00
Mart Raudsepp
3a0a6b477a docs: add missing "Since: 0.10.32" markers for GstClock
Since tags were missing for gst_clock_single_shot_id_reinit()
and GST_CLOCK_DONE.
2011-01-24 14:38:48 +00:00
Mart Raudsepp
e7569342b1 docs: add missing "Since: 0.10.31" marker for gst_structure_get_date_time() 2011-01-24 14:38:15 +00:00
Miguel Angel Cabrera Moya
d709f569ba parse-launch: don't read past end of string if last character is an escape char
When the last character of a property value is a backslash
the unescaping code reads one byte pass the end of the string.

https://bugzilla.gnome.org/show_bug.cgi?id=639674
2011-01-24 14:24:32 +00:00
Raimo Järvi
0645c498f0 gstpoll: fix compiler warning with MingW
gstpoll.c: In function 'gst_poll_get_read_gpollfd':
gstpoll.c:692:10: warning: assignment makes integer from pointer without a cast

https://bugzilla.gnome.org/show_bug.cgi?id=638900
2011-01-11 12:47:49 +00:00
Edward Hervey
8edee55a3a registry: Don't replace valid existing plugins by blacklisted ones
Only replace existing plugins by blacklisted ones if they correspond
to the exact same plugin. If they're not the same, keep the existing
valid one.

Fixes #638941
2011-01-10 11:38:19 +01:00
Tim-Philipp Müller
6e2db6374e registry: ignore old libgstvalve.so and libgstselector.so plugins to minimize upgrade pain
Ignore plugins which have been moved into coreelements, so it's
still possible to just upgrade GStreamer core without having to
upgrade the whole stack.
2011-01-06 19:40:27 +00:00
Tim-Philipp Müller
cbdff26c10 Revert "padtemplate: allow disablinbg the template name conformance checks"
This reverts commit f9039c2204.

We use -DG_DISABLE_ASSERTS for releases and pre-releases, but
don't want to disable pad name checking for releases in general,
I think. Need a better solution here. Fixes pad unit test in
pre-release/release mode.
2011-01-06 19:21:56 +00:00
Tim-Philipp Müller
8a9931f0a9 info: avoid unnecessary malloc/free for each log function call on MSVC
Avoid unnecessary malloc/free to get the file basename on MSVC to avoid
unnecessary overhead when doing GST_DEBUG=foo:5 or so (since it would be
done before the category log level filtering).
2011-01-06 17:35:13 +00:00
David Schleef
a0534cc81c object: Fix creation of default name
Change the fixed allocation (!) to g_strdup_printf().
2011-01-05 13:42:18 -08:00
Edward Hervey
04ebbc9f5a GstElement: Add a more flexible way to get request pads.
The new request_new_pad_full vmethod provides an additional caps field,
which allows elements to take better decision process.

Also, add a gst_element_request_pad() function to allow developers to be
able to specify which pad template they want a pad of.

Convert gstutils to use that new method instead of the old one when more
efficient.

This is useful for being able to request pads in a more flexible way,
especially when the element can provide pads whose caps depend on
runtime configuration and therefore can't provide pre-registered
pad templates.

API: GstElement::request_new_pad_full
API: gst_element_request_pad

https://bugzilla.gnome.org/show_bug.cgi?id=637300
2011-01-05 19:46:47 +01:00
Tim-Philipp Müller
daa9c92038 gst: remove safety check for GLib < 2.8
Don't worry about accidentally using GLib < 2.8 at runtime anymore.
2011-01-05 15:36:55 +00:00
Edward Hervey
f53948b332 gstdatetime: Disable usage of GDateTime on MacOSX
GLib's GDateTime doesn't handle properly the gmt offset. Therefore
use our own internal version instead on MacOSX.

See bug #638666
2011-01-05 11:26:13 +01:00
Edward Hervey
36d44b3e52 pluginloader: Always mark reception as complete after EXIT
Avoids waiting forever on gst_poll_wait when using the select
backend.

Fixes #637057
2011-01-04 14:45:40 +01:00
Tim-Philipp Müller
98900a43c1 gstinfo: don't use printf extensions if GLib isn't using the system printf
Might help with https://bugzilla.gnome.org/show_bug.cgi?id=638599
2011-01-04 00:55:47 +00:00
Edward Hervey
4f94b94bff gstpoll: Fix for (p)select backend
We need to reset the revents field of each pollfd when reading the results
from select else we'll end up with stray info from previous calls to
select.
2011-01-03 20:37:59 +01:00
Tim-Philipp Müller
ee5b369ffd gstvalue: make new gst_value_list_merge() work properly
Fix freeing of partially-inited list value when both values
passed are equal and we want to return a single non-list
value as result. Fixes unit test. Also fix up docs a bit.

https://bugzilla.gnome.org/show_bug.cgi?id=637776
2011-01-03 15:57:20 +00:00
Stefan Kost
373be6f14e tags: don't produce duplicated entries when merging same value twice
Add a variant of gst_value_list_concat() that skips duplicates and use that when
merging taglists.

API: gst_value_list_merge()
2011-01-02 22:35:08 +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
Michael Smith
bdb6a9aeec Fix GStatBuf definition for win32 when building against older glib.
Now matches upstream glib definition.
2010-12-22 16:36:50 -08:00
Tim-Philipp Müller
0e3410c100 miniobject: add gobject-introspection annotation 2010-12-22 22:36:05 +00:00
Sebastian Dröge
c81db31bfa taglist: Don't leak copies of empty strings 2010-12-19 12:49:58 +01:00
Edward Hervey
3efb73c121 gst: documentation fixups and annotation
Reported by enabling the --warn-all option of g-ir-scanner
2010-12-17 19:14:41 +01:00
Edward Hervey
6c37015a29 gstdatetime: Fix documentation
second => seconds
microsecond argument was dropped
2010-12-17 15:48:34 +01:00
Stefan Kost
eb56687a6d info: use the publicly visible address to fix the tests
The -Bsymbolic change causes us to get a different address when internaly
looking up the function than what application would get when the use the symbol
that they see. This made removing the default loghandler to fail, as it is set
internally and removed externaly.
2010-12-15 23:19:54 +02:00
Edward Hervey
90fff577f0 Merge commit '0eaa25cbf5c0e4bf86545fb67c181a0ecd2f19c7' into 0.11 2010-12-08 17:51:10 +01:00
Stefan Kost
4ef9bf1019 registry: maintain the typefind extension list order 2010-12-08 11:53:10 +02:00
Stefan Kost
4054ea491e docs: add () to xref the function. 2010-12-08 11:53:10 +02:00
Tim-Philipp Müller
cc55b9772b utils: remove some dead code, GST_DEBUG_COLOR is never defined 2010-12-07 19:35:55 +00:00
Tim-Philipp Müller
7b0e3356eb utils: const-ify arguments to gst_object_default_error() 2010-12-07 19:35:24 +00:00
Tim-Philipp Müller
711f2d8abb docs: gst_error_get_message() returns string in UTF-8, not current locale
We tell gettext to return everything in UTF-8 encoding.
2010-12-07 19:34:46 +00:00
Tim-Philipp Müller
0eaa25cbf5 pad: register gst_pad_get_fixed_caps_func() with the debug log system 2010-12-07 18:37:04 +00:00
Tim-Philipp Müller
3256c708be docs: gst: more gobject introspection annotations
Many of these are superfluous, added for clarity.
2010-12-07 18:37:04 +00:00
Wim Taymans
b2ab72b916 pad: remove get_caps_reffed variants
Make the _get_caps functions behave like the _get_caps_reffed variants and
remove the _reffed variants. This means that _get_caps doesn't return a writable
caps anymore and an explicit _make_writable() is needed before modifying the
caps.
2010-12-07 18:14:38 +01:00
Wim Taymans
f558409fdc pad: Clean up .h file 2010-12-07 16:52:47 +01:00
Wim Taymans
ce0355e6d0 Merge branch 'master' into 0.11 2010-12-07 15:53:56 +01:00
Wim Taymans
920ef127ce element: rework GstElementDetails
Clean up the GstElement structure
Replace GstElementDetails with metadata
2010-12-07 15:33:04 +01:00
Wim Taymans
a0ed044de8 plugin: remove deprecated methods
Remove more deprecated methods and fix unit test.
2010-12-07 15:31:27 +01:00
Wim Taymans
7d24f18027 object: fix docs 2010-12-07 15:19:34 +01:00
Stefan Kost
6e97957b60 plugin: recommend "--gst-disable-registry-fork" as well
Disabling forking helps with debugging the cause of the crash in gdb.
2010-12-07 12:59:16 +02:00
Wim Taymans
99efec3636 object: Removed deprecated fields and methods
Make GstObject extend from GInitiallyUnowned, remove the FLOATING flag and use
GObject methods for managing the floating ref.
Remove class lock, it was a workaround for a glib < 2.8 bug.
Remove the parent-set and parent-unset signals, attempt to implement with notify
but disabled because deadlocks in deep-notify.
2010-12-07 11:58:34 +01:00
Wim Taymans
993eda5004 remove deprecated symbols and methods 2010-12-06 19:18:31 +01:00
Wim Taymans
99775e5271 more 0.10 -> 0.11 2010-12-06 13:21:45 +01:00
Wim Taymans
8bf6b0c3fe poll: return wakeup event in GPollFD 2010-12-06 11:20:35 +01:00
Mark Nauwelaerts
58868d4218 pad: add some debug to fast push path
... so we don't loose track at times it is needed the most.
2010-12-06 11:07:38 +01:00
Edward Hervey
c044024e2c gstbin: Make element names clearer in debug statements
Replaces confusing messages like:
 "Name name is not unique in bin bin, not adding"
by
 "Name 'name' is not unique in bin 'bin', not adding"
2010-12-05 14:15:02 +01:00
David Schleef
5cdcdaee07 registry: Fix permissions if umask is broken
Fixes: #564056.
2010-12-04 21:08:21 -08:00
David Schleef
66d2781877 Use g_snprintf() instead of snprintf() 2010-12-03 11:29:30 -08:00
Wim Taymans
bf979b0036 clock: init variables in _reinit()
Properly initialize variables in _reinit() too
2010-12-03 16:11:05 +01:00
Wim Taymans
ba7157dce6 clock: make sync clock wait lockfree
Make the common case lockfree.
2010-12-03 16:11:04 +01:00
Tim-Philipp Müller
f4e57cee5d binaryregistry: use function introduced in GLib 2.22 unconditionally 2010-12-03 14:55:50 +00:00
Wim Taymans
77830123cf poll: small cleanups 2010-12-03 15:50:38 +01:00
Wim Taymans
9bf56084cf poll: make sure we remove the readfd messages 2010-12-03 15:50:38 +01:00
Wim Taymans
35d10af06d poll: add method to get a GPollFD 2010-12-03 15:50:38 +01:00
Wim Taymans
22fa4470e2 poll: Refactor and make more lockfree
Refactor the wakeup of the poll thread.
Always make a control socket to make things easier.
Make more methods lockfree.
2010-12-03 15:50:38 +01:00
Wim Taymans
e266d4d397 poll: move lock to where it makes more sense 2010-12-03 15:50:38 +01:00
Wim Taymans
73ee14302f poll: make timer polls lockfree
Make sure we don't take a mutex in the normal code path of the timer
poll.
2010-12-03 15:50:38 +01:00
Mark Nauwelaerts
efe3c70450 caps: fix doc typo 2010-12-03 13:35:38 +01:00
Stefan Kost
bd82021e86 gstobject: add stdio.h for snprint 2010-12-03 13:52:42 +02:00
Edward Hervey
fc7967a0b5 pipeline: Use an object as first argument to GST_WARNING_OBJECT 2010-12-03 12:03:43 +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
Edward Hervey
5519b1fcb1 gstquery: Use structure property directly, avoid function variable.
All functions in this file can access the structure field of a query directly.
This avoids having to call gst_query_get_structure() to get it, along with being
able to remove some function variables that were used to store the result of that
function.
2010-12-03 11:33:37 +01:00
Edward Hervey
3a9396d259 gstinfo: remove useless ternary operator usage. 2010-12-03 11:33:37 +01:00
Edward Hervey
6b002234cd gstevent: Use structure property directly, avoid function variable.
All functions in this file can access the structure field of an event directly.
This avoids having to call gst_query_get_structure() to get it, along with being
able to remove some function variables that were used to store the result of that
function.
2010-12-03 11:33:37 +01:00
Wim Taymans
cec2a42808 pad: add push cache to bufferlists
Add the push cahce for the bufferlist push code path as well.
2010-12-03 11:28:52 +01:00
Wim Taymans
59bc71c47a pad: don't cache the peer chainfunc
There is no need to cache the peer chainfunction as we can just as efficiently
get to it from the peer object. Also not caching the chain function works better
because then we automatically get the new chainfunctions when they change.
2010-12-03 11:28:52 +01:00
Wim Taymans
d3630379da pad: clear pad cache when installing probes
Move the method to clear the pad cache into _private.h
Clear the pad cache when installing pad probes.
2010-12-03 11:28:52 +01:00
Wim Taymans
2239038d76 pad: explicitly inline some functions 2010-12-03 11:28:52 +01:00
Wim Taymans
67d7c543b3 pad: remove unused variable 2010-12-03 11:28:52 +01:00
Wim Taymans
5e37ade932 pad: invalidate caches on flush and pad block 2010-12-03 11:28:52 +01:00
Wim Taymans
8abc14052a pad: don't unref NULL caps 2010-12-03 11:28:52 +01:00
Wim Taymans
14542a0d46 pad: add invalidate function
More small optimisations, remove the unneeded valid boolean.
Add function to invalide the cache.
Invalidate the cache on unlink.
2010-12-03 11:28:52 +01:00
Wim Taymans
1c79181afd pad: small cleanup 2010-12-03 11:28:52 +01:00
Wim Taymans
b83e66be46 pad: improve pad push caching
Build the cache while we push data. When we don't have a cache, we run the
slowpath and collect cacheable properties. When all conditions are met, keep the
cached data around so that we can more efficiently push data around.
2010-12-03 11:28:52 +01:00
Wim Taymans
d59b7f81b7 pad: prototype of pad push cache
Prototype of how we can cache the peer and caps for a pad link.
2010-12-03 11:28:52 +01:00
Wim Taymans
1e1872137d task: avoid task lock for each iteration
Make the task state an atomic variable so that we can avoid taking and releasing
the task lock for each iteration.
2010-12-03 11:21:03 +01:00
Stefan Kost
898583b2a0 docs: query doc improvements
More xrefs. Mentioned that some queries need a running pipeline.
2010-12-03 09:50:32 +02:00
Stefan Kost
a4c5448eee elementfactory: clarify list item types in comments 2010-12-03 09:50:31 +02:00
Stefan Kost
d4e2107987 padtemplate: add two FIXME0.11: comments 2010-12-03 09:50:31 +02:00
Stefan Kost
f9039c2204 padtemplate: allow disablinbg the template name conformance checks 2010-12-03 09:50:31 +02:00
Stefan Kost
20c173bada padtemplate: the supplied caps may not be NULL
There is a earlier g_return_val_if_fail check. Also
gst_static_pad_template_get does not have such a check.
2010-12-03 09:50:31 +02:00
Stefan Kost
1c50dcd54f gstobject: more default name generation more efficient
Save ~2000 malloc/memcpy/free pairs at startup by running to_lower in-place.
Also skip the numbers as we can.
2010-12-03 09:50:31 +02:00
Stefan Kost
aa440a1e24 pluginfeature: use the parent_class from G_DEFINE_TYPE macro and drop extra copy 2010-12-03 09:50:31 +02:00
Stefan Kost
ffa8f100ce elementfactory: use g_intern_string for interface names 2010-12-03 09:50:31 +02:00
Stefan Kost
d370a2437a registry: also intern the static caps 2010-12-03 09:42:44 +02:00
Stefan Kost
2d17d86ba8 elementfactory: meta-data can be NULL 2010-12-03 00:00:09 +02:00
Thiago Santos
2f94ad3d6c gstdatetime: Fix handling of timezones
Fix returning of timezones on systems with gdatetime
to use floats on the math expression to avoid
truncating the fractional part.

Also adds a test for covering this case.
2010-12-02 16:28:43 -03:00
Wim Taymans
a0cb088284 utils: return immediately for -1 conversion
When we are asked to convert -1, we can return immediately with a -1 return
value.
2010-12-02 19:10:45 +01:00
Wim Taymans
e84d563033 utils: a convert query can have a -1 input value
It is allowed to pass -1 to the src_val for a convert.
2010-12-02 19:10:45 +01:00
Wim Taymans
7590cee744 pipeline: avoid using invalid clock times
Be extra careful to not use invalid clock times but give a warning instead. This
should make things work better with faulty clock implementations.
2010-12-02 19:10:44 +01:00
Wim Taymans
d36903c1c2 caps: improve some comments about the zigzag intersection 2010-12-02 19:10:44 +01:00
Edward Hervey
b4285611ad gstclock: New API to re-use a single shot GstClockID
API: gst_clock_single_shot_id_reinit

https://bugzilla.gnome.org/show_bug.cgi?id=632778
2010-12-02 19:04:56 +01:00
Wim Taymans
8412c2a656 segment: move g_return_if_fail to where it is needed 2010-12-02 19:03:35 +01:00
Sebastian Dröge
0ff0e6a434 version: Take nano version into account in GST_CHECK_VERSION()
If the nano is > 0 the current version should be handled the same as
micro + 1.
2010-12-02 19:02:08 +01:00
Sebastian Dröge
f2f7842f6b pad: Set the event source object if none is set yet in gst_pad_push_event()
Otherwise the source will stay at NULL, the event is passed to the
peerpad via gst_pad_send_event() and then the peerpad is set as
source of the event instead of the originating pad.
2010-12-02 19:02:08 +01:00
David Hoyt
7199a4f1ff gsttask: Set thread names on Windows with MSVC if a debugger is attached
Fixes bug #632168.
2010-12-02 19:02:08 +01:00
Sebastian Dröge
a797b9f22b macros: Define restrict keyword if not available
This change always defines the restrict keyword if a
non-C99 C compiler is used. In the case of GCC >= 4
it will be defined to __restrict__, in all other
cases to nothing. This allows to use the restrict
keyword unconditionally.
2010-12-02 19:02:07 +01:00
Tim-Philipp Müller
5cac987148 utils: avoid 'unused argument' warnings caused by GST_BOILERPLATE_FULL
The unused data parameter in the class_init trampoline function
seems to cause warnings with some c++ compilers.

https://bugzilla.gnome.org/show_bug.cgi?id=635869
2010-11-29 12:29:10 +00:00
Evan Nemerson
4906671694 introspection: Include exported packages information in GIRs
https://bugzilla.gnome.org/show_bug.cgi?id=635389
2010-11-21 00:36:30 +00:00
Tim-Philipp Müller
b84621e0d0 elementfactory: fix caps leak in element factory list utility functions 2010-11-18 00:29:19 +00:00
Thiago Santos
1b27e1e792 datetime: Add _from_unix_epoch variants
Adds 2 variants for the gst_date_time_from_unix_epoch function,
one for UTC and another for local time.

API: gst_date_time_new_from_unix_epoch_utc
API: gst_date_time_new_from_unix_epoch_local_time

Fixes #653031

https://bugzilla.gnome.org/show_bug.cgi?id=635031
2010-11-17 09:58:32 -03:00
Vladimir Eremeev
b804d53320 math-compat: don't re-define _USE_MATH_DEFINES if already defined
This avoids compiler warnings.

https://bugzilla.gnome.org/show_bug.cgi?id=633886
2010-11-03 14:21:02 +00:00
Edward Hervey
726e4479b7 elementfactory: Fix 64bit constant
Basically we're not meant to put anything more complex than simple numbers,
due to the definition of G_GUINT64_CONSTANT:
G_GUINT64_CONSTANT(val)	(val##UL)

Which previously resulted in .... 1 << 49UL
2010-10-22 11:52:47 +02:00
Tim-Philipp Müller
5b25761f29 docs: add some gtk-doc Since: markers
Add some gtk-doc Since: markers, fix one Since: marker,
fix typo.
2010-10-16 16:53:49 +01:00
Thiago Santos
e9312870e5 datetime: Use seconds as double
Use seconds as double to make API similar to glib's
gdatetime. Also move timezone parameter to the
first position, just like glib's.

https://bugzilla.gnome.org/show_bug.cgi?id=628408
2010-10-13 11:48:57 -03:00
Thiago Santos
0d3c623b4b gstdatetime: Move doc outside the ifdefs
Move the datetime documentation of the functions outside the
ifdefs

https://bugzilla.gnome.org/show_bug.cgi?id=628408
2010-10-13 11:28:52 -03:00
Thiago Santos
c7e5bc1e5d datetime: Use GDateTime if available
Use GDateTime internally on GstDateTime if glib already
provides it.

https://bugzilla.gnome.org/show_bug.cgi?id=628408
2010-10-13 11:28:52 -03:00
Thiago Santos
6d883ed95c glib-private: Add include protection macro 2010-10-13 11:28:38 -03:00
Tim-Philipp Müller
59209b1891 buffer: add guard to buffer_set_caps() that checks if caps are simple 2010-10-13 14:54:23 +01:00
Stefan Kost
a09bd97bc6 systemclock: add a missing G_PARAM_STATIC_STRINGS 2010-10-13 15:59:16 +03:00
Tim-Philipp Müller
0dbb0f203e miniobject: avoid duplicate type check when freeing miniobject
gst_mini_object_unref() has guards that check the type already, so
we don't really need to re-check it here again while getting the
class (there's not really much point to that anyway, since we don't
check the return value of the get_class, so we'd crash anyway if
we're not dealing with a mini object, the only question would
be if there'd be a warning before the crash or not).
2010-10-11 19:55:52 +01:00
Edward Hervey
2c4afb966d miniobject: Directly increate mini_object in mini_object_free()
Speeds up mini_object_unref by 25% by avoiding the typecheck which
is avoidable here since it is only called on existing miniobjects.
2010-10-11 18:55:14 +02:00
Edward Hervey
89d3da6cba miniobject: Remove confusing DEBUG_REFCOUNT define
the debugging statements will be silenced automatically if debugging
is disabled, and the type check is actually required.
2010-10-11 18:41:14 +02:00
Wim Taymans
839114b05d bin: fix documentation for iterate_sources 2010-10-11 15:53:11 +02:00
Sebastian Dröge
87d02b7b32 bin: Initialize variable 2010-10-11 14:20:15 +02:00
Wim Taymans
27c6aba33c bin: Improve tracking of source elements
Track elements tagged with the IS_SOURCE flag in a similar way we track the sink
elements. This allows us to efficiently dispatch downstream events to the right
elements.
2010-10-11 11:16:27 +02:00
Wim Taymans
eed98f6c2c element: add IS_SOURCE flag
Add the GST_ELEMENT_IS_SOURCE flag so that we can tag source elements like we
can with sink elements.
2010-10-11 11:16:27 +02:00
Vincent Penquerc'h
0bb4fafd30 registry: g_mapped_file_unref exists already since GLib 2.21.3 2010-10-10 18:30:58 +02:00
Tim-Philipp Müller
fd6334cb7c pads: use new g_object_notify_by_pspec() for caps notifies if available
If we're building against GLib >= 2.26.0, we can use the more efficient
g_object_notify_by_caps(), which avoids the param spec lookup.
2010-10-07 19:03:42 +01:00
Tim-Philipp Müller
ca607d99b2 clock: remove unnecessary g_object_notify() call
GObject will do that for us when g_object_set*() is called.
2010-10-07 19:03:42 +01:00
Tim-Philipp Müller
05918f28dc gstinfo: remove random MSVC compatibility define for M_PI that doesn't belong here
Code that needs this should include gst/math-compat.h or use G_PI.
2010-10-05 18:31:58 +01:00
Tim-Philipp Müller
2797f74c84 gst: add math-compat.h header
Add minimal math-compath.h header where we can define fallback
versions for miscellaneous math functions that aren't always
available, so we don't have to duplicate this in plugins.
The header is not included by default, so needs to be
included explicitly for now.

https://bugzilla.gnome.org/show_bug.cgi?id=630802
2010-10-05 18:31:29 +01:00
Thiago Santos
dd53349ad2 gstdatetime: Fix string serialization
Correctly serialize tzoffset as a gstvalue
2010-09-27 20:41:52 -03:00
Trond Andersen
a95eacb56a clock: fix racy shutdown clock id leak
Clock IDs were leaked if the clock got disposed before the worker thread
got a chance to reap unscheduled entries.

Fixes bug #630439.
2010-09-23 21:54:01 +02:00
Thiago Santos
7e1d9c8c0d tag: Adds GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR
Adds a new tag to indicate the error in horizontal positioning
in meters. This is one of the available 'gps error' fields in
exif, for example.

API: GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR
2010-09-23 10:37:06 -03:00
Stefan Kost
5550136fb2 Revert "pad: use a nested lock to avoid reffing the peer"
This reverts commit 9b424b1570.
2010-09-23 15:34:54 +03:00
Stefan Kost
9b424b1570 pad: use a nested lock to avoid reffing the peer
Fixes #503592
2010-09-22 10:22:40 +03:00
Wim Taymans
0447e72c97 bufferlist: add function to add a list of buffers
Add a function to add a list of buffers to the bufferlist.
2010-09-17 17:35:45 +02:00
Tim-Philipp Müller
80ddde400a elementfactory: make sure gstreamer has been initialized when creating elements
Add gst_is_initialized() guard to gst_element_factory_make(), so
people who forgot to call gst_init() get a useful warning for what
seems to be a common enough mistake.
2010-09-16 19:40:15 +01:00
Tim-Philipp Müller
34abe02458 query: minor gst_query_add_buffering_range() code reflow
Sprinkle some G_UNLIKELY(), return TRUE/FALSE constants, avoid an
unnecessary g_value_unset(), move g_value_init()+set_int64_range()
closer to where they're needed.
2010-09-16 19:40:15 +01:00
Tim-Philipp Müller
58e5d5e5b9 query: gst_query_add_buffering_range() optimisations
Don't create a new GValueArray copy for every single _add_buffering_range()
call, but append to the existing value array owned by the structure instead.
2010-09-16 19:40:15 +01:00
Tim-Philipp Müller
608628d10d structure: micro-optimisation for some setter functions
Split out functions that do the actual work, so we avoid doing
the same g_return_if_fail() checks multiple times for each call.
2010-09-16 19:40:15 +01:00
Tim-Philipp Müller
7e5a9580ef structure: add gst_structure_{id_}take_value()
Add _set_value() variants that take ownership of the value passed
instead of making a copy of the value. This is useful for setting
values to things that aren't refcounted (e.g. GValueArrays or
strings or string arrays, etc.).

API: gst_structure_take_value()
API: gst_structure_id_take_value()

https://bugzilla.gnome.org/show_bug.cgi?id=629831
2010-09-16 19:39:58 +01:00
Wim Taymans
e6a291bfab bin: fix doc string, we post element messages 2010-09-16 19:19:21 +02:00
Wim Taymans
a9a82da134 bin: add message-forward option
Add an option to forward all the internal messages that would otherwise be
filtered such as EOS, SEGMENT and ASYNC messages.
This allows the application to, for example, detect that a partial pipeline is
prerolled or reached eos.
The original messages are wrapped inside an element message because the parent
bins are not supposed to see those internal messages escape.
2010-09-16 19:17:53 +02:00
Tim-Philipp Müller
30fe3b2be9 plugin: use strstr() instead of g_strstr_len()
Saves us a strlen() call.
2010-09-16 10:48:10 +01:00
Thiago Santos
60fba4df8b gstpad: Fix flush-stop event handling
A flush-stop event would make a pad unflushing, causing it
to start acting as an activated pad. This, for example,
could lead to the chain function being called when stuff
isn't initialized.

This could happend when setting qtdemux to NULL while a seek
was being handled in the upstream filesrc (in push mode).

This patch makes it check if it is activated before setting
it to unflushing.
2010-09-13 20:52:03 -03:00
Stefan Kost
8ef7e46d24 docs: fix warnings pointed out by gtk-doc 2010-09-13 11:18:25 +03:00
Stefan Kost
ef5a78e71f taskpool: make debug only code conditional 2010-09-13 11:18:24 +03:00
Colin Walters
cfadd1d937 introspection: Build with latest g-i
Hide a compatibility typedef.

https://bugzilla.gnome.org/show_bug.cgi?id=629241
https://bugzilla.gnome.org/show_bug.cgi?id=550616
2010-09-12 15:13:32 +01:00
Stefan Kost
efef6e2248 pluginloader: don't leak entries for blacklisted files 2010-09-09 22:24:38 +03:00
Edward Hervey
06738c15b7 gstobject: avoid string creation when not needed 2010-09-09 18:40:08 +02:00
Tim-Philipp Müller
bf2bdba6b3 caps: simplify code a bit
No need to call g_slist_length() here.
2010-09-08 18:51:09 +01:00
Stefan Kost
770694f0f1 pad: add a unchecked variant for pull
Add internal _get_range_unchecked thats is called from _get_range and
_pull_range.
2010-09-08 10:25:55 +03:00
Tim-Philipp Müller
3ce55e6551 gsterror: add default error message for GST_LIBRARY_ERROR_ENCODE
No idea though why we even have GST_LIBRARY_ERROR_ENCODE or when one
would want to use that instead of GST_STREAM_ERROR_ENCODE.
2010-09-06 20:26:28 +01:00
Tim-Philipp Müller
490d2f0ab5 gsterror: avoid pointless string copying
There's no need to create these tables with duplicates of the
untranslated error message string constants, we can just use
old-fashioned switch/case and call gettext directly. This also
makes things slightly more thread safe and more robust to bad
input (invalid error codes).
2010-09-06 20:26:14 +01:00
Stefan Kost
dd5e14f983 docs: give a practical example for the gst_object_has_anchestor 2010-09-06 17:02:45 +03:00
Stefan Kost
cc0171d5cd elementfactory: use the parent_class defined by G_DEFINE_TYPE 2010-09-06 14:35:26 +03:00
Olivier Crête
c5888dc6cf registrychunks: Use the correct variable for debug message
Debug print was using a variable that was not initialized.
2010-09-06 14:11:27 +03:00
Stefan Kost
65356fbb7a element-details: allow for arbitrary element details
Add a GstStructure to GstElementClass and GstElementFactory. Add setters/getter.
Handle it in the registry code. Print items in gst-inspect.
Fixes #396774.

API: gst_element_class_set_meta_data(), gst_element_factory_get_meta_data_detail()
2010-09-06 12:31:04 +03:00
Sebastian Dröge
36e1ad94e1 gstquery: Only fill the start/stop values of the buffering ranges if a non-NULL pointer was provided 2010-09-03 19:58:49 +02:00
Philippe Normand
9ef1c47079 gstquery: new buffering_ranges API
Added a new query type to retrieve informations about the areas of the
media currently buffered. See bug 623121.

API: gst_query_add_buffering_range
API: gst_query_get_n_buffering_ranges
API: gst_query_parse_nth_buffering_range
2010-09-03 19:55:25 +02:00
Edward Hervey
17f9254264 GstElementFactory: Add listing features
https://bugzilla.gnome.org/show_bug.cgi?id=626181
2010-09-03 19:31:12 +02:00
Jeffrey S. Smith
4375e998ee Fix casts in a bunch of inline functions to maintain correct const-ness
Make code including GStreamer headers compile with -Wcast-qual by
maintaining const-ness when casting. Also fix function signature of
gst_byte_writer_set_pos(): the byte writer should not be marked as
const.

https://bugzilla.gnome.org/show_bug.cgi?id=627910
2010-09-02 00:09:08 +01:00
Philippe Normand
b2e6379be8 gstvalue: Add new GstInt64Range type
new GstInt64Range to store gint64 ranges.

API: GST_TYPE_INT64_RANGE
API: gst_value_set_int64_range
API: gst_value_get_int64_range_min
API: gst_value_get_int64_range_max

Fixes bug #627826.
2010-09-01 11:07:37 +02:00
Arun Raghavan
00a0f4fd0b docs: Trivial cleanup for GST_DEBUG_CATEGORY_GET 2010-08-30 21:27:28 -03:00
Edward Hervey
b0b8fb9b31 info: Re-instate the default for color usage
This was accidently removed in 7a722091b6
2010-08-30 16:03:38 +02:00
Sebastian Dröge
c857047be7 utils: Fix inverted assertion logic in gst_util_fraction_compare() 2010-08-28 09:35:01 +02:00
Sebastian Dröge
8ca48752fb utils: Add gst_util_fraction_compare() to compare fractions
And use it for the fraction comparisons in gstvalue.c instead
of using comparisons by first converting the fractions to double.
Should fix bug #628174.

API: gst_util_fraction_compare()
2010-08-28 09:31:59 +02:00
Sebastian Dröge
d7f59ca0c4 pad: Deprecate GST_FLOW_IS_FATAL() and GST_FLOW_IS_SUCCESS()
The problem with both macros is, that they suggest something that isn't true.
If GST_FLOW_IS_FATAL is true, there could still be a problem for many elements
and they should stop what they're currently doing and return that value
upstream (e.g. not-linked in a parser). If GST_FLOW_IS_SUCCESS is false, it
could still be that this is "ok" for the element (e.g. not-linked for a demuxer
on a few of its pads but not all).

It's better to not have these "convenience" macros but instead let people
*think* about the handling of different flow returns, that makes sense for
their element. And we should document the expected handling of flow returns for
different classes of elements in the plugin writer's guide.

Fixes bug #628014.
2010-08-27 16:59:08 +02:00
Alessandro Decina
94a314eaee gstplugin: load the gst-python plugin loader with G_MODULE_BIND_LAZY. 2010-08-26 14:32:40 +02:00
Thiago Santos
0bd40a4397 tag: Adds GST_TAG_APPLICATION_DATA
Adds GST_TAG_APPLICATION_DATA for representing arbitrary private
data that applications might want to store into tags. Exif/id3,
for example, have tags for this.

API: GST_TAG_APPLICATION_DATA

Fixes #626651
2010-08-24 21:10:33 -03:00
David Schleef
3ef2688658 Valgrind define is HAVE_VALGRIND_VALGRIND_H 2010-08-23 18:21:25 -07:00
David Schleef
7a722091b6 Allow gst_debug_set_default_threshold() before gst_init()
Calling gst_debug_set_default_threshold() before initialization
seems like the "obvious" order.
2010-08-23 18:21:25 -07:00
Mark Nauwelaerts
c485918405 registrychunks: intern all GstPluginDesc members when unpacking 2010-08-23 10:59:50 +02:00
Mark Nauwelaerts
ad85386a57 gstobject: fix leak when naming parented object 2010-08-23 10:59:45 +02:00
Arun Raghavan
904c1a7a1d gst: Add a gst_is_initialized() API
For one, this will allow libraries that expect applications to
initialize GStreamer before using their API to have a check for this
condition.

https://bugzilla.gnome.org/show_bug.cgi?id=627438
2010-08-20 19:35:01 +02:00
Wim Taymans
57cc780c45 bin: relax the source element check
When there is a sink inside a bin, the SINK flag is set on the bin. When we are
trying to iterate the source elements, also include the bins with the SINK flag
because they could also contain source elements, in which case they are also a
source.

This solves the case where sending an EOS to a pipeline didn't get dispatched to
all source elements.

See #625597
2010-08-20 18:04:52 +02:00
Thiago Santos
706f0f657b element: link_many should activate pads if needed
gst_element_link_many does some magic and creates ghostpads
if needed, but it didn't set the newly created ghostpad to
active if needed. This patch fixes it.

https://bugzilla.gnome.org/show_bug.cgi?id=626784
2010-08-19 07:33:08 -03:00
Stefan Kost
72c0474936 info: xrefs glib symbol in docs 2010-08-12 23:25:03 +03:00
Thiago Santos
261ef606e2 tag: Adds GST_TAG_APPLICATION_NAME tag
Adds a new tag for representing application used to create
a media

https://bugzilla.gnome.org/show_bug.cgi?id=626027
2010-08-09 17:44:17 -03:00
Sebastian Dröge
699385f715 bufferlist: Initialize the GType cache for the bufferlist again
This was accidentially removed with last commit.
2010-08-08 17:57:52 +02:00
Sebastian Dröge
d5c0b3311b bufferlist: Don't chain up finalize to the parent class
GstMiniObject::finalize does nothing and this prevents a
runtime-type-check cast and function call per buffer list.
2010-08-06 19:38:22 +02:00
Shixin Zeng
d41997040b gst: make _get_type() in gst/* thread safe
This is not really necessary here because everything is
initialized from gst_init() already but using G_DEFINE_TYPE()
removes some copy&paste boilerplate code.
2010-08-06 19:35:59 +02:00
Tim-Philipp Müller
18ecca6331 utils: speed up pad linking utility functions by not trying pads that will never work
In gst_element_get_compatible_pad(), when trying to find a compatible pad on an
element for a given pad, there's no point in checking the element's sink pads
if the pad to link is a sink pad as well, or the element's source pads if the
given pad is a source pad already, since those would never be able to link
anyway. Should speed up linking using the convenience functions a little bit,
or at least reduce debug log output.
2010-08-05 10:16:16 +01:00
Stefan Kost
f547482e7c info: take the timestamp a tick later
The logging is not an atomic operation and because of the multi-threading we end
up with out-of-order log lines. Tools that present the log-file should probably
resort the lines. This change just takes the timestamp a bit closer to the
actual logging.
2010-08-05 10:35:46 +03:00
Stefan Kost
d3f63b1b87 docs: more docs for gst_parse_launch and co
Tell about limited reusability of some parsed pipelines.
2010-08-05 09:40:03 +03:00
Stefan Kost
c94fbb5594 pad: log element:pad names with caps 2010-08-05 09:40:03 +03:00
Stefan Kost
8d9688f84c utils: better error logging in link_pads_filtered 2010-08-05 09:40:02 +03:00
Olivier Crête
37e2fb1054 gstutils: Make gst_pad_proxy_getcaps() return empty caps if it's what the other side has
gst_pad_proxy_getcaps() would return the pad template caps if the other side
returned empty caps or if the intersection of all the caps on the other side
was empty.

https://bugzilla.gnome.org/show_bug.cgi?id=624203
2010-08-05 01:14:18 +01:00
Wim Taymans
aa68b600f5 gst: remove \n from debug statements 2010-08-04 10:28:32 +02:00
Tim-Philipp Müller
6f0da67002 info: fix compilation on windows
Fix mismatched brackets (#625295).
2010-07-27 14:32:31 +02:00
Thiago Santos
fda35f7ac7 gstdatetime: Fix localtime usage
localtime only takes one parameter and returns a statically
allocated tm struct. Use it correctly.

Fixes #625368
2010-07-27 07:21:19 -03:00
Tim-Philipp Müller
4cecd73c93 info: flush again after every line of debug output
g_printerr() used to do this for us. Also use libc's fprintf() functions,
to make sure the stderr pointer we use is actually compatible with the
libc linked against by GStreamer (which apparently may not always be the
same as what GLib is linked against on windows), and we don't need the
functionality ensured by g_fprintf().

Fixes #625295.
2010-07-26 19:14:51 +02:00
Thiago Santos
f2c18c6c98 gststructure: Adds datetime getter function
Adds gst_structure_get_date_time function

API: gst_structure_get_date_time

Fixes #594504
2010-07-26 11:57:52 -03:00
Thiago Santos
137d19d621 tag: Adds GST_TAG_DATE_TIME tag
Adds a new tag that represents a date and time a media was
created

API: GST_TAG_DATE_TIME

Fixes #594504
2010-07-26 11:57:51 -03:00
Thiago Santos
3449bfc30e taglist: Add datetime get functions
Adds _date_time_get and _date_time_get_index functions to
taglist.

API: gst_tag_list_get_date_time
API: gst_tag_list_get_date_time_index

Fixes #594504
2010-07-26 11:57:51 -03:00
Thiago Santos
b4870282cb gstvalue: Adds datetime functions
Adds a datetime functions to gstvalue

Fixes #594504
2010-07-26 11:57:50 -03:00
Thiago Santos
6425bde6ec gstdatetime: Adds GstDateTime
Adds GstDateTime to represent dates + time + timezone
information.

Tests included.

API: GstDateTime
API: gst_date_time_get_day
API: gst_date_time_get_month
API: gst_date_time_get_year
API: gst_date_time_get_hour
API: gst_date_time_get_microsecond
API: gst_date_time_get_minute
API: gst_date_time_get_second
API: gst_date_time_get_time_zone_offset
API: gst_date_time_new
API: gst_date_time_new_local_time
API: gst_date_time_new_from_unix_epoch
API: gst_date_time_new_now_local_time
API: gst_date_time_new_now_utc
API: gst_date_time_ref
API: gst_date_time_unref

Fixes #594504
2010-07-26 11:57:49 -03:00
Sebastian Dröge
c8b06272bc gst: Fix usage of glib_check_version()
It returns NULL if the installed GLib version is as least as
new as the required version and some explanatory string otherwise.
2010-07-26 14:59:51 +02:00
Tim-Philipp Müller
042e056776 binaryregistry: save and load release date time in GstPluginDesc
https://bugzilla.gnome.org/show_bug.cgi?id=623040
2010-07-23 17:03:42 +01:00
Tim-Philipp Müller
8c72758ec2 plugin: add release datetime field to GstPluginDesc and set it if GST_PACKAGE_RELEASE_DATETIME is defined
This is a string describing a date and/or date/time in a simple subset of
the ISO-8601 format, namely either "YYYY-MM-DD" or "YYYY-MM-DDTHH:MMZ" (with
'T' the date/time separator and the 'Z' indicating UTC).

The main purpose of this field is to keep track of plugin and element versions
on an absolute timeline, so it's possible to determine which one is newer when
comparing two date time numbers. This will allow us to express 'replaces'-type
relationships betweeen plugins and element factories in future, even across
different modules and plugin merges or splits (source module version numbers
aren't particularly useful here, since they can only meaningfully be compared
within the same module). It also allows applications and libraries to reliably
check that a plugin is recent enough without making assumptions about modules
or module versions.

We use a string here to keep things simple and clear, esp. on the build system
side of things.

https://bugzilla.gnome.org/show_bug.cgi?id=623040
2010-07-23 17:00:56 +01:00
Tim-Philipp Müller
9d4caf8d8c info: write debugging output to file if GST_DEBUG_FILE environment variable is set
This changes behaviour slightly in that we no longer output things
via g_printerr(), so any non-standard glib printerr handlers are no
longer called when GST_DEBUG is enabled. However, this seems not
really desirable in most cases anyway, and the GLib docs also say
that libraries should not use g_printerr() for logging.

Other stderr output (e.g. warnings, or application messages) will
of course not be captured in the log file this way.

GST_DEBUG_FILE=- will redirect debug output to stdout.
2010-07-21 15:54:07 +01:00
Edward Hervey
21c8edca2a gstpad: Assume pads are compatible if we don't have templates
This is the same behaviour as if we had a pad template caps of
GST_CAPS_ANY on any of the pads (i.e. the actual check will be done
during caps negotiation).
2010-07-20 20:52:35 +02:00
Tim-Philipp Müller
b987febf09 registry: use GStatBuf unconditionally and add typedef for backwards compatibility
No need to clutter the code with #if #else #endif.

See #623875.
2010-07-16 17:55:07 +01:00
Sebastian Dröge
88ec06f433 structure: Use a const GstStructure * as parameter for some more gst_structure_get variants 2010-07-16 17:33:38 +02:00
David Hoyt
c53457976e registrybinary: Fix compatibility with GLib 2.25 when using MSVC
Newer GLib uses a new type for g_stat() and friends to improve
Windows compatibility. On POSIX this is a typedef to struct stat.

Fixes bug #623875.
2010-07-16 17:27:54 +02:00
Sebastian Dröge
9d0e2e7252 pipeline: If the currently used clock gets lost update it the next time when going from PAUSED to playing
Fixes bug #623806.
2010-07-16 17:27:04 +02:00
Edward Hervey
7fa58dbebd GstPad: Do not call gst_pad_accept_caps() when caps change
Instead just check that the caps intersect with the pad template.
The elements should properly accept/refuse the caps in setcaps().

Shaves off calling the default implementation of acceptcaps which does
an expensive gst_pad_get_caps() (so if you have 50 of those elements in
a row, you'd be doing factorial(50) gst_pad_get_caps...).

Does not break any module unit test and most apps work fine.

https://bugzilla.gnome.org/show_bug.cgi?id=622740
2010-07-16 15:30:55 +02:00
Edward Hervey
5b40ebbceb utils: Add more details about gst_element_get_compatible_pad 2010-07-16 15:30:22 +02:00
Stefan Kost
9d2292acaa pad: remove comma at the end of the last enum value
Fixes the build for c++.
2010-07-15 12:03:04 +03:00
Eduardo Dobay
e86cfe1a19 taglist: fix merge_strings_with_comma() for more than two strings
Fixes #624113.
2010-07-11 18:59:53 +01:00
Edward Hervey
27410f3934 gstvalue: Improve gst_value_{set|get}_caps docs 2010-07-06 11:18:32 +02:00
Alessandro Decina
a02fcb0478 clock: document that GstClockEntry should be treated as ana opaque structure. 2010-07-06 10:46:42 +02:00
Alessandro Decina
819780acf7 clock: use the new gst_clock_id_wait_async_full.
Use the new gst_clock_id_wait_async_full in gst_clock_set_master.
Also add some tests.
2010-07-06 10:46:42 +02:00
Alessandro Decina
538e82c6f7 clock: fix refcounting bug in gst_clock_set_master.
Make sure clock->clockid is unreffed before clock->master.
gst_clock_id_unschedule (clock->clockid) tries to access clock->master. If
clock->master is unreffed before and it's deallocated, _unschedule could access
free'd memory.
2010-07-06 10:46:42 +02:00
Alessandro Decina
dda8663811 clock: add gst_clock_id_wait_async_full.
Add gst_clock_id_wait_async_full. It's the same as gst_clock_id_wait_async but
allows passing a GDestroyNotify to destroy user_data.
2010-07-06 10:46:42 +02:00
Stefan Kost
8df1fdab57 docs: improve the api docs for new GstPadLinkChecks and its use 2010-07-05 17:53:42 +03:00
Edward Hervey
70d1f1f177 gstcaps: Make sure _normalize() is applied on all structures.
We need to use gst_caps_get_size() in the loop counter since some
structures could be added while iterating.

Fixes #623301
2010-07-01 18:17:40 +02:00
Sebastian Dröge
c076eb6bb0 utils: Don't use G_GNUC_CONST for the uint64 scaling functions
They are actually *not* const functions because on architectures
without int128 instructions the parameters were changed.

gcc re-used the parameters on the stack for multiple calls though
and the changed parameters were used for the second call then.

Fixes bug #623003.
2010-06-28 10:20:39 +02:00
Tim-Philipp Müller
00697e8529 xml: keep dummy gst_xml_get_type() function for g-i even if rest of GstXML is removed
Add a minimal gst_xml_get_type() function, so that gobject-introspection doesn't
break the compilation if we're compiling with GST_REMOVE_DEPRECATED defined or
--disable-loadsave having been passed to configure. Until someone figures out
a better way at least.
2010-06-26 10:35:38 +01: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
Stefan Kost
8fffa2d790 dot-dump: terminate truncated strings and escape special chars
Fixes syntax errors in generated dot files for caps with strings.
2010-06-25 21:25:10 +03:00
Edward Hervey
27b4868157 pad: more documentation regarding the new flags 2010-06-25 18:55:18 +02:00
Wim Taymans
d4e1fdb0c7 pad: make the NOTHING link check flag be 0
Make the pad link check of NOTHING be 0. This way we have a flag for each
feature and 0 when no flags are set.
2010-06-25 18:28:07 +02:00
Sebastian Dröge
5f4a965f67 gstxml: Deprecate GstXml and related functions
Pipeline serialisation to and from XML is horribly broken for all
but the most simple use cases, and will likely never be fixed.
Make sure everyone playing around with these tools is aware of
this, to avoid frustration. See countless bug reports in bugzilla.

Fixes bug #622685.
2010-06-25 18:25:40 +02:00
Tim-Philipp Müller
3410d665d7 binaryregistry: ignore the plugin cache if the filter environment has changed
Make sure that we properly update the registry and the cache file whenever
the filter environment changes or there's no more filter set.
2010-06-23 17:56:51 +01:00
Tim-Philipp Müller
9c6b87510e pluginloading: add support for whitelisting based on plugin or source module name and path
This feature is primarily intended for use in plugin modules' unit tests.

Consider the following situation: gst-plugins-good is built against an
installed GStreamer core. An older version of gst-plugins-good is also
installed in that prefix, along with random other plugin modules. Now,
when doing 'make check' in the just-built gst-plugins-good tree, we
want to only load plugins from GStreamer core, gst-plugins-base, and
gst-plugins-good, but not random other modules (we don't want any unit
tests to fail just because some module in gst-plugins-bad has a broken
plugin_init, for example). Also, we want to only load gst-plugins-good
modules from the locally-built source tree, but not any of the older
gst-plugins-good modules installed. This is usually assured by loading
the ones in the source tree first (by adding that path first to the
right environment variables), but it gets tricky when plugins are
moved, removed, merged, or renamed, or the plugin filename changes.

Note that 'make check' should really work right without doing
'make install' or uninstalling the old gst-plugins-good package (or
any other gst-plugins-foo package) first.

Enter GST_PLUGIN_LOADING_WHITELIST. This environment variable may
contain source-package@path-prefix pairs separated by the platform
search path separator (G_SEARCHPATH_SEPARATOR_S). The source package
and path prefix are separated by the '@' character. The path prefix is
entirely optional, as is the '@' separator if no path is given.

It is also possible to filter based on plugin names instead of the name
of the source-package by specifying one or more plugin names separated
by commas before the optional path prefix.

In short, the following match patterns are possible:

   plugin1,plugin2@pathprefix or
   plugin1,plugin2@* or just
   plugin1,plugin2 or
   source-package@pathprefix or
   source-package@* or just
   source-package

So for our gst-plugins-good unit test example above, we  would set the
environment variable on *nix to something like this (will likely be a
relative path in practice):
gstreamer:gst-plugins-base:gst-plugins-good@/path/to/src/gst-plugins-good

Fixes #619815 and #619717.
2010-06-23 17:56:51 +01:00
Edward Hervey
4a999b5e43 gstghostpad: We don't need any checks when linking target pad
https://bugzilla.gnome.org/show_bug.cgi?id=622504
2010-06-23 18:42:40 +02:00
Edward Hervey
5faf5620f3 gstutils: New gst_element_link_pads_full method
Links the elements with the specified pad linking checks.

API:gst_element_link_pads_full

https://bugzilla.gnome.org/show_bug.cgi?id=622504
2010-06-23 18:42:40 +02:00
Edward Hervey
625c4e2d80 GstPad: Add new pad linking method with configurable checks.
To be used for cases where we don't need all checks to be validated.

API: gst_pad_link_full
API: GstPadLinkCheck

https://bugzilla.gnome.org/show_bug.cgi?id=622504
2010-06-23 18:42:35 +02:00
Thiago Santos
7a34c1cd18 tag: Adds GST_TAG_IMAGE_ORIENTATION tag
Adds a new tag to inform about the image orientation and how
to rotate and flip it before display.

Note that this tag is a string with a predefined set of
possible values.

API: GST_TAG_IMAGE_ORIENTATION

Fixes #619508
2010-06-23 11:57:20 -03:00
Tim-Philipp Müller
ddb11b4f2d gstobject: deprecate gst_object_{set|get}_name_prefix()
The name prefix stuff has never been used for anything and it doesn't
look like we'll ever want to use it for anything.

Fixes #621006.
2010-06-22 18:53:15 +01:00