Commit graph

1712 commits

Author SHA1 Message Date
Josep Torra
3c9dfaea38 basesink: fixes compiler warning
gstbasesink.c: In function 'gst_base_sink_chain_unlocked':
gstbasesink.c:3204: warning: 'ret' may be used uninitialized in this function
2013-03-30 10:24:27 +01:00
Mark Nauwelaerts
6ddbaaa95c baseparse: reset next_pts upon SEGMENT event
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=691481
2013-03-27 18:26:30 +01:00
Mark Nauwelaerts
76acdee908 baseparse: more inter-timestamp tracking
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=691481
2013-03-27 18:26:30 +01:00
Nicolas Dufresne
253035d395 basesrc: Don't send error if negotiate fails because we are flushing
Negotiation may be aborted by a flush from another thread that need to
stop the task (i.e. seek). Check that case and silently pause the task.

https://bugzilla.gnome.org/show_bug.cgi?id=696357
2013-03-25 08:57:06 +01:00
Tim-Philipp Müller
f40aa2c4ad basesink: fix use of uninitialized variable
Running suite(s): GstBaseSink
==22023== Conditional jump or move depends on uninitialised value(s)
==22023==    at 0x505FFCE: gst_base_sink_get_sync_times (gstbasesink.c:1936)
==22023==    by 0x5068C80: gst_base_sink_do_sync (gstbasesink.c:2379)
==22023==    by 0x506BCD2: gst_base_sink_default_wait_event (gstbasesink.c:2903)
==22023==    by 0x50633A4: gst_base_sink_default_event (gstbasesink.c:2918)
==22023==    by 0x6F5C216: gst_fake_sink_event (gstfakesink.c:383)
==22023==    by 0x505F164: gst_base_sink_event (gstbasesink.c:3108)
==22023==    by 0x52FA090: gst_pad_send_event_unchecked (gstpad.c:4822)
==22023==    by 0x5303756: gst_pad_send_event (gstpad.c:4984)
==22023==    by 0x40165B: basesink_test_gap (basesink.c:148)
2013-03-03 16:03:42 +00:00
David Schleef
f671bd2754 collectpads: take DTS into account
Importantly, this patch converts DTS to running time.  Less importantly,
and possibly a problem for some muxers, is that it orders buffers by
DTS (if it is valid, otherwise PTS).  This is generally correct, but
might be somewhat surprising to muxers.

Also note that once converted to running time, DTS can end up negative.
2013-03-02 10:42:01 -08:00
Stefan Sauer
82f7bdd7bb seeking: add more logging for seeking
Especially add logging to error code paths.
2013-02-27 22:17:17 +01:00
Tim-Philipp Müller
5a73d15c80 basetransform: don't pass NULL outcaps to transform_size on shutdown
gst_pad_get_current_caps() on the source pad might yield NULL caps
if we're being shut down and the source pad has already been
deactivated by the other thread that's changing state. Just bail
out in that case, instead of passing NULL caps to the transform_size
function, which it might not expect.

Fixes spurious warnings in audioresample shutdown unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=693996
2013-02-21 11:28:12 +00:00
David Schleef
9ceb52d334 baseparse: Fix doc typo 2013-02-12 12:31:42 -08:00
David Schleef
2a8c95ff3b baseparse: add gst_base_parse_set_ts_at_offset()
Sets the buffer timestamps based on last seen timestamps at a
particular offset into the frame.

API: gst_base_parse_set_ts_at_offset()
2013-02-12 12:16:27 -08:00
David Schleef
da68b74b5d adapter: Add gst_adapter_prev_[pd]ts_at_offset()
Original patch written by Michael Smith <msmith@rdio.com>.

API: gst_adapter_prev_pts_at_offset()
API: gst_adapter_prev_dts_at_offset()
2013-02-12 12:16:27 -08:00
Stefan Sauer
d211a2a67c compat: kill more uses of gst_pad_set_caps() 2013-02-11 22:54:22 +01:00
Mark Nauwelaerts
314400d45a baseparse: improve PTS interpolating
... and tracking of DTS.  Fixes cases where PTS is locked on to the
DTS of an incoming buffer with no PTS with invalid data, leading to
no outgoing PTS (since it is not allowed smaller than DTS).

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=691481
2013-02-09 12:32:02 +01:00
Wim Taymans
2ea32f3ab5 basesink: handle sync of EOS after item without duration
After a buffer or GAP without duration, an EOS event should be rendered
immediately instead of waiting for the end of the segment.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692868
2013-02-05 17:22:37 +01:00
Tim-Philipp Müller
3f8eff5c7e dataqueue: can't pass a GType through GINT_TO_POINTER
Use GSIZE_TO_POINTER instead. sizeof(GType) may be larger
than sizeof(gulong) and sizeof(int), so the casts may
chop off some bits from the GType value on some architectures.
2013-01-30 13:06:44 +00:00
Tim-Philipp Müller
ae8940e6f7 queuearray: make _find() find the value if no compare function is provided
Allow NULL as compare function for direct value lookup.

https://bugzilla.gnome.org/show_bug.cgi?id=692691
2013-01-30 12:07:52 +00:00
Alexander Schrab
5a7c1b56dc queuearray: fix gst_queue_array_find()
https://bugzilla.gnome.org/show_bug.cgi?id=692691
2013-01-30 11:24:55 +00:00
Alexander Schrab
af8ff1bed8 queuearray: fix gst_queue_array_drop_element()
https://bugzilla.gnome.org/show_bug.cgi?id=692691

Conflicts:
	libs/gst/base/gstqueuearray.c
