Commit graph

7079 commits

Author SHA1 Message Date
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
Wim Taymans 66c88c1bb1 pad: fix 'res' may be used uninitialized in this function 2012-06-04 16:19:26 +02:00
Sebastian Dröge 8cc12b05fc pad: Don't accept any buffers or events after EOS 2012-06-04 13:01:40 +02:00
Sebastian Dröge 5a8c901507 pad: Always return errors for EOS events immediately
For non-EOS events things will error out later during data
flow but after EOS events no data flow is happening.

See bug #677340.
2012-06-04 11:25:47 +02:00
Sebastian Dröge 991ac561e1 pad: Only forward caps events to a pad if it accepts the caps
Fixes bug #677335.
2012-06-04 09:27:35 +02:00
Sebastian Dröge 8e6b5c7acf Revert "pad: Return FALSE if pushing of sticky events failed"
This reverts commit 0f924b922c.

Sticky events should always return TRUE when pushing and will
only cause failures during data flow later.
2012-06-02 20:06:39 +02:00
Tim-Philipp Müller 9b308b2b5b pad: fix variable-set-but-not-used compiler warning 2012-06-02 16:18:46 +01:00
Sebastian Dröge 0ca7b85ead pad: If pushing a sticky event failed, make sure to at least push any pending EOS events
Otherwise a pipeline where one sticky event fails to be sent will
never forward EOS events downstream. This can cause pipelines to
wait forever for EOS on errors.
2012-06-02 17:00:48 +02:00
Sebastian Dröge 0f924b922c pad: Return FALSE if pushing of sticky events failed
Instead of just ignoring failure of pushing sticky events and
returning TRUE as if everything is fine.
2012-06-02 16:02:07 +02:00
Tim-Philipp Müller d1379f1671 taglist: add guards to make sure taglist is writable when modifying it
Now that taglists are refcounted we need to check if they're
writable before modifying them.
2012-05-29 08:48:36 +01:00
Tim-Philipp Müller d007ac4a1a taglist: avoid unnecessary string copying when registering tags
Add gst_tag_register_static() - no need to copy all those
string constants, whether translated or not.

API: gst_tag_register_static()
2012-05-29 08:00:28 +01:00
Tim-Philipp Müller cd3875857e gst_tag_list_free() -> gst_tag_list_unref() 2012-05-28 00:08:18 +01:00
Tim-Philipp Müller a88dcc2ab6 taglist: make GstTagList a GstMiniObject
Which adds refcounting support, and other things.
2012-05-28 00:05:16 +01:00
Tim-Philipp Müller b5ab3fb1dc caps: log freeing of caps at same log level as creation, i.e. TRACE 2012-05-27 20:31:30 +01:00
Tim-Philipp Müller 61dcbaab63 message, event: update for tag lists not being structures any more 2012-05-26 11:44:03 +01:00
Tim-Philipp Müller 97c2498bbe taglist: make proper struct not just a GstStructure 2012-05-26 11:44:03 +01:00
Josep Torra d06c7dc6fd debugutils: Fix static linking on OS X
The linking behaviour of external variables that are not initialized
in the compilation unit where they are defined is undefined. On OS X
this causes a linking failure when statically linking GStreamer.
2012-05-25 10:49:47 +02:00
Edward Hervey 07a888f174 uri: Add some debug statements 2012-05-23 09:39:16 +02:00
Stefan Sauer 37f7fc165d docs: improve the seeking docs more.
Also mention it on _element_seek{,_simple} and be more precise why it happens.
2012-05-21 15:17:08 +02:00
Stefan Sauer dca0c19d3e docs: fix a typo and clarify event handling a bit more
Tell about async_done messages for some events and review the _event_new_seek
docs.
2012-05-21 14:34:33 +02:00
Wim Taymans 146ab8a702 bin: try harder to avoid state changes in wrong direction
When the bin does an upward state change, try to avoid doing a downward state
change on the child and vice versa.
Add some more unit tests for this fix.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=621833
2012-05-21 11:58:28 +02:00
Anton Belka 6f54f36199 toc: Add boxed types for GstToc and GstTocEntry 2012-05-21 08:46:48 +02:00
Tim-Philipp Müller 04f8cd886d toc: fix type of pad parameter to gst_toc_entry_new_with_pad() 2012-05-20 18:24:38 +01:00
Tim-Philipp Müller 81e50c21cc toc: use correct GType for tag lists 2012-05-20 18:16:45 +01:00
Tim-Philipp Müller 987286ce2d toc: avoid unnecessary GValue acrobatics 2012-05-20 18:06:22 +01:00
Tim-Philipp Müller 68da2aeeed toc: use global quark table 2012-05-20 17:48:55 +01:00
Tim-Philipp Müller 1dd0708d22 toc: fix internal TOC query and event structure names
Make them consistent with all the other query and event names.
2012-05-20 17:11:37 +01:00
Tim-Philipp Müller 5b4417ff9e pluginfeature: make GstPluginFeature structure private
Make GstPluginFeature opaque until we have time to
clean it up a little. Only GstElementFactory and
GstTypefindFactory derive from it, and they are
opaque already, and we currently don't support
custom plugin features in the registry anyway.
2012-05-19 17:25:24 +01:00
Tim-Philipp Müller ab6171373c pluginfeature: add gst_plugin_feature_get_plugin()
Add function to retrieve plugin that provides this feature.

