Commit graph

4574 commits

Author SHA1 Message Date
Jonas Holmberg 22a48fb08c 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
2009-05-12 15:18:53 +02:00
Jonas Holmberg d99cf4db1b bufferlist: add docs/build/debug/unittest
See #572285
2009-05-12 15:18:52 +02:00
Jonas Holmberg 27fb4ce76c 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
2009-05-12 15:18:52 +02:00
Edward Hervey 6c1dce01d1 gstbuffer: copy new buffer flags when copying metadata. 2009-05-12 11:22:11 +02:00
Wim Taymans 8c26c22f2c 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.
2009-05-12 10:20:53 +02:00
José Alburquerque 7ff2f9233f API: Add gst_plugin_register_static_full()
This is mainly useful for bindings that need to provide
some additional user data to the registration function.

Fixes bug #545787.
2009-05-12 09:02:45 +02:00
Sebastian Dröge ad8a35ff3e tags: API: Add functions to add single tags to GstTagList or GstTagSetter
The new functions are gst_tag_setter_add_tag_value()
and gst_tag_list_add_value()). This fixes bug #581198.
2009-05-12 09:02:44 +02:00
Sebastian Dröge c003165b76 GstURIHandler: Use get_type_full() vmethod if specified instead of get_type()
This fixes bug #581281 and makes it easier for bindings to
implement GstURIHandlers. get_protocols_full() was already used
like this.
2009-05-12 09:02:44 +02:00
Tim-Philipp Müller 01b93c1ef2 xmlregistry: remove the old xml registry
No point in keeping it around really. Fixes #577926.
2009-05-12 00:09:58 +01:00
Tim-Philipp Müller 0b285bfa40 tags: add a tag for the container format
API: add GST_TAG_CONTAINER_FORMAT
2009-05-11 23:44:19 +01:00
Tim-Philipp Müller 06d79151c1 bin: fix debug message
Make the debug message show what's actually happening (the message
replaced here is not necessarily of the same type as the one that
replaces it).
2009-05-11 23:41:52 +01:00
Wim Taymans b962f41ca1 GstTask: fix compilation 2009-05-12 00:34:44 +02:00
Wim Taymans d2c5ea9a40 TaskPool: remove _set_func()
Remove the static function set on the TaskPool before _prepare() is called and
allow for assigning a function to a Task when we _push().
Update the examples
2009-05-12 00:27:38 +02:00
Wim Taymans 09368ff155 taskpool: fix a comment 2009-05-12 00:27:22 +02:00
Wim Taymans 4b604f7da6 Pad: post STREAM_STATUS_TYPE_CREATE
Post a stream-status message indicating that a new task was created so that the
application has a chance to change the properties of the task.

