Commit graph

1440 commits

Author SHA1 Message Date
Thiago Santos
125f7dfdb0 oggdemux: granulepos is relative to its chain
When performing seeks, the granulepos should be offset by
its chain start time to avoid using wrong values to
update segment's last_stop. A sample file is indicated on
bug #606382
2010-01-18 15:39:55 -03:00
Sebastian Dröge
82f3adaa9b theora: Rename source files to have the same name as the headers 2010-01-14 10:10:23 +01:00
Sebastian Dröge
1de4169c1c vorbis: Rename source files to have the same name as the headers 2010-01-14 10:07:22 +01:00
Sebastian Dröge
d4e9225ed4 vorbis: Move channel layout definitions into a single separate file
...instead of having two copies.
2010-01-14 10:05:35 +01:00
Sebastian Dröge
68c6ddc2fc vorbis: Add official 6.1 and 7.1 channel mappings
These are in the Vorbis spec since 2010-01-13. Fixes bug #606926.
2010-01-14 08:20:38 +01:00
Edward Hervey
7d2c90423a oggdemux: Fix unitialized variable.
If the package isn't handled, gracefully return GST_FLOW_OK.
2010-01-12 16:35:50 +01:00
Wim Taymans
0201326db1 oggdemux: push headers when activating chains
Keep a list of headers for each stream of a chain. When a chain is activated,
push the headers before pushing the data so that decoders can sync.
Fix seeking in chains, take the chain start time into account when comparing
timestamps.

See #606382
2010-01-08 16:57:40 +01:00
Mark Nauwelaerts
3f4820d6c2 oggdemux: decide flac header packet by content rather than count 2010-01-06 14:03:44 +01:00
Mark Nauwelaerts
66545eb7a2 oggdemux: reset header packet count at bos page 2010-01-06 14:03:41 +01:00
Olivier Crête
15fb8f9bf7 textoverlay: Ignore zero framerate
https://bugzilla.gnome.org/show_bug.cgi?id=606163
2010-01-06 07:49:27 +01:00
Mark Nauwelaerts
8fb183c7c9 oggdemux: enhance flac packet duration calculation 2010-01-05 16:44:58 +01:00
David Schleef
b3c15a340a theoraenc: Add encoder controls for libtheora 1.1
Added drop-frames, cap-overflow, cap-underflow, and rate-buffer.
2009-12-20 17:34:46 -08:00
Wim Taymans
e897373a0a ogg: ogm video has constant packet duration 2009-12-11 12:20:13 +01:00
David Schleef
118b62a764 oggdemux: implement old fLaC mapping 2009-12-10 22:48:23 -08:00
Wim Taymans
d18118418e oggdemux: remove redundant fields 2009-12-10 16:09:09 +01:00
Wim Taymans
43bdb13ec2 vorbisdec: adapt to new oggdemux
Remove all granulepos hacks and simply use the timestamps from the new oggdemux
like any other decoder.
2009-12-10 13:22:00 +01:00
Wim Taymans
79b25e634c vorbisdec: fix peer query 2009-12-09 19:04:18 +01:00
Wim Taymans
1a7c8c7919 theoradec: fix query 2009-12-09 17:24:01 +01:00
Wim Taymans
f1fdf5d3e4 theoradec: small cleanups 2009-12-09 16:55:52 +01:00
Wim Taymans
08c16c0db7 vorbisdec: use gst_pad_peer_query() 2009-12-09 16:38:43 +01:00
Sebastian Dröge
01ca87e785 textoverlay: Only flush downstream on seeks for flushing seeks 2009-12-09 09:47:30 +01:00
Sebastian Dröge
d5205bb0fa textoverlay: Proxy buffer allocation on the video sinkpad to the srcpad 2009-12-09 09:36:26 +01:00
Wim Taymans
1818d795ee theora: remove granulepos hacks
Remove the granulepos hacking now that oggdemux outputs timestamps like any
other demuxer.
2009-12-08 17:37:56 +01:00
Wim Taymans
1ad0e4342e oggdemux: improve keyframe seeking
Improve keyframe seeking.
Fix reverse playback.
2009-12-07 18:49:43 +01:00
Wim Taymans
c53cd385e3 oggdemux: implement keyframe seeking
Implement keyframe seeking in oggdemux by doing the double seek trick. First
seek to the required position, then read pages for all streams to grab the
granulepos (to know the timing of the keyframe) of each stream, then seek back
to the first keyframe.
2009-12-07 15:42:05 +01:00
Wim Taymans
56d3856620 oggdemux: fix timestamps after seek
After a seek, discard all packets before the packet with the granulepos on it so
that the output buffers contain valid timestamps.

Reorder some code so that we check the timestamps before allocating and pushing
an output buffer.

