Commit graph

1733 commits

Author SHA1 Message Date
Thiago Santos
2c2e55789d basesrc: Do not send eos when seeking after last buffer
If pushing the last buffer triggers a seek from downstream, do not
go into EOS if a new segment was requested.

Contains unit test

https://bugzilla.gnome.org/show_bug.cgi?id=724757
2014-02-24 10:37:57 -03:00
Wim Taymans
04a6c661c8 basesrc: in automatic_eos mode, don't modify the size
Don't set the size to -1 in automatic_eos mode (which also updates the
duration to -1). We only want automatic_eos mode influence the maxsize
calculations without any side effects.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724564
2014-02-18 11:57:49 +01:00
Sebastian Dröge
f47c704b99 basesrc: Add gst_base_src_set_automatic_eos() API
This defaults to TRUE and if it is set to FALSE it is the subclasses
responsibility to return GST_FLOW_EOS from the create() vmethod once
the stream is done.
2014-02-13 12:09:06 +01:00
Brendan Long
f85c1c4648 gst: clear floating references for GstTask, GstTaskPool and GstCollectPads
https://bugzilla.gnome.org/show_bug.cgi?id=710342
2014-02-06 22:50:53 +01:00
Stefan Sauer
f6d638153c docs: fix more gtk-doc warnings 2014-02-01 16:18:13 +01:00
Thiago Santos
78d13b6642 basesrc: do not forget to clear the forced_eos flag
otherwise it will always use the seqnum of the event
sent by the application
2014-01-24 13:36:33 -03:00
Thiago Santos
fdfc6dc983 basesrc: preserve seqnum of eos events sent by the user
Store the eos event seqnum and use it when creating the
new eos event to be pushed downstream. To know if the eos
was caused by the eos events received on send_event, a
'forced_eos' flag is used to use the correct seqnum on
the event pushed downstream.

Useful if the application wants to check if the EOS message
was generated from its own pushed EOS or from another source
(stream really finished).

Also adds a test for this

https://bugzilla.gnome.org/show_bug.cgi?id=722791
2014-01-24 09:31:44 -03:00
Thiago Santos
a3ff2976cc baseparse: do not accumulate buffers on passthrough mode
If on passthrough during reverse playback, do not accumulate buffers as
baseparse will never check for DISCONT flag to push those buffers.
So just push buffers downstream as if it was forward playback.

https://bugzilla.gnome.org/show_bug.cgi?id=721941
2014-01-13 08:43:28 -03:00
Stefan Sauer
6a05291ca2 basesrc: don't confuse GST_PAD_MODE_NONE and PULL
Use a switch-case to explicitly handle all pad-modes. This way we don't log an error when the pad is not yet activated.
2014-01-09 08:49:40 +01:00
Thiago Santos
51fa54a281 baseparse: do not ignore TIME segments
TIME segments are being ignored and a standard initialized
segment is used instead. This causes issues as not properly detecting
reverse playback or not cliping output based on the segment.

This seems to be a regression from one of the GstSegment/GstEvent
redesigns on the 0.10 -> 1.0 transition
2014-01-08 16:40:23 -03:00
Wim Taymans
888ab23968 collectpads: take offset into account for expected segment position
The firt valid segment position is start + offset.
Also add some more debug and a FIXME
2014-01-08 15:04:00 +01:00
Stefan Sauer
74adc33982 basesrc: demote error to warning
This is not an error. A subclass returning FALSE for is_seekable() is one way of
saying that we can't operate in pull mode.
2014-01-06 21:10:33 +01:00
Thiago Santos
e02c00a58a baseparse: remove pending_segment as it was being misused
It wasn't required, instead baseparse was using it to check the media
caps to identify if it was handling audio or video.

The pending_segment was removed and a checked_media boolean
replaced it for a more accurate naming.

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-02 16:48:23 -03:00
Thiago Santos
accaadf52a baseparse: push pending events before GAP event
A GAP event is handled as an empty buffer by sinks and they expect
to receive start up events before GAP events (like a segment).

