Commit graph

7162 commits

Author SHA1 Message Date
Sebastian Dröge a69ffb5886 typefindfunctions: Add typefinder for Midi inside RIFF
This is a standard Midi file format that should be supported by
all Midi decoders and also has the mimetype audio/mid according to
the Midi specification homepage.

Fixes bug #594094.
2009-09-04 07:36:10 +02:00
Wim Taymans 7a7663476f audiortppay: add some debugging 2009-09-03 18:53:19 +02:00
Wim Taymans c1db9ebb20 audiortppay: handle gaps
Add various conversion functions between time<->bytes<->rtptime that will be
used later on.
Refactor the min/max packet length code so that it can be used for both
sample/frame based payloaders. Cache the returned values.
code cleanups.
When we discover a DISCONT buffer, make the outgoing RTP timestamps have the
same gap as the GStreamer timestamps gap.
2009-09-03 17:59:00 +02:00
Wim Taymans 3a3c6f309c audiortppay: fix frame duration calculations
Fix the calculation of the frame duration and rtp timestamps.
Add some debugging
2009-09-03 17:59:00 +02:00
Wim Taymans bfc19462bb rtppay: add some debugging 2009-09-03 17:59:00 +02:00
Wim Taymans bb91a7b47c audiortppay: use offsets for RTP timestamps
Have a custom sample/frame function to generate an offset that the base class
will use for generating RTP timestamps. This results in perfect RTP timestamps
on the output buffers.
Refactor setting metadata on output buffers.
Add some more functionality to _flush().
Handle DISCONT on the input buffers and set the marker bit and DISCONT flag on
the next outgoing buffer.
Flush the pending data on EOS.
2009-09-03 17:58:59 +02:00
Wim Taymans c1ae0a2003 audiortppay: move function around 2009-09-03 17:58:59 +02:00
Wim Taymans 5808041f44 audiortppay: fix sample duration calculation 2009-09-03 17:58:59 +02:00
Wim Taymans 299ab7be0e audiortppay: more refactoring
Unify the sample/frame buffer handling code by making the functions plugable.
2009-09-03 17:58:59 +02:00
Wim Taymans fb5037f727 audiortppayload: refactor some more
Refactor getting the packet min/max size and alignment code.
Refactor converting bytes to time.
change some variable to something shorter.
2009-09-03 17:58:59 +02:00
Wim Taymans 1c6b71af03 audiortppayload: refactor and cleanup
Always use the adapter when we need to fragment the incomming buffer. Use more
modern adapter functions to avoid malloc and memcpy. The overall result is that
the code looks cleaner while it should be equally fast and in some case avoid a
memcpy and malloc.
Use the adapter timestamping functions for more precise timestamps in case of
weird disconts.
Cache some values instead of recalculating them.
Add gst_base_rtp_audio_payload_flush() to flush a certain amount of bytes from
the internal adapter.

API: GstBaseRTPAudioPayload::gst_base_rtp_audio_payload_flush()
2009-09-03 17:58:59 +02:00
Tim-Philipp Müller 432612b035 Update common 2009-09-03 16:56:55 +01:00
Wim Taymans 50b9640d01 basertppay: add property to disable perfect RTP time
Add a property to disable the generation of perfect RTP timestamps. By default
it is active.

API: GstBaseRTPPayload::perfect-rtptime
2009-09-03 11:29:23 +02:00
Wim Taymans 3a4edea56d basertppay: allow subclasses to influence RTP time
Allow subclasses to use the OFFSET field on RTP buffers to influence the way in
which RTP timestamps are generated. Usually timestamps are created from the
GStreamer timestamps on the buffer, which could result in imperfect RTP
timestamps.
2009-09-03 11:15:20 +02:00
Wim Taymans 5a479669d4 basertppay: add macro to cast 2009-09-03 11:15:20 +02:00
Wim Taymans bc3c8a1564 audiopayload: code cleanups 2009-09-03 11:15:20 +02:00
Wim Taymans 3c29efa692 audiortppayload: don't check adapter
the adapter is never NULL so we don't need to check it.
Use _scale functions to avoid overflows.
2009-09-03 11:15:20 +02:00
Tim-Philipp Müller 4cacc441d8 typefinding: move gio-based xdg mime typefinder from -bad to -base
Its purposes is mainly to avoid false positives (e.g. mp3 typefinder
reporting a 20% probability and somesuch). Won't be registered if
the gio plugin has been disabled via ./configure --disable-gio.
2009-09-03 09:01:47 +01:00
Tim-Philipp Müller 889c318798 subparse: GstAdapter is not a GstObject and should be freed with g_object_unref 2009-09-01 15:16:17 +01:00
Tim-Philipp Müller 95af14d7bc v4lsrc: fix timestamping for when we do not have a clock yet
Should fix #559049.
2009-09-01 15:16:06 +01:00
Tim-Philipp Müller e2e5a1da06 v4lsrc: don't log not-yet-initialised integer value 2009-09-01 15:08:18 +01:00
Tim-Philipp Müller 1af601d403 v4lsrc: avoid unnecessary run-time type checks in custom buffer finalize
And reflow code to be more indent friendly.
2009-09-01 15:08:10 +01:00
Jonas Holmberg ec91d508af basertppayload: Make instance init faster by not reading /dev/urandom 3 times
... which is the default seed when creating a new GRand. Because
GLib in older versions used buffered IO this would take a lot of time.

Instead use the global GRand for getting random numbers and keep the
three instance GRand for backward compatibility with a simple seed.

