Wim Taymans [Thu, 10 Dec 2009 15:09:09 +0000 (16:09 +0100)]
oggdemux: remove redundant fields
Wim Taymans [Wed, 9 Dec 2009 18:03:16 +0000 (19:03 +0100)]
vorbisdec: adapt to new oggdemux
Remove all granulepos hacks and simply use the timestamps from the new oggdemux
like any other decoder.
Wim Taymans [Wed, 9 Dec 2009 18:04:18 +0000 (19:04 +0100)]
vorbisdec: fix peer query
Wim Taymans [Wed, 9 Dec 2009 16:24:01 +0000 (17:24 +0100)]
theoradec: fix query
Wim Taymans [Wed, 9 Dec 2009 15:55:52 +0000 (16:55 +0100)]
theoradec: small cleanups
Wim Taymans [Wed, 9 Dec 2009 15:38:43 +0000 (16:38 +0100)]
vorbisdec: use gst_pad_peer_query()
Wim Taymans [Wed, 9 Dec 2009 11:10:35 +0000 (12:10 +0100)]
playsink: fix video when subtitles disabled
When we have a source with subtitles but they were disabled with the flags,
still ghostpad the video pad instead of leaving it unlinked.
Sebastian Dröge [Wed, 9 Dec 2009 08:47:30 +0000 (09:47 +0100)]
textoverlay: Only flush downstream on seeks for flushing seeks
Sebastian Dröge [Wed, 9 Dec 2009 08:35:14 +0000 (09:35 +0100)]
textoverlay: Proxy buffer allocation on the video sinkpad to the srcpad
Wim Taymans [Tue, 8 Dec 2009 16:30:39 +0000 (17:30 +0100)]
seek: update slider only 25 times a second
don't update the slider a 100 times a second, it's likely higher than the screen
framerate and just wastes cpu.
Wim Taymans [Tue, 8 Dec 2009 16:23:53 +0000 (17:23 +0100)]
theora: remove granulepos hacks
Remove the granulepos hacking now that oggdemux outputs timestamps like any
other demuxer.
Sebastian Dröge [Tue, 8 Dec 2009 12:40:18 +0000 (13:40 +0100)]
playbin2: Fix stream-changed message list iteration
When iterating the list and removing the current element, first
get the next element and then remove the current one and not
the other way around.
Wim Taymans [Mon, 7 Dec 2009 17:49:43 +0000 (18:49 +0100)]
oggdemux: improve keyframe seeking
Improve keyframe seeking.
Fix reverse playback.
Wim Taymans [Mon, 7 Dec 2009 14:42:05 +0000 (15:42 +0100)]
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.
Sebastian Dröge [Mon, 7 Dec 2009 08:13:40 +0000 (09:13 +0100)]
playsink: Some minor cleanup
Sebastian Dröge [Sun, 6 Dec 2009 17:05:15 +0000 (18:05 +0100)]
playbin2: Reset stream segments on FLUSH_STOP and don't adjust QoS events for non-time segments
Wim Taymans [Fri, 4 Dec 2009 15:35:09 +0000 (16:35 +0100)]
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.
Wim Taymans [Fri, 4 Dec 2009 14:39:59 +0000 (15:39 +0100)]
oggdemux: add comment
Wim Taymans [Fri, 4 Dec 2009 13:01:11 +0000 (14:01 +0100)]
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.
Wim Taymans [Fri, 4 Dec 2009 12:14:57 +0000 (13:14 +0100)]
oggdemux: guard against wrong granulepos
Clamp the initial granulepos to 0 instead of going negative for some badly muxed
ogg files.
Wim Taymans [Fri, 4 Dec 2009 11:26:47 +0000 (12:26 +0100)]
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.
David Schleef [Fri, 4 Dec 2009 04:05:29 +0000 (20:05 -0800)]
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.
David Schleef [Fri, 4 Dec 2009 01:02:11 +0000 (17:02 -0800)]
oggdemux: fix for I-frame-only theora
Tim-Philipp Müller [Thu, 3 Dec 2009 01:16:17 +0000 (01:16 +0000)]
ogg: log when ogg mapper doesn't accept the setup header packet
Tim-Philipp Müller [Wed, 2 Dec 2009 02:08:46 +0000 (02:08 +0000)]
ogg: extract width, height and PAR from theora header and add to caps
Tim-Philipp Müller [Thu, 3 Dec 2009 23:43:08 +0000 (23:43 +0000)]
ogg: extract number of channels from FLAC, speex and vorbis headers
Because we can.
Stefan Kost [Thu, 3 Dec 2009 20:14:34 +0000 (22:14 +0200)]
build: fix build with debug logging disabled.
Tim-Philipp Müller [Thu, 3 Dec 2009 21:07:49 +0000 (21:07 +0000)]
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’
Thiago Santos [Thu, 3 Dec 2009 19:57:48 +0000 (16:57 -0300)]
ogg: Fixing some printf format strings
Fixes some printf format strings to make it build on mac.
Stefan Kost [Thu, 3 Dec 2009 16:08:49 +0000 (18:08 +0200)]
playbin2: don't iterate the factory lists in non-debug mode
When debugging is disabled, we won't see anything printed anyway.
David Schleef [Thu, 3 Dec 2009 07:55:55 +0000 (23:55 -0800)]
Build fix for MSVC
Stefan Kost [Wed, 2 Dec 2009 21:27:55 +0000 (23:27 +0200)]
build: add missing includes for sprintf and atoi
Thiago Santos [Tue, 1 Dec 2009 19:42:42 +0000 (16:42 -0300)]
subparse: Add support for some tags of qttext
Currently supporting timescale, timestamps, font, size,
textColor, backColor, plain, bold and italic
Fixes #603357
Thiago Santos [Tue, 1 Dec 2009 16:13:24 +0000 (13:13 -0300)]
subparse: add qttext support
Adds basic support for qttext subtitles, still lacks markup tags
to make it prettier, but the plain text already works.
Implemented according to:
http://www.apple.com/quicktime/tutorials/texttracks.html
http://www.apple.com/quicktime/tutorials/textdescriptors.html
Fixes #603357
Thiago Santos [Tue, 1 Dec 2009 16:22:57 +0000 (13:22 -0300)]
subparse: conditionally cleanup sami context
Only cleanup sami context if we are parsing sami subtitles,
otherwise we might have crashes.
Thiago Santos [Tue, 1 Dec 2009 16:19:35 +0000 (13:19 -0300)]
subparse: Add missing caps to sink caps template
Some caps were missing from the sink caps template when
xml was disabled
Tim-Philipp Müller [Tue, 1 Dec 2009 15:06:10 +0000 (15:06 +0000)]
Automatic update of common submodule
From 87bf428 to 47cb23a
Sebastian Dröge [Tue, 1 Dec 2009 13:14:25 +0000 (14:14 +0100)]
Automatic update of common submodule
From da4c75c to 87bf428
Sebastian Dröge [Mon, 30 Nov 2009 09:22:15 +0000 (10:22 +0100)]
subtitleoverlay: Fix some pad refcount issues
Fixes bug #603345.
Edward Hervey [Fri, 27 Nov 2009 17:54:57 +0000 (18:54 +0100)]
Automatic update of common submodule
From 53a2485 to da4c75c
David Schleef [Thu, 26 Nov 2009 01:04:41 +0000 (17:04 -0800)]
oggdemux: handle theora streams with 0 keyoffset
David Schleef [Thu, 26 Nov 2009 00:53:26 +0000 (16:53 -0800)]
oggdemux: Handle unknown streams
Sebastian Dröge [Thu, 26 Nov 2009 13:30:33 +0000 (14:30 +0100)]
Revert "textoverlay: First draw outline text and then the real text"
This reverts commit
60aa09d28c1f9fd29b56876d7ac6c0366d6cef4d.
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.
Sebastian Dröge [Thu, 26 Nov 2009 09:30:25 +0000 (10:30 +0100)]
audiofilter: Use G_DEFINE_ABSTRACT_TYPE_WITH_CODE
...and fix code style a bit.
Sebastian Dröge [Thu, 26 Nov 2009 09:31:00 +0000 (10:31 +0100)]
audiofilter: Add _CAST variants of the cast macros
Wim Taymans [Wed, 25 Nov 2009 16:26:16 +0000 (10:26 -0600)]
audiosink: add adjustement when slaving
Our calibration against the pipeline clock is done with the adjusted
ringbuffer time, so take the adjustement into account. Fixes some audio dropouts
when reusing audio sinks after switching clocks and slaving methods in a
pipeline.
Sebastian Dröge [Wed, 25 Nov 2009 15:17:13 +0000 (16:17 +0100)]
ffmpegcolorspace: Prefer transforming alpha formats to alpha formats and the other way around
Fixes bug #602834 and #350748.
David Schleef [Wed, 25 Nov 2009 08:46:55 +0000 (00:46 -0800)]
oggdemux: Reset last_granule during seeking
Fix case where we would reconstruct the wrong granulepos for
outgoing streams immediately after a seek.
David Schleef [Wed, 25 Nov 2009 06:08:09 +0000 (22:08 -0800)]
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.
David Schleef [Wed, 25 Nov 2009 05:22:03 +0000 (21:22 -0800)]
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.
Sebastian Dröge [Thu, 19 Nov 2009 18:28:12 +0000 (19:28 +0100)]
playbin2: Transform QoS events to be meaningful for upstream elements
This is necessary because the sinks don't notice the group switches
and the decoders/demuxers have a different running time than the
sinks.
Fixes bug #537050.
David Schleef [Sat, 21 Nov 2009 21:05:34 +0000 (22:05 +0100)]
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.
David Schleef [Sat, 29 Aug 2009 17:51:48 +0000 (10:51 -0700)]
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.
David Schleef [Fri, 4 Sep 2009 07:11:38 +0000 (00:11 -0700)]
oggmux: don't overwrite object properties
Stefan Kost [Sat, 21 Nov 2009 15:54:49 +0000 (17:54 +0200)]
debug: also cast packet.packetno to gint64 in debug log
We do this already for granulepos to handle ogg_int64_t mismatches.
Stefan Kost [Sat, 21 Nov 2009 15:47:26 +0000 (17:47 +0200)]
debug: fix format string that was missing a var
Stefan Kost [Fri, 9 Oct 2009 21:32:04 +0000 (00:32 +0300)]
adder: make events succeed, if they succed on atleast one pad
Thiago Santos [Thu, 19 Nov 2009 17:51:33 +0000 (14:51 -0300)]
decodebin2: error when all streams have no buffers
In some cases (all buffers dropped by a parser) a decodebin2
chain might receive an EOS before it gets enough data to
expose a decoded pad. In the case that no streams can expose
a pad we should error out instead of hang.
Fixes #542758
Sebastian Dröge [Thu, 19 Nov 2009 11:23:08 +0000 (12:23 +0100)]
playbin2: Fix stupid bug introduced in last commit
Sebastian Dröge [Thu, 19 Nov 2009 11:10:58 +0000 (12:10 +0100)]
playbin2: Aggregate the stream-changed message by looking at the seqnum
Just counting how many messages were sent and how many were received
is not good enough because they might've been duplicated (e.g. by the
visualization audio tee). Comparing the sequence numbers should give
better results in that case.
Sebastian Dröge [Thu, 19 Nov 2009 09:05:28 +0000 (10:05 +0100)]
playbin2: Ignore async state changes of the uridecodebins
Otherwise the async state change from READY->PAUSED of the
uridecodebins will take playbin2 from PLAYING->PAUSED again
during gapless group switches.
Fixes bug #602000.
Tim-Philipp Müller [Thu, 19 Nov 2009 10:30:06 +0000 (10:30 +0000)]
Automatic update of common submodule
From 0702fe1 to 53a2485
Thiago Santos [Wed, 18 Nov 2009 17:50:28 +0000 (14:50 -0300)]
decodebin2: set to buffer less on no-more-pads
When a decodebin2 receives no-more-pads of a group it
can set that group's multiqueue buffering thresholds to
'playing' buffering method, avoiding that it buffers
too long and cause problems when using with queue2.
See the associated bug for details.
Fixes #600787
Wim Taymans [Wed, 18 Nov 2009 16:09:28 +0000 (17:09 +0100)]
baseaudiosink: fix initial calibration
When we are calibrating the internal clock against the external clock take into
account the time offset applied to our internal clock because we will subtract
that in the render_function again.
Sebastian Dröge [Wed, 18 Nov 2009 08:22:39 +0000 (09:22 +0100)]
playbin2: Don't handle DURATION queries during group switches
During a group switch return the cached duration of the old group
because the old group still didn't finish playback. If we have no
cached duration return FALSE.
Fixes bug #585969.
Sebastian Dröge [Sun, 15 Nov 2009 18:36:21 +0000 (19:36 +0100)]
playbin2: Post a stream-changed message after activating a group
This is useful to detect when playbin2 has really switched to the next
group after about-to-finish for example.
Fixes bug #584987.
Jan Schmidt [Wed, 18 Nov 2009 12:27:19 +0000 (12:27 +0000)]
win32: Add new still-frame API to the defs
Add gst_video_event_new_still_frame() and
gst_video_event_parse_still_frame() functions to the win32 defs files
Mark Nauwelaerts [Wed, 18 Nov 2009 11:37:44 +0000 (12:37 +0100)]
baseaudiosrc: fix 'uninitialized' compiler warning
Tim-Philipp Müller [Wed, 18 Nov 2009 10:14:41 +0000 (10:14 +0000)]
configure: bump core requirement to 0.10.25.1
We depend on new API that's only in git so far.
Jan Schmidt [Sun, 15 Nov 2009 17:34:37 +0000 (17:34 +0000)]
video: Add functions to create/parse still frame events.
Add a new video event to mark the start or end of a still-frame
sequence, and a parser function to identify and extract info from
such events.
API: gst_video_event_new_still_frame()
API: gst_video_event_parse_still_frame()
Fixes: #601942
Wim Taymans [Tue, 17 Nov 2009 15:39:09 +0000 (16:39 +0100)]
playsink: make sure we always go to PAUSED async
Set the need_async_start flag before going to PAUSED so that we always post the
ASYNC_START message, even after reusing playsink.
Wim Taymans [Tue, 17 Nov 2009 15:37:57 +0000 (16:37 +0100)]
playsink: make sure we remain a sink
When we remove our elements, we could lose our sink flag. Make sure we remain a
sink by setting the flag again after removing elements.
Stefan Kost [Mon, 16 Nov 2009 20:47:54 +0000 (22:47 +0200)]
audioconvert: remove unused array
Sebastian Dröge [Mon, 16 Nov 2009 08:57:56 +0000 (09:57 +0100)]
subparse: Use new double->fraction transformation function from core
Sebastian Dröge [Sat, 14 Nov 2009 13:05:43 +0000 (14:05 +0100)]
playbin2: Make subtitle error handling more robust and ignore late errors too
Make sure, to only "simulate" subtitle no-more-pads if it was still
pending and also handle errors in the subtitle pipeline as warnings
after the subtitles prerolled.
Don't set the suburidecodebin to READY after errors, handle_message
will usually be called from the streaming thread and doing that
from there is obviously not a good idea.
Sebastian Dröge [Sat, 14 Nov 2009 12:21:15 +0000 (13:21 +0100)]
subtitleoverlay: Handle errors from subtitle elements as warning and go into passthrough mode
Sebastian Dröge [Fri, 13 Nov 2009 11:47:55 +0000 (12:47 +0100)]
playbin2: Don't leak the GError and debug string when parsing error messages
Sreerenj B [Fri, 13 Nov 2009 10:16:44 +0000 (11:16 +0100)]
rtsp: avoid crashing on SIGPIPE
Use send() instead of write() so that we can pass the MSG_NOSIGNAL flags to
avoid crashing with SIGPIPE when the remote end is not listening to us anymore.
Fixes #601772
Sebastian Dröge [Wed, 11 Nov 2009 16:35:45 +0000 (17:35 +0100)]
playbin2: Improve subtitle passthrough in uridecodebin
Now the caps property isn't set anymore for the subtitle caps
but instead in the autoplug-continue signal it is detected
if the caps belong to a supported subtitle stream.
This makes automatic use of newly installed plugins.
Sebastian Dröge [Wed, 11 Nov 2009 16:08:47 +0000 (17:08 +0100)]
subtitleoverlay: Only recreate factory caps if necessary and cache them
Sebastian Dröge [Tue, 10 Nov 2009 17:27:15 +0000 (18:27 +0100)]
subtitleoverlay: Only update the factory list when the registry has changed
Also don't free the list every time we go to NULL.
Sebastian Dröge [Sun, 8 Nov 2009 14:04:53 +0000 (15:04 +0100)]
subtitleoverlay: Use gst_pad_get_caps_reffed()
Sebastian Dröge [Sat, 7 Nov 2009 20:38:10 +0000 (21:38 +0100)]
playbin2/playsink: Use new "silent" property instead of unlinking
This makes sure that subtitleoverlay still gets segment updates and
everything to pass on downstream. Without this segment problems happen.
Sebastian Dröge [Sat, 7 Nov 2009 20:10:27 +0000 (21:10 +0100)]
subtitleoverlay: Update segments after pushing the events downstream
This makes sure that we don't apply segments twice downstream. Also
always send our newsegment events downstream.
Sebastian Dröge [Sat, 7 Nov 2009 20:09:53 +0000 (21:09 +0100)]
subtitleoverlay: Add silent property to disable subtitles
This tries to disable subtitles in the overlay or renderer
and if that's not possible it goes into passthrough mode.
Sebastian Dröge [Sat, 7 Nov 2009 10:46:49 +0000 (11:46 +0100)]
subtitleoverlay: Set the video framerate on parsers if possible
Fixes bug #599649.
Sebastian Dröge [Sat, 7 Nov 2009 10:31:09 +0000 (11:31 +0100)]
subparse: Make fps a GstFraction typed property and use it properly
Iago Toral [Sat, 7 Nov 2009 10:08:19 +0000 (11:08 +0100)]
subparse: Add property for the video framerate
Sebastian Dröge [Fri, 6 Nov 2009 11:51:22 +0000 (12:51 +0100)]
playbin2: Handle external subtitles better
First of all, make sure that suburidecodebin never
errors out because of not-linked in case external subtitles
are used but then subtitles are disabled.
And then make sure that external subtitles always start from
the correct position and are not racing until EOS if they
get unselected and selected again.
Sebastian Dröge [Wed, 4 Nov 2009 16:29:07 +0000 (17:29 +0100)]
playbin2: Flush the subtitles before switching to a new subtitle stream
This makes sure that all currently shown subtitles disappear
and new ones can be shown as soon as possible.
Sebastian Dröge [Tue, 3 Nov 2009 11:47:55 +0000 (12:47 +0100)]
playbin2: Set subtitle caps as raw caps for the uridecodebins
This will make sure that no subparse is ever plugged and subtitleoverlay,
that subpicture streams are handled the same was as subtitles and that
subtitle renderers are used if available.
Fixes bugs #595123, #570753, #591662, #591706.
Sebastian Dröge [Tue, 3 Nov 2009 11:33:40 +0000 (12:33 +0100)]
playbin2/playsink: Remove everything related to subpicture streams
These will soon be handled the same way as subtitle streams.
Sebastian Dröge [Mon, 2 Nov 2009 14:50:17 +0000 (15:50 +0100)]
playsink: Add a queue before subtitleoverlay
This will improve playback, and the same thing is done
for subpicture streams too.
Sebastian Dröge [Mon, 2 Nov 2009 14:05:41 +0000 (15:05 +0100)]
playsink: Use subtitleoverlay for subtitles
Sebastian Dröge [Mon, 2 Nov 2009 06:43:42 +0000 (07:43 +0100)]
subtitleoverlay: Add to the docs
Sebastian Dröge [Tue, 13 Oct 2009 14:48:34 +0000 (16:48 +0200)]
subtitleoverlay: Add new element for generic subtitle overlaying
This autopluggs the required elements for parsing and rendering
different subtitle formats on a video stream.
Fixes bug #600370.
Olivier Crête [Thu, 12 Nov 2009 00:32:01 +0000 (19:32 -0500)]
theoradec: Keep timestamp from incoming buffer if it is valid
Fixes bug #601627.
Sebastian Dröge [Wed, 11 Nov 2009 13:00:26 +0000 (14:00 +0100)]
playback: Update factories list on every access if the registry has changed
This makes application's simpler because the element doesn't need to
go to NULL first to make use of newly installed plugins.
Fixes bug #601480.
Sebastian Dröge [Tue, 10 Nov 2009 17:13:25 +0000 (18:13 +0100)]
playback: When going from NULL->READY check if the registry has new features
This makes it possible to use newly installed plugins after going back
to NULL instead of requiring a new instance.
Fixes bug #599266.
Jan Schmidt [Tue, 10 Nov 2009 13:55:26 +0000 (13:55 +0000)]
appsrc: Clear the EOS state on a seek.
Allow seeking back into the stream after it hits EOS.