Commit graph

10679 commits

Author SHA1 Message Date
Sebastian Dröge 8ca48752fb utils: Add gst_util_fraction_compare() to compare fractions
And use it for the fraction comparisons in gstvalue.c instead
of using comparisons by first converting the fractions to double.
Should fix bug #628174.

API: gst_util_fraction_compare()
2010-08-28 09:31:59 +02:00
Jan Schmidt 8a20878535 tests: Add a couple of extra caps strings to test 2010-08-28 17:05:29 +10:00
Sebastian Dröge 33082eb9e4 multiqueue: Don't do an infinite loop in the loop function
Instead return after every iteration, which makes sure that the
stream lock is released for a short time after every iteration,
task state changes are checked, etc and this allows the task
to be stopped properly.
2010-08-27 16:59:09 +02:00
Sebastian Dröge 8035f13bbf multiqueue: Flush the data queue if downstream return WRONG_STATE too 2010-08-27 16:59:09 +02:00
Sebastian Dröge 2e6f80bf81 elements: Stop using GST_FLOW_IS_FATAL() 2010-08-27 16:59:09 +02:00
Sebastian Dröge 2dfb0d2772 base: Stop using GST_FLOW_IS_FATAL()
And document the special handling of WRONG_STATE.
2010-08-27 16:59:09 +02:00
Sebastian Dröge d7f59ca0c4 pad: Deprecate GST_FLOW_IS_FATAL() and GST_FLOW_IS_SUCCESS()
The problem with both macros is, that they suggest something that isn't true.
If GST_FLOW_IS_FATAL is true, there could still be a problem for many elements
and they should stop what they're currently doing and return that value
upstream (e.g. not-linked in a parser). If GST_FLOW_IS_SUCCESS is false, it
could still be that this is "ok" for the element (e.g. not-linked for a demuxer
on a few of its pads but not all).

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

Fixes bug #628014.
2010-08-27 16:59:08 +02:00
Stefan Kost 4f3cccc77a fakesink: keep properties in order 2010-08-27 16:31:55 +03:00
Stefan Kost 23337eabf9 queue: ARG_ -> PROP_ for property constants 2010-08-27 16:31:55 +03:00
Wim Taymans 77f806bf9f queue2: fix on-disk buffering again 2010-08-26 17:04:20 +02:00
Wim Taymans f8abf35000 basetransform: recover from invalid downstream suggestions
When we are handling a buffer and need to allocate an output buffer, handle the
case when downstream suggests us a format that we can't convert the input buffer
to. In that case, check if there is another format available downstream instead
of failing.

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

API: GST_TAG_APPLICATION_DATA

Fixes #626651
2010-08-24 21:10:33 -03:00
David Schleef 95cd0ab6e4 gst-launch: Fix OIL_CPU_FLAGS docs for Orc 2010-08-24 12:51:41 -07:00
Stefan Kost 58b8319f9c man: remove OIL_CPU_FLAGS from man page
We're using ORC instead of libOil now.
2010-08-24 16:25:16 +03:00
David Schleef 3ef2688658 Valgrind define is HAVE_VALGRIND_VALGRIND_H 2010-08-23 18:21:25 -07:00
David Schleef 7a722091b6 Allow gst_debug_set_default_threshold() before gst_init()
Calling gst_debug_set_default_threshold() before initialization
seems like the "obvious" order.
2010-08-23 18:21:25 -07:00
Jonas Holmberg 351de88529 queue: fix segfault in test 2010-08-23 14:19:50 +02:00
Mark Nauwelaerts c485918405 registrychunks: intern all GstPluginDesc members when unpacking 2010-08-23 10:59:50 +02:00
Mark Nauwelaerts ad85386a57 gstobject: fix leak when naming parented object 2010-08-23 10:59:45 +02:00
Arun Raghavan 904c1a7a1d gst: Add a gst_is_initialized() API
For one, this will allow libraries that expect applications to
initialize GStreamer before using their API to have a check for this
condition.

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

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

See #625597
2010-08-20 18:04:52 +02:00
Jonas Holmberg 9f87f57a82 queue: added unit test for newsegment events 2010-08-20 16:11:42 +02:00
Jonas Holmberg 97cab76ca7 queue: Push newsegment when linking in PLAYING
Fixes #611918
2010-08-20 16:11:41 +02:00
Thiago Santos 706f0f657b element: link_many should activate pads if needed
gst_element_link_many does some magic and creates ghostpads
if needed, but it didn't set the newly created ghostpad to
active if needed. This patch fixes it.

