Commit graph

854 commits

Author SHA1 Message Date
Thiago Santos
68fcf7ef52 oggmux: only clip by duration if end of buffer is ahead of segment
It might happen that the timestamp is before the segment and the
check would succeed. In this case reducing the duration makes no
sense and would lead to broken results.
2014-12-26 18:56:09 -03:00
Mathieu Duponchelle
4e228e0a1f oggdemux: Fix seeking before the first frame.
The previous code was setting keytarget to target
to make sure the keyframe found for each pad was
indeed before the target.

Then if target == keytarget, it assumed a keyframe had been
found, which was not the case if target was before the first frame
in the file.

This patch checks that a keyframe was indeed found, and if not
seeks to 0, without bisecting again.

Assuming default gst qa assets in $HOME/gst-validate

seek_before_first_frame.scenario:

description, seek=true, handles-states=true
pause, playback-time=0.0
seek, playback-time=0.0, start=0.0, flags=accurate+flush
seek, playback-time=0.0, start=0.01, flags=accurate+flush
seek, playback-time=0.0, start=0.1, flags=accurate+flush

GST_DEBUG=*theoradec*:2 gst-validate-1.0 playbin \
uri=file://$HOME/gst-validate/gst-qa-assets/medias/ogg/vorbis_theora.0.ogg \
--set-scenario seek_before_first_frame.scenario

