Commit graph

687 commits

Author SHA1 Message Date
Edward Hervey
804f65e6db asfpacket: Fix pull-mode timestamping handling.
The problem that happens is the following:
* A packet with multiple payloads comes in
* Those payloads get handled one by one
* The first payload contains the first audio payload with timestamp A
* The second payload contains the first video (key)frame with timestamp V (where V < A)

With the previous code, the following would happen:
* the first payload gets processed, then passed to queue_for_stream
* queue_for_stream detects it's the first valid timestamp received and stores
  first_ts = A
* the second payload gets processed, then pass to queue_for_stream
* queue_for_stream detects the timestamp is lower than first_ts... and
  discards it... resulting in losing the first keyframe of the video stream

We've been having this issue for *ages*... it's just that nobody noticed it
that much with playbin. But with playbin2's aggresive multiqueue handling, this
will result in multiqueue not being able to preroll (because the video decoder will
be dropping a ton of buffers before (maybe) receiving the next keyframe).

Tested with over 200 asf files, and they all play the first frame correctly now,
even the most braindead ones.
2009-04-23 09:04:41 +02:00
Michael Smith
e7450c2df7 mp3parse: don't build seek table if we can't seek.
Fixes #573720 - unbounded memory usage increase when listening to mp3
stream for a long time.
2009-04-21 14:16:52 -07:00
Edward Hervey
8dcbcd6645 mpegaudioparse: Remove dead assignment and duplicate code 2009-04-21 20:37:20 +02:00
Edward Hervey
29b34e049c rmdemux: Actually return the return value for the seek handling. 2009-04-21 20:37:19 +02:00
Edward Hervey
df349f9359 mpegstream: Remove dead assignments.
The duplicate assignment of update_time was weird... but it seems normal
that it's indeed the second statement which is the valid one.
2009-04-21 20:37:19 +02:00
Edward Hervey
fe68ecd653 dvdsub/mpegstream: _class_init: Remove unused class variables 2009-04-21 20:15:56 +02:00
Edward Hervey
bb6697ba4c asfdemux: Initialize flow for a corner case.
This might be caused by entering the if() line 1214 and then not having
any activated_streams.. resulting in reaching line 1267 without having
any valid flow value.
2009-04-19 14:03:58 +02:00
Edward Hervey
c1cd90eb57 rmdemux: Remove dead assignment, value is being overwritten before being read. 2009-04-19 13:59:24 +02:00
Edward Hervey
2a892f5856 rmdemux: Remove unused accurate flag.
I couldn't see any reason why this was there in the first place.
2009-04-19 13:58:31 +02:00
Edward Hervey
2190ad3962 realmedia: Remove dead assignments. The results are never read. 2009-04-19 13:57:59 +02:00
Edward Hervey
0d32a3703d realmedia: Remove useless variables, only being used once (or not). 2009-04-19 13:57:10 +02:00
Edward Hervey
ac0e11e55c remove empty method implementations. 2009-04-19 13:55:24 +02:00
Josep Torra
9cd1fddf15 rtspwms: fix condition to detect extension commands for WMS
Reply with OK to the extension commands for WMS.
2009-04-18 08:12:08 +02:00
Josep Torra
8258daf87c realmedia: add special Real header to DESCRIBE message only for Real
servers

Add headers that are specific to real only if a real server had been
detected by the OPTIONS message.
2009-04-15 11:09:56 +02:00
David Hoyt
3743c83ace synaesthesia: fix compilation on windows
Fix compilation under MSVC due to references to headers
that are not available with the MS SDKs.
Fixes #578524
2009-04-14 19:16:46 +02:00
Wim Taymans
ef31993f34 rtspwms: reply to extension commands
Reply with OK to the extension commands for WMS.
2009-04-14 10:54:37 +02:00
Wim Taymans
4203f7189c asfdepay: fix a comment 2009-04-14 10:53:51 +02:00
Wim Taymans
2377053422 asfdemux: add some more debugging 2009-04-14 10:53:33 +02:00
Tim-Philipp Müller
18e79995af realmedia: add special Real header to SETUP message only for Real servers
Fixes playback of Windows Media RTSP streams and other non-Real RTSP
streams where the server errors out because it can't handle the
Real-specific 'Required: com.real.retain-entity-for-setup' header
we've been adding unconditionally in the recent past.