API: gst_plugin_feature_get_plugin()
2012-05-19 17:16:35 +01:00
Tim-Philipp Müller a9d19a6913 elementfactory: make object struct opaque for now
Make GstElementFactory opaque until we have time to
clean it up a little. It's not something anyone
would need to derive from.
2012-05-19 16:17:12 +01:00
Tim-Philipp Müller 1ee520790a elementfactory: add gst_element_factory_get_metadata_keys()
API: gst_element_factory_get_metadata_keys()
2012-05-19 14:52:29 +01:00
Anton Belka 0bdd1224d3 docs: fix gst_structure_to_string() docs 2012-05-17 12:01:51 +02:00
Sebastian Dröge cacdea6ae6 gst: Rename gst_toc_entry_type_to_string() to gst_toc_entry_type_get_nick()
It's more consistent.
2012-05-15 16:38:30 +02:00
Anton Belka 71d1af2b66 toc: API: Add gst_toc_entry_type_to_string() 2012-05-15 16:13:55 +02:00
Sebastian Rasmussen 1c82367a0e gst: Only include init/deinit of alloc tracing when enabled
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=675806
2012-05-11 13:39:38 +02:00
Raimo Järvi 63234a9dab gst: Fix compiler warnings on mingw-w64
https://bugzilla.gnome.org/show_bug.cgi?id=675525
2012-05-09 09:35:35 +02:00
Sreerenj Balachandran 86e0f4d145 memory: add missing parameter to default_mem_map()
Fixes function signature for correctness.

https://bugzilla.gnome.org/show_bug.cgi?id=675289
2012-05-04 09:22:51 +01:00
Tim-Philipp Müller 5bcbdd83d1 typefindfactory: make object struct opaque for now
Make opaque until we have time to clean it up a little.
2012-05-01 23:23:41 +01:00
Tim-Philipp Müller 509905035d typefindfactory: fix return type of gst_type_find_factory_get_extensions() 2012-05-01 23:23:41 +01:00
Tim-Philipp Müller ecf74cf2db typefindfactory: add gst_type_find_factory_has_function()
Add API so people don't have to poke the struct for this.
2012-05-01 23:23:41 +01:00
Thiago Santos 80fa8aa77b gstcaps: Update docs for gst_caps_is_equal
NULL caps aren't valid caps in 1.0 and aren't accepted in
gst_caps_is_equal
2012-05-01 15:57:39 -03:00
Tim-Philipp Müller d35487e50c uri: require URI protocol bit to be at least 3 characters to be valid
We want to return FALSE when run on a windows-style file path.

https://bugzilla.gnome.org/show_bug.cgi?id=674296
2012-05-01 19:50:36 +01:00
Matej Knopp 5c50c6612a ghostpad: set result on accept caps query when there is no peer 2012-05-01 13:32:41 +02:00
Vincent Penquerc'h 477636479c event: add new seek snap flags
They can be used to select snapping behavior (to previous, next, or
nearest location, where relevant) when seeking.

The seeking implementation (eg, demuxer) may currently ignore some
or all of these flags.
2012-04-30 09:58:09 +01:00
Tim-Philipp Müller e75f68ea57 docs: remove reference to removed API in plugin docs 2012-04-29 20:06:58 +01:00
Tim-Philipp Müller f5918f7605 plugin: avoid some relocations 2012-04-29 20:06:38 +01:00
Tim-Philipp Müller 4889fd6b6f plugin: remove gst_plugin_name_filter
It's only used internally, most other users will likely
want to use gst_registry_find_plugin() directly instead
(and if not, they can easily walk the list and doing the
strcmp themselves).
2012-04-29 18:35:11 +01:00
Tim-Philipp Müller c7eca5ca15 plugin: use GstObject flags for plugin flags 2012-04-29 17:46:32 +01:00
Tim-Philipp Müller 19d4c0ba73 plugin: make GstPlugin object structure opaque for now
There's no reason anyone would want to derive from this, so
just make opaque until we manage to make all the private bits
private properly (which I'm not doing right now because it's
more invasive and I have registry modifications locally which
touch all that code as well).
2012-04-29 17:03:32 +01:00
Tim-Philipp Müller 3954fdcb0d plugin: remove gst_plugin_get_module()
This is an implementation detail really, and it's not
clear what anyone would do with this. It's unused as
far as I'm aware, so just remove it for now.
2012-04-29 16:46:55 +01:00