Commit graph

1494 commits

Author SHA1 Message Date
Wim Taymans
4b9666aedb oggdemux: keep track of added pads
Keep track of the pads we added and removed.
Remove some unused fields.
Don't add pads for which we don't have caps.
2010-01-21 17:39:52 +01:00
Wim Taymans
06e2d2791b oggstream: don't call NULL setup functions
If we find a known mapper but it doesn't have a setup function, simply skip it
instead of crashing.
2010-01-21 17:39:51 +01:00
Wim Taymans
4ed58b5882 oggstream: avoid division by 0 on bad annodex streams 2010-01-21 17:39:51 +01:00
Thiago Santos
4b771bff7a oggdemux: No need to subtract begin time
Last stop is already based on the chain start and there is no need
to subtract the chain start as it may lead to a negative overflow.
This was causing seeking issues when the target chain was not
the first one (that has chain start = 0)

Fixes #606382
2010-01-19 08:39:14 -03:00
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
Sebastian Dröge
8ed8d5e414 textoverlay: Clip text buffers to the text segment and reset segments properly 2009-11-06 12:11:21 +01:00
Sebastian Dröge
d941a9f6a6 textoverlay: Put the video segment into the instance struct instead of allocating it separately 2009-11-06 12:11:20 +01:00
Sebastian Dröge
8692174b50 textoverlay: Check if text timestamp/duration is valid before clipping 2009-11-06 12:11:20 +01:00
Tim-Philipp Müller
34e6718da9 theoradec: printf format fix 2009-11-05 23:34:10 +00:00
Sebastian Dröge
60aa09d28c textoverlay: First draw outline text and then the real text
Improves the output a bit because no parts of the outline are
overwritten again.
2009-11-03 08:26:37 +01:00
Tim-Philipp Müller
6f4c1ac583 Remove GST_DEBUG_FUNCPTR where they're pointless
There's not much point in using GST_DEBUG_FUNCPTR with GObject
virtual functions such as get_property, set_propery, finalize and
dispose, since they'll never be used by anyone anyway. Saves a
few bytes and possibly a sixteenth of a polar bear.
2009-10-28 00:59:35 +00:00
David Schleef
61d08884d3 theora: Convert theoraparse to libtheora 1.0 API 2009-10-23 17:49:48 -07:00
Sebastian Dröge
eb9acba08f textoverlay: Optimize a bit more
...and add a FIXME for bug #598695 and explain
what we should do once Pango supports user fonts.
2009-10-22 10:17:31 +02:00
Sebastian Dröge
21ad7547a0 textoverlay: Do shading as first operation 2009-10-22 09:31:34 +02:00
Sebastian Dröge
eccd28d7b0 textoverlay: Only use a single cairo surface for drawing
... and comment/optimize what is going on here a bit better.
2009-10-22 09:08:48 +02:00
Tim-Philipp Müller
550b6fa0c1 pango: bump pango requirement to stable version and remove ifdefs
Bump pango requirement from an ancient development version to an
ancient stable version.
2009-10-18 13:42:01 +01:00
Benjamin Otte
f9132ee673 theora: Make theoradec use gstvideo for image conversion
Vastly simplifies code.

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:12:25 +02:00
Benjamin Otte
a3e92d3078 theora: Don't always round to even width/height
Previously, the code always rounded to even sizes. Now it only ensures
that pic_x and pic_y are multiples of 2 if the output format requires
it.

Also inlcudes fixes to take pic_x/y into account properly when copying
the buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:12:25 +02:00
David Schleef
3cb9484993 theora: Convert theoradec to libtheora 1.0 API
https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:12:18 +02:00
Benjamin Otte
7e15bb6631 theora: Port encoder to new Theora API
Includes ripping out the old buffer copy code to fill up to frame size.
This is not necesary with the new encoder.

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:08:16 +02:00
Benjamin Otte
910f67e816 theora: Disable sharpness property
It's ignored by libtheora

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:08:16 +02:00
Benjamin Otte
fed37612f6 theora: Disable noise-sensitivity property
It is ignored by libtheora

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:08:16 +02:00
Benjamin Otte
fad889e39e theora: Disable keyframe-mindistance property
It's ignored by the current Theora library

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:08:15 +02:00
Benjamin Otte
8b4923cba0 theora: Disable keyframe_threshold property
It's ignored by the current theora encoder

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:08:15 +02:00
Benjamin Otte
581d57724e theora: Get rid of "quick" property
The proeprty is not used by libtheora at all

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:08:15 +02:00
Benjamin Otte
4159cdfe9c theora: remove support for outdated granulepos hack
This is in preparation to switching to switching to the new Theora API

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:06:31 +02:00
Benjamin Otte
56203876e4 theora: Ignore border property
Always make the video use black as padding color.

