Commit graph

7128 commits

Author SHA1 Message Date
Tim-Philipp Müller
e8ab1006c7 toc: add GstTocScope and require it in the constructor
This is because we need to be able to signal different TOCs
to downstream elements such as muxers and the application,
and because we need to send both types as events (because
the sink should post the TOC messages for the app in the
end, just like tag messages are now posted by the sinks),
and hence need to make TOC events multi-sticky.

https://bugzilla.gnome.org/show_bug.cgi?id=678742
2012-07-28 09:16:06 +01:00
Sebastian Dröge
826a8d643d tag: Add a scope to taglists
This specifies if a given taglist applies to the complete
medium or only this specific stream. By default a taglist
has a stream scope.

Fixes bug #677619.
2012-07-28 00:34:41 +02:00
Wim Taymans
c8840b8270 segment: add offset field
Add an offset field that is used to track at what position the segment was
updated. This is used to set the running time to 0 when we do a flushing
seek that doesn't update the position.

See https://bugzilla.gnome.org/show_bug.cgi?id=680306
2012-07-27 17:09:45 +02:00
Wim Taymans
f05b0e222f Update for new seeking variable name
When seeking, the start value and type are now called start and start_type.
2012-07-27 15:24:52 +02:00
Wim Taymans
104ef4e7e0 segment: small cleanup
Move the code to update the segment at the end of the function.
2012-07-27 15:24:51 +02:00
Wim Taymans
90e32338c8 segment: remove redundant checks
We don't need to check the segment format anymore because we asserted on them
being equal before.
2012-07-27 13:02:52 +02:00
Wim Taymans
a2027b5e9b allocator: remove user_data from alloc vmethod
Remove the user_data from the alloc vmethod. Subclasses that implement a new
alloc function can also implement their own vmethod to pass extra arguments. We
can then also require that custom allocators implement an alloc function so that
gst_allocator_alloc() always works.
2012-07-27 12:17:29 +02:00
Tim-Philipp Müller
7e98f05afc taglist: make GST_TAG_APPLICATION_DATA also a GstSample
That way additional meta-data can be passed along with it.
2012-07-26 16:44:15 +01:00
Tim-Philipp Müller
3231ea6204 taglist: gst_tag_list_get_buffer*() => gst_tag_list_get_sample*()
Image tags and other tags are now of GstSample type.
2012-07-26 15:51:10 +01:00
Wim Taymans
fe17539f66 bufferlist: pass index as gint to _insert
Make the idx argument of _insert() a gint because we allow -1 as a value.
Improve annotation.
2012-07-23 16:27:34 +02:00
Sebastian Rasmussen
d24a5ecb93 gstpoll: Improve warning message when re-adding fd to fdset
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680181
2012-07-23 12:11:16 +02:00
Tim-Philipp Müller
ffdefd7720 value: add GstTagList serialisation/deserialisation
So we can serialise/deserialise taglists inside structures,
which used to work automagically before because GstTagList
was just a typedef to GstStructure (same for the GType),
but now that it's a separate GType we need to register
explicit functions for this.

Helps with GDP stuff in pipelines/streamheader tests.
2012-07-20 09:39:53 +01:00
Wim Taymans
29976a009f miniobject: fix sharedness check 2012-07-19 13:35:34 +02:00
Wim Taymans
fd23640001 miniobject: refuse write when object is shared
In all cases, refuse to write an object when it is shared by more than one
object (also when the object was locked before).

See https://bugzilla.gnome.org/show_bug.cgi?id=679145
2012-07-19 13:20:27 +02:00
Wim Taymans
8a0f6da824 message: improve buffering message defaults
Remove the estimated-total field, this should not be part of the buffering
message.
Set the default value of buffering-left to 0 when the percent is 100.
2012-07-19 10:14:18 +02:00
Wim Taymans
3b6e5acbce pad: fix debug line
Use QUERY_TYPE on query types.
2012-07-18 17:49:33 +02:00
Wim Taymans
961151e569 ghostpad: remove custom function
Remove custom pad functions, the default ones are better.
2012-07-18 17:49:32 +02:00
Wim Taymans
06addca012 pad: add PROXY_SCHEDULING flag
Add a flag that makes the default query handler forward the scheduling query.
2012-07-18 17:49:32 +02:00
Wim Taymans
586b1ca8c6 utils: fix docs 2012-07-18 17:49:32 +02:00
Wim Taymans
107007f053 pad: improve query caps function
In the proxy_query_caps function, also filter against the filter in the query.
We don't need to filter against the filter in the query anymore in the default
caps query function because we already did this in the proxy_query_caps.
2012-07-18 17:49:32 +02:00
Wim Taymans
5360ba56f7 basesink: handle -1 step amounts
Define a 0 and -1 step amount. They used to almost do the same thing but now, 0
cancels/stops the current step and -1 keeps on stepping until the end of the
segment.

