Commit graph

104 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
35df9d2ad9 oggstream: fix tag list leak 2012-01-10 16:57:04 +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
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
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
Vincent Penquerc'h
9d2a2750c2 ogg: add opus support 2011-11-19 16:06:09 +00: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
06311362e9 fix compilation 2011-10-27 17:26:58 +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
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
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
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
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
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
8023f49d19 more audio caps porting 2011-08-19 17:41:22 +02: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
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
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
Jonathan Liu
8bd3bdaf37 oggstream: Fix crashes with 0-byte vorbis packets
Fixes bug #655574.
2011-08-03 10:18:29 +02:00
Sebastian Dröge
dce40847a8 ogg: Update new code for 0.11 buffer API 2011-04-16 16:14:26 +02:00
Sebastian Dröge
c8792778f8 Merge branch 'master' into 0.11 2011-04-16 16:06:26 +02:00
Vincent Penquerc'h
55e767b632 oggmux: prefer headers from caps to determine stream type
Ogg mandates the first header packet must determine a stream's type.
However, some streams (such as VP8) do not include such a header
when muxed in other containers, and thus do not include this header
as a buffer, but only in caps. We thus use headers from caps when
available to determine a new stream's type.

https://bugzilla.gnome.org/show_bug.cgi?id=647856
2011-04-16 11:55:27 +01:00
Sebastian Dröge
352edd1dd9 Merge branch 'master' into 0.11 2011-04-16 09:12:31 +02:00
Tim-Philipp Müller
be59789664 ogg: fix unused-but-set-variable warnings with gcc 4.6
https://bugzilla.gnome.org/show_bug.cgi?id=647294
2011-04-13 23:57:56 +01:00
Wim Taymans
f379a5dacb plugins: more porting to new memory API 2011-03-27 18:30:24 +02:00
Vincent Penquerc'h
b03b223fb1 oggstream: when the last keyframe position is not known, do not use -1
Instead, use either 0 or 1, depending on bitstream version, which give
the correct result for streams which aren't cut off at start.
This allows that function to not return negative granpos.

https://bugzilla.gnome.org/show_bug.cgi?id=638276
2011-01-06 12:34:32 -08:00
Tim-Philipp Müller
542256fd55 ogg: fix typo in comment 2010-12-29 11:51:42 +00:00
Vincent Penquerc'h
a5533c21d9 oggstream: fix interpretation of Theora granule position
The offset part of the granpos is not a sign of the newer encoding.
Use the version number instead.

This fixes the criticals thrown by theoraparse, and (at last) the
remaining part of #553244.
2010-12-29 12:40:25 +01:00
Vincent Penquerc'h
85cafac6af oggstream: implement tag extraction for Kate streams
This will mainly allow Totem to know the language of those streams,
so the subtitle selection menu gets properly filled out.

https://bugzilla.gnome.org/show_bug.cgi?id=638005
2010-12-27 10:53:24 +00:00
David Schleef
0c4820914c oggstream: Fix parsing of theora size 2010-12-22 15:30:36 -08:00
Vincent Penquerc'h
22aa87e98f ogg: implement packet duration query for kate streams
https://bugzilla.gnome.org/show_bug.cgi?id=637519
2010-12-18 20:33:09 +01:00
Mark Nauwelaerts
524b7c60f2 oggstream: additional tag extraction
... supporting theora, flac, speex, celt.

Fixes #629349.
2010-12-03 13:54:08 +01:00