Fixes bug #593284.
2009-09-01 10:39:52 +02:00
Stefan Kost e7368354d5 adder: improve caps filter functionality. Fixes #590146.
Also use the capsfilter if there is no src-peer as the caps constrain what
we can do. Don't create any_caps as a default, as we check for NULL to skip the
filtering. This is a (small) performance regression as we always intersect
otherwise.
2009-08-31 22:48:01 +03:00
Sebastian Dröge 2194166e05 decodebin2: Post missing plugin messages before any error messages 2009-08-31 11:10:55 +02:00
Wim Taymans 008c760b6b cddabasesrc: safely handle the indexes 2009-08-28 19:06:57 +02:00
Wim Taymans cbc6c0dfea def: add new rtsp symbols 2009-08-28 19:06:44 +02:00
Wim Taymans e40b262ab7 basertppayload: whitespace fixes. 2009-08-28 14:09:02 +02:00
Marc-André Lureau 605f3c2942 Bug 593035 - set IN_CAPS for streamheader buffer 2009-08-28 08:44:55 +01:00
Sebastian Dröge 460dc94d23 playbin: The internally linked pad of the selector might be NULL in some cases 2009-08-26 16:56:19 +02:00
Sebastian Dröge 67a0ef9b3a playbin: Fix iterate internal linked pads functions for the stream selectors
This now used the new gst_iterator_new_single() function and as a side effect
fixes bug #592864.
2009-08-26 16:45:49 +02:00
Sebastian Dröge 72f3587f04 riff: Add support for AVF files
AVF is valid RIFF but has AVF0 has first fourcc instead of RIFF.

Fixes bug #593117.
2009-08-26 09:10:19 +02:00
Sebastian Dröge 3c8ff21ba2 typefindfunctions: Detect AVF files as RIFF files too
AVF is valid RIFF but has AVF0 as first fourcc instead of RIFF.

Partially fixes bug #593117.
2009-08-26 09:10:19 +02:00
Sebastian Dröge e22c843d0e audioresample: Add unit test for checking for timestamp drifts
This also checks for perfect timestamping and offsetting.
2009-08-26 09:10:18 +02:00
Sebastian Dröge 1e450f21f8 audioresample: Fix drain processing
In case we have to convert internally don't process output length input samples
but history length input samples.
2009-08-26 09:10:18 +02:00
Sebastian Dröge 01408497a1 audioresample: Improve debugging a bit in the unit test 2009-08-26 09:10:18 +02:00
Sebastian Dröge 2e585ac7ac audioresample: On the first buffer we need discont handling
Otherwise we won't get upstream timestamps and everything and all
output buffers would have -1 timestamps.
2009-08-26 09:10:18 +02:00
Руслан Ижбулатов 5d96fd4bf1 subparse: Remove dependency on regex.h as it's not used anyway
Fixes bug #592544.
2009-08-26 09:10:17 +02:00
Kipp Cannon 86b4c51c8c audioresample: Fix buffer overflow when pushing the drain 2009-08-26 09:10:17 +02:00
Kipp Cannon a69068d70d audioresample: Fix timestamp drift
Fixes bug #591934.
2009-08-26 09:10:17 +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
Wim Taymans c3ebeec5a5 playbin2: fix refcounting of _get_sink()
g_value_set_object() increases the refcount of the sink, which is not needed
because the object should already be refcounted. Make sure this is always the
case and use g_value_take_object().

Fixes: #592884
2009-08-24 15:08:36 +02:00
Peter Kjellerstedt 8ce3612b71 rtsp: Mark Transport as supporting multiple values. 2009-08-24 14:39:16 +02:00
Peter Kjellerstedt 2882c22d95 rtsp: Added missing Since tags. 2009-08-24 13:58:50 +02:00
Eero Nurkkala 8ad8591e41 ringbuffer: Improve audiosink startup performance
When we start the ringbuffer, immediatly continue processing samples if the
writer prepared some for us.

Fixes #545807
2009-08-24 13:30:11 +02:00
Peter Kjellerstedt 066f9be5c9 rtsp: Added new API for sending using GstRTSPWatch.
The new API to send messages using GstRTSPWatch will first try to send the
message immediately. Then, if that failed (or the message was not sent
fully), it will queue the remaining message for later delivery. This avoids
unnecessary context switches, and makes it possible to keep track of
whether the connection is blocked (the unblocking of the connection is
indicated by the reception of the message_sent signal).

This also deprecates the old API (gst_rtsp_watch_queue_data() and
gst_rtsp_watch_queue_message().)

API: gst_rtsp_watch_write_data()
API: gst_rtsp_watch_send_message()
2009-08-24 13:19:46 +02:00
Peter Kjellerstedt 0af04aa4a8 rtsp: Made gst_rtsp_watch_queue_data() thread safe. 2009-08-24 13:19:46 +02:00
Peter Kjellerstedt fb3b761af5 rtsp: Added gst_rtsp_connection_set_http_mode().
With gst_rtsp_connection_set_http_mode() it is possible to tell the
connection whether to allow HTTP messages to be supported. By enabling HTTP
support the automatic HTTP tunnel support will also be disabled.

API: gst_rtsp_connection_set_http_mode()
2009-08-24 13:19:46 +02:00
Peter Kjellerstedt d5b4b5d8af rtsp: Allow gst_rtsp_connection_do_tunnel() to just setup decoding context.
If the second connection passed to gst_rtsp_connection_do_tunnel() is NULL
then just setup the base64 decoding context for the first connection.
2009-08-24 13:19:46 +02:00
Peter Kjellerstedt 01d98fdb5d rtsp: Write as much as possible in gst_rtsp_source_dispatch().
Try to write as much as possible if there are multiple messages queued.
2009-08-24 13:19:45 +02:00