See https://bugzilla.gnome.org/show_bug.cgi?id=679378
2012-07-18 17:49:32 +02:00
Tim-Philipp Müller
8e946d5d16 query: fix gst_query_parse_nth_allocation_pool() annotation
It returns a ref to the pool.
2012-07-18 12:30:59 +01:00
Edward Hervey
75066960e3 gstghostpad: Forward queries in both direction
Use the peer of the internal pad to forward them, instead of the
target which only exists for the ghostpad (and not the internal
proxy pad).
2012-07-18 12:07:26 +02:00
Wim Taymans
8c864712e6 buffer: make _foreach_meta more powerful
Make _foreach_meta return FALSE when the foreach function returned FALSE.
2012-07-17 12:57:59 +02:00
Wim Taymans
d7950e4466 bufferlist: improve foreach function
Make the foreach function return FALSE when one of the function calls returned
FALSE.
2012-07-17 12:53:15 +02:00
Wim Taymans
c8e83cde78 buffer: add more debug 2012-07-17 12:50:24 +02:00
Wim Taymans
7b19f3eab2 parse: fix some debug 2012-07-17 10:04:26 +02:00
Wim Taymans
fd144c02ab parse: only escape spaces outside of quotes
When we escape spaces to keep arguments together, only escape when the space is
outside a "" string.

See https://bugzilla.gnome.org/show_bug.cgi?id=673319
2012-07-17 10:04:25 +02:00
Wim Taymans
03fae7e32e Revert "parse: escape \ with a \ as well, so that we don't lose the \ when unescaping"
This reverts commit dd9fedb41f.

This is not the right place to escape the \, we should only escape the spaces to
keep the arguments together that were provided as one group (with quotes on the
shell).
2012-07-17 10:04:25 +02:00
Evan Nemerson
c3bb59de9c utils: set return type of gst_parse_bin_* to GstBin for introspection 2012-07-17 09:38:44 +02:00
Evan Nemerson
fb3a31e550 introspection: add missing array annotation to gst_formats_contains 2012-07-17 09:37:27 +02:00
Stefan Sauer
840f905c2c bin: aggregate durations like in adder
Stop querying the duration once an element return unknown and return unknown
as a final result. This avoid eventually cutting off a stream too early.
Add a tests to docuement the behavior.
2012-07-16 20:54:17 +02:00
Tim-Philipp Müller
d370c1ee2f datetime: just return NULL on short input strings instead of a warning
We want to be able to use this function on random non-NULL input,
this should not result in a runtime-critical.
2012-07-16 00:24:46 +01:00
Tim-Philipp Müller
48d0d28755 taglist: check value type matches tag type when adding values to a taglist 2012-07-14 19:08:24 +01:00
Tim-Philipp Müller
379c3cd184 info: make taglists and datetime loggable via GST_PTR_FORMAT 2012-07-14 18:52:50 +01:00
Jan Schmidt
524b56cb07 gstpad: Move sticky flag clearing code to gst_pad_activate_mode
The ghostpad code directly activates/deactivates the child code by
calling gst_pad_activate_mode, rather than gst_pad_set_active, so
make sure to clear the flags in gst_pad_activate_mode(), which should
catch all cases.
2012-07-12 00:41:23 +10:00
Wim Taymans
b277243fa6 event: improve annotation 2012-07-11 15:35:57 +02:00
Stefan Sauer
30c30ed171 segment: remove removed api from the docs. 2012-07-11 12:51:30 +02:00
Sebastian Dröge
0c5b3cc5f9 toc: Add functions to retrieve the parent GstToc/GstTocEntry of a GstTocEntry 2012-07-11 12:45:51 +02:00
Anton Belka
be38fbba5e toc: Fix gst_toc_find_entry()
Recursive search for the required entry, instead of returning the
top-level entry that contains an entry with the search UID.
2012-07-11 12:36:04 +02:00
Edward Hervey
634cb80c8e structure: Demote WARNING to DEBUG
It is not an issue to get fields that don't exist, calling code should
handle that.
2012-07-11 10:24:51 +02:00
Edward Hervey
d3ffa82639 Remove 0.10-related documentation and "Since" markers 2012-07-10 12:03:27 +02:00
Wim Taymans
82eb275ef9 query: copy structure in _add_allocation_meta()
Make gst_query_add_allocation_meta() take a copy of the passed caps instead of
taking ownership. This makes it easier for the caller in most cases because it
doesn't have to make a copy and deal with NULL values.
2012-07-10 10:31:00 +02:00
Wim Taymans
77bc2170f8 gst: add new flags 2012-07-10 10:11:57 +02:00
Matej Knopp
4afdef5586 miniobject: fix exclusive lock/unlock race 2012-07-10 09:46:36 +02:00
Stefan Sauer
f165a77fdc segment: also copy the segment flag
Fixes segmented seeks (as tested e.g. in the adder tests in base).
2012-07-09 22:16:46 +02:00
Tim-Philipp Müller
68a2eb5d18 gst: sprinkle some G_GNUC_INTERNAL for internal functions 2012-07-09 20:48:56 +01:00
Edward Hervey
94bd61b72d gstbin: collect and aggregate STREAM_START messages
when all sinks have posted a STREAM_START, the bin will forward a
new STREAM_START message to the parent bin or application
2012-07-09 20:31:45 +02:00
Edward Hervey
67b77667bb gstmessage: New GST_MESSAGE_STREAM_START
message counterpart to the GST_EVENT_STREAM_START event
2012-07-09 20:31:45 +02:00
Wim Taymans
5750f19712 docs: fix docs a little more 2012-07-09 16:28:22 +02:00
Wim Taymans
f362f643ac memory: Make GstAllocator a GstObject
Make GstAllocator a GstObject instead of a GstMiniObject, like bufferpool.
Make a new gstallocator.c file. Make a GstAllocator subclass for the default
allocator.
2012-07-09 16:28:22 +02:00
Wim Taymans
6e7c469b48 memory: remove unused macros 2012-07-09 16:28:22 +02:00
Wim Taymans
10f3adfd9d clock: make abstract
Make the GstClock type abstract.
Fix a horrible hack in the clock unit test.
2012-07-09 16:28:22 +02:00
Tim-Philipp Müller
f6e8786be8 toc: remove padding now that the structs are private 2012-07-09 13:15:46 +01:00
Tim-Philipp Müller
1ba0d6f6f6 toc: add gst_toc_dump() function for debugging
API: gst_toc_dump()
2012-07-09 13:12:27 +01:00
Tim-Philipp Müller
c0c79188ca bus, clock: make sure these never have a floating ref
Clear the initial floating ref in the init function for
busses and clocks. These objects can be set on multiple
elements, so there's no clear parent-child relationship
here. Ideally we'd just not make them derive from
GInitiallyUnowned at all, but since we want to keep
using GstObject features for debugging, we'll just do
it like this.