2013-01-30 11:24:35 +00:00
Sreerenj Balachandran
0c643e2cf7 docs: align the comments correctly with the declaration in bitreader docs
https://bugzilla.gnome.org/show_bug.cgi?id=692809
2013-01-29 15:43:05 +00:00
Wim Taymans
e697254fc1 basesrc: handle renegotiation correctly
Don't retry to negotiate when we fail to negotiate but instead produce a
NOT_NEGOTIATED error. We only want to retry negotiation if the result from
gst_pad_push() returned NOT_NEGOTIATED.
2013-01-29 09:52:16 +01:00
Niv Sardi
4adee0dee2 basesrc: set NEED_RECONFIGURE flag if negotiate fails
When negotiation fails, mark the pad as needing a reconfigure again so
that it gets picked up again next time.

Signed-off-by: Niv Sardi <xaiki@evilgiggle.com>

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=691986
2013-01-24 09:21:01 +01:00
Tim-Philipp Müller
e90d2710b3 docs: add a note to the gst_adapter_take_buffer() docs about buffer flags
https://bugzilla.gnome.org/show_bug.cgi?id=682110
2013-01-16 17:24:42 +00:00
Tim-Philipp Müller
64eee27ebc Use GST_*_1_0 environment variables everywhere
The _1_0 suffixed environment variables override the
non-suffixed ones, so if we're in an environment that
sets the _1_0 suffixed ones, such as jhbuild, we need
to set those to make sure ours actually always get
used.
2013-01-15 13:47:32 +00:00
Tim-Philipp Müller
5ea8937f56 docs: minor GstBaseParse docs fixes
Expose docs for gst_base_parse_finish_frame().
2013-01-14 20:05:23 +00:00
Wim Taymans
30010356f2 typefind: handle map failure 2013-01-14 17:01:22 +01:00
Wim Taymans
27832606e5 basesrc: handle map failure 2013-01-14 17:00:46 +01:00
Wim Taymans
bac5ba632e adapter: handle map failure 2013-01-14 17:00:23 +01:00
Tim-Philipp Müller
1702623b20 baseparse: add vfuncs to intercept queries
Useful for video parses that want to attach matter or
find out if downstream supports certain metas.

API: GstBaseParseClass::src_query()
API: GstBaseParseClass::sink_query()

https://bugzilla.gnome.org/show_bug.cgi?id=691475
2013-01-13 14:45:31 +00:00
Tim-Philipp Müller
2b1facfe1d baseparse: fix up name of default event vfuncs 2013-01-12 20:54:26 +00:00
Sebastian Dröge
925bdaa836 basesink: Initialize uninitialized variable 2013-01-03 10:17:11 +01:00
Thijs Vermeir
67fab5eaa5 adapter: return gssize from gst_adapter_masked_scan_* functions
As the return value of this function is -1 when the match is not found
2013-01-02 10:40:38 +01:00
Sebastian Dröge
c859a1719c basesink: Check if buffers are too late before calling prepare/prepare_list
https://bugzilla.gnome.org/show_bug.cgi?id=690936
2013-01-01 10:48:56 +01:00
Arnaud Vrac
4a1ff7fa95 baseparse: fix invalid output timestamps in some cases 2012-12-17 12:26:14 +01:00
Wim Taymans
fac7eb0a50 NEWSEGMENT -> SEGMENT 2012-12-14 15:24:30 +01:00
Wim Taymans
6e6fc159a7 basesrc: call _stop when start failed
When we failed to complete the start, call stop again. This makes sure that all
successfull calls to _start are paired with a _stop.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=687845
2012-12-13 14:48:35 +01:00
Sebastian Dröge
e58dabc750 libs: Use foo/foo.h as single-include header consistently everywhere
https://bugzilla.gnome.org/show_bug.cgi?id=688785
2012-12-12 16:44:14 +00:00
Wim Taymans
7518960829 baseparse: pass DTS and PTS to handle_buffer
This makes it handle the timestamps correctly and avoids using a wrong timestamp
for the output.
2012-12-11 16:46:18 +01:00
Wim Taymans
6c99839d89 baseparse: improve debug
Add pts and dts in debug log
2012-12-11 16:46:01 +01:00
Wim Taymans
98d084df69 adapter: fix 0.10 docs to make more sense in 1.0 2012-12-05 14:24:14 +01:00
Wim Taymans
89d6ac116c adapter: fix docs for 1.0
Add parent to chain function signature and use it.
2012-12-05 14:03:27 +01:00
Tim-Philipp Müller
e43ebd685d dataqueue: reduce debug log spam a bit
Log locking/unlocking with TRACE debug level.
2012-11-25 18:11:38 +00:00
Evan Nemerson
1afb1f12ef libs: Add missing single include headers and use them in GIRs 2012-11-21 11:00:40 +01:00
Wim Taymans
ffd64becb1 basesink: add some debug 2012-11-20 16:23:56 +01:00
Wim Taymans
1471489104 basesink: reset START_TIME when needed
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=685870
2012-11-20 16:23:56 +01:00
Arnaud Vrac
94185ec94a baseparse: forward stream-start event in push mode 2012-11-20 12:46:31 +01:00
Tim-Philipp Müller
abc805ca95 tests: gst_adapter_prev_timestamp -> gst_adapter_prev_pts
https://bugzilla.gnome.org/show_bug.cgi?id=675598
2012-11-13 23:11:34 +00:00
Tim-Philipp Müller
b1cb17ab2f basesrc: fix debug message 2012-11-13 20:45:48 +00:00
Wim Taymans
d8413cd0a2 basesink: add simple rate control
Add a max-bitrate property that will slightly delay rendering of buffers if it
would exceed the maximum defined bitrate. This can be used to do
rate control on network sinks, for example.