This is important specially if there is a GAP at the beginning of
a stream (before any buffers) so that the segment event can be
pushed downstream before the GAP

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-02 16:38:40 -03:00
Thiago Santos
d917eb7160 baseparse: refactor pending events pushing
Refactor code repeated 3 times to a common function

https://bugzilla.gnome.org/show_bug.cgi?id=721350
2014-01-02 16:38:40 -03:00
David Svensson Fors
892d36211f basesrc: use segment start if DTS for first buffer is unset
https://bugzilla.gnome.org/show_bug.cgi?id=720199
2013-12-17 10:47:55 +01:00
Tim-Philipp Müller
fcfe7085b9 bytereader: add inline variant of gst_byte_reader_init() 2013-12-14 18:38:41 +00:00
Tim-Philipp Müller
a6010a9155 docs: fix docs for gst_queue_array_peek_head() 2013-12-14 18:31:38 +00:00
Sebastian Rasmussen
53ae1b2c9c docs: Fix typos in function/object descriptions
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720029
2013-12-07 17:11:12 +00:00
Sebastian Rasmussen
e8ecf3c407 Fix some typos in code comments and debug messages
https://bugzilla.gnome.org/show_bug.cgi?id=720029
2013-12-07 17:09:39 +00:00
Olivier Crête
68697682ce basesrc: Set format to TIME if do-timestamp is TRUE
https://bugzilla.gnome.org/show_bug.cgi?id=702842
2013-12-05 13:29:05 -05:00
Sebastian Rasmussen
b40fa2b8c3 docs: cosmetic changes in references/decriptions
* fix typo GstBufferFlag -> GstBufferFlags
 * fix typo GstFeatures -> GstCapsFeatures
 * fix typo GstAllocatorParams -> GstAllocationParams
 * fix typo GstContrlSources -> GstControlSource
 * do not refer to gstcheck as an object
 * make references gtk_init() and tcase_set_timeout() not be references
 * gst_element_get_pad() renamed gst_element_get_static_pad()
 * gst_clock_id_wait_async_full() renamed gst_clock_id_wait_async()
 * _drop_element() is really gst_queue_array_drop_element()
 * gst_pad_accept_caps() was removed, do not refer to it
 * separate GST_META_TAG_MEMORY_STR declaration from description
 * do not describe removed gst_collect_pads_collect()
 * correctly link to GstElementClass' virtual set_context()

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719614
2013-12-02 21:01:08 +00:00
Jan Schmidt
5db5fc4227 basesink: Add debug into gst_base_sink_default_query() for accept_caps 2013-11-26 02:20:14 +11:00
Tim-Philipp Müller
9f669e5ea5 docs: cosmetic since marker fixes 2013-11-16 16:09:40 +00:00
Mark Nauwelaerts
e24722c52c baseparse: ensure to preserve upstream timestamps
... rather than have subclass coming up with an internally parsed one.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707230
2013-11-16 15:17:57 +01:00
Sebastian Dröge
959e87cf2a collectpads: Always send SEEK events to all pads, even if one fails 2013-11-11 16:50:42 +01:00
Sebastian Dröge
911af13b5c collectpads: Update documentation for flushing seek handling 2013-11-11 16:50:42 +01:00
Sebastian Dröge
6250120d76 collectpads: Don't leak seek events 2013-11-11 16:50:42 +01:00
Alessandro Decina
7aec5739eb collectpads: implement flushing seek support
Implement common flushing seek logic in GstCollectPads. Add new
API so that elements can opt-in to using the new logic
(gst_collect_pads_src_event_default) and can extend it
(gst_collect_pads_set_flush_function) to flush any internal
state.

See https://bugzilla.gnome.org/show_bug.cgi?id=706779 and
https://bugzilla.gnome.org/show_bug.cgi?id=706441 for the
background discussion.

API: gst_collect_pads_set_flush_function()
API: gst_collect_pads_src_event_default()