For reference:
rtsp://66.111.34.191:601/broadcast/alnour.rm
rtsp://195.134.224.231/snowboard_100.wmv
2009-04-09 20:21:46 +01:00
Michael Smith
6b9c72619a asfdemux: link to all required libraries including indirectly used ones.
On win32, we're required to link to all the libraries used - including
ones only indirectly used by other libs. So, add gstaudio, gsttag, and
(for windows only) winsock.
2009-04-08 11:44:53 -07:00
Edward Hervey
5b045e7eac dvdlpcmdec: Fix factory klass, It's a 'Decoder', not a 'Demuxer'. 2009-03-26 20:23:14 +01:00
Wim Taymans
1731c58b9b realrtsp: add more headers
Parse the ETag from the describe method and pass the sessionid as the value for
the If-Match header is subsequent setup calls.
Fixes support for more RealMedia RTSP streams.
2009-03-25 16:39:06 +01:00
Jan Schmidt
d2c6f0b2b6 mp3parse: Fix glitches in the output when playing (for e.g.) AVI
Don't introduce glitches in the output by a) relaxing the threshold for
taking upstream timestamps in preference to our calculated timestamps and
b) only set the discont flag on outgoing buffers in response to an incoming
discont buffer.

Fixes: #575046
2009-03-13 19:25:12 +00:00
Alessandro Decina
abf7f47769 mp3parse: fix deadlock with accurate seeks.
Release pending_accurate_seeks_lock before forwarding the seek event upstream.
Fixes #575068.
2009-03-12 15:57:31 +01:00
Michael Smith
777eb4d9cc mp3parse: be more conservative when changing layer/rate/etc.
Don't allow a change in sample rate/channels/layer/version unless we can
see another frame at the correct offset. Prevents accidently flipping
due to simple single-bit corruption.
2009-03-06 13:21:36 -08:00
Jan Schmidt
b510f2ab6b rmdemux: Fix strict-aliasing warnings.
Use existing GST_READ_UINT32 and GST_WRITE_UINT32 macros instead of
hand-rolled ones.
2009-03-04 16:52:59 +00:00
René Stadler
be6292d4de mpegaudioparse: Remove empty lines added by buggy indent. 2009-03-04 16:17:06 +02:00
Mark Nauwelaerts
d950699d2e mpegaudioparse: Provide SEEKING query handling.
Since SEEK event handling might perform some conversion
from TIME to BYTES, do not let upstream fool application
into (TIME) seeking not being possible.
2009-02-27 14:58:21 +01:00
Michael Smith
d61498d842 mp3parse: fix accurate seeks to near 0
Integer underflow made accurate seeks to near zero fail and seek to
completely the wrong place. Fix by clamping to zero, since we can't seek
to negative times anyway.
2009-02-25 13:34:05 -08:00
Wim Taymans
d99f4c9756 rtspreal: ignore data streams. Fixes #527112
Ignore data streams when parsing the SDP as they don't contain anything we need
to put in the realmedia header.
2009-02-25 18:23:55 +01:00
Stefan Kost
e12ccaa63c rtpasfdepay: Fix the build by adding the needed include for atoi. 2009-02-23 10:50:50 +02:00
Edward Hervey
96d35e0819 Fix indentation. 2009-02-22 14:22:30 +01:00
Edward Hervey
52e30c1b33 pnmsrc: Error out gracefully if location is NULL. Run gst-indent 2009-02-22 14:21:22 +01:00
Wim Taymans
da28d1620e Add pnm:// uri source
Add a new utri handler for pnm:// that for now just redirects to the same uri
with the rtsp:// protocol, which usually works nowadays.

