Commit graph

1778 commits

Author SHA1 Message Date
Mark Nauwelaerts
43928e33e6 vorbisdec: only finish header packet frame if received in-stream
... rather than scaring audiodecoder with a frame extracted from caps.

Fixes #662108 (partially).
2011-10-19 16:44:44 +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
Mark Nauwelaerts
a7f508012c vorbisenc: only push header buffers following initial events 2011-10-09 21:20:35 +02:00
Mark Nauwelaerts
f63f09483f vorbisdec: port to audiodecoder 2011-10-07 14:52:53 +02:00
Mark Nauwelaerts
f3cb93fc0c vorbisenc: port to audioencoder 2011-10-07 14:52:46 +02:00
Vincent Penquerc'h
c7282a5718 alsasrc: fail gracefully when ALSA does not give timestamps
https://bugzilla.gnome.org/show_bug.cgi?id=660170
2011-10-03 11:14:09 +02:00
Vincent Penquerc'h
15dc839467 textoverlay: add YV12 support
Basically the same as I420, just with chroma planes swapped.

https://bugzilla.gnome.org/show_bug.cgi?id=660604
2011-10-01 19:18:02 +01: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
Sebastian Dröge
d094913a61 textoverlay: Protect against accessing the NULL parent of the pads during shutdown
Fixes bug #658901.
2011-09-19 09:34:08 +02: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
Thomas Vander Stichele
d223a6dd59 theoraenc: Fix descriptions of properties 2011-09-11 14:22:59 -04:00
Vincent Penquerc'h
cea0ac790f theoraenc: do not automatically override quality when using target bitrate
If both quality and bitrate are set, libtheora will try to meet
both constraints, causing it to prefer emitting a smaller number
of good frames, to emitting the full number of frames that would
not meet the requested quality. This causes a slideshow effect
when the bitrate is low and the quality is high. And the default
theoraenc is high (48/63).

So only set quality when it is requested, and leave it unset
otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=658443
2011-09-07 13:27:33 +02:00
Vincent Penquerc'h
02763b2fa2 theoraenc: fix caps leak
https://bugzilla.gnome.org/show_bug.cgi?id=657333
2011-08-25 15:17:01 +01: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
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
Monty Montgomery
9cbe7c1403 vorbisenc: Relax overly-tight jitter tolerances in gstvobisenc
vorbisenc currently reacts in a rater draconian fashion if input
timestamps are more than 1/2 sample off what it considers ideal. If data
is 'too late' it truncates buffers, if it is 'too soon' it completely
shuts down encode and restarts it.  This is causingvorbisenc to produce
corrupt output when encoding data produced by sources with bugs that
produce a smple or two of jitter (eg, flacdec)
2011-08-23 10:11:18 +02:00
Vincent Penquerc'h
7d3858a14d textoverlay: fix text buffer leak
Make sure to always unref the input text buffer.

Reported by bcxa.sz@gmail.com.

https://bugzilla.gnome.org/show_bug.cgi?id=657049
2011-08-22 10:48:06 +01: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
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
Jonathan Liu
8bd3bdaf37 oggstream: Fix crashes with 0-byte vorbis packets
Fixes bug #655574.
2011-08-03 10:18:29 +02:00
Philip Jägenstedt
7d22d91fca theoradec: segfault on 0-byte ogg_packet in _chain_reverse 2011-08-03 10:03:00 +02:00
Stefan Sauer
2db389f775 textoverlay: improve the example
Mentioned that this is not ment to be used with subtitles and suggest alternatives.
2011-07-25 12:04:48 +02:00
Stefan Sauer
5d5ab90e51 textoverlay: add example for feeding from stdin 2011-07-23 14:22:03 +02:00
Stefan Sauer
0667b1adf5 textoverlay: keep untimestamped textbuffer until next one
Instead of discarding untimestamped text-buffers immeditely after rendering,
keep them until we receive the next text buffer.
Fixes #654959
2011-07-23 14:04: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
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
Tim-Philipp Müller
c692191c33 GST_PLUGINS_BASE_LIBS is not defined in -base. 2011-06-08 12:21:43 +01: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
Luis de Bethencourt
8b18508778 theora: separate encode and push block in chain, into own function. 2011-06-04 10:10:54 +02:00
Luis de Bethencourt
407b77740e theora: use fixed src cap pads 2011-06-03 08:00:58 +02:00
Luis de Bethencourt
1ce538d912 theora: set the width/height/par on the srcpad caps 2011-06-03 08:00:53 +02:00
Luis de Bethencourt
ddfc8357a8 theora: get sink caps info from downstream element pad
https://bugzilla.gnome.org/show_bug.cgi?id=651564
2011-06-03 08:00:48 +02:00
Lane Brooks
5488877090 textoverlay: added 'outline-color' parameter to control whether text gets a shadow 2011-05-26 11:05:43 +02:00
Lane Brooks
c8a3f63909 textoverlay: added 'shadow' option to control whether text gets a shadow 2011-05-26 11:03:23 +02:00
Jindrich Makovicka
2ba4a56d74 textrender: Correctly negotiate with downstream instead of just using random caps
Fixes bug #638897.
2011-05-26 10:48:05 +02:00
Jindrich Makovicka
c186d400e5 textrender: Add bound checks to not write outside the image area 2011-05-26 10:43:51 +02:00
Jindrich Makovicka
fe533c9995 textrender: Prevent double unref of caps if the caps can't be set on the srcpad 2011-05-26 10:42:46 +02:00
Sebastian Dröge
99188bce77 gnomevfssrc: Keep track of interruptions during read with a flag 2011-05-26 10:32:17 +02:00
American Dynamics
847d274a5c gnomevfssrc: Add support for cancelling the read operations
This allows the state change from PAUSED to READY to be faster.