The output will be identical to previous versions.

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:06:31 +02:00
Benjamin Otte
cec6b6ce29 theora: Ignore the center property, always set video to top left
This is not a necessary property, the output will be identical no matter
what.

https://bugzilla.gnome.org/show_bug.cgi?id=594729
2009-10-15 20:06:31 +02:00
Wim Taymans
e6e552b16f theoradec: avoid confusing error 2009-10-12 15:47:28 +02:00
Josep Torra
ade53fb42f vorbis: fixes warings in macosx snow leopard 2009-10-09 22:00:45 +02:00
Josep Torra
13ab7e7929 theora: fixes warnings on macosx snow leopard 2009-10-09 18:52:12 +02:00
Josep Torra
26fcc7843a ogg: fixes warnings on macosx snow leopard 2009-10-09 16:57:14 +02:00
Josep Torra
8579028dc0 oggdemux: fix a warning in macosx 2009-10-09 16:57:13 +02:00
Josep Torra
a34c29b524 audioconvert: change the format instead of cast as ensonic asked 2009-10-09 15:32:45 +02:00
Josep Torra
c272d8d9fb gnomevfssrc: fixes warnings in macosx
warning: format '%llu' expects type 'long long unsigned int', but argument 8 has type 'GnomeVFSFileOffset'
warning: format '%lld' expects type 'long long int', but argument 9 has type 'guint64'
2009-10-09 14:28:42 +02:00
Edward Hervey
2021791b75 theoraenc: Make the default quality property 48.
This guarantees that people who use theoraenc without modifying any
properties will end up with a reasonably good quality output.

48 is also the default of the encoder_example application shipped with
libtheora.
2009-10-07 16:56:28 +02:00
Stefan Kost
ccf5d6551a build: sprintf, sscanf need stdio.h 2009-10-07 11:56:35 +03:00
Sebastian Dröge
7c6c74e4a3 pango: Unpremultiply Cairo's ARGB to match GStreamers ARGB 2009-10-01 11:41:16 +02:00
David Schleef
f126617dbd oggdemux: Fix duration calculation for truncated files
If the last page of a stream has a granulepos of -1, that is,
it doesn't complete a packet, we need to continue to search
for the last granulepos.
2009-09-13 10:58:12 -07:00
Jan Schmidt
39c21352e9 theoraenc: Fix a string leak in _getcaps() 2009-09-12 02:24:49 +01:00
Sebastian Dröge
ce51263142 oggdemux: Handle kate and cmml as sparse streams too 2009-09-10 10:16:56 +02:00
Tim-Philipp Müller
3a38a0958e oggdemux: Better handling of sparse streams by sending segment updates
Fixes bug #397419.
2009-09-10 10:16:56 +02:00
Sebastian Dröge
2aa0899a84 theoraenc: Print a debug message with supported formats 2009-09-09 16:45:55 +02:00
Benjamin Otte
d9c9852764 theora: Check supported input formats in getcaps function
We want to fail early when an older libtheora release is used that does
not support Y444 or Y42B formats, so use a getcaps function that does
this.
2009-09-09 16:45:55 +02:00
Benjamin Otte
aa46e56170 theora: Implement support in theoraenc for Y444 and Y42B
Fixes bug #594165.
2009-09-09 16:45:54 +02:00
Benjamin Otte
96388221cf theora: Refactor the buffer copy code 2009-09-09 16:45:54 +02:00
Benjamin Otte
bac05fbf6f theora: Split yuv_buffer creation into its own function 2009-09-09 16:45:54 +02:00
Benjamin Otte
c1ead16f71 theora: Split out buffer resize in its own function 2009-09-09 16:45:54 +02:00
Benjamin Otte
9d4f72f2fa theora: Add assertions that functions don't fail
Some functions in libtheora can return an error, but that error cannot
ever happen inside theoraenc. In those cases assert that it doesn't.
2009-09-09 16:45:53 +02:00
David Schleef
0e9bc5125a Remove Ronald Bultje from Authors field
Replaced with "GStreamer maintainers
<gstreamer-devel@lists.sourceforge.net>" or just removed,
depending on the number of other authors.
2009-08-24 11:37:01 -07:00
Tim-Philipp Müller
099989ff0f oggmux: don't drop the streamheader field from the output caps
Revert previous 'fix' for bug #588717 and fix it properly, whilst
maintaining the streamheader field on the output caps. Also make
sure we don't leak header buffers we couldn't push when downstream
is unlinked. Add unit test for the presence of the streamheader
field on the output caps and for the issue from bug #588717.
2009-08-20 13:14:19 +01:00