https://bugzilla.gnome.org/show_bug.cgi?id=708416
2013-11-11 16:50:42 +01:00
Mark Nauwelaerts
e10af7c409 basesrc: mind boggling wrap when comparing offsets 2013-11-02 16:13:27 +01:00
Mark Nauwelaerts
8da78d1595 baseparse: try first frame pts and dts for a valid start timestamp 2013-11-02 16:13:27 +01:00
Mark Nauwelaerts
3aaa3fcf92 baseparse: print proper variable in debug statement 2013-11-02 16:13:27 +01:00
Thibault Saunier
0564c1c2b8 collectpads: Call the collected function while it returns FLOW_OK
This allows us to make sure the elements is EOS and does not have
remaining buffers to be drained.

https://bugzilla.gnome.org/show_bug.cgi?id=709637
2013-10-09 20:29:02 -03:00
Brendan Long
a89d53dd32 docs: fix spelling of "generic" in GstBaseSrc's documentation.
https://bugzilla.gnome.org/show_bug.cgi?id=708870
2013-09-26 21:15:27 +01:00
Sebastian Dröge
20f1c96c89 collectpads: Make sure that the object lock is always taken when accessing the private pad list
https://bugzilla.gnome.org/show_bug.cgi?id=708636
2013-09-24 10:44:34 +02:00
Mathieu Duponchelle
c79e5bbcad collectpads: Use private pad list in set_flushing_unlocked
pads->data is the public list. It is dynamically rebuilt at each call to
check_collected, in check_pads to be specific. When you add a pad and
collectpads have been started, it is not added to the public list.

Thus there exists a possible race where :

1) You would add a pad to collectpads while running.
2) You set collectpads to flushing before check_collected has been called again
-> the pad is not set to flushing
3) the pad starts pushing data as downstream might not be prepared, in the case
of adder it then returns FLOW_FLUSHING.
4) elements like demuxers, when they get a FLOW_FLUSHING, stop their tasks,
never to be seen again.

https://bugzilla.gnome.org/show_bug.cgi?id=708636
2013-09-24 10:44:34 +02:00
Mathieu Duponchelle
8d24c4e451 basetransform: implement a default transform_meta.
If a metadata has no dependency as shown by the tags, copy it.
2013-09-09 15:32:18 +02:00
Thiago Santos
3dc8ee97e5 basesrc: preserve seqnum on segments after seeks
The seqnum of the segment after a seek should be the same of
the seek event. Downstream elements might rely on seqnums to
identify events related to a seek.

This is particularly important when a demuxer maps a TIME seek
into a BYTES seek for upstream and it needs to identify the
corresponding segment event and map it back into TIME to push
downstream, possibly using the values from the original seek
event.

https://bugzilla.gnome.org/show_bug.cgi?id=707530
2013-09-05 15:40:04 -03:00
Zaheer Abbas Merali
d1d99af229 collectpads: Don't unref NULL GstCollectData
If a pad is removed while a collectpads element (say adder) is in a chain
function waiting to be collected, there is a possibility that an unref happens
on a NULL pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=707536
2013-09-05 14:15:30 +02:00
Tim-Philipp Müller
3057001622 basesink: demote log message, don't spam INFO level when handling buffer lists 2013-08-29 11:07:38 +01:00
Edward Hervey
307d67f8c0 basetransform: Don't push out identical caps
This avoids triggering plenty of extra code/methods/overhead downstream when
we can just quickly check whenever we want to set caps whether they are
identical or not

https://bugzilla.gnome.org/show_bug.cgi?id=706600
2013-08-22 19:06:47 +02:00
Wim Taymans
44811ab650 basesrc: improve flush-start handling
Use custom code to implement flush-stop, we can't reuse the set_flushing code
because we can't touch the live_playing flag and we need to signal the
streaming thread.
2013-08-14 17:44:48 +02:00
Wim Taymans
9006f203d0 basesrc: stop flushing in flush-stop 2013-08-14 17:14:15 +02:00
Wim Taymans
d95c227641 basesrc: handle flush better
Unlock the streaming thread when flushing so that we can
insert the flush-stop correctly.
2013-08-14 16:58:41 +02:00
Edward Hervey
3c49b5d23b baseparse: Add a property to disable passthrough
In some specific cases (like transmuxing) we want to force the element
to actually parse all incoming data even if the element deems it is not
necessary.