https://bugzilla.gnome.org/show_bug.cgi?id=741097
2014-12-05 10:13:57 +01:00
Sebastian Dröge
90eb93c2ef Don't compare booleans for equality to TRUE and FALSE
TRUE is 1, but every other non-zero value is also considered true. Comparing
for equality with TRUE would only consider 1 but not the others.
2014-12-01 09:51:12 +01:00
Vincent Penquerc'h
aa5b5b9085 oggmux: set correct granpos on last page when samples are clipped
Samples may be clipped at the end, and this is conveyed by a
granulepos that's smaller than it would otherwise be. Use the
segment stop time to detect this, and calculate the right
granulepos.
2014-10-30 14:28:39 +00:00
Vincent Penquerc'h
a93cc13d42 oggdemux: fix last buffer timestamp when samples are clipped
The end of a stream can be clipped by setting the granulepos of
the last page to a lower value that it otherwise would be.
2014-10-30 14:28:39 +00:00
Guillaume Desmottes
be1b5b3de7 oggdemux: don't set segment.base in pad_submit_packet()
Setting segment.base in the segment sent from gst_ogg_demux_handle_page() is
enough to ensure that chained oggs are played corretly (see bgo#706569).

Tweaking the base in gst_ogg_pad_submit_packet() as well result in delays when
playing a file with start != -1.

https://bugzilla.gnome.org/show_bug.cgi?id=735808
2014-09-01 16:26:29 +03:00
Guillaume Desmottes
3c8d3465bf oggdemux: accumulate base time
Base time should be accumulated so non flushing seeks have the expected base.
Not accumulating result in segments appearing as "too late" and so are not
played by the sink.

https://bugzilla.gnome.org/show_bug.cgi?id=735509
2014-09-01 12:21:03 +03:00
Sebastian Rasmussen
1da3df79cf oggdemux: Unref peer pad after use in error case
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734350
2014-08-06 13:48:42 +02:00
Vincent Penquerc'h
c1b42827c1 oggdemux: allow unset seek stop time in push mode 2014-06-11 17:59:47 +01:00
Vincent Penquerc'h
716987063c oggstream: consider all opus packets as "keyframes"
This lets oggdemux determine they are not delta units, and removes
spurious per packet warnings about being unable to determine the
packet's keyframeness.
2014-06-02 12:40:27 +01:00
Thiago Santos
d3ca7271dc oggdemux: use new gstutils helper GstFlowCombiner
Fixes the handling of GST_FLOW_EOS by using the helper object
from gstutils that does the correct combination of flow returns.

https://bugzilla.gnome.org/show_bug.cgi?id=709224
2014-05-26 19:26:43 -03:00
Luis de Bethencourt
43ae5a17ce oggmux: push eos event when empty pad data
If gst_ogg_mux_queue_pads returns NULL it means we are at EOS, because we get a
NULL buffer and this function never sets bestpad.

https://bugzilla.gnome.org/show_bug.cgi?id=729315
2014-05-06 16:21:18 -04:00
Tim-Philipp Müller
bcb8068e27 docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-26 23:28:57 +01:00
Sebastian Dröge
02e613b6e3 oggmux: Clear Ogg streams before initing them
They might've been inited before, in which case we leak
memory when initing them again without clearing.
2014-04-15 13:39:39 +02:00
Vincent Penquerc'h
1791799d71 oggstream: use G_GUINT64_CONSTANT instead of ll suffix
Thanks slomo for pointing out it's not standard.
2014-04-10 16:08:29 +01:00
Vincent Penquerc'h
55f98974a8 oggstream: fix a few left shifts operations on 32 bits cast to 64 bits
This should not cause any actual bug since Theora and Daala have
a maximum shift of 31, and a packet duration of 2^31 seems very
implausible. But it fixes:

Coverity 1139804, 1139803, 1139802
2014-04-10 11:06:00 +01:00
Vincent Penquerc'h
2c07c54b8a oggstream: remove NULL test after dereference
And add NULLness asserts at top of function. The only call
to this passes local variable pointers, so non NULL.

Coverity 206375
2014-04-10 11:06:00 +01:00
Vincent Penquerc'h
1b0f13ebf2 oggmux: test for failure to return tag
It should really not happen unless the tag list it corrupt,
but the API returns a failure code so we may as well use it.

Coverity 1139595
2014-04-10 11:06:00 +01:00
Vincent Penquerc'h
54f38edd15 oggdemux: do not dereference NULL pad in warning message
Coverity 1197695
2014-04-10 11:06:00 +01:00
Thiago Santos
a2633b7cf1 oggmux: implement vp8 granulepos function
Add an extra function to the oggstream map to inform it about
the incoming buffers. This way oggmux can keep a count on the
vp8 invisible frames and calculate the granulepos correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=722682
2014-03-11 12:28:49 -03:00
Thiago Santos
e00c306571 oggmux: create vp8 header data if not provided in caps
vp8 stream header shouldn't be assumed to be provided in caps always
as this would repeat the same code in all demuxers/encoders. Instead,
make oggmux generate them if they are not supplied.

https://bugzilla.gnome.org/show_bug.cgi?id=722682
2014-03-11 12:28:49 -03:00
Thiago Santos
b0985365af oggdemux: allow file to go until the end in push mode
When seeking back to original state after duration seeks, let
upstream know that we want the whole file, including the last
byte that wasn't requested on the duration seeks.

https://bugzilla.gnome.org/show_bug.cgi?id=724633
2014-02-20 00:24:02 -03:00
Thiago Santos
ef547c3eb5 oggdemux: remove unused instance variable event
It is never set to anything
2014-02-20 00:23:49 -03:00
Thiago Santos
a6890ec7ef oggmux: properly flush when seeking at the beginning
Reset all internal status when collect pads forwards a flush-stop
from the pads to be able to start the stream again.
2014-02-13 16:03:01 -03:00
Sebastian Dröge
437d11f5a0 oggmux: Fix typo in header include guard
clang does not like this.
2014-02-08 17:02:45 +01:00
Vincent Penquerc'h
b532ce16a5 oggdemux: fix broken seeking reading the whole file
A change in gst_ogg_demux_do_seek caused oggdemux to wait for
a page for each of the streams, including a skeleton stream if
one was present. Since Skeleton only has header pages, that
was never going to end well.

Also, the code was skipping CMML streams when looking for pages,
so would also have broken on CMML streams.

Thus, we change the code to disregard Skeleton streams, as well
as discontinuous streams (such as CMML and Kate). While it may
be desirable to consider Kate streams too (in order to avoid
losing a subtitle starting near the seek point), this may be
a performance drag when seeking where no subtitles are. Maybe
one could add a "give up" threshold for such discontinuous
streams, so we'd get any page if there is one, but do not end
up reading preposterous amounts of data otherwise.

In any case, it is important that the code that determines
the amount of streams to look pages for remains consistent with
the "early out" conditions of the code that actually parses
the incoming pages, lest we never decrease the pending counter
to zero.

This fixes seeking on a file with a skeleton track reading all
the file on each seek.

https://bugzilla.gnome.org/show_bug.cgi?id=719615
2014-01-14 12:48:45 +00:00
Vincent Penquerc'h
25bf5a13f0 oggdemux: use an adaptive chunksize for performance reasons
Ogg data is read chunk by chunk, and the chunk size used was
originally taken from libvorbisfile. However, this value leads
to poor performance when used on an Ogg file with large pages
(Ogg pages can be close to 64 KB).

We can't just use a larger chunk size, since this will decrease
performance on small page streams, so we use an adaptive scheme
where the chunk size is twice the largest page size we've seen
so far in the stream. For "typical" Ogg/Vorbis, this gives us
almost the same chunk size (a bit lower), and this lets us get
better performance on streams with large pages.
2014-01-14 12:48:45 +00:00
Stefan Sauer
2055f2b7de oggdemux: fix copy'n'paste in comment 2013-10-15 09:53:30 +02:00
Thiago Santos
1618084bc8 oggdemux: check for full eos after a pad goes eos in push mode
After a pad is on EOS, verify if all pads are EOS and return
upstream, avoiding keeping the buffer flow without having more
data to push
2013-09-10 12:14:47 -03:00
Thiago Santos
7ecd5b1108 oggdemux: properly handle stop position at seeks in push mode
Store the seek stop and seqnum and properly restore them when
receiving the corresponding Segment from upstream. Also fixes
seqnum for converted seek events.
2013-09-10 12:14:47 -03:00
Sebastian Dröge
02c6766c8a oggdemux: Update segment.base with the chain's start time too
Fixes playback of chained ogg files.

https://bugzilla.gnome.org/show_bug.cgi?id=706569
2013-08-22 17:33:45 +02:00
Sjoerd Simons
76647f2710 oggdemux: Prevent seeks when _SCHEDULING_FLAG_SEQUENTIAL is set
Don't go into pull mode when the upstream scheduling flags indicate
seeks should be avoided by setting GST_SCHEDULING_FLAG_SEQUENTIAL.

https://bugzilla.gnome.org/show_bug.cgi?id=704929
2013-07-29 16:04:07 +02:00
Sebastian Dröge
246e1781c7 oggdemux: Don't swap start/stop for negative rates in the SEGMENT query 2013-07-29 12:11:38 +02:00
Sebastian Dröge
31763d3c20 oggdemux: Implement SEGMENT query 2013-07-29 10:46:01 +02:00
Sebastian Dröge
fc79a688f5 ogg: Add support for group-id in the stream-start event 2013-07-22 15:24:29 +02:00
Mathieu Duponchelle
905fe0f4ca oggdemux: Make bisecting fully accurate
When bisecting after an earliest time has been found, we need
to only consider the stream for which the earliest time was found.

Before, the following scenario could be and was encountered:

a) Find the earliest time for stream X
b) bisect and find a page which granuletime is indeed < target, but
   contains another stream.