Fixes bug #628337.
2011-05-26 10:31:41 +02:00
Stefan Kost
41b60ca83a theoraenc: remove bogus <0 check for unsigned var
bytes_written is a gsize which is unsigned and thus never < 0.
2011-05-25 15:26:13 +03:00
Stefan Kost
af29082e94 theoraenc: fix variable type for bytes_consumed
th_encode_ctl() returns an int. Using a gsize result in bogus <0 checks.
2011-05-25 15:26:13 +03:00
Aleix Conchillo Flaque
0f7522e449 vorbisdec: Handle headers in caps 2011-05-18 22:08:46 +02:00
Robert Swain
e9aed7f31c alsa: Remove unused but set variable
Unused but set variables cause warnings in GCC 4.6.x and newer.
2011-05-18 09:34:52 +02:00
Tim-Philipp Müller
74cc986593 cdparanoiasrc: fix build on OSX by #undef-ing VERSION before including system headers
On OSX the cdparanoia headers include IOKit framework headers (in particular
SCSICmds_INQUIRY_Definitions.h) which define a structure that has a member
named VERSION, so we must #undef VERSION before including those for things
to compile on OSX.

Fixes #609918.
2011-05-17 09:20:08 +02:00
Sebastian Dröge
2b84f5bd74 alsasrc: Fix some compilation errors 2011-05-14 11:42:32 +02:00
Pontus Oldberg
0b774e0b7c alsasrc: Improve timestamp accuracy
Fixes bug #635256.
2011-05-14 11:42:32 +02:00
Sebastian Dröge
1312605eac textoverlay: Always hold the class-global pango mutex when using pango API 2011-04-17 14:17:53 +02:00
Sebastian Dröge
d2ce491153 {time,clock}overlay: Hold the class-global pango mutex when changing the pango context 2011-04-17 14:17:52 +02:00
Sebastian Dröge
72b142bfdf {clock,time}overlay: Only set the global pango context options once in class_init
Instead of doing it over and over again when instantiating a new instance.
2011-04-17 14:17:52 +02:00
Sebastian Dröge
9ee7398fae pango: Create a new pango context for every subclass
timeoverlay/clockoverlay are setting some global options
on the context that shouldn't be used for the generic textoverlay.
2011-04-17 14:17:52 +02:00
Thibault Saunier
61c61e9f2f vorbis: add support for using tremolo on android
Tremolo is an ARM-optimised version of xiph's tremor library.
2011-04-16 15:33:16 +01: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
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
Tim-Philipp Müller
8f1d77bc3c oggmux: fix uninitialised variable usage and element leak
gcc on OSX complains about ret being used uninitialized in
this function, and it is right. Don't leak element ref
when returning early because newsegment event is not in
TIME format.
2011-04-12 12:41:06 +01:00
Alessandro Decina
030f639a8e android: make it ready for androgenizer
Remove the android/ top dir
Fixe the Makefile.am to be androgenized