This property simply ignores requests from the element to enable passthrough
mode which results in processing always being enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=705621
2013-08-13 17:11:35 +02:00
Thiago Santos
581c4297d0 dataqueue: add gst_data_queue_push_force
Adds a variant of the _push function that doesn't check the queue limits
before adding the new item. It is useful when pushing an element to the
queue shouldn't lock the thread.

One particular scenario is when the queue is used to serialize buffers
and events that are going to be pushed from another thread. The
dataqueue should have a limit on the amount of buffers to be stored to
avoid large memory consumption, but events can be considered to have
negligible impact on memory compared to buffers. So it is useful to be
used to push items into the queue that contain events, even though the
queue is already full, it shouldn't matter inserting an item that has
no significative size.

This scenario happens on adaptive elements (dashdemux / mssdemux) as
there is a single download thread fetching buffers and putting into the
dataqueues for the streams. This same download thread can als generate
events in some situations as caps changes, eos or a internal control
events. There can be a deadlock at preroll if the first buffer fetched
is large enough to fill the dataqueue and the download thread and the
next iteration of the download thread decides to push an event to this
same dataqueue before fetching buffers to other streams, if this push
locks, the pipeline will be stuck in preroll as no more buffers will be
downloaded.
There is a somewhat common practice in dash streams to have a single
very large buffer for audio and one for video, so this will always
happen as the download thread will have to push an EOS right after
fetching the first buffer for any stream.

API: gst_data_queue_push_force

https://bugzilla.gnome.org/show_bug.cgi?id=705694
2013-08-13 12:00:48 -03:00
Nicolas Dufresne
de75bca9b3 bytereader: Accelerate MPEG/H264 start code scanning
Accelerate MPEG/H264 start code scanning using Boyer-Moor bad character
heuristic.

https://bugzilla.gnome.org/show_bug.cgi?id=702357
2013-08-10 18:54:34 -04:00
Edward Hervey
991d6462a8 typefindhelper: Avoid using buffer_get_size in tight loops
Calling gst_buffer_get_size represented 2/3 of the cost of helper_find_peek
which was called whenever a typefindfunction wanted to peek at data.

We already know the size (from the GstMapInfo), so just use that.
2013-07-30 06:59:44 +02:00
Sebastian Dröge
ef8455d395 base: Fix handling of SEGMENT query
The values should be in stream-time, and start/stop should not
be swapped for negative rates.
2013-07-29 12:10:45 +02:00
Sebastian Dröge
eb67ca7625 baseparse: Implement SEGMENT query 2013-07-29 10:49:18 +02:00
Thiago Santos
aa5ea6d80e baseparse: fix seqnum handling for seeks
Use the same seqnum as the seek for flushes/segments that are
caused by the seek. Also do the same for segment events

Fixes #676242
2013-07-25 15:19:35 -03:00
Sebastian Dröge
bfb6844399 basesink: Don't shadow variables that are set inside our scope and then used outside our scope
Fixes uninitialized use of these variables.
2013-07-24 11:21:27 +02:00
Sebastian Dröge
0a41beaa56 basesink: Print some debug output if a stream-start event without group-id arrives
Ideally all elements would implement handling of that to get proper
stream-start message handling and other things.
2013-07-23 18:53:44 +02:00
Sebastian Dröge
6363216e43 base: Use new group-id field in stream-start event and message 2013-07-22 15:30:10 +02:00
Olivier Crête
915f418cc4 adapter: Take account of the skip in gst_adapter_take_buffer_fast()
Include regression test
2013-07-16 15:38:11 -04:00
Olivier Crête
5920491597 adapter: Add function to return buffer composed of multiple memories
API: gst_adapter_take_fast()
2013-07-16 14:07:48 -04:00
Sebastian Dröge
d60c2c2864 basesrc: Leave the loop function faster if we're flushing
Especially don't even try to send stream-start event or try
to negotiate.