API: GstBaseSink::max-bitrate
API: gst_base_sink_set_max_bitrate()
API: gst_base_sink_get_max_bitrate()
2012-11-09 17:01:23 +01:00
Tim-Philipp Müller
666c8c11c6 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 20:44:48 +00:00
Jan Schmidt
b674a737b0 collectpads: Clarify docs about the buffer handler callback.
Clarify that the callback owns a ref on a passed buffer.
2012-10-30 10:04:44 +11:00
Tim-Philipp Müller
073c09afe0 g-i: fix "can't resolve libraries to shared libraries: gstcheck-1.0" build error
Revert --library=libfoo-1.0.la -> --library=foo-1.0 change made
in previous commit. Turns out that was wrong, despite what the
man page says.

https://bugzilla.gnome.org/show_bug.cgi?id=603710
2012-10-29 13:27:55 +00:00
Vincent Penquerc'h
37a72b1a82 baseparse: prevent excessively high memory usage with long streams
Large streams would index one frame every second, which can get quite
large with multi-hour streams, so add an additional byte-based
minimum distance as well, which will kick in for long streams
and make sure we never have more than a couple of thousand index
entries.

https://bugzilla.gnome.org/show_bug.cgi?id=666053
2012-10-28 19:49:37 +00:00
Tim-Philipp Müller
21a74a6b79 libs: g-i: avoid multiple libraries in the shared-library tag
Using multiple libraries causes problems for the C# bindings and
will for similiar languages such as Java when there are bindings
for them.

Also change --library=libgstfoo-X.la to --library=gstfoo-X as
the man page suggests it should be done.

https://bugzilla.gnome.org/show_bug.cgi?id=679315
2012-10-28 17:20:10 +00:00
Sebastian Dröge
09982c3c13 dataqueue/queuearray: Make public API again
These are actually used outside of coreelements nowadays.
Also hide lots of internals and add padding and documentation.
2012-10-25 14:03:01 +02:00
Wim Taymans
9f42bd643e basesrc: use new GCond for async state change
Use a new GCond, protected with the object lock, to signal completion
of the async state change. We can't reuse the live lock because that
one can be locked when the create function blocks.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=686723
2012-10-24 11:16:12 +02:00
Tim-Philipp Müller
d86ecaf53e collectpads: fix g-i annotation for GstCollectPadsBufferFunction
We pass ownership of the buffer to the function.
2012-10-20 19:44:43 +01:00
Tim-Philipp Müller
73b2a3dd66 collectpads: minor docs fixes 2012-10-15 19:56:36 +01:00
Tim-Philipp Müller
bb2fda64f7 collectpads: fix buffer leak in clip_time 2012-10-15 19:55:42 +01:00
Mark Nauwelaerts
81aef52ac4 collectpads: call clip function with user data 2012-10-15 18:44:56 +02:00
Mark Nauwelaerts
a6b75fb322 collectpads: ensure all timestamps are in same time domain
... by not only processing incoming buffers through a clip function,
but also other timestamps such as those coming from GAP event.
2012-10-10 11:43:25 +02:00
Mark Nauwelaerts
bd3a27f24c docs: adjust some parameter mismatches 2012-10-10 11:43:25 +02:00
Wim Taymans
f688d4d8a7 basesrc: retrieve the result from start_complete
gst_base_src_start_complete() can fail when the thread could not be
started, for example. Make sure it causes the state change to fail by
retrieving the result from _start_complete().
2012-10-09 15:31:19 +02:00
Wim Taymans
e89ac90fa1 basesrc: improve debug 2012-10-09 15:31:04 +02:00
Tim-Philipp Müller
4e373aa952 docs: add Since markers for new API and add it to docs and .def file 2012-10-04 11:24:09 +01:00
Wim Taymans
d5b81aba6a basetrans: add an option to prefer passthrough
Basetransform attempts to do passthrough mode regardless of the order of
the transform_caps method. Add a method to disable this.
This is needed for elements like capsfilter that want to transform caps
based on the order of the caps property.
2012-10-04 11:15:36 +02:00
Wim Taymans
664f7141be basetrans: improve some comments 2012-10-04 10:01:19 +02:00
Jan Schmidt
906738ab49 basesrc: Fix seamless segment function
The 3rd parameter of gst_base_src_new_seamless_segment in
0.10 is the time associated with the start of the new segment,
not the position in the new segment. Fix the name of the parameter,
the docs, and the implementation to match the needs of the only
extant consumer: DVD playback.
2012-09-30 04:07:31 +10:00
Tim-Philipp Müller
d13ba1a304 docs: fix up basesrc/basesink docs formatting 2012-09-26 23:32:35 +01:00
Wim Taymans
c1b31eaa4c update docs for 1.0 API 2012-09-26 17:11:05 +02:00
Jan Schmidt
d08d3d8227 baseparse: Move some run of the mill debug statements to LOG level 2012-09-26 15:04:14 +10:00
Jan Schmidt
a663a4b9a0 baseparse: Output timestamps after a seek.
Reinitialise the DTS after a seek so as to continue
generating timestamps when baseparse is not downstream
of a demuxer.