Do more checks on valid packets in ogm mode.
2009-12-04 16:35:09 +01:00
Wim Taymans
eb4fc976e5 oggdemux: add comment 2009-12-04 15:39:59 +01:00
Wim Taymans
9e222a385c oggdemux: don't do math with invalid granulepos
When the current granulepos is unknown and set to -1, don't try to add durations
to it.
2009-12-04 14:01:11 +01:00
Wim Taymans
96e1c4dbe6 oggdemux: guard against wrong granulepos
Clamp the initial granulepos to 0 instead of going negative for some badly muxed
ogg files.
2009-12-04 13:14:57 +01:00
Wim Taymans
05f4605180 theoradec: don't fail on bogus granulepos
Do some additional checks on the granulpos timestamp before using it for
calculating the duration because oggdemux generates wrong granulepos now.
Fixes seeking somewhat again.
2009-12-04 12:26:47 +01:00
David Schleef
8bbe0d126a oggdemux: reimplement OGM support
OGM demuxing no longer requires helper elements.  It's done internally
in oggdemux.  Vorbis comments are still not handled because I don't
have anything to test with.
2009-12-03 20:05:29 -08:00
David Schleef
4378851102 oggdemux: fix for I-frame-only theora 2009-12-03 17:02:11 -08:00
Tim-Philipp Müller
fb07615baa ogg: log when ogg mapper doesn't accept the setup header packet 2009-12-03 23:43:29 +00:00
Tim-Philipp Müller
8195c26a08 ogg: extract width, height and PAR from theora header and add to caps 2009-12-03 23:43:29 +00:00
Tim-Philipp Müller
295b6c0326 ogg: extract number of channels from FLAC, speex and vorbis headers
Because we can.
2009-12-03 23:43:09 +00:00
Tim-Philipp Müller
2752ae841e ogg: more print fixes
gstoggstream.c:419: error: format ‘%lld’ expects type ‘long long int’, but argument 8 has type ‘gint64’
gstoggdemux.c:2253: error: format ‘%lld’ expects type ‘long long int’, but argument 8 has type ‘GstClockTime’
gstoggdemux.c:2333: error: format ‘%lld’ expects type ‘long long int’, but argument 8 has type ‘GstClockTime’
2009-12-03 21:08:42 +00:00
Thiago Santos
098e416ebc ogg: Fixing some printf format strings
Fixes some printf format strings to make it build on mac.
2009-12-03 16:57:48 -03:00
David Schleef
d2c9d7fc1c oggdemux: handle theora streams with 0 keyoffset 2009-11-26 14:16:28 -08:00
David Schleef
a8e99f80df oggdemux: Handle unknown streams 2009-11-26 14:16:28 -08:00
Sebastian Dröge
8393257732 Revert "textoverlay: First draw outline text and then the real text"
This reverts commit 60aa09d28c.

First drawing the real text and then the outline produces ugly
text in lower resolutions. The outline line width needs to be somehow
changed relative to the resolution. Fixes bug #602924.
2009-11-26 14:31:55 +01:00
David Schleef
9339cec787 oggdemux: Reset last_granule during seeking
Fix case where we would reconstruct the wrong granulepos for
outgoing streams immediately after a seek.
2009-11-25 00:46:55 -08:00
David Schleef
8c202593c6 oggdemux: Fix timestamp generation for theora
Timestamp generation was broken by the last commit for formats
with a non-zero granule shift.  Also keep track of the last keyframe
so that we can regenerate granulepos for theora.
2009-11-24 22:08:09 -08:00
David Schleef
78aad52cbf oggdemux: Fix vorbis parsing
Add a granule to granulepos conversion function.  Fix the duration
function for vorbis.  Handle timestamps on header packets differently
and be more careful about calculating OFFSET and OFFSET_END.  After
this change, timestamps for vorbis don't exactly match up with the
timestamps that vorbisparse outputs, but it's unclear if vorbisparse
is actually correct and it would add a lot more code to make oggdemux
match vorbisparse.  Fixes #602790.
2009-11-24 21:22:03 -08:00
David Schleef
ab0d802781 ogg: Fix generation of timestamps and durations
After changing some internal functions, I forgot to update
the code that puts the values on the buffers.
2009-11-21 22:05:34 +01:00
David Schleef
72edd1467b ogg: Add ogg stream parsing
Adds code that parses headers of various formats encapsulated in
Ogg in order to calculate timestamps and durations of each buffer.
Removes the creation of helper decoder elements to do this calculation
via conversion queries.

Fixes: #344013, #568014.
2009-11-21 19:40:42 +01:00
David Schleef
3019ebb107 oggmux: don't overwrite object properties 2009-11-21 19:40:42 +01:00
Stefan Kost
f8abb8cf15 debug: also cast packet.packetno to gint64 in debug log
We do this already for granulepos to handle ogg_int64_t mismatches.
2009-11-21 17:54:49 +02:00
Olivier Crête
05aa195981 theoradec: Keep timestamp from incoming buffer if it is valid
Fixes bug #601627.
2009-11-12 13:18:02 +01:00
David Schleef
dcf556893f theora: Fix alignment of frames when converting
Fix logic inversion in calculating the offset in the theora
frame when copying to a GStreamer frame.
2009-11-09 11:18:27 -08:00
Sebastian Dröge
45cefdefa6 textoverlay: Synchronize video/text based on the running time
Instead of simply using the buffer timestamps.
2009-11-06 12:11:21 +01:00