Commit graph

383 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
Tim-Philipp Müller
bb65192151 ext,gst: update for query API changes 2011-07-27 01:16:53 +01: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
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
318ed07598 Revert "-base_port to new query API"
This reverts commit c9f4e0676b.
2011-05-17 11:25:31 +02:00
Sebastian Dröge
bcbf0488bf ogg: Update for negotiation related API changes 2011-05-16 15:35:41 +02:00
Wim Taymans
94dfe80f71 -base: port to new SEGMENT API 2011-05-16 13:48:11 +02:00
Wim Taymans
c9f4e0676b -base_port to new query API 2011-05-10 18:39:07 +02:00
Wim Taymans
816f4e791d segment: fix for new core API
Fix for gst_*_segment_full rename.
2011-05-09 18:16:46 +02:00
Wim Taymans
ec57868488 -base: don't use buffer caps
Port to newest 0.11 core API, remove GST_PAD_CAPS and GST_BUFFER_CAPS.
2011-05-09 13:05:12 +02:00
Sebastian Dröge
353186aec8 ext: Use G_DEFINE_TYPE instead of GST_BOILERPLATE 2011-04-19 14:22:42 +02: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
Wim Taymans
c6dd11981d Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	gst-libs/gst/pbutils/Makefile.am
2011-02-28 11:47:44 +01:00
Sreerenj Balachandran
7cfa18545c oggdemux: Remove dead code 2011-01-24 19:40:00 +01:00
Yang Xichuan
43553b4dcb oggdemux: remove outdated comment
https://bugzilla.gnome.org/show_bug.cgi?id=639121
2011-01-10 12:34:54 +00:00
David Schleef
3c4466b816 oggdemux: ignore header pages when looking for keyframe
This was causing keyframe_granule to be set to 0 for all streams
when seeking to the beginning of the stream, i.e., at the
beginning of playback.  Fixes #619778.
2011-01-06 12:34:32 -08:00
Wim Taymans
68e64770a0 oggdemux: handle pads that are not added yet
Don't try to stream data on pads that are not added yet. This happens while we
discover the different streams.
2010-12-28 19:39:18 +01:00
Vincent Penquerc'h
dd135119d9 oggdemux: set headers on caps
This will allow switching from one stream to another without having to send
the headers for the new stream again.

https://bugzilla.gnome.org/show_bug.cgi?id=637927
2010-12-25 16:55:15 +01:00
Vincent Penquerc'h
e443ae6000 oggdemux: Don't use gst_pad_alloc_buffer()
allocate buffers using gst_buffer_new_and_alloc() instead of
gst_pad_alloc_buffer_and_set_caps(), as the first one will
cause the pad to block, and we don't want that since that will
prevent subsequent pads from being fed if a block occurs at
start, when all pads must be fed for playback to start.

This fixes autoplugging of the tiger element and other things.

https://bugzilla.gnome.org/show_bug.cgi?id=637822
2010-12-22 20:19:15 +01: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
Wim Taymans
f22687bacc use _object_ref_sink() when we can 2010-12-07 11:31:30 +01:00
Mark Nauwelaerts
d5055a9f23 oggstream: use separate tag extraction vfunction 2010-12-03 13:54:06 +01:00
Mark Nauwelaerts
a4aacb9d2c oggdemux: plug some oggstream leaks 2010-12-03 13:54:01 +01:00
Mark Nauwelaerts
63ba9eafb1 oggdemux: send stream tags after newsegment and global tags 2010-12-03 13:53:56 +01:00
Sreerenj Balachandran
2319c85f46 oggdemux: perform more (vorbis comment header) tag extractions
In particular, move comment header parsing to gstoggstrem.c.
Thanks to Felipe Contreras.

Fixes #629349 (partially).
2010-12-03 13:53:54 +01:00
Wim Taymans
e0d683f3ed oggdemux: fix wrong flowreturn handling
Oggdemux will currently try to pad alloc a buffer from the peer when it is
reading the header files. This is a relic from the time where we had an internal
parser and needs to be removed at some point in time.

The problem is that when there is no peer pad yet (which is normal when
collecting headers) we should still continue to parse all the packets of a
page instead of erroring out on NOT_LINKED.

Fixes #632167
2010-10-29 11:48:18 +01:00
Wim Taymans
6c14f6c970 ogg: add some more debug statements 2010-10-29 11:47:53 +01:00
Wim Taymans
fea50233bb oggdemux: only keep last valid granulepos
Only keep the last valid granulepos we see when scanning the last
pages. It is possible that the last page that we inspect has a -1 granulepos, in
which case we want to keep the previous valid time instead.

Fixes #631703
2010-10-12 16:06:57 +02:00
David Schleef
9dc59cff15 oggdemux: Fix check for last page 2010-10-12 16:06:57 +02:00
David Schleef
64dfad46f2 oggdemux: change checks from is_skeleton to is_sparse 2010-10-12 16:06:57 +02:00
David Schleef
5ae2f04856 oggdemux: move is_sparse into stream map 2010-10-12 16:06:56 +02:00
Guillaume Emont
b41cd04289 oggdemux: fix seeking with negative rate with skeleton
Files with a skeleton, or other files with a stream that ends before the end of
the chain would start playing from the end of the chain when trying to seek with
a negative rate at a position between the end of any stream and the end of the
chain.