Fixes: #684538
2012-09-26 15:04:04 +10:00
Wim Taymans
79ae0b8445 docs: fix basesink docs 2012-09-25 14:45:15 +02:00
Josep Torra Valles
111fcc6e31 Make intel compiler happier
https://bugzilla.gnome.org/show_bug.cgi?id=552657
2012-09-25 00:56:26 +01:00
Tim-Philipp Müller
226d96f107 collectpads: don't forward random stream-start event
It's not right, and we don't know what extra properties
that event might have set in future (e.g. sparseness).
This change means collectpad users need to create their
own stream-start event now. We could add a utility
function that creates a stream-start event based on
the input stream-start events.
2012-09-23 12:42:01 +01:00
Tim-Philipp Müller
531cdb43f5 docs: collectpads doc fixes 2012-09-19 09:44:08 +01:00
Wim Taymans
0ea3675cf4 basetransform: check acquire result value
Check the result value from _buffer_pool_acquire() and return the
value when allocation failed.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=684285
2012-09-18 21:49:41 +02:00
Tim-Philipp Müller
ca90ea6e55 Remove GST_USE_UNSTABLE_API guard and defines 2012-09-17 13:35:26 +01:00
Wim Taymans
9828f72cda basetrans: whitespace fix 2012-09-14 16:58:10 +02:00
Wim Taymans
3abc720345 docs: fix some docs
from git grep for ffmpegcolorspace and x-raw-
2012-09-13 11:35:41 +02:00
Wim Taymans
a1fa643c93 parse: add missing declaration 2012-09-13 10:48:08 +02:00
Wim Taymans
6802620d9d basesrc: indent fix 2012-09-13 10:24:30 +02:00
Jan Schmidt
196caf5ed6 baseparse: Add a mode/flag for disabling PTS interpolation
To be used by sub-classes implementing video formats with reordering
such as MPEG.
2012-09-12 22:44:37 -07:00
Jan Schmidt
f4b530ed9e baseparse: Handle GAP and still-frame events.
Hacky, because the still-frame code all lives in -base, where we
can't use it - so this is a hacky duplication of -base code. Not
sure which way to fix this: Move baseparse to -base, or move still-frame
events to core?
2012-09-12 22:38:40 -07:00
Jan Schmidt
257ad2c79e baseparse: Restructure event handling
Make the event handling more like what videodecoder does,
to ensure that all events are passed to child classes before being
placed on the pending queue or pushed onward.
2012-09-12 22:38:40 -07:00
Jan Schmidt
dbf4c13489 baseparse: Store incoming cached events in reverse order
Reverse the list just before sending. Prepending is more efficient
than appending, so this saves some cycles.
2012-09-12 22:38:40 -07:00
Jan Schmidt
3226160b31 baseparse: First attempt at handling both DTS and PTS 2012-09-12 22:38:36 -07:00
Stefan Sauer
57ea490f5a collectpads: remove gst_collect_pads_add_pad_full
Rename gst_collect_pads_add_pad_full() to gst_collect_pads_add_pad() and fix all
invocations.
2012-09-12 21:04:47 +02:00
Tim-Philipp Müller
221d46f438 pad: expose gst_pad_mode_get_name() and use it in baseparse 2012-09-11 19:51:02 +01:00
Wim Taymans
00c6fa74f5 events: remove STREAM_CONFIG
We won't be able to implement this so it's better to move it out of the way.
2012-09-11 16:29:12 +02:00
Wim Taymans
5ff4bb3e7c collectpads: clean up header indentation 2012-09-11 16:09:37 +02:00
Tim-Philipp Müller
a85991eeb8 baseparse, typefind: only activate in pull mode if upstream is seekable
Upstream might support pull mode, but only sequential pulls,
which isn't gonna do much for us.

https://bugzilla.gnome.org/show_bug.cgi?id=634927
2012-09-11 01:40:53 +01:00
Mark Nauwelaerts
9439e73eec collectpads: handle GAP event 2012-09-05 15:37:13 +02:00
Wim Taymans
42e85953c8 basesink: wait_eos -> wait_event
Fix a FIXME. Now we can also pass the GAP event to the subclass.
2012-09-04 12:13:11 +02:00
Tim-Philipp Müller
dcacfb17cb baseparse: update for gst_message_new_duration -> _duration_changed() 2012-09-02 02:04:14 +01:00
Jan Schmidt
888d9aa4d3 basesink: Make GAP events actually trigger preroll
Slightly hacky approach needing refinement
2012-08-31 11:31:45 -07:00
Tim-Philipp Müller
b94e46b8b4 baseparse: make seeking in DEFAULT format work if the subclass can convert for us
We only deal in TIME format ourselves, but if the subclass can handle
converting other formats into TIME format, we can support that too.

Fixes seeking in DEFAULT (sample) format with flacparse,
and the flacdec unit test.
2012-08-19 17:51:00 +01:00
Víctor Manuel Jáquez Leal
fee7080dff basetransform: getters for pool and allocator
Sometimes a transform filter would need the buffer pool or the memory
allocator negotiated by the base class, for example, for querying different
parameters, such as a bigger number of buffers to allocate by the buffer pool.

This patch expose a two getters accessors: one for the buffer pool and the
other for the memory allocator.
2012-08-14 15:45:21 +02:00
Víctor Manuel Jáquez Leal
65cfafb3b9 basesrc: getters for pool and allocator
Sometimes the sources would use the buffer pool or the memory allocator for
something else than just allocating output buffers; for example, querying for
different parameters, such as a bigger number of buffers to allocate by the
pool.