https://bugzilla.gnome.org/show_bug.cgi?id=626784
2010-08-19 07:33:08 -03:00
Sebastian Dröge 41c04c7471 datetime: Fix memory leak in the unit test by unreffing GstDateTime instance after usage 2010-08-19 11:11:28 +02:00
Wim Taymans 649634a98f tests: fix comments in test 2010-08-19 10:03:33 +02:00
Edward Hervey cc4b33ffdf queue2: Use G_GUINT64_FORMAT where needed
Fixes build on macosx
2010-08-19 09:58:55 +02:00
Wim Taymans e3dbe65314 check: enable queue test again 2010-08-18 15:31:09 +02:00
Jonas Holmberg 63c0e75e15 queue: fixed racy unit tests
Fixes #600004
2010-08-18 15:27:04 +02:00
Stefan Kost 6ee61e4cb3 plugins: add example launch lines and more explanation to the docs.
The plugins where almost undocumented :/ ...
2010-08-16 18:08:39 +03:00
Wim Taymans bb45ff49a9 queue2: fix compilation 2010-08-13 16:38:59 +02:00
Robert Swain dec12cb2b8 queue2: Fix a special case during range management
When a range contained no data, if it was new or newly empty, it would
be mishandled if it were the current range.
2010-08-13 16:38:58 +02:00
Robert Swain 414911b90a queue2: fix locking around init_ranges
This fixes a segfault where the ready to paused state change causes
freeing and allocation of new ranges while another thread is trying to
use them.
2010-08-13 16:38:58 +02:00
Robert Swain 0182c0d88b queue2: More ring buffer fixes
- Set reading_pos correctly in _create_read ()
- Seek to data if it is further than QUEUE_MAX_BYTES (queue) -
  cur_level.bytes away. This should avoid a situation where the ring
  buffer is full but the data offset from which we shall read is not in
  the ring buffer.
- Only update the max_reading_pos to a lower value to protect data when
  necessary
- Always signal an ADD in _locked_enqueue () so that an EOS unlocks the
  reader
- More useful debug output
2010-08-13 16:38:58 +02:00
Robert Swain c78996a313 queue2: ring buffer fixes
One must not affect the values of the current range based on a read
request before the correct range is activated.
2010-08-13 16:38:58 +02:00
Robert Swain 602f4774c7 queue2: Fix bugs
update_buffering () needs to be called every time we write to the ring
buffer so that applications don't get stuck waiting for a 100% buffered
message while queue2 is waiting for space

_create_write () must only be called for temp file/ring buffer cases
2010-08-13 16:38:57 +02:00
Robert Swain 9df54eb4ff queue2: extend ring buffer to support ram mode 2010-08-13 16:38:57 +02:00
Robert Swain e29cca10a4 queue2: merge write buffer functions and fix bugs
Cached data could have been overwritten so it is now protected until
it is read. Similarly data was overread as _have_data () was always
looking for the originally requested data even if part of it had been
read already.
2010-08-13 16:38:57 +02:00
Wim Taymans 04f1572ea2 queue2: small cleanup 2010-08-13 16:38:56 +02:00
Wim Taymans 695da33ef5 queue2: cleanup write_to_ring_buffer
Use cur_level.bytes to see how much space is free in the ringbuffer.
Simplyfy the write function, avoid taking subbuffers, move waiting for free
space in one spot, use simply counter to write data of a buffer.
2010-08-13 16:38:56 +02:00
Wim Taymans abc9ab1747 queue2: cleanups
Add a macro to get the max size of the queue in bytes, which depends on the
max_level.bytes and the ring_buffer_max_size.
Some cleanups.
2010-08-13 16:38:56 +02:00
Wim Taymans ecd8d3be3a queue2: remove unused variable 2010-08-13 16:38:56 +02:00
Wim Taymans 4478c90642 queue2: cleanups
Make sure the cur_level.bytes is updated after we change the writing_pos or the
max_reading_pos.
Refactor get_free_space()
Add some comments
2010-08-13 16:38:55 +02:00
Wim Taymans aec4ea0bfe queue2: remove unneeded signal 2010-08-13 16:38:55 +02:00
Wim Taymans 7de963c0e0 queue2: set buffering mode correctly 2010-08-13 16:38:55 +02:00
Wim Taymans cb6d9b071e queue2: fix calculation of available ringbuffer data 2010-08-13 16:38:55 +02:00
Wim Taymans 8de7cc2222 queue2: reading_pos is updated in create_read only 2010-08-13 16:38:54 +02:00
Wim Taymans cda4967839 queue2: refactor and add debug 2010-08-13 16:38:54 +02:00
Wim Taymans 117d12f325 queue2: fix flushing 2010-08-13 16:38:54 +02:00