This is due to the loop in _do_seek() assuming that pages will be encountered
for all streams shortly after the place where we want to seek, as found by
do_binary_search().

In the first iteration of the loop, stream ends are now checked against the
time of the current page.
2010-10-10 18:26:13 +02:00
Sebastian Dröge
6357bdef63 oggdemux: Don't reset the pad when pushing resulted in NOT_LINKED
The pad might be linked later and after resetting it it will
only work after resetting all of oggdemux.
2010-08-30 15:50:26 +02:00
Sebastian Dröge
b899bca94d oggdemux: Don't use GST_FLOW_IS_FATAL()
And while we're at it, handle WRONG_STATE as error too
in oggdemux and WRONG_STATE and NOT_LINKED in oggaviparse.
2010-08-27 17:23:46 +02:00
Fredrik Söderquist
3c06cabb0b oggdemux: Handle errors from _get_next_page in _do_seek.
If the source element failed here, oggdemux would crash.

Fixes #623218.
2010-06-30 17:20:55 +01:00
Sebastian Dröge
9a971980b7 oggdemux: activate_chain must not be called with a NULL chain
It will crash later and shouldn't really happen anyway unless
something is really wrong.
2010-06-14 11:11:56 +02:00
Sebastian Dröge
4caee01a06 oggdemux: Handle SEEKING query in push mode too 2010-06-09 17:02:59 +02:00
Sebastian Dröge
bb7773b40a oggdemux: Update the total time from the Skeleton 4 indexes
Fixes bug #620939, see bug #607945.
2010-06-09 16:38:34 +02:00
Sebastian Dröge
cba98e05cf oggdemux: Add parsing of Skeleton 4.0 indexes 2010-06-08 12:01:15 +02:00
Sebastian Dröge
8a678da1fe oggdemux: Fix sizes again, this time for real 2010-05-20 14:21:19 +02:00
Sebastian Dröge
bf9d573cd1 oggdemux: Fix size checks 2010-05-20 13:58:14 +02:00
Sebastian Dröge
8fd69f2cb7 oggdemux: Drop all other Ogg VP8 header packets and make VP8 mapping check a bit more strict 2010-05-20 10:19:29 +02:00
Sebastian Dröge
563a96ef1a ogg: Some more minor adjustments for the VP8 Ogg mapping 2010-05-20 08:52:49 +02:00
Sebastian Dröge
838c96fe8f ogg: Update to the latest VP8 mapping 2010-05-19 21:35:19 +02:00
Sebastian Dröge
5fc1309703 ogg: Implement Ogg VP8 mapping 2010-05-19 19:23:07 +02:00
Wim Taymans
02a78f528c oggdemux: don't seek when no current chain
Avoid a crash when we try to seek when there is no current chain.
2010-05-06 13:10:54 +02:00
Wim Taymans
e33425e4d0 oggdemux: ignore the skeleton start time
Ignore the skeleton start time as it is usually wrong for live streams
and we have the needed logic to calculate it anyway.
2010-05-06 12:21:38 +02:00
Wim Taymans
27de725038 oggdemux: wait for headers before exposing chains
Wait until we have all the stream headers before we start exposing the streams
of a chain.
2010-05-06 12:06:09 +02:00
Wim Taymans
549bc3c80e oggdemux: use index to estimate bitrate
When we have an index, use it to much more accurately estimate the total stream
bitrate.
2010-05-06 10:58:01 +02:00
Tim-Philipp Müller
f22b115804 oggdemux: printf format fixes 2010-05-05 13:25:02 +01:00
Wim Taymans
e84b3c838c oggdemux: fix EOS check 2010-05-04 15:47:29 +02:00
Wim Taymans
12929944a7 oggdemux: cleanup unused defines 2010-05-04 13:50:46 +02:00
Wim Taymans
a57b461af8 oggdemux: use the index in push mode when we can
When seeking in push mode, try to use the index first before we use the bitrate
estimation.
2010-05-04 13:36:58 +02:00
Wim Taymans
03c3aa6377 oggdemux: use skeleton duration when possible 2010-05-04 13:06:24 +02:00
Wim Taymans
ff4479f00a oggdemux: more index parsing work 2010-05-04 12:11:18 +02:00
Wim Taymans
97319a6276 oggdemux: clean up fishead/fisbone parsing
Remove some redundant code for parsing fishead streams. Actually use the data we
parsed (mostly start_time).
2010-05-04 12:05:15 +02:00
Wim Taymans
f96caa17b3 oggdemux: implement seek in push mode
Refactor start time collection code.
When we receive a flush_stop, resync to the new start time and push out a new
segment event.
2010-05-04 11:26:14 +02:00
Wim Taymans
9be4e53001 oggdemux: make event handling better
Explicitly handle FLUSH events and resync on FLUSH_STOP.
Make send_event return a boolean.
Use more performant send_event function to forward events.
2010-05-04 11:26:14 +02:00
Wim Taymans
c4ec1c4c62 oggdemux: implement seeking in pushmode
Convert seek requests to bytes using the bitrate and forward them upstream. Does
not quite work because the flushing and resyncing is not implemented yet.
2010-05-04 11:26:14 +02:00
Wim Taymans
d9b7003926 oggdemux: refactor for seeking in pushmode
refactor the code a little to prepare for seeking in push mode
2010-05-04 11:26:14 +02:00
Wim Taymans
f9ca4f6097 oggdemux: use bitrate to estimate length in pushmode
Parse the bitrate from the various streams.
Use the bitrate and the upstream length in bytes to estimate the total stream
duration in push mode.
2010-04-30 17:43:06 +02:00
Mark Nauwelaerts
e23d6bbda7 oggdemux: only EOS when all streams are EOS 2010-04-30 12:51:54 +02:00
Mark Nauwelaerts
e8ae2adef1 oggdemux: fix debug message 2010-04-30 12:51:51 +02:00
Benjamin Otte
420d7b111d More ENABLE_NLS fixes 2010-03-16 18:31:15 +01:00
Benjamin Otte
5e21fa5e0e gst_element_class_set_details => gst_element_class_set_details_simple
Also change my email from the old university one to the current one.
2010-03-16 17:41:50 +01:00
David Schleef
460c649b5f oggdemux: Don't drop zero-sized packets
Zero-sized packets have relevence to Theora.
2010-03-14 13:15:13 -07:00
Benjamin Otte
3a7d632a59 Add -Wredundant-decls to warning flags
... and fix all the warnings that flag throws.
2010-03-11 15:38:18 +01:00
Benjamin Otte
43b1683421 Add -Wmissing-declarations -Wmissing-prototypes to warning flags
Includes all the fixes necessary to make stuff compile again.
2010-03-11 13:50:31 +01:00
Wim Taymans
63593f5f1e oggdemux: use the chain begin_time instead of our counter
We update the passed begintime argument to narrow our search region in the
binary search. This means that it does not always contain the chain begin time
after a couple of bisects. Use the real chain->begin_time to bring the
granuletime to the time in the chain instead.

