Tim-Philipp Müller [Sat, 30 May 2009 19:36:25 +0000 (20:36 +0100)]
fakesink: hack around crasher bug in g_object_notify() for out-of-band events
GObject may crash if two threads do concurrent g_object_notify() on the same
object. This may happen if fakesink receives an out-of-band event such as
FLUSH_START while processing a buffer or serialised event in the streaming
thread. Since this may happen with the default settings during a common
operation like a seek, and there seems to be little chance of a timely fix
in GObject (see #166020), we should hack around this issue by protecting all
of fakesink's direct g_object_notify() calls with a lock.
Also add unit test for the above.
Fixes #554460.
Tim-Philipp Müller [Sun, 31 May 2009 15:17:45 +0000 (16:17 +0100)]
taglists: make _get_{string|pointer} return FALSE for NULL values
Make gst_tag_list_get_string() return FALSE for NULL strings and
empty strings, and gst_tag_list_get_pointer() return FALSE for
NULL pointers, like we do with dates and buffers.
Fixes #560345.
Tim-Philipp Müller [Sat, 30 May 2009 19:50:40 +0000 (20:50 +0100)]
taglists: warn if someone tries to add empty or NULL string tags to a taglist
Also warn if an element or application tries to add a field with an
empty string to a structure (NULL strings are still needed and
allowed though) and do all those checks in the right function.
Fixes #559643.
Tim-Philipp Müller [Fri, 29 May 2009 17:22:42 +0000 (18:22 +0100)]
structure: add gst_structure_id_new() convenience function
Add convenience wrapper for gst_structure_id_empty_new() plus
gst_structure_id_set() and use it in a few places.
API: gst_structure_id_new()
Tim-Philipp Müller [Fri, 29 May 2009 17:00:06 +0000 (18:00 +0100)]
micro-optimisation: use GST_QUARK in more places
Use gst_structure_id_empty_new() in combination with GST_QUARK
rather than gst_structure_id_new() when creating message, event,
query and taglist structures. Mostly just because we can.
Wim Taymans [Fri, 29 May 2009 14:04:28 +0000 (16:04 +0200)]
element: reset start_time in lost state
Wim Taymans [Fri, 29 May 2009 11:03:15 +0000 (13:03 +0200)]
docs: update element an pipeline docs
Wim Taymans [Fri, 29 May 2009 10:48:28 +0000 (12:48 +0200)]
docs: remove a TODO item that is fixed now
Wim Taymans [Fri, 29 May 2009 10:21:36 +0000 (12:21 +0200)]
pipeline: deprecate old methods, fix test
Deprecate the old _set_stream_time and _get_last_stream_time methods because
they are now equivalent to the better named _set/_get_start_time.
Wim Taymans [Thu, 28 May 2009 14:30:52 +0000 (16:30 +0200)]
pipeline: use START_TIME to keep track of time
Use the element START_TIME to keep track of the running time when the pipeline
paused so that it can be used to restore the base_time.
Take the start_time before setting the children to PAUSED so that we can
distribute the start_time to the children.
Wim Taymans [Thu, 28 May 2009 13:40:01 +0000 (15:40 +0200)]
bin: set the base_time and start_time better
Simply set the start_time and base_time on the element instead of calling the
setters.
Wim Taymans [Wed, 27 May 2009 09:35:58 +0000 (11:35 +0200)]
bin: make the bin set the start_time on elements
Set the start_time of the bin on the elements when they are added to the
pipeline and when a state change happens.
Wim Taymans [Tue, 26 May 2009 09:53:05 +0000 (11:53 +0200)]
element: add start_time field an methods
Add a start_time field and some methods. The start_time will contain the
running_time of when the element last went to paused. This time can be user to
report the position in PAUSED but also to do more correct clipping and
stepping later.
Arnout Vandecappelle [Thu, 28 May 2009 20:02:21 +0000 (22:02 +0200)]
adapter: fix _masked_scan_uint32() at boundaries
gst_adapter_masked_scan_uint32 could return values smaller than offset
if the first byte(s) of the mask are 0 and the pattern matches the
beginning of the adapter.
Added examples to documentation of gst_adapter_masked_scan_uint32().
Also added some more masked boundary tests.
Fixes #584118
Wim Taymans [Thu, 28 May 2009 14:36:32 +0000 (16:36 +0200)]
pad: add pad private structure
Add pad private structure and move the new chainlistfunc into the private
struct. This avoids ABI breakage and allows us to expand in the future.
Sebastian Dröge [Wed, 27 May 2009 14:34:19 +0000 (16:34 +0200)]
Add missing symbol to the win32 exports
This was accidentially removed by my last commit.
Wim Taymans [Wed, 27 May 2009 14:17:31 +0000 (16:17 +0200)]
buffer: avoid memory leaks
Avoid leaking the caps of the dest buffer and avoid doing needless caps
refs.
When the source and target buffers are the same, return immediatly.
Sebastian Dröge [Wed, 27 May 2009 12:32:51 +0000 (14:32 +0200)]
API: Add gst_message_{new,parse}_tag_full() to get/set the source pad
Fixes bug #582588.
Sebastian Dröge [Wed, 27 May 2009 12:06:13 +0000 (14:06 +0200)]
Revert "element: Set the originating pad as message source in gst_element_found_tags_for_pad ()"
This reverts commit
bebfde75027e975b7e7c74c6358c5be83ea4ac9f.
This change shouldn't be done in a stable release series as
applications are actually expecting the sender to be an
GstElement. One example is totem.
Jan Schmidt [Tue, 26 May 2009 10:35:49 +0000 (11:35 +0100)]
Update common
Tim-Philipp Müller [Tue, 26 May 2009 09:41:28 +0000 (10:41 +0100)]
Fix 'make distcheck'
The check-enum-gettypes rule didn't work for 'make distcheck' since
it makes assumptions about the location of the source files from the
current working directory which isn't true during distchecking.
Tim-Philipp Müller [Tue, 26 May 2009 09:38:56 +0000 (10:38 +0100)]
manuals.mak: attempt to make 'make distcheck' work with -jN
Attempt to fix the 'cannot create regular file build/image.entitites:
file exists' error I got.
Tim-Philipp Müller [Mon, 25 May 2009 22:58:37 +0000 (23:58 +0100)]
docs: fix cdparanoia example pipeline in gst-launch man page
Wim Taymans [Mon, 25 May 2009 16:44:14 +0000 (18:44 +0200)]
element: fix typo in comments
Jan Schmidt [Mon, 25 May 2009 16:43:32 +0000 (17:43 +0100)]
dist: Fix the name of the header to dist: testrtpool.h, not rtpool-test.h
Jan Schmidt [Mon, 25 May 2009 16:03:05 +0000 (17:03 +0100)]
Update common
Wim Taymans [Mon, 25 May 2009 14:54:25 +0000 (16:54 +0200)]
clock: remove assertion
Remove an assertion, this is not really an error in all cases.
Fixes #582010
Wim Taymans [Mon, 25 May 2009 14:21:55 +0000 (16:21 +0200)]
clock: enable monotonic clock when we can
Enable the monotonic clock by default when we can.
Fixes #583554
Wim Taymans [Mon, 25 May 2009 12:52:13 +0000 (14:52 +0200)]
docs: add Image to draft klass documentation
Wim Taymans [Mon, 25 May 2009 11:03:42 +0000 (13:03 +0200)]
pad: keep task ref before releasing the lock
Keep a ref to the task on the pad so that a concurrent stop can stop and join
the task.
Wim Taymans [Mon, 25 May 2009 09:56:47 +0000 (11:56 +0200)]
gsttask: avoid join to return early
Unset the running flag after we released the lock for posting the stream-status
message. If we set the running flag to FALSE too early, the join method will
just continue without waiting for the message to be posted, leading to potential
crashes.
Stefan Kost [Sun, 24 May 2009 20:14:26 +0000 (23:14 +0300)]
preset: fix update rule
Only update the preset from system, if we had a preset before and system
version is newer.
Stefan Kost [Fri, 22 May 2009 20:47:30 +0000 (23:47 +0300)]
controller: add a benchmark to verify the switch to gsequence
Stefan Kost [Fri, 22 May 2009 20:50:58 +0000 (23:50 +0300)]
controller: add more error handling to example
Stefan Kost [Fri, 22 May 2009 20:14:41 +0000 (23:14 +0300)]
registry: don't free node-date and deref again. Fixes #580579
When writing a cache chunk fails, we were freeing the node and jump to a final
cleanup which dereferenced a null pointer. Leve freeing the node to the cleanup
code in fail_free_list. (sorry for committing wrong fix before).
Stefan Kost [Fri, 22 May 2009 20:10:00 +0000 (23:10 +0300)]
registry: don't free node-date and deref again. Fixes #580579
When writing a cache chunk fails, we were freeing the node and jump to a final
cleanup which dereferenced a null pointer. Leve freeing the node to the cleanup
code in fail_free_list.
Stefan Kost [Fri, 22 May 2009 11:17:56 +0000 (14:17 +0300)]
controller: add G_LIKELY and join two if for same condition
A G_LIKELY for the sequence!=NULL checks. Join two ifs to an if-else. Add
indent guides to keep indent form breaking the function declaration
Edward Hervey [Fri, 22 May 2009 10:57:10 +0000 (12:57 +0200)]
gsttypefindhelper: Fix indentation
Stefan Kost [Fri, 22 May 2009 09:24:22 +0000 (12:24 +0300)]
docs: fix gtk-doc warnings
Move MT safety to main description (it does not belong to Return: or Since:
statement). Add a few missing return docs. Downgrade a normal comment froma doc
comment. Fix a doc header to only contain symbol name.
Jan Schmidt [Fri, 22 May 2009 09:19:36 +0000 (10:19 +0100)]
Automatic update of common submodule
From d3a8fab to 888e0a2
Jan Schmidt [Fri, 22 May 2009 08:51:44 +0000 (09:51 +0100)]
dist: Add rtpool-test.h to the sources list so it gets disted.
Fixes the distcheck
Jan Schmidt [Fri, 22 May 2009 08:44:25 +0000 (09:44 +0100)]
gitignores: Ignore the clockstress benchmark binary
Jan Schmidt [Fri, 22 May 2009 08:41:36 +0000 (09:41 +0100)]
controller: Silence a warning from the GSequence being NULL.
Fix a warning that occurs when the self->priv->values is NULL and
the code tries to retrieve an iterator from it. The warning was showing
up in the checks for the volume element.
Jan Schmidt [Fri, 22 May 2009 08:33:02 +0000 (09:33 +0100)]
docs: Fix up some documentation warnings.
Since: tags should always be the last thing in a doc block, apparently.
Add some Returns: descriptions to some recent functions.
Wim Taymans [Thu, 21 May 2009 15:32:00 +0000 (17:32 +0200)]
docs: update docs for stream_time->running_time
Change some instances where we wrongly refer to stream time where it should have
been running time.
Tim-Philipp Müller [Thu, 21 May 2009 09:57:47 +0000 (10:57 +0100)]
gst-launch: don't use G_GUINT32_FORMAT in translatable string
xgettext doesn't handle this very well. Fixes #583419.
Tim-Philipp Müller [Wed, 20 May 2009 16:07:37 +0000 (17:07 +0100)]
autogen.sh: can remove the -Wno-portability from here now
since we added it to configure.ac.
Wim Taymans [Wed, 20 May 2009 20:18:16 +0000 (22:18 +0200)]
adapter: improve the flush function
Remove a compare and branch from flush.
Stefan Kost [Wed, 20 May 2009 14:24:19 +0000 (17:24 +0300)]
controller: fix assertion when freeing the control source
Wim Taymans [Wed, 20 May 2009 10:48:41 +0000 (12:48 +0200)]
adapter: potentially save a memcpy in _take
Directly use the assembled_data in _take() functions when we can instead of
copying it out.
Wim Taymans [Wed, 20 May 2009 09:36:11 +0000 (11:36 +0200)]
adapter: micro optimisations
Wim Taymans [Wed, 20 May 2009 09:12:43 +0000 (11:12 +0200)]
adapter: avoid comparisions in fast path
Small tweaks to reduce the number of useless compares in loops.
Wim Taymans [Wed, 20 May 2009 08:28:08 +0000 (10:28 +0200)]
tests: one more adapter test
Wim Taymans [Wed, 20 May 2009 08:27:43 +0000 (10:27 +0200)]
adapter: avoid branch in copy code
Hannes Bistry [Wed, 20 May 2009 07:56:11 +0000 (10:56 +0300)]
loadsave: fix requestpad handling and serialisation order.
Support request pads when loading. Reverse pad serialisation order to
preserve it when recreating the pipeline.
Wim Taymans [Tue, 19 May 2009 22:45:27 +0000 (00:45 +0200)]
defs: add new symbol
Wim Taymans [Tue, 19 May 2009 22:44:11 +0000 (00:44 +0200)]
docs: add new symbol to docs
Wim Taymans [Tue, 19 May 2009 22:37:53 +0000 (00:37 +0200)]
adapter: add _masked_scan_uint32
Add a reasonably optimized new gst_adapter_masked_scan_uint32() function
to scan the adapter for a pattern after applying a mask.
Add some unit tests.
API: GstAdapter::gst_adapter_masked_scan_uint32()
Fixes #583187
Wim Taymans [Tue, 19 May 2009 20:13:04 +0000 (22:13 +0200)]
adapter: more optimisations
Remove duplicate copy code (_peek_into and _copy) and make a unified
optimized copy function.
Tim-Philipp Müller [Tue, 19 May 2009 16:12:41 +0000 (17:12 +0100)]
configure: pass -Wno-portability to automake to suppress warnings
GNU make is required, no point pretending otherwise.
Tim-Philipp Müller [Mon, 18 May 2009 00:00:36 +0000 (01:00 +0100)]
docs: mention that GST_FORMAT_{PERCENT|BUFFERS} are not implemented
Sebastian Dröge [Sun, 17 May 2009 08:46:39 +0000 (10:46 +0200)]
gstclock: Fix ABI breakage on 32 bit architectures
The padding of GstClock is a GstClockTime and not a
gpointer, so adding a pointer requires the padding
size to be changed depending on the pointer size.
Use an union instead.
Fixes bug #582878.
Thiago Santos [Fri, 15 May 2009 18:24:40 +0000 (15:24 -0300)]
[gstvalue] adds safety parenthesis to macros missing them.
Thiago Santos [Fri, 15 May 2009 17:42:48 +0000 (14:42 -0300)]
[gstutils] Adds more safety to GST_WRITE_* and GST_READ_ macros.
Adds safety ( ) to parameters in _GST_PUT and _GST_GET macros.
Fixes #582708.
Wim Taymans [Thu, 19 Mar 2009 10:37:12 +0000 (11:37 +0100)]
clock: use seqlocks to parallellize readers
Wim Taymans [Thu, 16 Apr 2009 13:53:29 +0000 (15:53 +0200)]
stress: add a clock stresstest
Add a stresstest for gst_clock_get_time().
Edward Hervey [Fri, 15 May 2009 09:00:53 +0000 (11:00 +0200)]
Makefile.am: update for added/moved/removed files that weren't dist-ed.
Jan Schmidt [Tue, 12 May 2009 10:29:21 +0000 (11:29 +0100)]
docs: Release script modifications
Sebastian Dröge [Thu, 14 May 2009 20:11:57 +0000 (22:11 +0200)]
controller: Use ordered GSequence instead of GList
This makes lookups and insertions O(log n) instead of
always O(n) for insertions and O(n) in worst case for
lookups.
Fixes bug #582564.
Wim Taymans [Thu, 14 May 2009 10:30:23 +0000 (12:30 +0200)]
docs: rename and delete some design docs
Sebastian Dröge [Thu, 14 May 2009 10:30:04 +0000 (12:30 +0200)]
gst-launch: Print the path string for message sources
This reduces confusion if the message source is a pad
and only "src" is printed as source.
Sebastian Dröge [Thu, 14 May 2009 10:25:20 +0000 (12:25 +0200)]
element: Set the originating pad as message source in gst_element_found_tags_for_pad ()
Fixes bug #582588.
Wim Taymans [Thu, 14 May 2009 09:36:28 +0000 (11:36 +0200)]
element: add gst_element_lost_state_full()
Add a gst_element_lost_state_full() with an extra argument to control
distribution of a new base_time. We will need this for flushing step
operations.
API: GstElement::gst_element_lost_state_full()
Wim Taymans [Wed, 13 May 2009 21:52:02 +0000 (23:52 +0200)]
adapter: don't use realloc, it does a memcpy
Don't use realloc to grow the scratch area because we don't want the memcpy the
old useless data into the new area before we write our new stuff in it.
Wim Taymans [Wed, 13 May 2009 21:38:08 +0000 (23:38 +0200)]
docs: update trickmode document
Wim Taymans [Wed, 13 May 2009 20:51:18 +0000 (22:51 +0200)]
adapter: use g_realloc for resizing the buffer
Use g_realloc for resizing the internal buffer instead of a
less fancy _free/_malloc pair.
Wim Taymans [Wed, 13 May 2009 19:35:23 +0000 (21:35 +0200)]
adapter: move new member to private struct
Move the new members to a private struct because we don't have enough padding
anymore on 32-bits platforms.
Wim Taymans [Wed, 13 May 2009 16:50:23 +0000 (18:50 +0200)]
adapter: update some docs
Wim Taymans [Wed, 13 May 2009 15:09:32 +0000 (17:09 +0200)]
tests: add another test for adapter timestamps
Wim Taymans [Wed, 13 May 2009 14:48:38 +0000 (16:48 +0200)]
tests: add new timestamp unit test
Wim Taymans [Wed, 13 May 2009 14:26:00 +0000 (16:26 +0200)]
defs: add new symbol
Wim Taymans [Wed, 13 May 2009 14:09:20 +0000 (16:09 +0200)]
adapter: add method to keep track of timestamps
Keep track of the timestamp and offset associated with the current head of the
adapter.
API: GstAdapter::gst_adapter_prev_timestamp()
Wim Taymans [Wed, 13 May 2009 14:20:26 +0000 (16:20 +0200)]
adapter: small cleanups
Stefan Kost [Wed, 13 May 2009 08:03:27 +0000 (11:03 +0300)]
debugutils: show more pad-details
Show pad activation mode and pad-flags inside the pad. Write down some ideas
about how we could improve the caps layout.
Stefan Kost [Tue, 12 May 2009 21:29:57 +0000 (00:29 +0300)]
debugutils: layout improvement
dot does not take the head/tail labels into account. For unfixed caps they get
quite large. Double the padding to make it sort of readable in more cases. Also
make normal font bigger and caps-label font smaller to increase our luck.
Tim-Philipp Müller [Tue, 12 May 2009 20:00:15 +0000 (21:00 +0100)]
checks: check for enum types not class_ref'ed in gst_init() in 'make check'
Tim-Philipp Müller [Tue, 12 May 2009 19:58:32 +0000 (20:58 +0100)]
Initialise some more types in gst_init(), esp. the new enum types
Possibly fixes GObject class creation/unref race conditions when
creating the last-message string in fakesink for events with
structures that have fields with these enum types.
Tim-Philipp Müller [Tue, 12 May 2009 19:56:06 +0000 (20:56 +0100)]
systemclock: remove duplicate _get_type() function for GstClockType
Remove the static gst_clock_type_get_type() function in the
systemclock code in favour of the public one in gstenumtypes.c.
Stefan Kost [Wed, 22 Apr 2009 07:53:37 +0000 (10:53 +0300)]
ghostpad: remove deprecated API
_internal_link_function() is deprecated and _iterate_internal_links_function()
is already provided.
Stefan Kost [Tue, 21 Apr 2009 08:33:43 +0000 (11:33 +0300)]
parse-launch: allow specifying GstElement properties via gst_parse_bin_from_description
If deserializing a property fails, check if the value type is a string and if so
attempt to create a bin from the string value. This allows to e.g. specify
audio-sink/video-sink for playbin on gst-launch commandline.
Wim Taymans [Tue, 12 May 2009 15:29:15 +0000 (17:29 +0200)]
docs: add some docs about buffer lists
Wim Taymans [Tue, 12 May 2009 14:18:48 +0000 (16:18 +0200)]
bufferlist: make objects opaque
Wim Taymans [Tue, 12 May 2009 13:33:25 +0000 (15:33 +0200)]
bufferlist: fix a comment
Jonas Holmberg [Tue, 12 May 2009 11:10:55 +0000 (13:10 +0200)]
bufferlist: hook up the pad functions
Reuse buffer code for bufferlists. Not sure if this measurably impacts performance
for the simple buffer case, if it does after doing some benchmarks, we can
decouple it later.
Fixes #572285
Jonas Holmberg [Tue, 12 May 2009 10:08:56 +0000 (12:08 +0200)]
bufferlist: add docs/build/debug/unittest
See #572285
Jonas Holmberg [Tue, 12 May 2009 09:51:37 +0000 (11:51 +0200)]
bufferlist: add bufferlist code
Buffer lists are a means to manage disjoint buffers as one buffer. It's also
possible to put many of those buffers into a list.
The idea is that when support is added to various elements, we will be able to
more efficiently slice and dice buffers, reduce the amount of memcpy and also
reduce data passing overhead.
The implementation is kept simple on purpose, reusing all of the memory
management features we have for miniobjects and buffers.
Access to the bufferlist object is done with an iterator, which allows for
efficient iteration and modification of the list.
See #572285
Edward Hervey [Mon, 11 May 2009 05:49:34 +0000 (07:49 +0200)]
gstbuffer: copy new buffer flags when copying metadata.
Wim Taymans [Mon, 27 Apr 2009 08:13:01 +0000 (10:13 +0200)]
adapter: optimize taking the headbuffer
When a are requested to take a buffer from the adapter that is exactly the
headbuffer, don't make a subbuffer of it but return that head buffer.
Add a unit-test for this new optimisation.
Arnout Vandecappelle [Tue, 5 May 2009 15:41:24 +0000 (17:41 +0200)]
typefind: don't leak the force-caps property
Fixes #581321
Wim Taymans [Tue, 28 Apr 2009 17:20:31 +0000 (19:20 +0200)]
element: fix posting of async-start messages
When an element lost its state but was busy doing a state change, still post the
async-start message with the base_time reset flag or else we might end up with
an old base_time.
this can happen when a sink is goin async to paused and then a flushing seek is
performed. This would cause the base_time to remain unmodified because the
async-start message was not sent.