Separate the registration of the various plugins into a separate source file.
2009-02-20 15:53:34 +01:00
Wim Taymans
f0078ebae4 Add ASF depayloader
Add ASF depayloader based on latest public MicroSoft docs (MS-RTSP).
Fixes #335067.
2009-02-20 13:52:29 +01:00
Roland Moser
c42e090acc Fix parsing of the flags in rmdemux
Fix parsing of the flags in version 1 realmedia streams.
Fixes #571358.
2009-02-18 12:55:16 +01:00
Sebastian Dröge
2744324adc Remove redundant push_mode struct member 2009-01-30 14:38:23 +01:00
Stefan Kost
f223b0e1c6 Precalculate some size dependent variables. Demystify the height scaling a bit.
Adds more comments to the code about the height scaling. RIght now only certain heights are screen filling.
2009-01-26 22:40:10 +02:00
Stefan Kost
a5b4ee672e Merge branch 'master' of ssh://git.freedesktop.org/git/gstreamer/gst-plugins-ugly 2009-01-26 21:26:46 +02:00
Wim Taymans
2dbb5a3923 Set flags on the realmedia chunks
Set the keyframe flags from the RDT packet to the realmedia chunk so that the
descrambler can be reset on keyframes. Fixes #556714.
2009-01-26 20:12:41 +01:00
Wim Taymans
9ce447007e Add method to get RDT flags
Add a method to get the RDT flags. We need these flags to mark keyframes to
reset the descrambing queue. See #556714.
2009-01-26 20:10:36 +01:00
Hans de Goede
3bcd050fab Add seeking support to asfdemux in push mode
Fixes bug #568836.
2009-01-26 10:02:02 +01:00
Hans de Goede
4ff0d1fe52 Drop packets with an invalid replicated data length
Drop packets with an invalid replicated data length
instead of continuing with an invalid timestamp
and uninitialized payload metadata.
All other code assumes that the timestamps are valid.
2009-01-26 10:02:02 +01:00
Stefan Kost
28d3578d0d Change comment to refer to right variable. 2009-01-25 22:31:52 +02:00
Stefan Kost
8ebd13a681 Bring synaesthesia to next century.
Do proper size negotiation. Change engine API to allow resizes. Small cleanups elsewhere.
2009-01-24 23:37:45 +02:00
David Schleef
d798fa10c9 Fix leak of converted string 2009-01-23 17:51:32 -08:00
Stefan Kost
23db61047f Make synaesthesia build again.
_init() has no params.
2009-01-23 23:59:38 +02:00
Yves Lefebvre
f4567b2c7c gst/mpegstream/: Fix some caps leaks. Fixes bug #564885.
Original commit message from CVS:
Patch by: Yves Lefebvre <ivanohe at abacom dot com>
* gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_get_video_stream),
(gst_dvd_demux_get_audio_stream),
(gst_dvd_demux_get_subpicture_stream), (gst_dvd_demux_reset):
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init_stream),
(gst_mpeg_demux_get_video_stream),
(gst_mpeg_demux_get_audio_stream), (gst_mpeg_demux_reset):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain):
Fix some caps leaks. Fixes bug #564885.
2009-01-08 08:19:25 +00:00
Tim-Philipp Müller
8c6bcd6771 gst/mpegaudioparse/gstmpegaudioparse.*: Do an initial class_ref on an internal enum type from within the class_init f...
Original commit message from CVS:
* gst/mpegaudioparse/gstmpegaudioparse.c: (channel_mode_class),
(GST_TYPE_MP3_CHANNEL_MODE), (mp3_type_frame_length_from_header),
(gst_mp3parse_emit_frame), (mp3parse_get_query_types):
* gst/mpegaudioparse/gstmpegaudioparse.h:
Do an initial class_ref on an internal enum type from within the
class_init function so that there aren't any issues when multiple
mp3parse elements are started in separate threads at the same
time. (Why we use an enum type here if the tag is registered as
a string type, I don't know). Also remove custom UNUSED macro
and use GLib's instead.
2008-12-10 15:42:21 +00:00
Wim Taymans
3838bdb40d gst/asfdemux/gstasfdemux.c: Remove duplicate and broken code for the streaming case and simply reuse the much better ...
Original commit message from CVS:
* gst/asfdemux/gstasfdemux.c: (gst_asf_demux_chain):
Remove duplicate and broken code for the streaming case and simply reuse
the much better working pull based code. Fixes #560348.
2008-11-20 21:31:19 +00:00