c) decide to seek at the wrong offset, sometimes inferior to
   the real one, in which case the error was undected or
d) the offset was superior, and thus the actual target keyframe was
   not processed, and packets were skipped waiting
   for a granulepos.

https://bugzilla.gnome.org/show_bug.cgi?id=700537
2013-07-15 10:34:00 +02:00
Mathieu Duponchelle
affd9f37aa Revert "oggdemux: fix seeking with negative rate with skeleton"
This reverts commit b41cd04289.
2013-07-15 10:31:08 +02:00
Sebastian Dröge
748cbbd76e ogg: The Daala headers are little endian, not big endian 2013-06-23 12:07:41 +02:00
Sebastian Dröge
3f9872abaa ogg: Add Daala support 2013-06-23 11:28:40 +02:00
Sebastian Dröge
1d20c0f4bb oggmux: Make sure to always set caps on the srcpad and always send a segment event
Even if the srcpad is not linked at this point, it might be linked as result of
setting the caps.
2013-05-10 11:24:46 +02:00
Mathieu Duponchelle
46aff49316 oggmux: don't send a segment event before the caps event
https://bugzilla.gnome.org/show_bug.cgi?id=699971
2013-05-10 09:28:52 +02:00
Mathieu Duponchelle
4c362768fc oggmux: The best pad can't be EOS
The problem experienced is that the EOS was never emitted by oggmux during a
rendering with GES. The proposed patch checks if the pad is EOS before deciding
it's the "best pad".