This should also fix some problems with bindings, which
seem to get confused when they get floating refs from
non-constructor functions (or functions annotated to
have a 'transfer full' return type). This works now:

from gi.repository import GObject, Gst

GObject.threads_init()
Gst.init(None)

pipeline=Gst.Pipeline()
bus = pipeline.get_bus()
pipeline.set_state(Gst.State.NULL)
del pipeline;

https://bugzilla.gnome.org/show_bug.cgi?id=679286
https://bugzilla.gnome.org/show_bug.cgi?id=657202
2012-07-09 13:09:45 +01:00
Tim-Philipp Müller
93a2b6e9b3 value: use datetime serialise/deserialise functions for datetimes
This re-uses existing code and makes sure we properly serialise
and deserialise datetimes where not all fields are set (thus
fixing some warnings when serialising such datetimes).
2012-07-07 22:46:00 +01:00
Tim-Philipp Müller
8e7bc47ccd datetime: do our own serialisation so we can serialise microseconds as well
We still don't do that in _to_iso8601_string() though, since
this will probably mostly be used in tags, where it doesn't
matter so much and the microsecond argument might not be
well-received by some tag readers.
2012-07-07 22:43:33 +01:00
Tim-Philipp Müller
853e2bf67f datetime: when deserialising parse microseconds if available 2012-07-07 22:32:40 +01:00
Tim-Philipp Müller
dcc9941931 datetime: fix second parsing failure case when deserialising datetime
When we fail to parse the number of seconds, reset the value to -1
instead of passing some error value as seconds. Also, we can still
try to parse timezone information.
2012-07-07 19:05:55 +01:00
Sebastian Rasmussen
73ab9d17e3 gstinfo: Add destroy notify arguments to debug stubs
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=679535
2012-07-07 13:39:25 +01:00
Sebastian Rasmussen
aab5b579a8 gststructure: Set lcopy string const exactly as glib's macro
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=679534
2012-07-07 13:32:41 +01:00
Wim Taymans
408df31a48 memory: expose the GstAllocation structure
Expose the GstAllocation structure and provide an _init function. This makes it
easier to make 'subclasses' of the allocator that contain more info.
It also allows us to expose the flags on the allocator miniobject.
Make a flag to note that the allocator uses a custom alloc function.
2012-07-06 17:24:32 +02:00
Edward Hervey
d2627a158e structure: Demote WARNING to INFO
It is common to use gst_structure_get() to know if a field is present
or not.
2012-07-06 12:48:44 +02:00
Wim Taymans
3f80cb272e query: use more generic structure for meta params 2012-07-06 11:49:47 +02:00
Wim Taymans
8bca7537e6 query: make find_allocation_meta method
Make gst_query_find_allocation_meta() that also return the index of the metadata
and replaces gst_query_has_allocation_meta().
2012-07-06 11:22:43 +02:00
Wim Taymans
8173622844 query: add flags to allocation query
Make it possible to add API specific flags to the ALLOCATION query. This makes
it possible to also check what kinds of subfeatures of the metadata API are
supported.
2012-07-06 11:00:38 +02:00
Wim Taymans
50cf7f6a08 memory: add gst_memory_init()
Add a method that memory implementations can call to initialize the standard
GstMemory structure.
Move the parent handling in the _free handler.
Rearrange some internal function parameters so that the order is consistent.
Add more memory examples
2012-07-05 17:11:01 +02:00
Wim Taymans
e30930af4f miniobject: fix some miniobject docs 2012-07-05 16:18:27 +02:00
Sebastian Dröge
aa2309e54a event: Add format and position to the segment-done event 2012-07-05 13:04:31 +02:00
Wim Taymans
e2bbfd294d miniobject: increase amount of possible flags 2012-07-05 12:56:51 +02:00
Sebastian Dröge
49d2ad5633 event: Implement segment-done event 2012-07-05 12:52:51 +02:00
Sebastian Dröge
1b75a55b19 query: Remove the TOC query, it's not very useful now that we have sticky events 2012-07-05 12:34:41 +02:00
Sebastian Dröge
67324c4998 quark: Remove unneeded quarks 2012-07-05 12:29:02 +02:00
Sebastian Dröge
dfd9b60221 toc: Make structures opaque and clean up function names and fields a bit 2012-07-05 12:29:02 +02:00
Wim Taymans
070f7c4e1c buffer:fix debug category 2012-07-05 11:19:16 +02:00
Wim Taymans
3b16efa1d1 miniobject: add lock functionality to GstMiniObject
Move the locking methods from GstMemory to GstMiniObject.
Add a miniobject flag to enable LOCKABLE objects. LOCKABLE objects can
use the lock/unlock API to control the access to the object.
Add a minobject flag that allows you to lock an object in readonly mode.
Modify the _is_writable() method to check the shared counter for LOCKABLE
objects. This allows us to control writability separately from the refcount for
LOCKABLE objects.
2012-07-05 11:19:16 +02:00
Wim Taymans
afd5db3c6b info: add new locking debug category 2012-07-05 11:19:16 +02:00
Wim Taymans
4b322e37f8 memory: fix is_exclusive 2012-07-05 11:19:16 +02:00
Wim Taymans
24cd0d055d memory: add LOCK_FLAG_READWRITE define 2012-07-05 11:19:16 +02:00
Wim Taymans
1b52aca7ea memory: small cleanup 2012-07-05 11:19:16 +02:00
Wim Taymans
0ddb33bb4c update for new symbols 2012-07-05 11:19:16 +02:00
Wim Taymans
9a20741b0a memory: Fix the NO_SHARE flag in the constructor
The NO_SHARE flag does not influence the exclusiveness of the buffer initially
but only if a _share operation can be done. Otherwise, we would not be able to
WRITE map a buffer memory because it would have a share count of at least 2.
2012-07-05 11:19:16 +02:00
Wim Taymans
4a0dd59808 memory: only check the locking refcount 2012-07-05 11:19:16 +02:00
Wim Taymans
703683f51b buffer: fix resize
Correctly update the exclusive locks
2012-07-05 11:19:16 +02:00
Wim Taymans
61a9de98d9 memory: Use lock flags for map flags
We implement the locking in gst_memory_map with the lock flags, make matching
flags the same number so that we can use the map flags directly as lock flags.
2012-07-05 11:19:15 +02:00
Wim Taymans
76b30712f5 buffer: lock memory EXCLUSIVE
lock the memory that the buffer references as EXCLUSIVE. This makes sure that
when we share the memory with other buffers that it becomes unwritable.
2012-07-05 11:19:15 +02:00
Wim Taymans
70c1513eac memory: cleanup the locking code
cleanup and fix the locking code
2012-07-05 11:19:15 +02:00
Wim Taymans
93f279cd5a memory: expose the internal locking api
Expose the internally used methods for locking and unlocking the object. Pass
the access mode to the unlock function for extra checks and because we need it
for the EXCLUSIVE locks.
Make some new defines to specify the desired locking.
Add a new EXCLUSIVE lock mode which will increment the shared counter. Objects
with a shared counter > 1 will not be lockable in WRITE mode.
2012-07-05 11:19:15 +02:00
Tim-Philipp Müller
36b051f02e registry: remove outdated bits of warning message
I think we can be reasonable sure people are using an up-to-date
gst-uninstalled script now.
2012-07-04 18:32:47 +01:00
Tim-Philipp Müller
bcec051a5f Add versioned variants of some environment variables
Improve parallel installability in setups like jhbuild by
providing versioned variants of some environment variables:

 GST_REGISTRY_1_0
 GST_PLUGIN_PATH_1_0
 GST_PLUGIN_SYSTEM_PATH_1_0
 GST_PLUGIN_SCANNER_1_0