Fixes #610005
2010-02-23 12:26:15 +01:00
Sebastian Dröge
e9f101ffc5 oggdemux: Fix format string compiler warnings 2010-02-15 08:56:25 +01:00
Sebastian Dröge
4914aeda2f oggdemux: Don't leak allocated buffers
This can happen if the combined flow return is not OK although the
allocation succeeded or if the packet in question is a BOS and we're
not going to push headers.

Fixes bug #608699.
2010-02-02 10:33:07 +01:00
Vincent Penquerc'h
ed2e09133e oggdemux: sparse streams aren't timed by end time, and their duration isn't implicit
Fixes timestamps and durations on Kate subtitle streams.

See http://www.xiph.org/ogg/doc/ogg-multiplex.html section 'start-time and
end-time positioning' for some more details, and bug #600929.
2010-01-25 23:50:09 +00:00
Wim Taymans
e4b68a3658 oggdemux: use right type for the serialno
Use a consistent type for the serialno to avoid problems when comparing between
signed and unsigned variants.

Fixes #607926
2010-01-25 15:14:56 +01:00
Wim Taymans
95511c8821 oggdemux: don't push headers twice
Don't push the stream headers twice but only in the activation of a chain.

Fixes #607929
2010-01-25 14:00:52 +01:00
Wim Taymans
62f8c3c672 oggdemux: rename a variable
Rename the 'seekable' variable to 'pullmode'. We might be able to seek in push
mode too eventually.
2010-01-25 12:31:24 +01:00
Tim-Philipp Müller
e1c319949d oggdemux: fix crash when freeing headers
Use _ogg_packet_free() instead of gst_mini_object_unref in one more
place now that the header list contains ogg packets and not buffers.

file: Stephen_Fry-Happy_Birthday_GNU-nq_600px_425kbit.ogv
2010-01-24 13:32:20 +00:00
Sebastian Dröge
1652005f26 oggdemux: Strip trailing \0 for subtitle OGM streams
Fixes bug #607870.
2010-01-24 08:57:13 +01:00
Sebastian Dröge
a66ce94adc oggdemux: Correctly set DELTA_UNIT flag for OGM streams 2010-01-23 22:10:09 +01:00
Sebastian Dröge
b38dcf5277 oggdemux: Don't strip all 0-bytes from the end of OGM packets
This fixes broken packets pushed downstream by oggdemux for
MPEG4 streams for example.
2010-01-23 22:10:09 +01:00
Sebastian Dröge
592bc87dc9 oggdemux: Extract tags from OGM text streams and don't push them downstream 2010-01-23 22:10:08 +01:00