Commit graph

863 commits

Author SHA1 Message Date
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
Vincent Penquerc'h
2a87d7c8ce oggstream: fix opus duration calculation 2011-11-22 12:55:56 +00:00
Vincent Penquerc'h
ceee36195a oggstream: early out on headers when determining packet duration 2011-11-22 12:00:58 +00:00
Vincent Penquerc'h
e05f1df04b oggstream: account for opus pre-skip in granpos/time mapping 2011-11-22 11:59:54 +00:00
Wim Taymans
8fc2a21775 update for activation changes 2011-11-21 13:35:34 +01:00
Vincent Penquerc'h
9d2a2750c2 ogg: add opus support 2011-11-19 16:06:09 +00:00
Wim Taymans
d0bd5f04c0 update for new scheduling query 2011-11-18 17:58:58 +01:00
Wim Taymans
1ad4d20607 add parent to activate functions 2011-11-18 13:56:04 +01:00
Wim Taymans
e302833e65 add parent to pad functions 2011-11-17 12:48:25 +01:00
Wim Taymans
2202511e77 add parent to query function 2011-11-16 17:25:17 +01:00
Wim Taymans
7402d3a3d2 update for _get_caps() -> _query_caps() 2011-11-15 18:04:17 +01:00
Vincent Penquerc'h
67f6f64d88 oggdemux: do not try to write empty header buffers
Those are valid, and the EOS skeleton packet is actually empty.
2011-11-10 14:38:09 +00:00
Vincent Penquerc'h
77230f0106 oggmux: split request pad templates into audio/video/subtitle
https://bugzilla.gnome.org/show_bug.cgi?id=663766
2011-11-10 14:38:09 +00:00
Wim Taymans
372b9329b9 remove query types 2011-11-09 11:47:54 +01:00
Wim Taymans
8c8fcf4d3b Merge branch 'master' into 0.11 2011-11-07 17:18:06 +01:00
Vincent Penquerc'h
353153d079 oggdemux: survive skeleton finding length behind our backs in push mode
In push mode, we determine duration by doing a seek to the end of the
stream. However, a skeleton stream with an index will cause the duration
to be known already, and we end up never setting the push_time_duration
variable which we use to know duration has been determined.

https://bugzilla.gnome.org/show_bug.cgi?id=662049
2011-11-07 12:20:16 +00:00
Wim Taymans
7ac25e9b26 Merge branch 'master' into 0.11
Conflicts:
	common
	configure.ac
	gst-libs/gst/audio/gstbaseaudiosink.c
	gst/playback/gstdecodebin2.c
	gst/playback/gstplaysinkaudioconvert.c
	gst/playback/gstplaysinkaudioconvert.h
	gst/playback/gstplaysinkvideoconvert.c
	gst/playback/gstplaysinkvideoconvert.h
2011-11-07 12:23:15 +01:00
Wim Taymans
75fea4f535 oggdemux: fix somtimes pad 2011-11-04 12:53:33 +01:00
Wim Taymans
cf8481b990 fix pad template names for request pads 2011-11-04 10:49:48 +01:00
Sebastian Dröge
41dc3033d4 oggmux: Remove obsolete #include 2011-11-03 09:27:56 +01:00
Wim Taymans
a5fa136c0b update for tag API removal 2011-11-02 12:11:16 +01:00
Tim-Philipp Müller
5ee51e47a1 ext, gst, gst-libs, tests: update for tag list API changes 2011-10-31 14:22:39 +00:00
Wim Taymans
4f9dea137f Merge branch 'master' into 0.11 2011-10-28 11:34:37 +02:00
Thiago Santos
136f5b2690 oggmux: port to gstcollectpads2 2011-10-28 10:06:16 +02:00
Wim Taymans
06311362e9 fix compilation 2011-10-27 17:26:58 +02:00
Wim Taymans
016d036137 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	gst-libs/gst/audio/gstbaseaudiosink.c
	gst/audioconvert/channelmixtest.c
	gst/playback/gstplaybasebin.c
	gst/playback/gstsubtitleoverlay.c
	tests/examples/Makefile.am
	tests/examples/audio/Makefile.am