Fix unit test to take into account the new ref of the message.
2009-05-12 00:27:10 +02:00
Wim Taymans 02250179d9 GstTask: add methods for configuring the pool
Add getter and setter for configuring the GstTaskPool to use for a GstTask.
2009-05-12 00:26:58 +02:00
Wim Taymans a8d2516fa6 Task: remember pool
Remember the pool we currently have our task running so that we can use it to
join the task later on.
Fix a leak of the taskpool.
2009-05-12 00:26:48 +02:00
Wim Taymans 8e2bd06c31 task: fix deadlock due to typo 2009-05-12 00:25:41 +02:00
Wim Taymans 5fdd5e0a1e GstTask: use GstTaskPool for managing threads
Use the new GstTaskPool to handle streaming threads.
2009-05-12 00:25:11 +02:00
Wim Taymans 4d326be6cf taskpool: fix docs, make push/join generic
Fix some more docs.
Make _push() return a generic id (this can be something else than a GThread in
some cases) and make _join() use that generic id.
2009-05-12 00:22:25 +02:00
Wim Taymans aadac11ae3 taskpool: add new object to manage threads
Add a new object GstTaskPool to manage the streaming threads.
This will allow us to create and use custom configured threads.
2009-05-12 00:22:19 +02:00
Wim Taymans 2d8a22c1da Task: add method to set the priority
Add a method to configure a priority for the threads used by GstTask.
2009-05-12 00:08:35 +02:00
Wim Taymans b59045aab9 GstTask: improve documentation
Improve the documentation for the callbacks.
2009-05-12 00:05:12 +02:00
Wim Taymans 540560a758 GstPad: install thread callbacks of the task
Install thread status callbacks on the task object of a pad and post
STREAM_STATUS messages.
2009-05-12 00:00:44 +02:00
Wim Taymans d4a9ece0b1 message: clarify some docs 2009-05-11 23:53:52 +02:00
Wim Taymans 35eeb4864c Task: call leave_thread before signaling
Call the leave_thread callback before we signal the thread performing the _join
so that we can be sure that the listener still has valid info in the callback.
2009-05-11 23:49:19 +02:00
Wim Taymans e72efeccd1 GstMessage: Add STREAM_STATUS message methods
Add methods to handle the stream_status message types.
2009-05-11 23:47:22 +02:00
Wim Taymans 81c0840ab0 quark: add "object" quark
Add the object quark that will be used for the STREAM_STATUS messages.
2009-05-11 23:47:06 +02:00
Wim Taymans d52114d449 Task: remove create/join methods
Prepare for using the GstTaskPool object. We don't need the create and join
callbacks anymore, they will be handled by the pool.
2009-05-11 23:44:42 +02:00
Wim Taymans a830dcd9c2 GstTask: add private data, fix parent_class
Use the parent class that the glib macro gave us
Actually add the private data to the task.
2009-05-11 23:30:02 +02:00
Wim Taymans d68a20906a GstTask: hook up enter/leave/notify callbacks
Hoop up the notify/enter/leave callbacks.
2009-05-11 23:24:32 +02:00
Wim Taymans 9d8d9e0805 GstTask: allow setting callbacks
Allow setting thread callbacks that will allow us to control the threads used by
the task.
2009-05-11 23:19:53 +02:00
Wim Taymans c3a4f5a976 GstTask: add some more docs 2009-05-11 23:04:02 +02:00
Wim Taymans 10f5429887 GstPad: use new task function
Use the new task_set_state function and actually return its result to
the caller.
2009-05-11 23:00:45 +02:00
Wim Taymans c31c3f215f GstTask: unify task state functions
Add new gst_task_set_state() to change the state of the task instead of
duplicating the code in each function.

API: GstTask::gst_task_set_state()
2009-05-11 22:59:35 +02:00
Wim Taymans fb3d528d1a Message: small indentation change. 2009-05-11 22:40:11 +02:00
Wim Taymans 761b0e39c1 Avoid unneeded type checks 2009-05-11 22:35:09 +02:00
Wim Taymans ceb74fe2cf registry: avoid calling _get_name() too much
Avoid calling gst_plugin_get_name() too many times but instead cache
the value.
2009-05-11 22:35:09 +02:00
Wim Taymans 84c5db2635 Use new _ref_sink when we can 2009-05-11 22:35:09 +02:00
Wim Taymans 54401df78c gstobject: add gst_object_ref_sink
Add the gst_object_ref_sink() method to match the glib one.