https://bugzilla.gnome.org/show_bug.cgi?id=704100
2013-07-15 11:32:10 +02:00
Thibault Saunier
6cc39f42a9 basesrc: Do not lock a mutex that does not exist
The GST_LIVE_LOCK is on GstBaseSrc, not on its source pad.
2013-07-04 20:56:19 -04:00
Wim Taymans
97b1e17b09 baseparse: reset PTS after seek
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702778
2013-07-03 21:26:18 +02:00
Nicolas Dufresne
4656d18fd5 Add few missing allow-none annotation 2013-07-03 14:25:07 -04:00
Sjoerd Simons
12a72d2b08 basetransform: optimize default acceptcaps implementation
Pass the fixed caps we're asked to accept as a filter for the caps
query, so we don't get a fully-expanded set of caps back (which we don't
need and can take a lot of time for intersection).

This reduces the time for camerabin to produce a second frame on a
logitech C910 camera from around 52 seconds to a bit less then 16
seconds on my system.

https://bugzilla.gnome.org/show_bug.cgi?id=702632
2013-06-19 15:11:57 +02:00
Wim Taymans
124b8e38af basesink: call state change in all cases
When we asynchronously go from READY to PLAYING, also call the
state change function so that subclasses can update their state for PLAYING.
Because the PREROLL lock is not recursive, we can't make this without
races and we must assume for now that the subclass can handle concurrent calls
to PAUSED->PLAYING and PLAYING->PAUSED. We can make this assumption because not
many elements actually do something in those state changes and the ones that
did would be broken even more without this change.

https://bugzilla.gnome.org/show_bug.cgi?id=702282
2013-06-17 10:36:34 +02:00
Sebastian Dröge
bab1122a93 basesrc: Only force-update the duration for dynamic sources when doing the DURATION query
Doing it after every single create() is not very efficient and not necessary.
Especially on network file systems fstat() is not cached and causes network
traffic, making the source possibly unusable slow.

https://bugzilla.gnome.org/show_bug.cgi?id=652037
2013-06-06 16:46:12 +02:00
Wim Taymans
cf4334fbfb basesink: improve position reporting without clock
When no base time or when sync is disabled, use the same logic as
in paused to report position. The logic in PLAYING assumes we use the
clock.
2013-05-30 06:51:24 +02:00
Tim-Philipp Müller
4d1cb14c68 basetransform: remove 0.10-ism from docs
gst_buffer_pad_alloc() never existed, and gst_pad_alloc_buffer()
doesn't exist any more either, so don't mention it in the docs.

https://bugzilla.gnome.org/show_bug.cgi?id=694714
2013-05-24 23:01:09 +01:00
Sebastian Dröge
3e515099ec basetransform: Return GST_FLOW_ERROR if the allocator did not allow to allocate a buffer 2013-05-24 14:37:37 +02:00
Sebastian Dröge
1319196349 basesrc: Add FIXME comment for unused assignment results 2013-05-08 08:52:25 +02:00
Sebastian Dröge
f27a3e12f6 baseparse: Only infer TS if PTS interpolation is enabled
Otherwise this is breaking timestamps of formats that
need reordering.

https://bugzilla.gnome.org/show_bug.cgi?id=597662
2013-04-23 11:49:15 +02:00
Sebastian Dröge
86b4e1841e basesink: Don't set last_render_time if we're checking for a late buffer before ::prepare()
This makes sure that at least one buffer per second is rendered if buffers
are dropped before ::prepare. Without this change, at least one buffer per
second wouldn't be too late before ::prepare anymore but would be dropped
before ::render because of last_render_time being set before ::prepare
already.
2013-04-19 10:57:01 +02:00
Thiago Santos
1681a1b1e0 dataqueue: add gst_data_queue_peek
This function works just like gst_data_queue_pop, but it doesn't
remove the object from the queue.

Useful when inspecting multiple GstDataQueues to decide from which
to pop the element from.

Add: gst_data_queue_peek
2013-04-18 14:45:47 -03:00
Douglas Bagnall
39716e555b GstCollectPads documentation: gst_collect_pads_read is gone. 2013-04-11 10:39:25 +02:00
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