To build gstreamer for android we are now using androgenizer which generates the
needed Android.mk files.
Androgenizer can be found here:
http://git.collabora.co.uk/?p=user/derek/androgenizer.git
2011-04-11 07:23:21 +02:00
Sebastian Dröge
0688521103 vorbisdec: Unref events if the parent element disappeared 2011-04-08 15:00:58 +02:00
Havard Graff
5e9cfc6355 vorbisdec: make upstream queries and events MT-safe 2011-04-08 15:00:35 +02:00
Mark Nauwelaerts
9cf76f114f theoraenc: refactor multipass file writing 2011-04-06 12:26:11 +02:00
Josep Torra
cd425d3787 oggmux: fix warning building in mac os x 2011-04-01 15:47:18 +02:00
Josep Torra
fbc60fc6f4 textoverlay: fix comparison is always false due to limited range of data type
Perform calculation in a temp var with enough room as there's guarantee that
ret will be able to hold the result for example in _blit_AYUV.
2011-04-01 15:47:03 +02:00
Sebastian Dröge
1c475f10e1 oggmux: Store the segment directly inside the pad
Also initialize it always in TIME format. We require TIME segments
in oggmux anyway and drop newsegment events in other formats and
assume an open-ended segment starting at 0.
2011-04-01 11:00:38 +02:00
Sebastian Dröge
fc56c76773 oggmux: Reset the segment on flush-stop events and when going back to READY 2011-04-01 10:58:09 +02:00
Thiago Santos
d1c74779f9 oggmux: Use running time instead of timestamps
Theora and vorbis use running time (which is correct) for calculating
the granulepos for their ogg packets. Oggmux, however, used
timestamps to order the received buffers.

This patch makes it use the running time to compare buffer times
and also to timestamp pushed buffers.

Some bits of the code still use timestamps, but they are only
used to calculate durations, so it should be fine.

https://bugzilla.gnome.org/show_bug.cgi?id=643775
2011-04-01 10:56:16 +02:00
Thiago Santos
c3aae3dc17 oggmux: Keep track of pad's segments
https://bugzilla.gnome.org/show_bug.cgi?id=643775
2011-04-01 10:56:15 +02:00
Sebastian Dröge
026776ca23 textoverlay: Add support for xBGR and RGBx
Now all RGB variants are supported.
2011-04-01 10:39:31 +02:00
Lane Brooks
200ee96338 textoverlay: Added support for ARGB and other RGB alpha variants 2011-04-01 10:36:36 +02:00
Lane Brooks
e2150b11ff textoverlay: converted AYUV to use 'A OVER B' alpha compositing
'A OVER B' compositing is explained at
http://en.wikipedia.org/wiki/Alpha_compositing.

Previously, overlaying text on a transparent background image left the
text overlay also transparent. This pipeline shows such an example:

gst-launch videotestsrc pattern=white ! video/x-raw-yuv,format=\(fourcc\)AYUV ! alpha alpha=0.0 ! textoverlay text=Testing auto-resize=False font-desc=60px ! videomixer ! ffmpegcolorspace ! autovideosink

With this patch, text is composited "OVER" the background image and
thus is visible regardless of the alpha of the background image. The
overlay in the above pipeline works after applying this patch.
2011-04-01 10:35:08 +02:00
Tim-Philipp Müller
5aa02968c9 oggparse: fix list iteration code
Not that it really matters, but let's fix it before someone
notices and makes fun of us.
2011-03-26 19:38:17 +00:00
Tim-Philipp Müller
a7a305a18f oggparse: make sure buffer metadata is writable before setting caps on buffers 2011-03-26 11:59:54 +00:00
Mart Raudsepp
093a91eec8 textoverlay: Clean up alignment docs a bit and remove horiz top alignment enum 2011-03-16 15:03:51 +00:00
Blaise Gassend
185a8ddcaa alsamixer: Store return values of poll functions in a signed integer
Negative return values are used for errors and storing
them in an unsigned integer will make it impossible to
detect the errors.

Fixes bug #644845.
2011-03-15 19:48:21 +01:00
Sebastian Dröge
a38fd9f9ec oggmux: Increase the seen header packets count when seeing a header packet
This fixes muxing of Speex content and possibly other formats where the
header detection works by counting the packets.

Fixes bug #644745.
2011-03-14 19:44:41 +01:00
Stefan Kost
9ac74c59db textoverlay: use a class wide mutex to work around pango reentrance issues
Pango is not reentrant. Use a class wide mutex to protect pange use in
gst_text_overlay_render_pangocairo(). This works reliable in contrast to the
hack in my previous commit.

Fixes Bug #412678
2011-03-14 11:17:10 +02:00