https://bugzilla.gnome.org/show_bug.cgi?id=699792
2013-05-08 14:26:17 +02:00
Andoni Morales Alastruey
47cbbe6514 ogg: fix duplicated symbols with schroedinger 2013-05-02 14:02:19 +02:00
Stefan Sauer
cdfc05ec4d oggmux: add more logging and fix the object param for some logging
Use data->pad instead of pad for 'object'. Reduce indentation depth in a helper
with an early return.
2013-04-17 21:47:11 +02:00
Sebastian Dröge
948a4a3632 gst: Add better support for static plugins 2013-04-15 15:52:58 +02:00
Sebastian Dröge
6e01d1869b ogg: Prevent some symbol conflicts between the ogg plugin and schroedinger 2013-04-15 08:38:34 +02:00
Wim Taymans
461d58795a oggdemux: don't push on NOT_LINKED pads
If our previous flow return was NOT_LINKED, don't try to push on the pads some
more. If we get a RECONFIGURE event on the pad, try to push on it again.
2013-04-04 18:18:54 +02:00
Nicolas Dufresne
e58f838ca3 oggdemux: Allow EOS on timestamp equal to stop/start
Changed the check to a current_time equal to the stop will produce
EOS instead of the next one. Also, segment.start can't be NONE, so removing
this check.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696899
2013-04-04 10:09:26 +02:00
Wim Taymans
564f720c40 oggdemux: mark keyframes
Use the mapper to set the delta-unit flag.
2013-03-31 18:57:13 +02:00
Stefan Sauer
28d09d43e5 oggmux: don't keep a static string beyond the ref of the owning object
Also move down the ref for the caps a bit, so tha we don't leak it in the branch that calls continue.
2013-03-05 22:31:26 +01:00
Stefan Sauer
ce626fc3d8 oggmux: don't crash on caps being NULL
Also avoid unused variables if debugging is disabled.
2013-03-03 20:51:43 +01:00
Tim-Philipp Müller
d97dd36ae5 ogg: small GValue optimisation
No need to copy buffers we put into the streamheader any more
now that we don't put caps on buffers any more, so there's no
danger of a refcount cycle.
2013-03-03 17:40:21 +00:00
Tim-Philipp Müller
e045b6fb52 oggdemux: add audio-codec and video-codec tags for streams in more cases 2013-02-28 16:27:50 +00:00
Vincent Penquerc'h
658195e6de oggdemux: fix incorrect testing of invalid granpos values
Positive granulepos is valid, -1 granulepos is unset, and all
other negative granulepos are invalid.

Reported by Tim-Philipp Müller
2013-01-07 18:03:52 +00:00
Tim-Philipp Müller
5f59b4f7ee Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 23:05:09 +00:00
Jonathan Liu
7f22e3ea7f oggstream: fix crash with 0 byte ogg packets
https://bugzilla.gnome.org/show_bug.cgi?id=687030
2012-10-29 12:04:38 +00:00
Sebastian Dröge
3c1041d5eb Revert "gst: Add better support for static plugins"
This reverts commit d2d79e3bc2,
which was accidentially pushed.
2012-10-24 13:26:26 +02:00
Sebastian Dröge
d2d79e3bc2 gst: Add better support for static plugins 2012-10-24 12:10:44 +02:00
Wim Taymans
3591df23b1 docs: playbin2 -> playbin 2012-10-09 12:20:10 +02:00
Tim-Philipp Müller
1c22b1fe11 oggmux: send stream-start event 2012-09-23 13:27:27 +01:00
Tim-Philipp Müller
e072bd6130 oggmux: fix up previous commit
Was missing the header file change.
2012-09-21 16:10:27 +01:00
Tim-Philipp Müller
5890a4a803 oggmux: send a segment event at the beginning 2012-09-21 15:58:07 +01:00
Sebastian Dröge
b19944d1e4 gst: Update for link/unlink function API change 2012-09-17 13:24:52 +02:00
Mark Nauwelaerts
c629a44162 replace gst_tag_list_free with gst_tag_list_unref 2012-09-14 17:53:21 +02:00
Stefan Sauer
b9054de15c 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:03:21 +02:00
Mark Nauwelaerts
899a809330 ext, gst-libs: only activate in pull mode if upstream is seekable 2012-09-11 17:37:27 +02:00
Tim-Philipp Müller
5bb8021fc9 oggdemux: port to new GLib thread API 2012-09-10 01:08:51 +01:00
Tim-Philipp Müller
2079a8c12b Remove glib-compat-private.h stuff we don't need any more
It's all been ported to the latest GLib API now.
2012-09-09 18:36:49 +01:00
Mark Nauwelaerts
62ef0fc55e oggmux: remove dead code 2012-09-05 12:02:32 +02:00
Mark Nauwelaerts
6a43c1f9c7 oggdemux: send GAP event
... in stead of old update newsegment event.
2012-09-05 12:02:32 +02:00
Tim-Philipp Müller
7c2e7b1a4f text/plain + text/x-pango-markup -> text/x-raw 2012-09-02 02:45:41 +01:00
Tim-Philipp Müller
a99a1042b9 gst_message_new_duration() -> gst_message_new_duration_changed() 2012-09-02 01:27:17 +01:00
Stefan Sauer
a2b1243064 oggmux: remove superflous assignment 2012-08-12 09:57:11 +02:00
Tim-Philipp Müller
4ed7ebc071 oggdemux: set HEADER flag on header packets
https://bugzilla.gnome.org/show_bug.cgi?id=681499
2012-08-11 10:18:37 +01:00
Tim-Philipp Müller
8b15f5a8ab oggmux: don't leak dropped seek event 2012-08-11 09:53:49 +01:00
Tim-Philipp Müller
0dd2766d83 oggmux: pick delta pad earlier during header parsing and based on video/non-video
Pick delta pad earlier during header parsing, and pick it based
on whether it's a video stream or not rather than some rather
byzantine signalling from theoraenc etc. which would set the delta
flag on header packets which oggmux would then pick up and determine
that this is a "delta-able" stream.