2011-10-27 15:44:58 +02:00
René Stadler
133a0b1771 oggdemux: remove avoidable call to gst_object_set_name 2011-10-21 22:24:14 +02:00
Vincent Penquerc'h
26e1c2d628 oggdemux: do not retry seeking indefinitely
https://bugzilla.gnome.org/show_bug.cgi?id=661897
2011-10-17 10:51:19 +01:00
Wim Taymans
f1088ed647 update for UNEXPECTED -> EOS flowreturn 2011-10-10 11:39:52 +02:00
René Stadler
1d3980cda2 oggdemux: don't leak scheduling query 2011-10-07 14:06:57 +02:00
Edward Hervey
17bfba09f1 Merge branch 'master' into 0.11
Conflicts:
	ext/ogg/gstoggdemux.c
	ext/pango/gsttextoverlay.c
	gst-libs/gst/audio/gstaudioencoder.c
	gst-libs/gst/audio/gstbaseaudiosrc.c
	gst/playback/gstsubtitleoverlay.c
	gst/videorate/gstvideorate.c
2011-09-23 18:27:11 +02:00
Vincent Penquerc'h
c956c5fd00 oggstream: only use information from skeleton if we have nothing better
The codec setup headers are a lot more likely to have correct information,
especially as it's easy to remux a skeleton in a file where streams don't
have the same parameters (I've even seen a file with two skeletons).

Still, this is useful in the case we have a codec we can't decode, so we
can at least (theoretically) convert granpos to time, so we discard this
information if the codec setup has already provided it.

This fixes playback on (at lesat) the original archive.org encoding of
"The Night of the Living Dead" (now replaced by another encoding).

https://bugzilla.gnome.org/show_bug.cgi?id=612443
2011-09-19 23:21:23 +01:00
Tim-Philipp Müller
15d8082a55 oggdemux: remove superfluous check in newsegment event handler
If we get a newsegment event from upstream, we can be quite
sure we're not operating pull-based.
2011-09-16 20:14:39 +01:00
Tim-Philipp Müller
049e275632 oggdemux: minor printf format fix 2011-09-16 20:11:56 +01:00
Vincent Penquerc'h
89fc5b4bd8 oggdemux: fix wedge when seeking twice quickly in push mode
This could happen when testing with navseek, and pressing
right and left at roughly the same time. The current chain
is temporarily moved away, and this caused the flush events
not to be sent to the source pads, which would cause the
data queues downstream to reject incoming data after the
seek, and shut down, wedging the pipeline.

Now, I can't really decide whether this is a nasty steaming
hack or a good fix, but it certainly does fix the issue, and
does not seem to break anything else so far.

https://bugzilla.gnome.org/show_bug.cgi?id=621897
2011-09-16 20:07:33 +01:00
Vincent Penquerc'h
0173afa38c oggdemux: implement push mode seeking
This patch implements seeking in push mode (eg, over the net)
in Ogg, using the double bisection method.
As a side effect, it also fixes duration determination of network
streams, by seeking to the end to check the actual duration.

Known issues:
- Getting an EOS while seeking stops the streaming task, I can't
  find a way to prevent this (eg, by issuing a seek in the event
  handler).
- Seeking twice in a VERY short succession with playbin2 fails
  for streams with subtitles, we end up pushing in a dataqueue
  which is flushing. Rare in normal use AFAICT.
- Seeking is slow on slow links - byte ranges guesses could be
  made better, decreasing the number of required requests
- If no granule position is found in the last 64 KB of a stream,
  duration will be left unknown (should be pretty rare)

https://bugzilla.gnome.org/show_bug.cgi?id=621897
2011-09-16 19:47:10 +01:00
Vincent Penquerc'h
6704b37fc3 oggdemux: do not propagate discontinuities in sparse streams
The first packet of a sparse stream may arrive after an initial
delay in the stream. If ogg_stream_packetout reports a discontinuity
in a sparse stream, do not propagate it to other streams in the
chain unnecessarily.

https://bugzilla.gnome.org/show_bug.cgi?id=621897
2011-09-14 23:20:01 +01:00
Wim Taymans
33196cdd2c audio: change audio format syntax a little
Remove the _ in front of the endianness prefix.
Remove the _3 postfix for the 24 bits formats.
Add a _32 postfix after the formats that occupy extra space beyond their
natural size.
The result is that the GST_AUDIO_NE() macro can simply append the endianness
after all formats and that we only specify a different sample width when it is
different from the natural size of the sample. This makes things more consistent
and follows the pulseaudio conventions instead of the alsa ones.
2011-09-06 12:06:39 +02:00
Wim Taymans
e1287b97ab Merge branch 'master' into 0.11
Conflicts:
	ext/ogg/gstoggmux.c
	gst-libs/gst/audio/audio.c
	gst-libs/gst/audio/audio.h
	gst-libs/gst/audio/multichannel.h
	gst-libs/gst/pbutils/Makefile.am
	gst-libs/gst/pbutils/gstdiscoverer.c
	gst/playback/gstplaysinkaudioconvert.c
	gst/playback/gstplaysinkvideoconvert.c
	win32/common/libgstaudio.def
2011-08-29 11:37:36 +02:00
Vincent Penquerc'h
fd218c4ec2 oggmux: fix leaks in skeleton writing
https://bugzilla.gnome.org/show_bug.cgi?id=563251
2011-08-25 08:32:26 +02:00
Vincent Penquerc'h
29038283bc oggmux: generate message headers from received tags
Some message headers can be deduced from tags (eg, "Language").

https://bugzilla.gnome.org/show_bug.cgi?id=563251
2011-08-25 08:32:20 +02:00
Vincent Penquerc'h
53c8656248 ogg: use memory slices where appropriate
While there, avoid zeroing newly allocated memory where unnecessary

https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-25 08:26:49 +02:00
Wim Taymans
232a5a3d0a Merge branch 'master' into 0.11
Conflicts:
	ext/ogg/gstoggmux.c
	ext/vorbis/gstvorbisenc.c
2011-08-24 11:04:53 +02:00
Vincent Penquerc'h
7b8b0fa1bb oggdemux: do not warn when reaching EOS while scanning for the end chain
After all, we were asking for it.

This gets rid of the last warning-about-expected-condition.

w00t.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:32:21 +02:00
Vincent Penquerc'h
df40ddf0aa oggdemux: add media type to chain information reports
One more little step in making logs a little less abstruse.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:31:58 +02:00
Vincent Penquerc'h
1e606c0456 oggstream: correctly identify skeleton EOS packet
It is 0 byte, and was triggering the "bad packet" logic.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:31:51 +02:00
Vincent Penquerc'h
68ed992e7e oggdemux: do not warn about expected occurences
In this case, finding a skeleton packet.
Once upon a time, it used to be rare indeed, but no more.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:31:30 +02:00
Vincent Penquerc'h
4fdb52871c oggdemux: do not warn when finding a non BOS page
After all, we do hope to find actual data for these streams.
However, warn if we could not set up a chain when we find a
non BOS page, as that means we don't have a valid Ogg stream.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:31:17 +02:00
Vincent Penquerc'h
564eedd214 oggdemux: rename local variable for clarity
While the casual reader might end up bewildered by just why this
change might increase clarity, it just happens than, in the libogg
and associated sources, op is the canonical name for an ogg_packet
whlie og is the canonical name for an ogg_page, and reading this
code confuses me.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:30:55 +02:00
Vincent Penquerc'h
5d18496a5b oggdemux: do not try to determine duration of header packets
Headers are inherently durationless.
Instead, set duration to 0 to avoid increasing tracked granpos,
and do not warn about it, since it is totally expected.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:30:45 +02:00
Vincent Penquerc'h
67a882afe7 oggstream: include stream type in warnings
It makes it easier to work out what's going on.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:30:30 +02:00
Vincent Penquerc'h
43cb76b1d8 oggstream: set skeleton stream media type to application/x-ogg-skeleton
This is to match the typefinder, and to make logs clearer.

https://bugzilla.gnome.org/show_bug.cgi?id=657151
2011-08-24 08:30:17 +02:00
Vincent Penquerc'h
2301f1806f oggmux: add skeleton write support
Version written is 3.0

Base times are left empty for now.

Content-Type should be the MIME type of the stream. It is set to
the GStreamer media type for now, which is probably the same for
the streams oggmux supports.

https://bugzilla.gnome.org/show_bug.cgi?id=563251
2011-08-24 08:21:34 +02:00
Vincent Penquerc'h
8a752e44e2 oggdemux: do not skip sparse streams when determining start times
This fixes demuxing of streams containing only sparse streams,
which would cause an infinite loop in _read_end_chain.

https://bugzilla.gnome.org/show_bug.cgi?id=657062
2011-08-23 10:36:18 +02:00
Vincent Penquerc'h
4e9508e2ec oggdemux: do not ignore sparse streams' start time
But do not wait for them either, if we don't have a packet for them.

https://bugzilla.gnome.org/show_bug.cgi?id=657062
2011-08-23 10:36:03 +02:00
Wim Taymans
c81c62d03a fourcc: remove fourcc
Remove fourcc in caps.
Fix pbutils descriptions.
Add more video macros
Fix some unit test
2011-08-22 12:22:02 +02:00
Wim Taymans
5f359600ce oggmux: fix compilation 2011-08-22 12:21:08 +02:00
Wim Taymans
8023f49d19 more audio caps porting 2011-08-19 17:41:22 +02:00
Wim Taymans
b657f5bce7 Merge branch 'master' into 0.11 2011-08-19 14:07:11 +02:00
Vincent Penquerc'h
b7bb1e5633 ogg: do not use 32 bit modifiers to print serial numbers
If ints are 64 bits, 32 bits should get promoted in varargs anyway,
and we don't care about 16 bit ints.
This makes the code a lot more readable, and still gets us nice
hexadecimal 32 bit serialnos.

https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 20:18:53 +01:00
Wim Taymans
ba41bb5ca7 Merge branch 'master' into 0.11
Conflicts:
	ext/ogg/gstoggmux.c
	gst/playback/gstplaysink.c
2011-08-18 19:36:50 +02:00
Vincent Penquerc'h
1dadc5eac1 ogg: get the operator precedence right, even if only a doc
https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:17:40 +02:00
Vincent Penquerc'h
cf370e0219 oggstream: vorbis has a preroll of 2
https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:17:28 +02:00
Vincent Penquerc'h
96e7bf53e9 oggstream: new convenience function to get a stream's media type
This will make logging a lot clearer, both in code and in output.

https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:17:15 +02:00
Vincent Penquerc'h
8304b7b40d ogg: move the "always flush page" to oggstream
It avoids checking for specific media types in the muxer.

https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:16:50 +02:00
Vincent Penquerc'h
fd8434fc74 oggmux: use oggstream to decide which BOS packets to place first
Ogg recommends video BOS packets to be first.
Use the "is_video" flag in oggstream to select those, rather than
check for known mime types.

https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:16:19 +02:00
Vincent Penquerc'h
5bbf7109ec ogg: rationalize serialno type to guint32
It is a 32 bit unsigned number.
Sure, the libogg API uses a long, but that's an unfortunate oversight.

https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:15:51 +02:00
Vincent Penquerc'h
684b90ba74 oggmux: factor the header packet creation code
https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:13:59 +02:00
Vincent Penquerc'h
3fe42b8e7e oggmux: headers should always have granpos 0
https://bugzilla.gnome.org/show_bug.cgi?id=656775
2011-08-18 11:13:47 +02:00
Wim Taymans
33467d9629 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/pango/gsttextoverlay.c
	ext/theora/gsttheoradec.c
	gst/adder/gstadder.c
	gst/adder/gstadder.h
	gst/audioresample/gstaudioresample.c
	gst/encoding/gstencodebin.c
	gst/playback/gstdecodebin.c
	gst/playback/gstdecodebin2.c
	tests/check/elements/decodebin2.c
	tests/check/elements/playbin-compressed.c
	win32/common/libgsttag.def
2011-08-16 18:01:14 +02:00
Wim Taymans
e904c529e3 fix for _negotiated_caps() change 2011-08-15 12:18:15 +02:00
Josep Torra
5629ed74b3 Fix debug statements
Fixes build on MacOSX

Signed-off-by: Edward Hervey <edward.hervey@collabora.co.uk>
2011-08-10 11:15:41 +02:00
Jonathan Liu
8bd3bdaf37 oggstream: Fix crashes with 0-byte vorbis packets
Fixes bug #655574.
2011-08-03 10:18:29 +02:00
Tim-Philipp Müller
bb65192151 ext,gst: update for query API changes 2011-07-27 01:16:53 +01:00
Wim Taymans
376164ab08 Merge branch 'master' into 0.11 2011-07-10 13:49:14 +02:00
David Schleef
a5323107d4 oggmux: check for EOS on both current and best pad
Oops, need both.  Fixes #654270.
2011-07-09 18:33:38 -07:00
David Schleef
2fa9bf2be5 oggmux: check for EOS on current pad, not best
Fixes #654270.
2011-07-09 18:24:26 -07:00
Tim-Philipp Müller
dd56714b14 ffmpegcolorspace -> videoconvert 2011-07-07 23:59:59 +01:00
Wim Taymans
d06f599193 -base: port elements to new video caps 2011-06-16 12:52:13 +02:00
Wim Taymans
40d567153a Merge branch 'master' into 0.11 2011-06-13 19:09:05 +02:00
David Schleef
ea0d666d11 oggmux: refactor how EOS is determined
This decreases the number of buffers held on each pad by one,
eliminating next_buffer.  Simplifies the logic by relying solely
on CollectPads to let us know when a pad is in EOS.  As a side
benefit, the collect pads related code is structured more like
other CollectPad users.

The previous code would occasionally mark the wrong pad as EOS,
causing the code to get in a state where all the streams were
finished, but EOS hadn't been sent to the source pad.
2011-06-10 23:54:07 -07:00
Wim Taymans
40e3dda187 oggdemux: small cleanups 2011-06-10 18:04:14 +02:00
Wim Taymans
db999572a8 -base: fix for flush_stop event API change 2011-06-10 11:59:53 +02:00
Wim Taymans
2940249a84 -base: use caps event
Remove uses of setcaps function and use the caps event.
2011-06-07 11:55:36 +02:00
Wim Taymans
c88ee10c9b Merge branch 'master' into 0.11
Conflicts:
	ext/theora/gsttheoraenc.c
2011-06-06 16:27:12 +02:00
Mark Nauwelaerts
99944a5a81 oggmux: determine granulepos metadata using stream mapper whenever possible
... which unfortunately is not the case for all types, but at least so for
most common ones.
2011-06-06 13:02:49 +02:00
Mark Nauwelaerts
de1f593537 oggmux: convert incoming buffer timestamp to running time
... so all subsequent manipulation can take place in the proper timeline
without further ado.
2011-06-06 13:02:47 +02:00
Mark Nauwelaerts
2e7eddd35e oggmux: remove superfluous code
... since there is nothing in oggstream that cares (or even should)
about granulepos for what is being asked from it.
2011-06-06 13:02:43 +02:00
Edward Hervey
266a9be400 oggmux: Use the GstPad (and not the GstOggPadData for GstPad functions
For those willing, renaming that 'pad' variable to something more obvious
would be nice to avoid such bugs...
2011-06-03 19:28:32 +02:00
Wim Taymans
29c3e31ff5 oggdemux: activate pad before pushing things
Activate the pad before pushing things on it or else we get errors.
2011-05-30 17:14:48 +02:00
Wim Taymans
010add200a scheduling: port to new scheduling query 2011-05-24 17:37:45 +02:00
Sebastian Dröge
884213b8b8 base: Update for SEGMENT event parse API changes 2011-05-18 17:23:18 +02:00