Wim Taymans
79570f49dc
basesink: perform wait_preroll in a while loop
...
We need to continue calling wait_preroll() as long as the need_preroll variable
is true.
2010-12-02 19:10:45 +01:00
Wim Taymans
9076d5688f
basesink: also preroll after a flush with async=false
...
Make sure to preroll after a flush even when we are async=false.
Add unit test.
Fixes #634965
2010-12-02 19:10:45 +01:00
Wim Taymans
19e5a54c9f
adapter: improve docs a little.
2010-12-02 19:10:45 +01:00
Edward Hervey
ece40dacbc
basesink: Re-using GstClockID instead of constantly recreating one
...
Makes _sink_wait_clock at least 2 times faster.
https://bugzilla.gnome.org/show_bug.cgi?id=632778
2010-12-02 19:04:56 +01:00
Edward Hervey
7115b77aab
basesink: Pass along miniobject type through various functions
...
Avoids doing useless GST_IS_*
https://bugzilla.gnome.org/show_bug.cgi?id=632778
2010-12-02 19:04:56 +01:00
Edward Hervey
606e59468d
basesink: Switch enable_last_buffer to an atomic int
...
Avoids having to take a lock to read/write it.
https://bugzilla.gnome.org/show_bug.cgi?id=632778
2010-12-02 19:04:56 +01:00
Edward Hervey
7cc08390b9
gstdataqueue: Only emit g_cond_signal when needed
...
Keep track of which cond we're waiting for and only emit when needed.
https://bugzilla.gnome.org/show_bug.cgi?id=632779
2010-12-02 19:04:55 +01:00
Evan Nemerson
4906671694
introspection: Include exported packages information in GIRs
...
https://bugzilla.gnome.org/show_bug.cgi?id=635389
2010-11-21 00:36:30 +00:00
Jonathan Matthew
754c3038be
basetransform: use input position for queries if we have no output position
2010-10-29 15:45:04 +02:00
Wim Taymans
ce919c0573
basetransform: fix reverse negotiation
...
When the downstream element suggests a new format, pass the suggestion
upstream if we can't convert to it.
Fixes #633147
2010-10-29 12:03:48 +01:00
Tim-Philipp Müller
07755fd5ee
bytereader: const-ify byte reader argument in peek/scan API
...
Because we can.
2010-10-22 12:04:09 +01:00
Mark Nauwelaerts
21c5064783
basesink: recompute correct running time for buffer ending flushing step
...
Prevents delaying/hanging when resuming PLAYING.
Fixes #632433 .
2010-10-20 18:46:39 +02:00
Tim-Philipp Müller
b0d7c61f18
docs: fix misc. gtk-doc warnings in libs
...
(for gtk-doc 1.15)
2010-10-16 19:19:47 +01:00
Tim-Philipp Müller
1d9fbd1a7c
Revert "libs/gst/dataqueue: Document gst_data_queue_new_full"
...
This reverts commit 80727c1177
.
This doesn't make sense. gst_data_queue_new_full() is already
documented above. And we need the doc blurb for _new() here.
2010-10-16 18:30:18 +01:00
Tim-Philipp Müller
5b25761f29
docs: add some gtk-doc Since: markers
...
Add some gtk-doc Since: markers, fix one Since: marker,
fix typo.
2010-10-16 16:53:49 +01:00
Edward Hervey
80727c1177
libs/gst/dataqueue: Document gst_data_queue_new_full
2010-10-13 12:07:56 +02:00
Edward Hervey
906ae99742
base/gstdataqueue: inline some functions, get levels with memcpy.
2010-10-13 12:07:17 +02:00
Stefan Kost
ad2e7b1de3
docs: use the gtk-doc shortcuts to get coloured and xrefed example
2010-10-11 16:44:01 +03:00
Wim Taymans
428a6477d8
basesrc: tag as a SOURCE element
...
Tag all elements deriving from the basesrc with the IS_SOURCE flag.
2010-10-11 11:16:27 +02:00
Sebastian Dröge
14023fff89
basetransform: Report the output position on POSITION queries on the srcpad
...
There can be a difference between input and output last_stop.
Fixes bug #629410 .
2010-10-10 18:18:23 +02:00
Sebastian Dröge
894f833da9
bytewriter: Add missing file
2010-10-08 12:48:42 +02:00
Sebastian Dröge
69ef479ce4
bytewriter: Add unchecked variants of the writing functions
...
These don't check if there's enough free space available and are
available as inline functions only.
API: gst_byte_writer_put_int8_unchecked
API: gst_byte_writer_put_int16_be_unchecked
API: gst_byte_writer_put_int16_le_unchecked
API: gst_byte_writer_put_int24_be_unchecked
API: gst_byte_writer_put_int24_le_unchecked
API: gst_byte_writer_put_int32_be_unchecked
API: gst_byte_writer_put_int32_le_unchecked
API: gst_byte_writer_put_int64_be_unchecked
API: gst_byte_writer_put_int64_le_unchecked
API: gst_byte_writer_put_uint8_unchecked
API: gst_byte_writer_put_uint16_be_unchecked
API: gst_byte_writer_put_uint16_le_unchecked
API: gst_byte_writer_put_uint24_be_unchecked
API: gst_byte_writer_put_uint24_le_unchecked
API: gst_byte_writer_put_uint32_be_unchecked
API: gst_byte_writer_put_uint32_le_unchecked
API: gst_byte_writer_put_uint64_be_unchecked
API: gst_byte_writer_put_uint64_le_unchecked
API: gst_byte_writer_put_float32_be_unchecked
API: gst_byte_writer_put_float32_le_unchecked
API: gst_byte_writer_put_float64_be_unchecked
API: gst_byte_writer_put_float64_le_unchecked
API: gst_byte_writer_put_data_unchecked
API: gst_byte_writer_fill_unchecked
2010-10-08 12:19:45 +02:00
Tim-Philipp Müller
9bd4432d08
controller, dataprotocol: make public enum _get_type() functions thread-safe
...
Not that it is likely to matter in practice, but since these are public
API they should probably be thread-safe.
2010-10-08 09:34:47 +01:00
Tim-Philipp Müller
c7e3bab65d
dataprotocol, lfocontrolsource: fix enum value name in enums that are public API
...
So run-time bindings can introspect the names correctly (we abuse this
field as description field only in elements, not for public API
(where the description belongs into the gtk-doc chunk).
https://bugzilla.gnome.org/show_bug.cgi?id=629946
2010-10-08 09:28:21 +01:00
Sebastian Dröge
3ee6ae4030
bytewriter: Fix possible infinite loop caused by an overflow
2010-10-08 09:47:12 +02:00
Tim-Philipp Müller
3adac1b9cd
lfocontrolsource: use math-compat.h for M_PI
2010-10-05 18:31:58 +01:00
Stefan Kost
a11b047d00
basesink: don't take preroll-lock in get_property
...
Use atomic ops to read and write more properties. Taking the preroll lock in get_property
can lock up applications reading the property during preroll.
2010-10-05 12:30:34 +03:00
Stefan Kost
72e9834e88
basesink: add a fixme for 0.11
2010-10-05 12:29:19 +03:00
Wim Taymans
c9c9894552
basesink: format negative values better
...
Format negative values properly in the debug log.
2010-10-04 15:56:59 +02:00
Sebastian Dröge
f758e465c8
bytewriter: Add inline variants of all important functions
2010-10-03 23:32:06 +02:00
Sebastian Dröge
dd762eb49f
bitreader: Add inlined and unchecked versions of the important functions
...
API: gst_bit_reader_skip_unchecked
API: gst_bit_reader_skip_to_byte_unchecked
API: gst_bit_reader_get_bits_uint16_unchecked
API: gst_bit_reader_get_bits_uint32_unchecked
API: gst_bit_reader_get_bits_uint64_unchecked
API: gst_bit_reader_get_bits_uint8_unchecked
API: gst_bit_reader_peek_bits_uint16_unchecked
API: gst_bit_reader_peek_bits_uint32_unchecked
API: gst_bit_reader_peek_bits_uint64_unchecked
API: gst_bit_reader_peek_bits_uint8_unchecked
This alone makes flacparse about 3 times faster.
2010-10-03 15:32:41 +02:00
Sebastian Dröge
10c18151d2
bytewriter: Add guards to the inlined get_pos/get_remaining/get_size/etc functions
2010-10-03 15:32:41 +02:00
Sebastian Dröge
c41c2f7964
bitreader: Optimize peek_bits/get_bits a bit
...
Use local variables instead of dereferencing the bitreader
pointer all the time and don't copy the reader for peek_bits.
2010-10-03 15:32:41 +02:00
Wim Taymans
29e23e9142
basesink: improve adjust_time()
...
Add some more comments.
Make sure we don't end up with negative timestamps.
2010-09-24 12:22:33 +02:00
Havard Graff
54a5871434
basesink: renderdelay needs to be subtracted in adjust_time()
...
latency is already sink-latency + render-delay, and here we only
want to deal with the sink-latency.
Fixes #630436
2010-09-24 12:16:48 +02:00
Havard Graff
51d20158be
basetransform: Make a WARNING into a DEBUG statement
...
Fixes bug #630437 .
2010-09-23 21:55:04 +02:00
Wim Taymans
90d65cb446
basetransform: avoid useless memcpy
...
Because of the awkward refcounting in prepare_output_buffer, we might end up
with writable buffers that point to the same data. Check for those cases so that
we avoid a useless memcpy and keep valgrind quiet.
Fixes #628176
2010-09-23 18:23:39 +02:00
David Schleef
9dbe690f72
adapter: Add check for pattern bits not in mask
2010-09-18 19:29:09 -07:00
Wim Taymans
1afaa1680f
adapter: add function to get a list of buffers
...
Add a function to retrieve a list of buffers containing the first N bytes from
the adapter. This can be done without a memcpy and should make it possible to
transfer the list to a GstBufferList later.
2010-09-17 17:35:41 +02:00
Wim Taymans
a144882871
adapter: reuse more data in _peek()
...
Optimize _peek() some more by reusing already assembled data when we can.
2010-09-17 15:07:50 +02:00
Wim Taymans
961e2029db
adapter: optimize _take() a little more
...
When we have already assembled some data before, reuse this data and only copy
the part that is new.
2010-09-17 13:57:39 +02:00
Wim Taymans
fc4caf55c9
adapter: refactor adapter take
...
Move some common code into one place
2010-09-17 12:48:55 +02:00
Wim Taymans
1dde3cb440
adapter: add support for 0 sized buffers
...
Add support for 0 sized buffers. This is interesting in combination with the
timestamp functions.
Fixes #629553
2010-09-17 12:40:12 +02:00
Jeffrey S. Smith
4375e998ee
Fix casts in a bunch of inline functions to maintain correct const-ness
...
Make code including GStreamer headers compile with -Wcast-qual by
maintaining const-ness when casting. Also fix function signature of
gst_byte_writer_set_pos(): the byte writer should not be marked as
const.
https://bugzilla.gnome.org/show_bug.cgi?id=627910
2010-09-02 00:09:08 +01:00
Tim-Philipp Müller
f9204d5d70
build: use new AG_GST_PKG_CONFIG_PATH m4 macro from common
...
Sets up a GST_PKG_CONFIG_PATH variable for use in Makefile.am
(avoids trailing ':' in PKG_CONFIG_PATH used). A useful side
effect of this is also that the PKG_CONFIG_PATH environment
is now logged in the configure output.
2010-09-01 17:08:58 +01:00
Edward Hervey
8c2481dd57
check: Use g_strcmp0 instead of strcmp
...
Avoids segfaults when using NULL arguments.
2010-08-30 12:48:40 +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
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
Thiago Santos
ac9bfe25ae
gstcollectpads: Fix docs about GstCollectData list
...
Add to the docs the fact that is only safe to iterate
GstCollectPad's data list inside the collected callback.
Fixes #610366
2010-08-12 16:05:35 -03:00
Sebastian Dröge
27bebf7456
basesrc: Make sure the buffer metadata is writable before changing it
2010-08-06 18:44:33 +02:00
Stefan Kost
2237af4b6b
debug: logging improvements
...
Use the event serialisation. Log formats name instead of number.
2010-08-05 10:31:50 +03:00
Stefan Kost
5d0015048b
check: don't use c++ keywords as variable names
2010-08-05 10:31:50 +03:00
Stefan Kost
71b494639b
basesrc: log seek event details
2010-08-05 10:31:50 +03:00
Stefan Kost
a82b607885
basesrc: avoid some caps manipulation
...
After the intersect we have writable caps. Copy the template caps so that also
there we have writable caps.
2010-08-05 09:40:02 +03:00
Thiago Santos
1b99e2e2dc
bytereader: Fix docs
...
Fix typo in docs for the unsigned peek functions
2010-08-04 13:47:23 -03:00
Rob Clark
29289ee79e
basetransform fix for upstream caps-renegotiation
...
If initially pass-through caps are negotiated between a transform element's
sink and src pads, but then the downstream element returns different caps
on a buffer from pad_alloc(), basetransform gets stuck with proxy_alloc=TRUE
even though the upstream peer doesn't accept the caps, causing
gst_pad_peer_accept_caps() to be called on each buffer in _buffer_alloc():
if (!gst_caps_is_equal (newcaps, caps)) {
GST_DEBUG_OBJECT (trans, "caps are new");
/* we have new caps, see if we can proxy downstream */
>> if (gst_pad_peer_accept_caps (pad, newcaps)) {
/* peer accepts the caps, return a buffer in this format */
GST_DEBUG_OBJECT (trans, "peer accepted new caps");
which is taking ~40ms/frame.
This patch does two things. (1) if the buffer returned from pad_alloc() has
new caps, trigger the decision whether to proxy the buffer-alloc to be
revisited, and (2) disable proxy if peer does not accept new caps. (The first
part may not be strictly needed, but seemed like a good idea.)
Note that this issue would not arise except in case of downstream elements
who have on their template-caps, some that would be suitable for pass-through,
but at runtime pick more restrictive caps (for ex, after querying a driver for
what formats it actually supports).
2010-07-27 17:34:49 +02:00
Thiago Santos
574e6ab423
basetransform: Try suggesting caps on bad caps pad_alloc
...
When basetransform received an unsupported caps on pad_alloc
it just returned not-negotiated. This patch makes it query
the allowed caps between his sinkpad and upstream's srcpad
to find a caps to suggest.
This happens when dinamically switching pipeline elements
and upstream pad_allocs with the previous caps that was
being used.
Fixes #614296
2010-07-26 14:49:14 -03:00
Sebastian Dröge
29a35e70e1
basetransform: Allow the subclass to add new fields to caps when getting new caps from downstream
...
This was already done in all other cases where new caps are handled
except upstream negotiation.
2010-07-17 21:30:18 +02:00
Tim-Philipp Müller
da289fd8e9
gstcheck: fix some silly list iteration code
...
g_list_length() is not the best way to check if a list is empty or not.
2010-07-16 18:20:57 +01:00
Sebastian Dröge
55986b9a10
basesrc: Return values in stream time for the POSITION query
...
Fixes bug #623622 .
2010-07-16 17:26:54 +02:00
Sebastian Dröge
249c4c18d0
basesink: Implement GstElement::get_query_types()
2010-07-16 17:26:50 +02:00
Sebastian Dröge
b2e7c4bd45
basesink: Only answer the SEGMENT query in pull mode
...
Otherwise the element handling the seeks should answer this query.
Fixes bug #623622 .
2010-07-16 17:26:31 +02:00
Sebastian Dröge
e2db318921
basetransform: Implement POSITION query
...
Fixes bug #623541 .
2010-07-16 17:26:22 +02:00
Alessandro Decina
3a553f4eda
basesink: add accessors for the enable-last-buffer property.
...
API: gst_base_sink_set_last_buffer_enabled
API: gst_base_sink_is_last_buffer_enabled
2010-07-06 16:39:18 +02:00
Alessandro Decina
f079ff3f20
basesink: add new enable-last-buffer property.
...
Add a new enable-last-buffer property. When false, it disables storing the last
received buffer in basesink::last-buffer. This can be useful in cases where
buffers need to be released asap.
API: GstBaseSink::enable-last-buffer
2010-07-06 12:38:21 +02:00
Sebastian Dröge
e0467b0100
controller: Fix build with GST_REMOVE_DEPRECATED
2010-06-25 18:25:40 +02:00
Sebastian Dröge
a15344515a
basesink: Initialize jitter to prevent printing an uninitialized variable if waiting for the clock failed
2010-06-17 13:20:13 +02:00
Wim Taymans
f80a824a2f
basetransform: reevaluate proxy_alloc when reconfigured
...
When we reconfigure the transform element, make sure we reevaluate the proxying
of buffer_alloc the next time around.
Fixes #621332
2010-06-14 16:20:18 +02:00
Mark Nauwelaerts
7e23719a74
adapter: optimize progressive masked_scan
...
Retain the last scanned buffer entry and offset, so we can resume buffer
scanning there in case of a typical progressive scan.
Also potentially optimize _copy subsequently occurring in that area.
2010-06-14 15:09:59 +02:00
Mark Nauwelaerts
d5ed339f20
adapter: add extended masked_scan_uint32_peek that also provides matching value
...
Also add to .def and docs.
Fixes #619828 .
API: gst_adapter_masked_scan_uint32_peek
2010-06-14 15:09:38 +02:00
Wim Taymans
76f7a001fc
basetransform: add accept_caps vmethod
...
Allow subclasses to override the acceptcaps function because in some cases a
custom implementation can be much much faster than the default one.
See #621190
2010-06-14 12:45:20 +02:00
Olivier Crête
828f2a3389
basetransform: Assume size is the same if no transform_size/get_unit_size
...
Subclasses that don't implemen transform_size should be assumed to produce output
buffers of the same size.
https://bugzilla.gnome.org/show_bug.cgi?id=621334
2010-06-14 10:52:22 +02:00
Sebastian Dröge
83929a5849
basesink: Make sure we have a valid object to render in _render_object()
2010-06-13 18:05:41 +02:00
Sebastian Dröge
e6e29192bc
Remove some dead assignments
2010-06-13 17:08:48 +02:00
Stefan Kost
6ea0bdadd5
check: use globbing for selective test invocation via GST_CHECKS
...
Use glib globbing instead of simple string matching to allow e.g.
GST_CHECKS="test_inter*" make gst/gstcaps.check
2010-06-06 23:19:58 +03:00
Stefan Kost
9b5bc5199e
basetransform: avoid a caps-copy
...
We can simply truncate the caps, as 'othercaps' is the result of intersect
operations and thus ours and writable.
2010-06-05 23:20:50 +03:00
Philippe Normand
6b8baaed50
basesink: Make gst_base_sink_query return TRUE if the segment query succeeded.
...
Fixes bug #620490 .
2010-06-03 17:40:45 +02:00
Tim-Philipp Müller
53c122df2b
check: log plugins available to unit tests and their paths
2010-06-01 12:03:56 +01:00
Mark Nauwelaerts
aa8b8b57d7
adapter: fix _try_to_merge_up
...
That is, provide correct return value (as documented), and actually
loop to consider more than the first 2 buffers.
2010-05-27 14:57:29 +02:00
Mark Nauwelaerts
7479b64a2a
collectpads: fix documentation glitch
2010-05-27 14:57:26 +02:00
Wim Taymans
3d72274b19
basesink: add jitter to debug output
2010-05-18 18:38:14 +02:00
Stefan Kost
a1c2071300
basesrc: reflow to truncate caps just once
...
We get writable caps from the intersection (unless it failed). As we truncate
those anyway, we don't need to manualy copy the first structure.
2010-05-06 17:04:53 +03:00
Tim-Philipp Müller
f77f7e987c
docs: document that gst_byte_writer_put_string*() writes the terminator too
2010-05-05 16:34:47 +01:00
Wim Taymans
6e4fde7195
docs: clarify the pull_range functions
...
Clarify the gst_pad_pull_range(), GstBaseSrc::create(), gst_pad_get_range()
and GstPadGetRange functions a little.
Fixes #617733
2010-05-05 12:01:50 +02:00
Wim Taymans
d00e97b7ea
basesrc: improve debugging
2010-05-04 11:45:02 +02:00
Stefan Kost
c96dec2a06
basesink: implement percentage position and duration queries
...
If upstream does not handle them, then implement those ourself.
2010-04-30 10:03:38 +03:00
Stefan Kost
c29e34113f
basesink: use gst_pad_peer_query instead of reinventing.
2010-04-30 10:03:38 +03:00
Stefan Kost
2d49414eef
queries: add more logging
...
Log human readable formats and log query result.
2010-04-30 10:03:38 +03:00
Benjamin Otte
6fb4cda8fb
controller: Fix gst_interpolation_control_source_find_control_point_iter
...
The logic in that function is broken. Various NULL-checking bandaids for
guaranteed non-NULL variables didn't even help there.
This patch updates the function to check if a previous item exists
before fetching it instead of after. This makes all other tests
unnecessary.
In particular, it makes the check for an empty list unnecessary, because
for empty lists the only iter is the begin iter (and the end iter) and
so the new check catches that case.
https://bugzilla.gnome.org/show_bug.cgi?id=616846
2010-04-26 16:46:11 +02:00
Sebastian Dröge
69992811f4
lfocontrolsource: Use correct setter for double GValues
2010-04-15 22:05:38 +02:00
Tim-Philipp Müller
47ac7cf1fc
build: when building executables, put libs to link to into LDADD instead of LDFLAGS
...
Use foo_LDADD instead of foo_LDFLAGS to specify the libraries to link to.
This should make sure arguments are passed to the linker in the right
order. See #615697 .
2010-04-14 11:23:37 +01:00
Stefan Kost
dbfebe4348
build: fix out of sourcedir build for check
...
Move the internal header to nodist (as we copy it around anyway).
Use builddir in pattern substitution for it.
Fixes #61483 .
2010-04-06 21:22:22 +03:00
Jonas Holmberg
a120f9f4e6
basesrc: fix gst_base_src_new_seamless_segment()
...
Keep track of pending newsegment in gst_base_src_new_seamless_segment()
to avoid pushing newsegment update before newsegment.
2010-04-06 17:41:34 +02:00
Tim-Philipp Müller
c4a4f2dad2
libs: point gobject-introspection scanner to .la files
...
Point g-ir-scanner to the .la file of our library, which hopefully
makes it find the right dependencies in all cases (ie. our locally
built libgstreamer and not the system-installed one). This is also
how it's done in Gtk+ and how it's documented in the wiki, see
http://live.gnome.org/GObjectIntrospection/AutotoolsIntegration
Based on patches by Vincent Untz and Alan Knowles.
Fixes #603710 .
2010-04-03 13:41:52 +01:00
Thiago Santos
7558fed51b
basetransform: Refactor caps suggestion on pad_alloc
...
Refactor the handling of sink suggestion caps variable
so that it always has a ref to the caps it points to.
Makes the code clearer.
2010-03-29 16:05:32 -03:00
Alan Knowles
f38d864bf7
net: fix typo in net client clock structure
...
It's sockaddr_in, not sockaddr_id.
2010-03-29 10:25:07 +01:00
Tim-Philipp Müller
1a72c2f01b
libs: don't use fancy shell features when invoking gobject-introspection scanner
...
It's POSIX, but tcsh doesn't seem to support it.
2010-03-25 15:54:19 +00:00
Tim-Philipp Müller
8cc7274163
libs: fix PKG_CONFIG_PATH used when calling gobject-introspection scanner
...
Our own pkgconfig directory should come first, so that pkg-config uses
the in-tree libgstreamer and not some external one when --pkg=gstreamer-0.10
is passed to g-ir-scanner.
See #603710 .
2010-03-25 13:48:19 +00:00
Edward Hervey
7a8004233a
GstAdapter: add a unchecked variant of flush for internal usage
...
Trims off 10-20% cpu time when using gst_adapter_take[_buffer]
2010-03-25 10:28:21 +01:00
Robert Swain
9b6f93dcf3
basetransform: Implement QoS message posting
...
And some more for bug #322947
2010-03-18 16:57:17 +01:00