Commit graph

195 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
Arnaud Vrac
94185ec94a baseparse: forward stream-start event in push mode 2012-11-20 12:46:31 +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
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
Mark Nauwelaerts
bd3a27f24c docs: adjust some parameter mismatches 2012-10-10 11:43:25 +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
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
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
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
Tim-Philipp Müller
dcacfb17cb baseparse: update for gst_message_new_duration -> _duration_changed() 2012-09-02 02:04:14 +01: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
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
Sebastian Dröge
0d22988e5c event: Update for stream-start event API changes 2012-08-06 14:00:56 +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
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
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
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
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
c51a2c1ddf basesrc, basesink, baseparse, typefind: use GST_SEGMENT_FLAG with segment flags 2012-07-09 21:51:07 +01: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
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
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
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
Sebastian Dröge
eadebb172d baseparse: Rename ::event() to ::sink_event() for consistency 2012-03-30 12:03:40 +02: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
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
Sebastian Dröge
38d398448a baseparse: Fix merge mistake 2012-03-08 10:32:02 +01:00