This patch expose a two getters accessors: one for the buffer pool and the
other for the memory allocator.
2012-08-14 15:45:14 +02:00
Tim-Philipp Müller
83870cf581 baseparse: fix reverse playback with upstream demuxers that support it
Don't just return FALSE for seek events with negative rates when
operating in push mode. An upstream demuxer may support this just
fine, so if we're not operating in pull mode always check upstream
first if it can handle the seek event. This fixes reverse playback
where the upstream demuxer supports it (e.g. with qtdemux). The
same code would work fine in 0.10, because baseparse will just
call the default pad event handler if FALSE was returned from the
baseparse event handler, and the pad event handler will just
forward it upstream. In 0.11 the baseclass or subclass is
responsible for chaining up to the parent class or forwarding the
event upstream in any case.

Disable reverse playback in pull mode for now, there seems to
be something going wrong with the segment configuration in that
case.
2012-08-10 23:18:33 +01:00
Thiago Santos
2a5afba1a1 basetransform: do not error on not-negotiated
Don't error out too early and let upstream decide if it can
workaround a not-negotiated problem

https://bugzilla.gnome.org/show_bug.cgi?id=681198
2012-08-10 13:58:02 -03:00
Thiago Santos
5c0e02c79c basesrc: retry on not-negotiate if a reconfigure is pending
Before erroring out on not-negotiated returns, check if the pad
has the reconfigure flag set and retry.

https://bugzilla.gnome.org/show_bug.cgi?id=681198
2012-08-10 13:58:02 -03:00
Tim-Philipp Müller
9427851fd2 basesrc: don't try to answer URI queries with NULL URIs
Should make unit tests in -base that use appsrc a bit happier.
2012-08-06 20:04:09 +01:00
Sebastian Dröge
0d22988e5c event: Update for stream-start event API changes 2012-08-06 14:00:56 +02:00
Sebastian Dröge
389ec66946 basesrc: Add default handler for URI query in GstURIHandler subclasses 2012-07-31 17:26:37 +02:00
Sebastian Dröge
826a8d643d tag: Add a scope to taglists
This specifies if a given taglist applies to the complete
medium or only this specific stream. By default a taglist
has a stream scope.

Fixes bug #677619.
2012-07-28 00:34:41 +02:00
Wim Taymans
f05b0e222f Update for new seeking variable name
When seeking, the start value and type are now called start and start_type.
2012-07-27 15:24:52 +02:00
Stefan Sauer
e9b62b030c collectpads: remove unimplemented api
We can always add this back if we need it. Fixes parts of #670852.
2012-07-24 21:38:35 +02:00
Mark Nauwelaerts
363293731e baseparse: also account for frame size when merely scanning for frame
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680495
2012-07-24 13:50:03 +02:00
Mark Nauwelaerts
2decf696e7 baseparse: remove obsolete function parameter 2012-07-24 13:50:02 +02:00
Wim Taymans
5360ba56f7 basesink: handle -1 step amounts
Define a 0 and -1 step amount. They used to almost do the same thing but now, 0
cancels/stops the current step and -1 keeps on stepping until the end of the
segment.

See https://bugzilla.gnome.org/show_bug.cgi?id=679378
2012-07-18 17:49:32 +02:00
Wim Taymans
3371f391f6 basesink: fix debug string 2012-07-17 12:40:54 +02:00
Tim-Philipp Müller
49ab4d9a45 baseparse: fix seekability querying with formats with headers like FLAC
Move code that checks for upstream seekability and all that to
the right place, otherwise it will never be done for formats
that have headers such as FLAC, as handle_and_push frame will
be called the first time only after headers have been processed
(and framecount is > 0). This then makes us report that we
can't seek, which disables the seek bar in totem.
2012-07-15 12:59:44 +01:00
Tim-Philipp Müller
94f6ba9c0b base: make GstQueueArray private to coreelements for now
Keep it private until we have a reason to make it public.
2012-07-14 19:36:02 +01:00
Wim Taymans
35dbbdb50e baseparse: send seek event upstream first
First try to let upstream handle the seek event, then fail if the event is
something we don't understand.
2012-07-13 12:05:15 +02:00
Wim Taymans
4c42b6720d basesink: handle step end correctly
when we have a new step event with a -1 amount, make sure that we follow the
regular code path so that the stop_end handler is called as usual. This takes
care of flushing the buffer in case of a flushing step and also posts a step end
message.

See https://bugzilla.gnome.org/show_bug.cgi?id=679378
2012-07-11 15:35:57 +02:00
Edward Hervey
042d1ff398 baseparse: Push STREAM_START in pull-mode 2012-07-11 10:26:13 +02:00
Edward Hervey
d3ffa82639 Remove 0.10-related documentation and "Since" markers 2012-07-10 12:03:27 +02:00
Tim-Philipp Müller
ebcfd0ce05 basesrc: provide fallback in case a create function doesn't know about provided buffers
In 0.11 the caller may provide a buffer to be filled by the source to
pull_range/get_range/create, but it's easy to miss this new case when
porting code from 0.10. Provide fallback that copies the created data
into the provided buffer for now.