will now be checked before checking the unversioned ones.

https://bugzilla.gnome.org/show_bug.cgi?id=679407
2012-07-04 18:18:02 +01:00
Tim-Philipp Müller
7b5cd72920 docs: fix typo in GstSample docs 2012-07-04 17:55:58 +01:00
Tim-Philipp Müller
3329f3f4e4 uri: there are valid URI protocols with only two letters, like fd://
We added a minimum length of three letters originally so we would
fail to recognise DOS/Windows-style filenames as valid URIs (as we
should). Two should be just fine as well.
2012-07-04 17:39:52 +01:00
Tim-Philipp Müller
49ea16e041 segment: make sure we don't have unmapped seek flags littering out segment flags
Make GstSeekFlag to GstSegmentFlag conversion explicit, and
set only those seek flags in the segment flags which are
mapped. This makes sure we don't have extraneous flags
littering our segment flag field, which also fixes the
debug printing/serialisation of segment events in the
debug log.
2012-07-04 16:16:04 +01:00
Joshua M. Doe
ba6fad9302 datetime: add conversion to/from GDateTime
Exposes existing constructor.

API: gst_date_time_to_g_date_time()
API: gst_date_time_new_from_g_date_time()

https://bugzilla.gnome.org/show_bug.cgi?id=679080
2012-07-04 10:22:41 +01:00
Tim-Philipp Müller
291403bbb9 utils: remove unused gst_print_* functions 2012-07-04 08:52:08 +01:00
Tim-Philipp Müller
95f2cab053 pads: no need to deactivate pads that are already in PAD_MODE_NONE 2012-07-03 22:24:22 +01:00
Tim-Philipp Müller
0841ac48f1 pads: make pad activation debug logs a bit more readable 2012-07-03 22:20:40 +01:00
Tim-Philipp Müller
4f7aa97b21 pad: clear EOS flag when deactivating pads fixing element re-use 2012-07-03 19:04:54 +01:00
Wim Taymans
db65bfa129 buffer: fix the _get_mapped function
Fix the internal _get_mapped function. gst_memory_make_mapped() takes ownership
of the memory so we need to keep an additional ref until we are done.
2012-07-03 12:42:44 +02:00
Wim Taymans
2c88afb992 buffer: add more debug log 2012-07-03 12:42:44 +02:00
Sebastian Dröge
0412af25fe event: The GAP event is (partially) implemented now, STREAM_CONFIG isn't 2012-07-03 10:03:37 +02:00
Chun-wei Fan
02c07aa854 math-compat.h: add implementation for isnan() for Visual C++
Visual C++ does not have isnan(), so add fallback to
math-compat.h (could use _isnan() in this case, but
this makes it work for all cases where isnan is missing).