API: GstObject::gst_object_ref_sink()
2009-05-11 22:35:08 +02:00
Wim Taymans 20d2734a25 gstobject: avoid type checks 2009-05-11 22:35:08 +02:00
Wim Taymans 13515a7535 gstbuffer: avoid typechecks in finalize
Avoid useless typechecking in the finalize of buffers and subbuffers.
2009-05-11 22:35:08 +02:00
Jan Schmidt bd07633cc2 info: Support new printf extensions in glibc 2.10
The printf extension mechanism changed in glibc 2.10, and the older
register_printf_function is deprecated. Detect and use the new
mechanism where available.
2009-05-11 21:30:14 +01:00
Wim Taymans 81cadeecd2 GstBin: set PENDING_STATE correctly
Set the pending state correctly when we are going to perform an async
state_continue on the bin.
Fixes #580121
2009-04-24 19:36:22 +02:00
Stefan Kost 581ccbb581 gstdebug: compete stubs. Fixes #579177.
Avoid defines when including gstinfo.h ourself and complete stubs. Sync stub
returns with the defines.
2009-04-17 15:01:46 +03:00
Yaakov Selkowitz eacfe25cf9 gst_init: relocatability is unnecessary on Cygwin
See #555978.
2009-04-17 11:39:59 +01:00
Brian Cameron e6a3fd9bbb gstinfo: don't assume G_HAVE_ISO_VARARGS implies ISO C99
Makes headers C++ clean, esp. with the Sun compilers.
Fixes #567692.
2009-04-17 10:11:21 +01:00
Tim-Philipp Müller b31896b2af GstPlugin: fix compilation if both HAVE_WIN32 and HAVE_SIGACTION are defined
Move _gst_plugin_fault_handler_is_setup into the ifdef block where it's
used. Fixes #578201.
2009-04-17 09:17:40 +01:00
Jan Schmidt d50044dc2f docs: remove errant gtk-doc comment marker triggering a warning 2009-04-16 00:48:12 +01:00
Jan Schmidt 4c6c9c2d5b paramspecs: revert gst_param_spec_is_mutable() for release
Revert the gst_param_spec_is_mutable API for this release so we can
discuss it a bit further first.
2009-04-16 00:48:11 +01:00
Stefan Kost 659102e04a gstdebug: show enabled/disabled in configure and fix build for disabled
When its disabled, we poison some symbols to force a build error if they are
used. Dunno how useful this acually is, but we need to disable the poisoning
when we include this ourself. Also don't define some of the dummies, as they
are getting replaced with defines and that creates code that does not compile.
2009-04-15 23:35:35 +03:00
Sebastian Dröge c09069c889 Use g_once_init_*() instead of GOnce for the enum types 2009-04-15 19:58:34 +02:00
Sebastian Dröge 484c3272c4 staticpadtemplate: Update docs of gst_static_pad_template_get_caps ()
gst_static_pad_template_get_caps () actually returns a reference to the
caps and it's cleaner to unref them after usage. The core will, however,
always hold a reference to the caps so this didn't result in a memory
leak.
2009-04-15 13:06:13 +02:00
Stefan Kost dafde2ed66 docs: use real <note> tags as they look nice in new gtk-doc 2009-04-14 22:33:25 +03:00
David Schleef 8dd2b4b591 Fix locking in gst_param_spec_is_mutable 2009-04-14 12:21:39 -07:00
Wim Taymans 5ca6853eb1 docs: add simple doc blurb 2009-04-14 19:12:52 +02:00
Wim Taymans 004f981edb paramspecs: add note about racyness
Add a note about potential racyness in _is_mutable().
2009-04-14 19:11:44 +02:00
LRN 7e0bdbf208 info: use mutex to do console colors on windows
Use a static mutex to keep the console colors and context together when
debugging with colors on Windows.
Fixes #517231.
2009-04-14 10:32:07 +02:00
Tim-Philipp Müller 25826ffe40 docs: add Since: tags to gtk-doc chunks for new param spec API
And, for our release manager, the in-commit-message keywords
for the previous commit:
API: GST_PARAM_MUTABLE_READY
API: GST_PARAM_MUTABLE_PAUSED
API: GST_PARAM_MUTABLE_PLAYING
API: gst_param_spec_is_mutable
2009-04-13 14:27:49 +01:00
David Schleef 1ecf114c0e Add param spec flags for when a property can be changed
Adds GST_PARAM_MUTABLE* flags to indicate in which states a
property can be changed and take effect.  Fixes #571559
2009-04-12 18:45:24 -07:00
Wim Taymans 1b4b1a5b1f bin: always mark pending_async_done
When we get an ASYNC_DONE message when a state change was busy, set the
pending_async_done flag so that after the state change completes, the bin can
check if all async elements are finished. Don't only do this for the bin itself
but for all elements.