Since the new videodecoder-based theoraenc didn't do that any more,
we would only see the first delta flag on the second video packet,
which is after we've already muxed a few audio packets flagged as
key units, which trips up the unit test.

Fixes pipelines/oggmux unit test.

https://bugzilla.gnome.org/show_bug.cgi?id=679958
2012-08-10 10:45:09 +01:00
Andoni Morales Alastruey
15c712c7c6 oggdemux: add proper cast for print 2012-08-08 17:41:19 +02:00
Tim-Philipp Müller
17c839c8a1 No statements with side-effects in g_assert() or g_return_*() please 2012-08-08 10:11:48 +01:00
Sebastian Dröge
e25a861ed6 oggdemux: Add stream-id to the stream-start event 2012-08-06 14:01:28 +02:00
Sebastian Dröge
99d73c94e9 tag: Update for taglist/tag event API changes 2012-07-28 00:35:02 +02:00
Wim Taymans
683a38ad65 update for new variable names 2012-07-27 15:24:43 +02:00
Wim Taymans
c9c4aedaa6 oggdemux: don't copy empty packets
Don't try to copy empty packets, which contain a repeated frame in theora.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680520
2012-07-24 14:36:58 +02:00
Edward Hervey
1097102b20 oggdemux: Don't push stream-start in two different locations 2012-07-18 18:17:57 +02:00
Stefan Sauer
673dafd09d oggmux: only drop flushing seeks after we started to mux
Don't drop all seek events. It is okay to seek before we send the headers. Non
flushing seeks are okay at any time later as well.
2012-07-16 11:27:57 +02:00
Edward Hervey
25aa25be3a oggdemux: Push out STREAM_START events when needed 2012-07-12 09:51:36 +02:00
Sebastian Dröge
74c7524b49 gst: Implement segment-done event 2012-07-05 13:06:04 +02:00
Wim Taymans
f28e2e7bea fix interlace-mode 2012-06-26 17:15:49 +02:00
Wim Taymans
21e9f64ab2 update for task api change 2012-06-20 10:33:24 +02:00
Vincent Penquerc'h
492341db77 oggdemux: fix quadratic search for last page
A crafted file with invalid pages will cause repeated searches from
earlier offsets in steps of 8500 bytes, but reading till the end of
the stream. Since we know the maximum size of an Ogg page, we can
bound the search for next page, to get a linear behavior (though
still not good enough as it will read the entire file backwards if
there's no valid page till then).
2012-06-14 18:42:12 +01:00
Sebastian Dröge
233622437f elements: Use gst_pad_set_caps() instead of manual event fiddling 2012-06-08 15:51:06 +02:00
Vincent Penquerc'h
e126073489 oggdemux: reject opus streams with negative start time
This is used by Vorbis for sample accurate clipping, but this is
deemed an invalid stream by the opus spec.
2012-06-06 17:49:13 +01:00
Vincent Penquerc'h
ba967d285a oggstream: add a flag to say whether start granule clamping is to be done 2012-06-06 17:49:13 +01:00
Wim Taymans
a2172bdb4b update for tag event change 2012-06-06 13:05:47 +02:00
Vincent Penquerc'h
078dd2e896 oggstream: reject Ogg/Opus streams with nonsensical preskip/granpos setup
As the spec mandates.
2012-06-06 11:05:53 +01:00
Tim-Philipp Müller
5518dd69c7 oggdemux: fix potential crash in SEEKING query handler
Take chain lock when accessing chains. Fall back gracefully
when there's no current chain Hopefully fixes crash when
seeking in Jamendo or Magnatune streams in Amarok.

https://bugzilla.gnome.org/show_bug.cgi?id=675609
2012-05-13 23:23:03 +01:00
Tim-Philipp Müller
0e216d1f4c typefinding, ogg: don't bother with annodex media types
They're hardly used, and probably more confusing than anything
else, and it's not clear that anyone would really need to be
able to tell them apart at the media type level.
2012-05-13 18:49:31 +01:00
Tim-Philipp Müller
657fe5efff oggdemux: don't expose Annodex CMML streams any more
This never really took off - it's hardly used anywhere
and deprecated in favour of Kate. Exposing pads just
leads to confusing 'you are missing a plug-in' messages
when people come across such streams. We could still post
the data on the bus for applications to parse.
2012-05-13 18:39:06 +01:00
Tim-Philipp Müller
756625edd2 oggdemux: update some comments that refer to internal decoders
We don't do that any more, we now have stream mappers for this.
2012-05-13 17:13:39 +01:00
Tim-Philipp Müller
882ffc7b98 oggdemux: remove unused GstOggPadMode enum 2012-05-13 17:13:26 +01:00
Mark Nauwelaerts
a008aa0b46 collectpads2: rename to collectpads 2012-04-17 15:09:58 +02:00
Mark Nauwelaerts
ccda1c23f3 oggmux: use standard collectpads event handling
... rather than (old) hacked overriding.
2012-04-16 16:30:44 +02:00
Tim-Philipp Müller
05b1ad1b56 ogg: update for media type typefinding changes 2012-04-15 23:03:58 +01:00
Tim-Philipp Müller
3c6a3ad629 Use new gst_element_class_set_static_metadata() 2012-04-10 00:45:16 +01:00
Sebastian Dröge
ad42b16375 gst: Update for GST_PLUGIN_DEFINE() API change 2012-04-05 15:11:05 +02:00
Sebastian Dröge
65307dd132 gst: Update versioning 2012-04-04 14:55:15 +02:00
Edward Hervey
5c83351510 oggstream: Fix 'comparison of unsigned expression < 0 is always false'
-1 (aka G_MAXUINT32) is the only possible 'negative' value that is used
as a special value for 'not set' here. All other positive values are
valid.
2012-03-30 12:00:08 +02:00
Edward Hervey
d1abf468c4 oggmux: Handle return values from GstByteWriter 2012-03-30 11:58:37 +02:00
Wim Taymans
d7c42e6680 oggdemux: avoid memcpy in pull mode
In pull mode, we can now ask the upstream element to write directly into the
memory provided by libogg.
2012-03-20 13:20:36 +01:00
Wim Taymans
dfb8e7cb2c don't pass random pointers to pull_range 2012-03-16 21:46:47 +01:00
Wim Taymans
867e635cde oggdemux: only create unknown caps once 2012-03-13 12:40:11 +01:00
Wim Taymans
c3478b2da0 Merge branch 'master' into 0.11
Conflicts:
	ext/vorbis/gstvorbisparse.c
	gst-libs/gst/video/video.c
	gst/videoscale/gstvideoscale.c
	sys/v4l/gstv4lxoverlay.c
	sys/v4l/v4l_calls.c
	sys/v4l/v4lsrc_calls.c
	tests/check/libs/video.c
2012-02-10 15:41:06 +01:00
Wim Taymans
a75e9102c5 GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING 2012-02-08 15:17:49 +01:00
Vincent Penquerc'h
b4d6263f38 oggdemux: fix granpos interpolation violating max keyframe distance
In case many packets fit on a page, we may not see a granpos for
a while, and granpos interpolation can wrap the 'frames since last
keyframe' part of the granpos, generating a granpos which is smaller
than what it should be.

This is fixed by detecting keyframe packets (at least for Theora),
and updating the last keyframe granpos from this.

This may still be generating potentially wrong granpos for streams
which have a Theora like granpos (keyframes, a max keyframe distance
and a count of frames since last keyframe), and which allow implicit
granules on packets. For these streams, a custom keyframe detection
routine should be plugged into their GstOggStream mapper.

https://bugzilla.gnome.org/show_bug.cgi?id=669164
2012-02-02 13:06:29 +00:00
Wim Taymans
848e107146 oggdemux: don't blindly forward all unknown events
It causes the caps event to be send downstream and cause negotiation failures.
2012-01-30 20:58:34 +01:00
Wim Taymans
be0cadac03 update for HEADER flag changes 2012-01-30 17:16:17 +01:00
Wim Taymans
fcdc385aa1 port to new map API 2012-01-25 12:30:53 +01:00
Sebastian Dröge
68c0790817 Merge branch 'master' into 0.11
Conflicts:
	gst-libs/gst/interfaces/propertyprobe.c
	sys/xvimage/xvimagesink.c
2012-01-25 11:50:54 +01:00
Wim Taymans
3d42f0f6ed port to new glib thread API 2012-01-19 11:36:17 +01:00
Mark Nauwelaerts
34d767c6a8 oggstream: initialize variable
... to help out challenged compiler.
2012-01-17 18:19:30 +01:00
Tim-Philipp Müller
0461ed2ada Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst-libs/gst/pbutils/gstdiscoverer-types.c
	gst-libs/gst/pbutils/gstdiscoverer.c
	tests/check/Makefile.am
2012-01-12 23:21:17 +00:00
Vincent Penquerc'h
9f4b71b2a7 oggdemux: fix push mode chain leak
When I first implemented push mode seeking, I removed the chain
freeing there as it could be used later. The current code does not
seem to do that though, so I'm restoring the previous freeing,
which plugs the leak while apparently not reintroducing use of
freed data with chained and normal files, both with gst-launch
playbin2 and Totem.
2012-01-11 16:17:42 +00:00
Vincent Penquerc'h
83c9396850 Revert "oggmux: fix pad leak"
This reverts commit 5df30c1b90.

I must have dreamt the Valgrind logs, reverting this reintroduces
no leak, and gets rid of the test failures it introduced :S
2012-01-10 19:02:31 +00:00
Vincent Penquerc'h
35df9d2ad9 oggstream: fix tag list leak 2012-01-10 16:57:04 +00:00
Vincent Penquerc'h
a718b859a7 oggdemux: fix pad leak 2012-01-10 16:51:09 +00:00
Vincent Penquerc'h
ef1469fc8b oggdemux: fix hang on small truncated files
A first hang was happening when trying to locate a page backwards,
where we'd sync forever on the same page.
With that fixed, a second hang would happen after preparing an EOS
event, but with no chain created yet to send it to, the pipeline
would stay idle forever.
An element error is now emitted for this case.
2012-01-10 16:20:23 +00:00
Vincent Penquerc'h
5df30c1b90 oggmux: fix pad leak 2012-01-10 16:20:23 +00:00
Sebastian Dröge
40938b8a89 ogg: Update for the libgstriff API changes
Still needs to handle the raw audio channel reordering.
2012-01-05 10:34:25 +01:00
Sebastian Dröge
75f91ebea0 ext: Add new layout field to the raw audio caps 2012-01-05 10:34:25 +01:00
Edward Hervey
f562a29284 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/theora/gsttheoraenc.c
	gst-libs/gst/tag/gstexiftag.c
	gst/adder/gstadder.c
	gst/adder/gstadder.h
	gst/playback/gstdecodebin2.c
	gst/playback/gstsubtitleoverlay.c
	tests/check/libs/tag.c
2011-12-30 13:21:35 +01:00
Thiago Santos
08022bddc8 oggmux: fix leak when initializing pads
Pads are initialized twice: when requesting pads and when
initializing collectpads. Avoid double initialization by
checking if collectpads are still going to be initialized when
creating request pads.
2011-12-28 09:45:53 -03:00
Vincent Penquerc'h
229377fb6b oggdemux: assume live stream if byte size cannot be determined
This prevents trying to seek and failing, then ending up unable
to stream because we can't get back at the headers.
A more robust way would be to find a good place to reinject the
headers when a seek fails, but I can't seem to get this to work.
2011-12-16 15:29:21 +00:00
Tim-Philipp Müller
fb6d09055a Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/alsa/gstalsadeviceprobe.c
	ext/alsa/gstalsamixer.c
	ext/pango/gsttextoverlay.c
	ext/pango/gsttextoverlay.h
	gst-libs/gst/audio/gstaudiobasesink.c
	gst-libs/gst/audio/gstaudioringbuffer.c
	gst-libs/gst/audio/gstaudiosrc.c
	gst-libs/gst/video/Makefile.am
	gst-libs/gst/video/video.c
	gst/encoding/gststreamcombiner.c
	gst/encoding/gststreamsplitter.c
	gst/playback/gstplaybasebin.c
	gst/playback/gststreamsynchronizer.c
	gst/playback/gstsubtitleoverlay.c
	gst/playback/gsturidecodebin.c
	sys/xvimage/xvimagesink.c
	tests/examples/Makefile.am
	win32/common/libgstvideo.def

Video overlay composition disabled for now, needs
porting to buffer meta.
2011-12-08 01:19:03 +00:00
Tim-Philipp Müller
5440ae3c18 Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
GStaticRecMutex is part of our API/ABI, not much we can do here
in 0.10 for most of these.
2011-12-04 20:50:25 +00:00
Tim-Philipp Müller
0d98aa25b8 Work around deprecated thread API in glib master
Add private replacements for deprecated functions such as
g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
to avoid the deprecation warnings. We'll change these
over to the new API once we depend on glib >= 2.32.

Replace g_thread_create() with g_thread_try_new().
2011-12-04 17:16:30 +00:00
Tim-Philipp Müller
177525f89f Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst-libs/gst/netbuffer/gstnetbuffer.c
	gst/ffmpegcolorspace/avcodec.h
	gst/ffmpegcolorspace/gstffmpegcodecmap.c
	gst/ffmpegcolorspace/imgconvert.c
	gst/ffmpegcolorspace/imgconvert_template.h
	gst/ffmpegcolorspace/mem.c
	gst/playback/README
	gst/playback/gstplaybasebin.c
	gst/playback/gstplaybasebin.h
	gst/playback/gstplaybin.c
	sys/v4l/v4lmjpegsrc_calls.c
	sys/v4l/videodev_mjpeg.h
	tests/check/elements/gnomevfssink.c
2011-12-02 11:10:17 +00:00
Piotr Fusik
14644457b0 various: typo fixes
Fix typos in code and docs. Fixes. #658984
2011-12-02 12:03:27 +01:00
Tim-Philipp Müller
ec0d3566bf Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/alsa/gstalsasrc.c
	ext/alsa/gstalsasrc.h
	gst/adder/gstadder.c
	gst/playback/gstplaybin2.c
	gst/playback/gstplaysinkconvertbin.c
	win32/common/libgstvideo.def
2011-12-02 00:07:39 +00:00
Alessandro Decina
ab921eec11 oggdemux: fix compiler warning 2011-11-29 09:16:20 +01:00
Vincent Penquerc'h
96374054ac various: fix pad template leaks
https://bugzilla.gnome.org/show_bug.cgi?id=662664
2011-11-28 13:09:02 +00:00
Tim-Philipp Müller
32b14c6ed3 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/vorbis/gstvorbisenc.c
	gst/playback/gstdecodebin2.c
	gst/playback/gstplaysinkconvertbin.c
	gst/videorate/gstvideorate.c
2011-11-26 12:12:59 +00:00
Vincent Penquerc'h
c6b9145630 oggmux: set collectpads2 not to wait on sparse streams
https://bugzilla.gnome.org/show_bug.cgi?id=663174
2011-11-25 16:11:01 +00:00
Vincent Penquerc'h
a5c64d5b97 oggdemux: minor cleanup 2011-11-24 17:12:56 +00:00
Vincent Penquerc'h
b0bb1d3539 oggdemux: skip the second bisection when possible
If we already saw the keyframes that we need to find,
we do not need to bisect to find them.

This will always be the case for streams with audio only,
where each frame acts as a keyframe, but will occasionally
also happen for streams with video.

https://bugzilla.gnome.org/show_bug.cgi?id=662475
2011-11-24 10:48:48 +01:00
Vincent Penquerc'h
e7079cd8d5 oggdemux: improve push time seeking
Various tweaks to improve convergence, in particular for
the worst case, which is now cut in about half.

https://bugzilla.gnome.org/show_bug.cgi?id=662475
2011-11-24 10:48:32 +01:00
Vincent Penquerc'h
db21375406 oggdemux: gather some more stats about bisection
https://bugzilla.gnome.org/show_bug.cgi?id=662475
2011-11-24 10:48:15 +01:00
Wim Taymans
17f6254ab4 ogg: fix compilation 2011-11-23 11:10:31 +01:00
Wim Taymans
7b45a7367b Merge branch 'master' into 0.11
Conflicts:
	ext/ogg/gstoggmux.c
2011-11-23 10:50:53 +01:00
Vincent Penquerc'h
042b4f9a29 oggstream: extract opus comments if available 2011-11-22 13:29:10 +00:00
Vincent Penquerc'h
bf73491077 oggstream: recognize opus headers from data, not packet count
Opus streams outside of Ogg may not have headers, and oggstream
may be used by oggmux to mux an Opus stream which does not come
from Ogg - thus without headers.
Determining headerness by packet count would strip the first two
packets from such an Opus stream, leading to a very small amount
of audio being clipped at the beginning of the stream.
2011-11-22 13:15:33 +00:00
Vincent Penquerc'h
9d4989395c oggdemux: add some more debug info when determining start time 2011-11-22 13:01:35 +00:00