https://bugzilla.gnome.org/show_bug.cgi?id=679112
2012-07-02 20:27:53 +01:00
Wim Taymans
e288ac7913 gstobject: don't use g_strdup_value_contents()
g_strdup_value_contents() does some extra escaping, preventing us from using the
output on the console to be used directly.
2012-06-29 11:21:36 +02:00
Wim Taymans
4c6228224f buffer: add _append_region function
Make a gst_buffer_append_region() function that allows you to append a memory
region from one buffer to another. This is a more general version of
gst_buffer_append().
2012-06-28 11:02:19 +02:00
Tim-Philipp Müller
f738dbe86a datetime: ignore 0 days or months in dates
Handle 0 months or days correctly in date strings, so that
2012-06-00 is parsed the same as 2012-06, for example.
2012-06-27 23:00:08 +01:00
Christophe Fergeau
dd9fedb41f parse: escape \ with a \ as well, so that we don't lose the \ when unescaping
If we have a file called Foo\Bar.ogg, there is no way to pass
that filename properly to filesrc in gst_parse_launch(), since
gst_parse_unescape() will just unescape \x to x.

Not cherry-picking this into 0.10 since there are apparently
apps that work around this problem and which would break if
we fixed it there too.

https://bugzilla.gnome.org/show_bug.cgi?id=673319
2012-06-27 19:59:29 +01:00
Tim-Philipp Müller
e4301fe50f elementfactory: annotate some of the type defines for g-i
Type is not picked up yet though, and we still need
to annotate values for the 'simple' defines.

https://bugzilla.gnome.org/show_bug.cgi?id=677925
2012-06-27 16:37:54 +01:00
Tim-Philipp Müller
e552cc74d9 clock: annotate GST_CLOCK_TIME_NONE with its value for g-i
The value now gets picked up, but it still thinks the type
is a 'gint'.

https://bugzilla.gnome.org/show_bug.cgi?id=678928
2012-06-27 14:48:55 +01:00
Tim-Philipp Müller
5a6be2201d datetime: fix compare function
Take into account that not all fields might be valid (though they
are valid in the GDateTime structure). But we should just return
unordered if the set fields don't match. Also, don't check
microseconds when comparing datetimes, since we don't serialise
those by default if they're available. This ensures date times are
still regarded as equal after serialising+deserialising.
2012-06-27 13:51:33 +01:00
Oleksij Rempel
1eb9932dbb datetime: add serialisation to and deserialisation from ISO 8601 strings
Some tag parsers and writers use same datetime format based on ISO 8601.
We can reduce some code by creating some general functions for it.

API: gst_date_time_to_iso8601_string()
API: gst_date_time_new_from_iso8601_string()

https://bugzilla.gnome.org/show_bug.cgi?id=678031
2012-06-27 12:37:06 +01:00
Tim-Philipp Müller
2c532aa821 toc: put toc directly into event/message/query structure
Now that TOCs are refcounted and have a GType, we can just
stuff a ref of the TOC directly into the various toc
event/message/query structures and get rid of lots of
cracktastic GstStructure <-> GstToc serialisation and
deserialisation code. We lose some TOC sanity checking
in the process, but that should really be done when
it's being created anyway.
2012-06-26 20:43:50 +01:00
Tim-Philipp Müller
0cb9ad013a Revert "bus: skip gst_bus_create_watch as GSource is not introspectable"
This reverts commit 930e36a89b.