This fixes some bins in bins that simulate async state changes by posting ASYNC
messages (such as sdpparse in uridecodebin/playbin2).
2009-04-09 11:51:43 +02:00
Wim Taymans b4e9c87fcc info: fix compilation, %08x needs an unsigned int
%08x needs an unsigned int, so give it that.
2009-04-09 11:42:48 +02:00
Tim-Philipp Müller 116c8be6bf API: add FIXME and DUMPMEM log levels and convenience macros
Two new log levels to dump FIXMEs into the log and to log data
in form of a hex dump (#578114).

API: GST_CAT_FIXME_OBJECT
API: GST_CAT_MEMDUMP_OBJECT
API: GST_CAT_FIXME
API: GST_CAT_MEMDUMP
API: GST_FIXME_OBJECT
API: GST_MEMDUMP_OBJECT
API: GST_FIXME
API: GST_MEMDUMP
2009-04-08 21:32:05 +01:00
Stefan Kost 7d0b4f10c6 docs: xref more 2009-04-08 18:13:42 +03:00
Stefan Kost c9917a1a84 tests: remove the hacks to workaround the pad-leak 2009-04-08 17:49:18 +03:00
Stefan Kost 8892f3f4c9 padtemplate: enable code to fix the leak, now that the deps have been released
Good and ffmpeg are actually multiple releases beyond, so that this is now safe
to do.
2009-04-08 15:24:58 +03:00
Edward Hervey a69841761b gsttaglist: Remove unused variable.
We don't need to allocate a variable if it's the return of a function call
and we only check it once.
2009-04-04 14:37:13 +02:00
Edward Hervey 759fe3452a gststructure: Only use methods used in g_* checks if glib checks are disabled 2009-04-04 14:35:34 +02:00
Sebastian Dröge e7ccf786c3 gst: Use G_DEFINE_TYPE and friends or at least g_once_init_* in the _get_type() functions 2009-04-04 10:20:36 +02:00
Sebastian Dröge 42febffe0d gst: Use G_DEFINE_TYPE and don't call g_thread_init() from class_init
class_init is too late for calling g_thread_init() as g_thread_init()
needs to be called before any GObject function.
2009-04-04 10:18:42 +02:00
Mark Nauwelaerts 66295d508b Use g_slice_copy instead of g_slice_dup.
A (buggy) glib g_slice_dup macro may cause compiler warnings on e.g. x86_64.
2009-04-03 13:47:35 +02:00
Edward Hervey 4028fa7149 gststructure: Remove dead assignment.
'type' is never used until line 1847 where it's overwritten.
2009-04-03 12:57:24 +02:00
Edward Hervey f68573dc42 gstbin: Remove unused variable.
The return value of gst_element_change_state isn't used after that call.
2009-04-03 12:57:24 +02:00
Edward Hervey f096c7d4e0 pipeline: remove redundant assignment.
If that block is entered, then start_time becomes GST_CLOCK_TIME_NONE.
Since start_time is invalid, the code will enter the block at line 434 and
new_base_time will be set there.
2009-04-03 12:57:24 +02:00
Edward Hervey 9557542722 gstregistrybinary: remove variable only used for a check.
that variable isn't used anywhere else within that block.
2009-04-03 12:57:24 +02:00
Edward Hervey 971755842d Remove unused increments as detect by LLVM's CLang static analyzer. 2009-04-03 12:56:57 +02:00
Edward Hervey 00cbbc87c7 Remove unused variables detected by LLVM's Clang static analyzer. 2009-04-03 12:56:48 +02:00
Tim-Philipp Müller 01166ec0cd docs: improve API reference for gst_caps_get_structure() 2009-04-03 11:20:32 +01:00
Thomas Vander Stichele 8995a45593 docs: explain ref ownership for handle_message implementations 2009-04-02 13:32:58 +02:00
Stefan Kost 2806a409ed binaryregistry: init variable, that is referenced in error case below the fail: label 2009-03-27 17:32:29 +02:00
Wim Taymans 659e1d2dc2 clock: wakeup the async thread a bit more
Also wake up the async thread when it is doing an async wait for an entry.
2009-03-27 16:15:55 +01:00
Wim Taymans ffc752c458 element: Fix a little debug message 2009-03-27 16:15:10 +01:00
Stefan Kost 82c9b78f86 binaryregistry: check for not reading beyond the data area. Fixes #576842
Check all reads against the end of the data region. Roll back registration of
partial reads.
2009-03-27 15:34:25 +02:00
Wim Taymans 4446f9972d clock: make UNSCHEDULED checks threadsafe
Move the checks for using an unscheduled entry from the unsafe GstClock to the
SystemClock object so that we can perform the correct locking.
fix a leak and potential deadlock then the async thread fails to start.
Sprinkle some G_LIKELY around because we can.
2009-03-26 22:05:31 +01:00
Wim Taymans e15cf9bc12 clock: remove pending async wakeup sooner
Remove a pending async wakeup before we check if the next entry is UNSCHEDULED
because we might leave the control socket busy.
2009-03-26 21:40:20 +01:00
Peter Kjellerstedt 7be99f052b gstpoll: Corrected a documentation typo. 2009-03-26 19:33:41 +01:00
Wim Taymans 41f1a1881e clock: add some more comments. 2009-03-26 19:13:55 +01:00
Wim Taymans 16b68e7de0 clock: rework the wakeup of entries.
Keep a counter for the amount of outstanding wakeups that we produce and only
perform a write/read to the control socket when 1 or 0 respectively.
don't poll when waiting for the entries to be unblocked and clear their wakeup
counts, just act on the signal when the wakeup count is 0.
unscheduled entries will clear their wakeup count themselves.
Keep track of when we wakeup the async thread because the list of entries has
changed.
don't try to see if the list changed because we can't really know when one entry
is added multiple times.
Only wake up the async thread when we add an async entry to the head of the list
and the old entry was BUSY.
2009-03-26 18:53:02 +01:00
Jan Schmidt 31669a4819 gstpoll: Fix up documentation strings.
Note the changed behaviour of gst_poll_wait for timer GstPoll's, and
fix a couple of spelling errors.
2009-03-26 15:06:16 +00:00
Wim Taymans df30f60048 clock: fix 2 wakeup races.
when an entry being waited on in the async thread is unscheduled, clear the
wakeup queue so we can continue waiting on other entries.
When an entry being waited on in the async thread is unlocked because an earlier
entry was added to the list, set the entry to OK again. This makes sure that
only the entries being waited on have the BUSY flag set and wake up the timer
poll when they are unscheduled.
2009-03-26 15:59:17 +01:00
Tim-Philipp Müller ea554b1d62 registry: ignore .git directory when recursively scanning plugin paths for plugins
Saves some cycles/pandas for those of us who run uninstalled setups.
2009-03-26 14:52:00 +00:00
Tim-Philipp Müller cc0978bd85 registry: do fsync() before close() and rename()
This helps prevent filesystem/data inconsistencies in certain
circumstances on certain filesystems (like ext4, xfs, ubifs).
Also see bug #562976.
2009-03-26 14:51:49 +00:00
Tim-Philipp Müller c4e10b9535 API: add gst_tag_list_get_buffer{_index}
Convenience API, mostly for image tags, so people don't have to
figure out the whole GValue/GstValue thing just for this.
2009-03-26 14:21:10 +00:00
Sebastian Dröge 10bc5670a3 segment: Use g_slice_dup() now 2009-03-26 11:17:01 +01:00
Sebastian Dröge f75fad6a70 Remove some compatibility stuff for GLib < 2.14 2009-03-26 11:08:27 +01:00
Tim-Philipp Müller 26f9f721ff API: add GST_TAG_SUBTITLE_CODEC
Yes, 'codec' isn't exactly the best word, but let's be consistent with AUDIO_CODEC
and VIDEO_CODEC (which may be 'raw' formats as well after all). Prerequisite for
bug  #576552.
2009-03-25 00:50:07 +00:00
Wim Taymans 1bd7f96497 gstutils: improve property set and convert code
Use string deserialisation instead of custom parsing code to allow for all
supported ways of specifying property values.
fixes #576582.
2009-03-24 19:33:56 +01:00
Stefan Kost c04e3f9a03 build: define stubs when disabling gst-debug subsystem. Fixes #575922
Running configure with e.g. --disable-dst-debug was compiling out the debug
system (ABI break). Now stubs are added and only if one does e.g.
make CFLAGS="-DGST_REMOVE_DISABLED" the symbols are ommitted.
2009-03-23 16:21:58 +02:00
Tim-Philipp Müller b62bfc573a debugging: make GST_PTR_FORMAT work for queries as well 2009-03-20 00:42:51 +00:00
Tim-Philipp Müller 0492ca71f5 API: add GST_QUERY_CAST
because we can, and for consistency.
2009-03-20 00:39:41 +00:00