This makes oggdemux in pull-mode work with dataurisrc.
2012-07-10 09:42:15 +01:00
Wim Taymans
82eb275ef9 query: copy structure in _add_allocation_meta()
Make gst_query_add_allocation_meta() take a copy of the passed caps instead of
taking ownership. This makes it easier for the caller in most cases because it
doesn't have to make a copy and deal with NULL values.
2012-07-10 10:31:00 +02:00
Tim-Philipp Müller
c51a2c1ddf basesrc, basesink, baseparse, typefind: use GST_SEGMENT_FLAG with segment flags 2012-07-09 21:51:07 +01:00
Edward Hervey
e1f7c08f65 basesink: Post a STREAM_START message when we see the event 2012-07-09 20:31:45 +02:00
Stefan Sauer
46a4f2f6c0 collectpads: add STREAM_START handling
Use a flag to forward the first STREAM_START
2012-07-09 19:57:25 +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
3f80cb272e query: use more generic structure for meta params 2012-07-06 11:49:47 +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
Sebastian Dröge
aa2309e54a event: Add format and position to the segment-done event 2012-07-05 13:04:31 +02:00
Sebastian Dröge
49d2ad5633 event: Implement segment-done event 2012-07-05 12:52:51 +02:00
Edward Hervey
588cdcd369 libs: New growing-only queue.
This is a queue which has the same API as GQueue, except that:
* It uses an array, instead of a doubled-linked-list
* The array can only grow.

This code is not-threadsafe. It is up to the owner to make sure the
proper locking is taken before calling this API.
2012-07-04 17:46:53 +02:00
Sebastian Dröge
2833bb73cd basesink: Post TOC messages on the bus in the sinks, similar to tags 2012-07-03 17:25:21 +02:00
Wim Taymans
d7fdf75e13 basesrc: handle DTS and PTS
Use DTS and PTS of the subclass.
Calculate PTS from DTS on keyframes.
2012-06-28 09:44:06 +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
Evan Nemerson
2c1c1032fa base: add some missing introspection annotations 2012-06-19 18:41:04 -07:00
Wim Taymans
5e84524d72 basesink: preroll and sync on gap events 2012-06-19 16:15:36 +02:00
Wim Taymans
a36d5b7335 basesink: reorganize the code a little
Move the code to get the sync times together.
2012-06-19 16:15:36 +02:00
Evan Nemerson
8f6b6b8ab5 introspection: assorted introspection and documentation fixes in base 2012-06-18 13:28:35 +02:00
Evan Nemerson
4705eb61c3 adapter: add missing element-type annotations 2012-06-18 13:18:32 +02:00
Wim Taymans
927f261b1c basesink: wait_eos() -> wait()
Rename gst_base_sink_wait_eos() to gst_base_sink_wait() to avoid confusion and
introspection problems with the ::wait_eos vmethod. Also this method can be used
to wait for other things than EOS. Update the docs a little.
2012-06-18 11:36:25 +02:00
Wim Taymans
1c60558d8c basesrc: avoid flush when starting
When we are doing the initial seek in startup, avoid doing a flush
(and unlock) because we know that the task is not started yet.
2012-06-15 14:54:48 +02: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
36d034d1e4 basesrc: handle flush events on the element as well
Handle flush-start and flush-stop sent on the element as well and send them
downstream. Make sure to send a segment event after the flush stop.
2012-06-12 16:01:56 +02:00
Sebastian Dröge
aee0d2a2b3 basesrc: Don't ignore the return value of gst_pad_set_caps() and call it after the vfunc 2012-06-08 15:41:17 +02:00
Sebastian Dröge
ec7a0a7cf2 basesink: Use gst_pad_set_caps() instead of the manual event fiddling 2012-06-08 15:36:40 +02:00
Sebastian Dröge
183cc7e3bf basetransform: Don't return the return value of gst_pad_set_caps()
e.g. it returns FALSE if incompatible caps are set on the pad.
2012-06-08 15:33:34 +02:00
Wim Taymans
56f9d3782d basetransform: fix reconfigure
Use the pad methods to set and check the reconfigure flags
Clear the reconfigure flag before we negotiate so that we don't miss any
reconfigure events while negotiating
2012-06-07 17:59:39 +02:00
Wim Taymans
80ff9dfb3d basesrc: release the object lock sooner
Release the object lock before we get the time of the clock because that code
might take other locks.
Fix potential clock refcount error because we released the object lock but
didn't ref the clock.
2012-06-07 15:32:27 +02:00
Wim Taymans
42e755f7c3 basesrc: remove 0.11 fixme
We always require elements to have an unlock_stop vmethod.
2012-06-07 15:32:27 +02:00
Sreerenj Balachandran
b4ecac2c98 gstadapter: Align the comment description with public api instead of internal one.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=677536
2012-06-06 15:44:36 +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
Mark Nauwelaerts
584892bf79 baseparse: also perform state processing upon non-OK return
... since processing might still continue (if e.g. NOT_LINKED)
and then proper state (e.g. offset) needs to be maintained
(e.g. to arrange for a new frame setup).
2012-06-04 11:47:55 +02:00
Brian Cameron
461178fb59 typefind: fix prototype of helper_find_suggest
The proto for helper_find_suggest has a different argument than the actual
function in the same file has.  This causes the Sun Studio compiler to fail.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676624

Conflicts:

	libs/gst/base/gsttypefindhelper.c
2012-05-24 11:10:22 +02:00
Wim Taymans
9af2c6c86b basesink: throttle-time is used 2012-05-16 13:24:23 +02:00
Wim Taymans
602bd29960 basesink: add prepare method
Add a prepare method that is called before sync happens. The purpose of this
method is to prepare the rendering of the giving buffer so that the following
render() call after sync is a quick as possible.
2012-05-16 12:08:44 +02:00
Wim Taymans
d6e909994c basesrc: avoid potential deadlock
In gst_base_src_start_complete() we do a perform_seek() that will eventually
start the streaming thread which acquires the live lock and then goes to sleep
in the case of appsrc. Right after we perform seek we also try to acquire the
live lock which might then deadlock.