This shouldn't have been pushed, since GSource is now handled
(https://bugzilla.gnome.org/show_bug.cgi?id=657725)
2012-06-26 18:22:33 +01:00
Johan Dahlin
930e36a89b bus: skip gst_bus_create_watch as GSource is not introspectable
https://bugzilla.gnome.org/show_bug.cgi?id=657640
2012-06-26 18:19:18 +01:00
Tim-Philipp Müller
e11f38b98b toc: add more entry types
Make entry types less abstract.

https://bugzilla.gnome.org/show_bug.cgi?id=678742
2012-06-26 17:30:19 +01:00
Wim Taymans
d3f5dd0707 miniobject: add steal_qdata
Rework the qdata code a little
2012-06-26 09:51:10 +02:00
Tim-Philipp Müller
03ac16c1d8 tocsetter: clean up and update API for refcounted TOCs
Let's keep it simple for now:

gst_toc_setter_reset_toc() -> gst_toc_setter_reset()
gst_toc_setter_get_toc_copy() -> removed
gst_toc_setter_get_toc() -> returns a ref now
gst_toc_setter_get_toc_entry_copy() -> removed,
    use TOC functions instead
gst_toc_setter_get_toc_entry() -> removed,
    use TOC functions instead
gst_toc_setter_add_toc_entry() -> removed,
    to avoid problems with (refcount-dependent)
    writability of TOC; use TOC functions instead
2012-06-25 20:18:32 +01:00
Wim Taymans
17022f7ad1 memory: improve docs
Mention that custom allocator functions can pass whatever they want to the
user_data.
2012-06-25 09:33:18 +02:00
Alexander Saprykin
3ba43888f4 tagsetter: use G_DEFINE_INTERFACE_* macro
https://bugzilla.gnome.org/show_bug.cgi?id=673641
2012-06-25 00:31:01 +01:00
Alexander Saprykin
49eb73be77 tocsetter: use G_DEFINE_INTERFACE_* macro
https://bugzilla.gnome.org/show_bug.cgi?id=673641
2012-06-25 00:30:59 +01:00
Tim-Philipp Müller
8590be2861 tocsetter, gst-launch, tests: update for GstToc API changes 2012-06-24 20:15:19 +01:00
Tim-Philipp Müller
f20efe23a3 toc: make GstToc and GstTocEntry mini objects
Because we can, and in order to make them refcounted.
2012-06-24 20:15:11 +01:00
Tim-Philipp Müller
528f89c940 taglist: fix confusing log message 2012-06-23 21:42:58 +01:00
Tim-Philipp Müller
06d96f1bda value: fix int64 - int64 range intersection on big endian systems
Works better if we use the v_int64 field of the GValue instead of v_int.
2012-06-23 21:35:33 +01:00
Tim-Philipp Müller
1be934f0dd miniobjects: pass copy, dispose and free function to gst_mini_object_init()
So mini objects don't have to poke into the GstMiniObject part
of the structure. Saves lines of code, and seems slightly cleaner.
We don't have proper OO hierarchies or methods here after all.
2012-06-23 20:02:02 +01:00
Tim-Philipp Müller
8973bca63c taglist: remove some outdated FIXMEs and comments 2012-06-23 17:05:22 +01:00
Tim-Philipp Müller
4b5c8cada2 sample: some more g-i annotations 2012-06-23 17:04:53 +01:00
Tim-Philipp Müller
bc28ebf08d sample: add compare function for GstSample
Should make gst_tag_list_is_equal() work properly with image tags.

https://bugzilla.gnome.org/show_bug.cgi?id=672637
2012-06-23 16:59:10 +01:00
Tim-Philipp Müller
533ecb8840 value: fix buffer compare function 2012-06-23 16:30:03 +01:00
Tim-Philipp Müller
2f46207ec7 parse: update for gst_element_make_from_uri() change 2012-06-23 14:43:21 +01:00
Tim-Philipp Müller
f8445bd293 uri: add error argument to gst_element_make_from_uri()
So callers can differentiate between there not being a
handler for the protocol, and them not accepting the URI
for some reason.

https://bugzilla.gnome.org/show_bug.cgi?id=645467
2012-06-23 14:43:17 +01:00
Tim-Philipp Müller
b5a064850e memory: annotate GstMapInfo data as array for g-i 2012-06-23 12:39:10 +01:00
Wim Taymans
7da1d23a9b info: add destroy notify to gst_debug_add_log_function() 2012-06-20 13:28:08 +02:00
Wim Taymans
d2c632fcda pad: improve introspection annotation 2012-06-20 13:27:33 +02:00
Wim Taymans
6efb5c9b6b bus: add GDestroyNotify to set_sync_handler() 2012-06-20 12:29:35 +02:00
Wim Taymans
b2aa56f4e3 task: add separate methods to add enter/leave callback
Remove the structure of callbacks and replace with separate methods to register
each callback. This is much more binding friendly.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=677898
2012-06-20 11:59:09 +02:00
Wim Taymans
76e8b2ecda task: add GDestroyNotify to _new
Add a GDestroyNotify to the user_data we pass to gst_task_new()
Change gst_pad_start_task() to also take the notify
2012-06-20 10:31:49 +02:00
Wim Taymans
d7d5306009 clock: remove _full version
Rename gst_clock_id_wait_async_full() to gst_clock_id_wait_async()
and remove the old gst_clock_id_wait_async() version.
2012-06-20 09:58:14 +02:00
Evan Nemerson
870d631f51 task pool: set scope of gst_task_pool_push callback to async 2012-06-19 17:37:59 -07:00
Evan Nemerson
b70aefdb85 introspection: add missing return value annotations 2012-06-19 17:33:45 -07:00
Evan Nemerson
8620b30df9 introspection: rename some "data" arguments to "user_data"
GObject Introspection will automatically treat "user_data" arguments
as closure data.
2012-06-19 16:09:10 -07:00
Evan Nemerson
4e89ecd4d1 toc: add some missing element-type annotations 2012-06-19 16:08:46 -07:00
Evan Nemerson
d5c54b07fc buffer pool: put GstBufferPoolAcquireParams typedef before struct
Works around https://bugzilla.gnome.org/show_bug.cgi?id=581525
2012-06-19 16:06:49 -07:00
Sebastian Dröge
de37675e3a memory: Fix docs typo 2012-06-19 14:31:03 +01:00
Wim Taymans
fb874e2104 clock: assert about timestamp overflows
Assert when converting to timeval and timespec about overflows. This can happen
on platforms with 32bits long.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=678181
2012-06-19 14:09:02 +02:00
Wim Taymans
61fefbb542 pad: move gst_pad_set_caps() to compat
We want code to explicitly send a caps event instead.
2012-06-18 16:14:19 +02:00
Wim Taymans
85feb64912 utils: fix some docs 2012-06-18 16:13:22 +02:00
Sebastian Rasmussen
74cf810392 clock: fix compiler warning
Cast to the right value, it might indeed overflow but we want the compiler to
ignore that.
2012-06-18 15:28:20 +02:00
Wim Taymans
2cb9eba560 miniobject: hide qdata array layout 2012-06-18 15:22:26 +02:00
Evan Nemerson
c29168ed5e atomic queue: register as boxed type 2012-06-18 13:15:03 +02:00
Evan Nemerson
6c6bb0e217 introspection: assorted introspection and documentation fixes
These changes are to clean up syntax issues such as missing colons,
missing spaces, etc., and minor issues such as argument names in
headers not matching the implementation and/or documentation.
2012-06-18 13:11:40 +02:00
Evan Nemerson
49ba9ef056 toc setter: change GstTocSetterIFace to GstTocSetterInterface
Without this GObject Introspection does not recognize the connection
to GstTocSetter.
2012-06-18 13:10:34 +02:00
Wim Taymans
95f016b795 bufferpool: update docs a little 2012-06-18 12:15:57 +02:00
Wim Taymans
2d19ed41c8 bufferpool:check caps argument
Caps should be NULL or fixed when configured in a bufferpool
2012-06-18 10:13:38 +02:00
Wim Taymans
c066ea8c69 caps: NULL is not a valid caps anymore 2012-06-15 17:01:37 +02:00
Wim Taymans
2cab15c9f6 docs: improve API docs 2012-06-15 12:57:24 +02:00
Tim-Philipp Müller
34895ae332 alllocator: no need to store structure size inside the structure 2012-06-15 10:27:18 +01:00
Tim-Philipp Müller
16e5684486 query: no need to store the size of the structure inside the structure 2012-06-15 10:26:57 +01:00
Tim-Philipp Müller
7eecd8f56f event: no need to store the size of the structure inside the structure 2012-06-15 10:26:57 +01:00
Tim-Philipp Müller
b4a9a2f79e bufferlist: no need to store the size of the structure inside the structure 2012-06-15 10:26:56 +01:00
Tim-Philipp Müller
463268b21f caps: no need to store the size of the caps structure inside the structure 2012-06-15 10:26:56 +01:00
Tim-Philipp Müller
2677f9b56d message: no need to store size of the message structure inside the structure 2012-06-15 10:26:56 +01:00
Tim-Philipp Müller
fcd6e1f89c sample: no need to store the size of the sample structure inside the structure 2012-06-15 10:26:56 +01:00
Tim-Philipp Müller
e560d7a364 taglist: no need to store the size of the tag list structure inside the structure 2012-06-15 10:26:56 +01:00
Wim Taymans
eea41eb3a2 miniobject: expand docs a little
Add blurb about qdata and weak refs.
2012-06-15 11:24:46 +02:00
Wim Taymans
2a4079954a miniobject: add qdata
Keep track of qdata for miniobjects. Reuse the weak ref array for this because
we can.
2012-06-15 11:01:29 +02:00
Wim Taymans
e57cda1429 miniobject: fix error in the weak ref handling
When 2 weak refs are added, the array is not resized big enough.
Simplify the weak ref handling code.
Free memory when we remove all weak refs.
Allow installing the same weak ref multiple times, like in gobject.
2012-06-15 10:58:21 +02:00
Wim Taymans
12aefaa078 miniobject: remove the size field
The size field is used by subclasses to store the total allocated size of the
memory for this miniobject. Because miniobject doesn't really do anything with
this field we can move it to the subclasses.
2012-06-14 17:11:11 +02:00
Wim Taymans
a1c5b00e72 memory: make GstMemory a miniobject 2012-06-14 16:34:28 +02:00
Wim Taymans
ec8ac0bb16 trace: always print miniobject refcount 2012-06-14 16:34:28 +02:00
Wim Taymans
db204ea24a memory: fix copy function
Make the copy function map to ref because we can't safely copy the user_data.
2012-06-14 16:34:28 +02:00
Wim Taymans
a7793f1fd7 memory: make GstAllocator a miniobject 2012-06-14 16:34:28 +02:00
Vincent Penquerc'h
c65eebe28c element: fix pad transfer annotation from none to full
since the pad will be unreffed.
2012-06-14 14:06:12 +01:00
Wim Taymans
7b6ebd4b5b message: add the running-time to the async-done message
Add the running-time of the buffer that caused the async operation to complete
to the async-done message.
Update bin to handle the new async-done message.
2012-06-14 09:04:33 +02:00
Wim Taymans
9c8ee44f9b pipeline: use reset_time message to reset the start time
Use the new RESET_TIME message to reset the start-time of the pipeline to the
requested time.
Make basesink request a new running-time when the flush-stop message tells it to
insteasd of waiting for preroll.
2012-06-14 09:04:33 +02:00
Wim Taymans
8118767c82 message: add a new message to reset time
Add a new message to reset the pipeline running_time. Currently reseting the
pipeline can only be requested in the async_done message which means that the
pipeline needs to be prerolled. It is better to move this to a separate message.
2012-06-14 09:04:28 +02:00
Wim Taymans
d05ad920ce bin: always recurse into bins when doing state changes
Never skip the state change of a bin because it needs to update the base time of
its children when needed.
2012-06-13 11:03:19 +02:00
Tim-Philipp Müller
5b37641cbc datetime: clean-ups and new API adjustments
Remove constructors we don't want:
gst_date_time_new_ymd_h() because we don't want to
support hour-only for now;
gst_date_time_new_ymd_hm() because we don't want to
add constructors with time info where the caller doesn't
have to think about what timezone the time is in.
Lots of compulsive clean-up. Docs fixes. Replace
has_minute() and has_hour() with has_time().
2012-06-12 23:56:28 +01:00
Oleksij Rempel
000ebef2f4 datetime: allow GstDateTime where not all fields are set
In order to deserialise and re-serialise dates and date times
from tags properly, we need to be able to express partial
dates (e.g. YYYY or YYYY-MM) and date times.

We only support partial date times where all the more
significant fields above the first unset field are set
(e.g. YYYY-00-DD is not supported).

Calling _get_foo() when foo is not set is not allowed
any more, callers need to check which fields are set
first.

https://bugzilla.gnome.org/show_bug.cgi?id=677757
2012-06-12 22:53:01 +01:00
Tim-Philipp Müller
d916018021 message: fix up minor inconsistency in structure name of state-changed message 2012-06-12 22:45:44 +01:00
Evan Nemerson
d13ce8b7e8 introspection: add some missing annotations 2012-06-12 20:48:50 +02:00
Stefan Sauer
92d5fb8660 childproxy: add a few more comments 2012-06-12 11:06:46 +02:00
Stefan Sauer
6f6254d2b0 childproxy: fix signal handler signatures in class
When adding the name parameter, we forgot to add it here too.
2012-06-11 20:34:00 +02:00
Stefan Sauer
19e5fc54b7 childproxy: use GstChildProxy instead of GObject on the public api
Fix usage and also cleanup gst_object api use on gobjects.
2012-06-11 18:25:18 +02:00
Wim Taymans
26682f7c7a element: remove unused UNPARENTING flag 2012-06-11 15:49:10 +02:00
Wim Taymans
85d5a29b40 bin: reorganize _remove_func to avoid races
Make the gst_bin_remove_func more like the add_func. Check if the element we try
to remove from the bin has the bin as the parent and set the parent flag to NULL
immediately, this allows us to avoid concurrent remove operations without using
the UNPARENTING element flag. After we unparented the element from the bin, we
update the bin state and remove the element from the list. Finally we unlink
all the pads.

This avoids a race condition where the element could still claim to have the
bin as the parent while the bin didn't have a pointer to the element anymore.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=647759
2012-06-11 15:41:58 +02:00
Matej Knopp
a362b844f8 gstelement: Start over if subclass removed the next pad too
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=677818
2012-06-11 10:43:34 +02:00
Tim-Philipp Müller
bfe1cf9926 datetime: remove fallback code for old GLibs 2012-06-09 18:05:14 +01:00
Edward Hervey
915ca4685c gstutils: Faster read macros
On platforms that can do unaligned read/write, we can read/write much faster
by just casting.

https://bugzilla.gnome.org/show_bug.cgi?id=599546
2012-06-08 14:58:00 +02:00
Edward Hervey
cdf1cc0cf5 registry: We name the registry after the target cpu
And not the host cpu

Conflicts:

	gst/gstregistry.c
2012-06-07 10:57:31 +02:00
Wim Taymans
6758e5f00d element: fix pad cleanup in dispose
In the dispose handler we first need to release all the request pads and then
remove the remaining pads. This is because it is possible that releasing the
request pad might also cleanly remove some of the other dynamic pads, like
what rtpsession does.

https://bugzilla.gnome.org/show_bug.cgi?id=677436
2012-06-06 15:33:57 +02:00
Sebastian Dröge
738cf12d96 event: Don't make the TOC event a multi-sticky event
Elements are supposed to merge upstream events.
2012-06-06 14:16:01 +02:00
Havard Graff
75853fa79b Make sure that unlinked pads do not cause a return false on latency events.
Context: Latency configuration should not be
messed up because of not-linked pads. In general,
one return FALSE on latency distribution causes
the "overall" pipeline latency configuration to
fail. This shows up as noise in logs (warning).

Conflicts:

	gst/gstpad.c
2012-06-06 13:42:32 +02:00
Wim Taymans
c10d39a804 event: add name to sticky_multi events
The name of the event is used to store multiple sticky events of a certain type
on a pad.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676859
2012-06-06 12:52:09 +02:00
Wim Taymans
15d85b9edb query: improve docs 2012-06-06 09:15:04 +02:00
Wim Taymans
d907544ab1 pad: only serialized events can't pass after EOS
Only serialized events can't be sent on pads that are EOS. Otherwise a seek
event would be refused as well.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=677520
2012-06-06 09:14:58 +02:00
Tim-Philipp Müller
1f8e6b4fa5 gst_tag_list_free -> gst_tag_list_unref 2012-06-05 15:05:07 +01:00
Wim Taymans
64b5eeefa3 utils: improve debug 2012-06-05 09:39:41 +02:00
Wim Taymans
b0756827f6 pad: don't pause task on EOS
Elements should not rely on core to pause tasks on EOS.
2012-06-05 09:10:05 +02:00
Wim Taymans
bae0c4b0c6 pad: fix event type check 2012-06-05 09:00:01 +02:00