fix this by taking the stream lock before performing the seek. This makes sure
that the streaming thread cannot start and grab the live lock until we are done
and release the stream lock again.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676048
2012-05-16 09:24:45 +02:00
Wim Taymans
05580beb77 docs: fix docs
GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING
2012-05-11 09:14:52 +02:00
Tim-Philipp Müller
e73747a7e0 tools, base: don't poke into GstTypeFindFactory struct, use public API 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
Sebastian Dröge
105fa1ffde basetransform/basesrc: Do bufferpool configuration inside the default decide_allocation() implementation
This allows subclasses to override it, as is necessary for e.g. the
video-crop meta. It is now necessary that after decide_allocation()
there is always a allocator and a configured buffer pool inside the
query.
2012-05-01 13:32:41 +02:00
Wim Taymans
1b87a07d8e adapter: remove _try_to_merge_up()
It causes the timestamp to go wrong, should not cause much of a performance
increase and in the cases where it is faster, it is broken in 0.10 as well.
We should try to review this when rewriting the adapter for 0.11 memory
features.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674791
2012-05-01 10:50:32 +02:00
Wim Taymans
aad3812633 adapter: make internals private
Make the adapter fields private.
2012-05-01 09:32:45 +02:00
Mark Nauwelaerts
6802189d68 collectpads: do not unref flush_start twice
Based on patch by Matej Knopp <matej.knopp@gmail.com>
2012-04-23 17:04:57 +02:00
Mark Nauwelaerts
6a48006c21 adapter: refresh skip following merge_up attempt
... as the latter might now adjust skip as well.
2012-04-23 16:57:21 +02:00
Mark Nauwelaerts
e076e36840 collectpads2: rename to collectpads 2012-04-17 15:07:54 +02:00
Mark Nauwelaerts
9bcb0ea58e adapter: ensure writable head buffer before skipping part of it 2012-04-17 12:54:45 +02:00
Mark Nauwelaerts
304047b13d Merge remote-tracking branch 'origin/0.10'
Conflicts:
	libs/gst/base/gstcollectpads2.c
2012-04-17 12:29:50 +02:00
Mark Nauwelaerts
5823dd4724 collectpads2: always recording incoming segment info if no buffer_func set 2012-04-17 12:23:48 +02:00
Mark Nauwelaerts
225721f578 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	libs/gst/base/gstcollectpads2.c
2012-04-16 16:29:34 +02:00
Mark Nauwelaerts
cc21620823 collectpads2: provide query default and callback handling
... which presently mainly serves to answer SEEKING query negatively
to dissuade upstream encoders from doing any seeking and
"header finalization" (since the returned result of pushing a
sticky event is fairly useless nowadays).
2012-04-16 16:24:18 +02:00
Mark Nauwelaerts
994357a16a collectpads2: modify event handling using a default event handler
... that elements should "chain up" to.
2012-04-16 16:24:10 +02:00
Vincent Penquerc'h
b642b87579 collectpads2: assume 0 based segment if no time segment was provided
https://bugzilla.gnome.org/show_bug.cgi?id=669305
2012-04-16 11:08:07 +02:00
Matej Knopp
4e7cf4c5c1 Remove skipped part of buffer when mapping the adapter
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674085
2012-04-14 10:25:12 +02:00
Mark Nauwelaerts
dad68cb180 basesink: plug caps leak 2012-04-13 12:01:08 +02:00
Sebastian Dröge
b0d89da6b6 gst: Change versioning
Remove GST_MAJORMINOR and replace it by GST_API_VERSION
Also set GST_VERSION_{MAJOR,MINOR,MICRO,NANO} explicitely
now.

All versions are at 1.0.0 now for the release soon but
API/ABI can still change until the 1.0.0 release.

Next release versions until 1.0.0 will be 0.10.9X and
these will be release candidates. GST_VERSION_* will
nonetheless stay at 1.0.0.0.
2012-04-04 14:28:55 +02:00
Edward Hervey
98e1463411 baseparse: always attempt to push if not-linked
This avoids ending up with plenty of pending data (since we'll only
 try to parse/push one frame from the incoming buffer).

Fixes increasing memory consumption when parsers aren't linked

Conflicts:

	libs/gst/base/gstbaseparse.c
2012-04-02 15:27:14 +02:00
Edward Hervey
df6d0b0696 baseparse: always attempt to push if not-linked
This avoids ending up with plenty of pending data (since we'll only
 try to parse/push one frame from the incoming buffer).

Fixes increasing memory consumption when parsers aren't linked
2012-04-02 15:17:25 +02:00
Wim Taymans
a3d5db491c trans: add transform_ip_on_passthrough
Add an option to control if transform_ip is called in passthrough mode or not.
for elements that don't want to look at the data in passthrough mode, this can
avoid some extra processing, mostly in subclasses.
2012-04-02 11:09:50 +02:00
Wim Taymans
d89719a4b3 adapter: use buffer_wrap 2012-03-31 18:34:23 +02:00
Wim Taymans
38b96e6c8c buffer: improve the buffer memory methods
gst_buffer_take_memory -> gst_buffer_insert_memory because insert is what the
method does.
Make all methods deal with ranges so that we can replace, merge, remove and map
a certain subset of the memory in a buffer. With the new methods we can make
some code nicer and reuse more code. Being able to deal with a subset of the
buffer memory allows us to optimize more cases later (most notably RTP headers
and payload that could be in different memory objects).
Make some more convenient macros that call the more generic range methods.
2012-03-30 18:15:24 +02:00
Mark Nauwelaerts
a0649dd357 typefindhelper: also unmap collected mapped buffers 2012-03-30 16:53:05 +02:00
Mark Nauwelaerts
096d36e5c5 basetransform: plug caps leak 2012-03-30 16:53:00 +02:00
Sebastian Dröge
eadebb172d baseparse: Rename ::event() to ::sink_event() for consistency 2012-03-30 12:03:40 +02:00
Edward Hervey
00feec6068 basesink: lower GST_BASE_SRC_FLAG_LAST
It wouldn't leave that much room for subclass users
2012-03-30 11:49:16 +02:00
Sebastian Dröge
4bffd22394 bytewriter: Actually commit the .c file changes too 2012-03-29 18:03:35 +02:00
Sebastian Dröge
d4dcb87c69 bytewriter: Add unchecked/inline variant of gst_byte_writer_put_buffer() 2012-03-29 18:01:11 +02:00
Wim Taymans
9aa9751938 review some docs 2012-03-28 18:12:23 +02:00
Wim Taymans
bb876588ac buffer: unify buffer merge methods
Add gst_buffer_append() which appends the memory blocks from one buffer to
another. Remove the old inefficient _merge() and _join() methods which forced a
premature memcpy in most cases.
Remove the _is_span() and _span() methods they are not needed anymore now that
we can _append(). Merging and spanning will be delayed until mapping or maybe
not at all when the element can deal with the different memory blocks.
2012-03-28 12:51:58 +02:00
Mark Nauwelaerts
41e9ca9b17 basetransform: remove automatic and undocumented setting of always_in_place
... which controls how to (forcibly) deal with (non-)writable data and
is not necessarily related to identical caps.

In particular, it is also not so helpful anymore with a more advanced
GstVideoFilter subclass which always has a transform_ip method currently,
even though its subclass may not have a corresponding _ip method.
2012-03-22 15:24:08 +01:00
Wim Taymans
007a00cd1b Merge branch 'master' into 0.11
Conflicts:
	configure.ac
2012-03-22 10:45:06 +01:00
Wim Taymans
e017498cb0 baseparse: do queries more directly
Just call our internal query function instead of going through the pad and the
query handler etc.
2012-03-20 17:11:19 +01:00
Wim Taymans
f3f209c919 adapter: add some performance debug 2012-03-20 17:11:12 +01:00
Wim Taymans
f9c85a53dc pad: improve docs of get/pull_range
Improve the docs of the get/pull_range functions, define the lifetime of the
buffer in case of errors and short reads.
Make sure the code does what the docs say.
2012-03-20 13:14:55 +01:00
Wim Taymans
07c9fba116 basetransform: make more stuff private 2012-03-16 22:51:14 +01:00
Wim Taymans
f9c4b70a98 basetransform: small cleanups 2012-03-16 22:25:38 +01:00
Wim Taymans
db1318ab4a pad: change the semantics of get/pull_range a little
Make it so that one can specify a buffer for get/pull_range where the downstream
element should write into. When passing NULL, upstream should allocate a buffer,
like in 0.10.
We also need to change the probes a little because before the pull probe, there
could already be a buffer passed. This then allows us to use the same PROBE
macro for before and after pulling.
While we're at the probes, make the query probe more powerful by handling the
GST_PAD_PROBE_DROP return value. Returning _DROP from a query probe will now
return TRUE upstream and will not forward the probe to the peer or handler.
Also handle _DROP for get/pull_range properly by not dispatching to the
peer/handler or by generating EOS when the probe returns DROP and no buffer.
Make filesrc handle the non-NULL buffer passed in the get_range function and
skip the allocation in that case, writing directly into the downstream provided
buffer.
Update tests because now we need to make sure to not pass a random value in the
buffer pointer to get/pull_range
2012-03-16 21:37:10 +01:00
Wim Taymans
a7e6c7d2a8 bufferpool: split bufferpool configuration
Make separate methods to control the bufferpool and the allocator used by the
bufferpool.
Make it possible to change the allocator of a pool.
2012-03-15 22:09:02 +01:00
Wim Taymans
83af60019e query: rework the ALLOCATION query
Separate the bufferpool and allocator hints in the allocation query, some
of the values don't always make sense together.
Keep the bufferpool and its configuration together.
Keep the allocator and its parameters together.
Allow for multiple bufferpool configurations in the query.
2012-03-15 20:23:59 +01:00
Wim Taymans
85c9543841 memory: group allocation parameters in a struct
Group the extra allocation parameters in a GstAllocationParams structure to make
it easier to deal with them and so that we can extend them later if needed.
Make gst_buffer_new_allocate() take the GstAllocationParams for added
functionality.
Add boxed type for GstAllocationParams.
2012-03-15 13:42:17 +01:00
Wim Taymans
edd2ffe4d4 memory: Add 0 padding
Change gst_allocator_alloc() so that we can also spicify flags and padding.
Add 2 new flags to mark the memory 0 prefixed/padded. This allows us to
remove some resizes in the base classes.
When allocating memory, memset prefix and padding with 0 when the flags tell
us to.
On resize, clear the zero padding flags if we can't guarantee the memory is
still 0 filled.
Update tests.
2012-03-14 21:32:22 +01:00
Wim Taymans
3d76e6011c query: also include padding in ALLOCATION query
Negotiating padding is needed on second thought so include it in the
ALLOCATION query.
Make the bufferpool take padding into account when allocating.
Make basesrc take padding into account.
Use padding and prefix when allocating in basetransform.
2012-03-14 19:47:10 +01:00
Wim Taymans
72ac5f5165 basesrc: take prefix into account when allocating
Take into account the prefix that we received from the allocation query and use
it to allocate and resize a larger buffer.
2012-03-14 18:45:55 +01:00