Commit graph

5091 commits

Author SHA1 Message Date
Mark Nauwelaerts
7895ddbc38 matroskamux: use consistent debug category name for ebmlwrite 2010-06-01 15:53:37 +02:00
Mark Nauwelaerts
085e333283 matroskademux: use bytereader based GstEbmlRead as a helper
... rather than basing on it by inheritance.
Also use more common code for push and pull mode.

Fixes #619198.
Fixes #611117.
2010-06-01 15:52:12 +02:00
Mark Nauwelaerts
973c8ddfdf matroskamux: _get_pad_template result needs no unref 2010-06-01 15:51:16 +02:00
Edward Hervey
01abf5b94e videomixer: Implement sinkpad GetCapsFunction.
This allows returning only the formats, width, height, framerate
and pixel-aspect-ratio that downstream can support.

https://bugzilla.gnome.org/show_bug.cgi?id=620148
2010-06-01 12:42:10 +02:00
Sebastian Dröge
0d5ae784b1 matroskademux: Don't compare running times with stream times when doing QoS 2010-06-01 11:21:30 +02:00
Sebastian Dröge
d09ff4124e deinterlace: Don't reconfigure the caps when changing properties
Fixes bug #619848.
2010-06-01 11:21:30 +02:00
Sebastian Dröge
ab3b4bc82f alpha: Add property to allow passthrough mode
This passthrough mode is used if the alpha method is "set"
and the alpha value is 1.0.

Fixes bug #617512.
2010-06-01 11:21:29 +02:00
Alexander Kojevnikov
2d13b15376 spectrum: support 24-bit width
Fixes #619045
2010-06-01 11:21:29 +02:00
Alexander Kojevnikov
c69dd320af spectrum: support arbitrary bit depth
Partially fixes #619045
2010-06-01 11:21:29 +02:00
Philip Jägenstedt
596331c6f0 matroskademux: fix deadlock introduced by video keyframe QoS 2010-06-01 11:21:29 +02:00
Philip Jägenstedt
80926a5596 matroskademux: skip buffers before a late keyframe (QoS)
Before, vp8dec had no option but to decode all frames even if some/all
of them would be late. With this change, performance when keyframes are
frequent is helped a great deal. On my Thinkpad X60s, decoding a 20 s
1080p sunflower encode with keyframes every 10 frames went from taking
42 s with 5 frames shown to 21 s with 15 frames shown (still slow
enough to count by hand). When keyframes are more sparse, you will
still be able to catch up eventually, but the results won't be as
noticable.
2010-06-01 11:21:29 +02:00
Sebastian Dröge
f5bca501e5 videomixer: Don't mix input with different pixel aspect ratios
Fixes bug #618530.
2010-06-01 11:21:29 +02:00
Sebastian Dröge
dc6dd62824 deinterlace: Add MMX/3DNow implementations of greedyh for UYVY 2010-06-01 11:21:29 +02:00
Sebastian Dröge
2096cf6e55 deinterlace: Fix UYVY implementation of greedyh to be actually used 2010-06-01 11:21:29 +02:00
Tim-Philipp Müller
97de4b217d Revert "matroska: add temporary webm typefinder"
This reverts commit d148ec0ad2.

We depend on -base git now, which has a webm typefinder in the usual
place.
2010-06-01 09:39:38 +01:00
Tim-Philipp Müller
d51576b14c Revert "avimux, flvmux, matroskamux: don't crash if tags arrive on multiple input pads at the same time"
This reverts commit 6a9983cd20.

Rely on locking done in GstTagSetter in core git.
2010-06-01 09:39:38 +01:00
Sebastian Dröge
f8c906e475 flvdemux: Fix position query 2010-05-29 13:55:07 +02:00
Tim-Philipp Müller
a9c13cd4f7 docs: remove unnecessary videorate element from webmmux example pipeline 2010-05-28 15:14:32 +01:00
Sebastian Dröge
ad9ffeed03 videobox: Fix floating point to integer conversion for the alpha values
Fixes bug #619835.
2010-05-27 18:33:35 +02:00
Mark Nauwelaerts
3462eed7e0 wavparse: handle truncated input data at EOS in pull mode
Fixes #617733.
2010-05-26 12:01:26 +01:00
Robert Swain
50273537dc qtdemux: Round timestamp up when scaling to mov format
Fix timestamp rounding to allow the correct index to be located.

The issue was that scaling from GStreamer time format to mov time format was
rounding down causing the timestamp of the newsegment event received after a
flushing keyframe seek to find the sample index before the one it should
causing further backward seeking to the keyframe prior until no rounding error
occurred.

Rounding up when scaling to mov format has the desired effect, and it is
not clear whether just the _round () variant would be sufficient.

Fixes bug #619105
2010-05-26 00:08:16 +01:00
Tim-Philipp Müller
6a9983cd20 avimux, flvmux, matroskamux: don't crash if tags arrive on multiple input pads at the same time
This is a temporary fix for the release only.

Fixes #619533.
2010-05-26 00:05:54 +01:00
Wim Taymans
49463a37cb rtptheora: remove delivery-method from caps
We can accept all delivery methods so don't advertise anything on the caps or
parse anything, we will handle whatever we receive.

Fixes #618940
2010-05-25 18:53:48 +02:00
Tim-Philipp Müller
d148ec0ad2 matroska: add temporary webm typefinder
Add webm typefinder just for the release, so webm works for
people whose distros don't patch gst-plugins-base as well.
We'll remove this again after the release.
2010-05-25 15:40:01 +01:00
Tim-Philipp Müller
9bdfc7254a docs: add some pipeline examples to webmmux docs 2010-05-23 11:17:27 +01:00
Tim-Philipp Müller
a4fabfb959 matroska: fix up plugin and element descriptions a bit 2010-05-21 15:06:14 +01:00
Tim-Philipp Müller
0e12bf83a3 matroska: move webmmux into own source files
Makes things easier for gtk-doc.
2010-05-21 15:04:48 +01:00
Sebastian Dröge
82e4807d10 matroska: Remove the doctype enum, it's not needed anymore 2010-05-20 21:49:43 +02:00
Sebastian Dröge
6a25cd475c webmmux: Add new webmmux element that only supports muxing of WebM
...and remove the doctype property from matroskamux again.
2010-05-20 21:49:43 +02:00
Philip
9c59da8601 ebmlread: rm floatcast.h include (not used) 2010-05-19 20:38:50 +02:00
Philip Jägenstedt
cbde946768 matroskamux: bump default doctype version to 2
In this day and age this should be safe. There's otherwise a risk people
will be creating unneccessarily big WebM files as they can't use
SimpleBlock in v1.
2010-05-19 20:38:31 +02:00
Philip Jägenstedt
9610c7f354 matroska: handle matroska and webm doctype versions equally
The original plan was to let WebM v1 be the same as Matroska v2 (with
extra constraints), but for simplicity it was decided to handle the
versions equally, such that e.g. SimpleBlock is only allowed in WebM v2.
2010-05-19 20:38:16 +02:00
Philip Jägenstedt
081f2d00aa matroskademux: Verify lace size in _parse_blockgroup_or_simpleblock
Failure to do this for corrupt input can cause a subbuffer bigger
than the actual buffer to be created, quickly leading to segfault.
Test case:
bug_s222005751_r0.001____memcpy.webm
2010-05-19 20:35:52 +02:00
Philip Jägenstedt
c659c92091 ebml: crude hack to avoid crashing on unexpected metadata
The comment says this cannot happen, but it did and I don't know
why. This is not the correct fix, needs investigation. Test case:
bug_s555010094_r0.0005:0.008____IA__g_assertion_message_expr.webm
2010-05-19 20:35:28 +02:00
Philip Jägenstedt
9c1267b1a9 ebml: don't modify out str if returning an error in _read_ascii
This is a regression from ASCII validation changes. Test case:
bug_s66876390_r0.001____malloc_printerr.webm
2010-05-19 20:35:06 +02:00
Philip Jägenstedt
c712d28796 ebml: Validate 7-bit ASCII in gst_ebml_read_ascii
This was triggering an UTF-8 assertion in gst_caps_set_simple for
corrupt files with garbage as codec id. Test case:
gstreamer_error_trying_to_set_invalid_utf8_as_codec_id.webm

Old gst_ebml_read_ascii renamed to gst_ebml_read_string, also used by
gst_ebml_read_utf8. Unlike for UTF-8, failure to validate is an error,
as gst_ebml_read_ascii is used for reading doctype and codec id and we
might just as well give up early in those cases.
2010-05-19 20:33:38 +02:00
Philip Jägenstedt
d146971128 matroskademux: Ignore unexpected CodecState
Because GstMatroskaTrackContext *stream is set up in the first
SimpleBlock or Block, a rogue CodecState otherwise causes a segfault on
derefencing the NULL pointer. Test case:
bug_s5506167_r0.001____gst_matroska_demux_parse_blockgroup_or_simpleblock.webm
2010-05-19 20:33:35 +02:00
Philip Jägenstedt
9dc7889eea matroskademux: Add video/webm sink caps 2010-05-19 20:32:13 +02:00
Philip Jägenstedt
ad05dfc032 matroskamux: Use SimpleBlock for WebM when possible 2010-05-19 20:32:02 +02:00
Philip Jägenstedt
1daeb26df1 matroskademux: Support "webm" DocType 2010-05-19 20:31:36 +02:00
Philip Jägenstedt
3b4759de18 matroskamux: rename matroska_version to doctype_version 2010-05-19 20:29:19 +02:00
Philip Jägenstedt
27069088db matroskamux: Support "webm" DocType 2010-05-19 20:28:42 +02:00
David Schleef
e847957790 qtdemux: Add VP8 2010-05-17 17:18:25 +02:00
Sebastian Dröge
e5e90f6035 matroskamux: Add support for On2 VP8
...matroskademux automatically supports it through libgstriff.
2010-05-17 17:18:24 +02:00
Sebastian Dröge
d1842481c1 avimux: Add support for On2 VP8
...avidemux automatically supports it through libgstriff.
2010-05-17 17:18:24 +02:00
Wim Taymans
dc2662e22b rtpbin: fix docs
Documentation error spotted by tony <caicai0119 at gmail.com>

Fixes #618419
2010-05-13 13:01:26 +02:00
Olivier Crête
28f509fdca rtptheoradepay: make delivery-method parameter optional
It probably will not be in the final RFC as it is not in RFC 5215 for Vorbis.
If there is a configuration specified, assume it is in-line and if nothing is
specified, assume it is in-band.

https://bugzilla.gnome.org/show_bug.cgi?id=618386
2010-05-13 12:22:36 +02:00
Wim Taymans
3e4bc043a5 celtpay: fix queue duration calculations
Don't blindly add the durations of incomming buffers to the total queued
duration because it might be invalid. Mark the total queued duration invalid
when we receive an invalid incomming timestamp because that's when we lose track
of the total queued duration.

Fixes #618324
2010-05-13 11:30:27 +02:00
Mark Nauwelaerts
4cff2e2c67 rtph264pay: extract SPS and PPS from property provided parameter set
... so it can also be regularly inserted into the stream if so configured.

Fixes #617164.
2010-05-12 10:24:10 +02:00
Tim-Philipp Müller
c209a6ab40 rtp: dist missing header file to fix make distcheck 2010-05-11 20:26:37 +01:00
Mark Nauwelaerts
bcde9fab09 qtdemux: fix push based seeking
... where it comes down to transforming incoming BYTE segment
to a corresponding TIME segment.

Also fixes #609405.
2010-05-11 18:44:01 +02:00
Sebastian Dröge
2e5262cda2 imagefreeze: Set fixed caps on the correct pad
This makes the sink getcaps function actually used instead of using
the fixed caps function for it.
2010-05-11 14:31:44 +01:00
Sebastian Dröge
f9d8174471 imagefreeze: Only start the task after a seek if a buffer was received already 2010-05-11 14:31:44 +01:00
Sebastian Dröge
3e574eafe3 imagefreeze: Set undefined framerate in sink getcaps function 2010-05-11 14:31:43 +01:00
Sebastian Dröge
53de7943c7 imagefreeze: Implement reverse playback and set buffer offsets 2010-05-11 14:31:43 +01:00
Sebastian Dröge
f1e07fcd0f imagefreeze: Add still frame stream generator element 2010-05-11 14:31:43 +01:00
Tim-Philipp Müller
f9ced7df94 Move capsfilter element from -bad to -good
Hook up moved files to the build infrastructure and docs.

Fixes #617739.
2010-05-11 14:31:43 +01:00
Sebastian Dröge
5aacc8dd29 capssetter: Some minor cleanup 2010-05-11 14:31:43 +01:00
Benjamin Otte
076d3ff456 gst_element_class_set_details => gst_element_class_set_details_simple 2010-05-11 14:31:43 +01:00
Mark Nauwelaerts
8217895170 capssetter: import element into -bad 2010-05-11 14:31:43 +01:00
Mark Nauwelaerts
5ae7119d11 avimux: check that pads have been negotiated
Also set fcc_handler field in audio stream header.

Fixes #618351.
2010-05-11 13:58:03 +02:00
Mark Nauwelaerts
e934f637b6 qtdemux: fix partial parsing of ctts table
Fixes #616516.
2010-05-11 11:06:20 +02:00
Mark Nauwelaerts
a9e688cf32 qtdemux: cleanup a comment and add some debug and conditional compilation 2010-05-11 11:06:17 +02:00
Jan Urbański
cf57f1b220 flvmux: only store the last buffer timestamp if it's valid
Fixes bug #618305
2010-05-11 06:35:48 +02:00
Olivier Crête
34d0d59142 rtph264pay: Re-send SPS/PPS when requested
https://bugzilla.gnome.org/show_bug.cgi?id=606689
2010-05-10 15:07:09 +02:00
Mark Nauwelaerts
90311e522f rtph264pay: fix typo in debug message 2010-05-10 13:35:55 +02:00
Mark Nauwelaerts
af6fc84377 rtptheorapay: add config-interval parameter to re-insert config in stream
Add a new config-interval property to instruct the payloader to insert
configuration headers at periodic intervals in the stream
(when a keyframe is countered).
2010-05-10 13:35:52 +02:00
Mark Nauwelaerts
14b14fdf7a rtptheoradepay: fix in-band configuration parsing
Also make configuration header parsing a bit more relaxed with respect
to length field interpretation.
2010-05-10 13:35:50 +02:00
Mark Nauwelaerts
b899afaeb6 rtpvorbisdepay: fix in-line configuration parsing
Also make configuration header parsing a bit more relaxed with respect
to length field interpretation.
2010-05-10 13:35:48 +02:00
Mark Nauwelaerts
7bd3943bb9 rtptheorapay: do not discard downstream flow return 2010-05-10 13:35:44 +02:00
Mark Nauwelaerts
53928a74fa rtptheorapay: refactor buffer payloading 2010-05-10 13:35:41 +02:00
Sebastian Dröge
a9ed56b1ad deinterlace: Add support for UYVY 2010-05-07 20:41:31 +02:00
Wim Taymans
50f26c671b rtpsession: fix return value 2010-05-07 19:06:35 +02:00
Wim Taymans
a50cd7c27d rtspsrc: don't leak the session 2010-05-07 19:02:21 +02:00
Wim Taymans
bc72d8250c rtsp: configure bandwidth properties in the session 2010-05-07 18:59:42 +02:00
Wim Taymans
aadf4ddf7e rtpsession: add properties to configure the bandwidth
Add properties to proxy the bandwidth configuration to the session object.
2010-05-07 18:58:58 +02:00
Wim Taymans
69cde0e874 rtpsession: add properties to configure bandwidths
Add properties to configure the sender and receiver bandwidths.
Configure the bandwidths before calculating the RTCP timeout when we need to.
2010-05-07 18:57:13 +02:00
Wim Taymans
d84dc1112d rtpstats: add some debug info 2010-05-07 18:56:30 +02:00
Wim Taymans
5690331c9e rtpsession: small cleanups 2010-05-07 18:55:34 +02:00
Wim Taymans
0da5cf2e21 rtpstats: make bandwidths more configurable
Add a method to configure the various bandwidths in the session.
2010-05-07 16:55:13 +02:00
Wim Taymans
6eee730c4a rtpsession: handle NONE RTCP intervals
Prepare for handling RTCP reporting intervals of GST_CLOCK_TIME_NONE, which
means don't send RTCP at all.
2010-05-07 13:32:30 +02:00
Wim Taymans
db3c4e7f46 rtspsrc: fall back to SDP ports instead of server_port
In multicast, fall back to the ports in the SDP instead of the server_port
attribute as this is more in line with the RFC.
2010-05-07 12:51:05 +02:00
Wim Taymans
4e1ced0a77 rtspsrc: refactor collecting the transport info
Make a method to collect the ports and destination address.
2010-05-07 12:24:51 +02:00
Wim Taymans
05352d7ea8 rtspsrc: handle servers that send broken Transports
Handle servers that send their port pairs with the wrong name.

Fixes #617537
2010-05-07 11:28:36 +02:00
Wim Taymans
ef4d2901aa rtspsrc: use the SDP connection info in multicast
Parse the connection info from the SDP.
When we need to configure the multicast destination, fall back to the SDP
connection info when the transport did not specify a destination and ttl.

Fixes #617537
2010-05-06 16:52:26 +02:00
Stefan Kost
de4b0ef7dd goom,monoscope: truncate own caps, instead of copying and using the first only
We got the caps from an intersect, it is our own, hence we can truncate it.
2010-05-06 15:43:54 +03:00
Stefan Kost
899d03dcc6 auto{audio,video}{src,sink}: use can_intersect to avoid a caps copy 2010-05-06 15:43:53 +03:00
Stefan Kost
0148a230ac flvdemux: tell what we can do
Any-caps are bad. If apps scan the registry, they'd like to know what we can
output.
2010-05-06 15:43:53 +03:00
Sebastian Dröge
85c6b9b712 videomixer: Make selection of a sinkpad number threadsafe 2010-05-05 19:35:48 +02:00
Sebastian Dröge
9d6e4a7ac8 deinterlace: Add support for all common RGB formats 2010-05-05 17:39:32 +02:00
Sebastian Dröge
848f071ef4 deinterlace: Add support for AYUV 2010-05-05 16:06:51 +02:00
Wim Taymans
d6579912cb rtspsrc: make setup url in a smarter way
Make sure we always separate the base and control url parts with a / when
creating the setup url.
2010-05-04 16:36:15 +02:00
Alessandro Decina
c8a02a91a6 rtspsrc: handle SEEKING queries. 2010-05-04 16:05:13 +02:00
Mark Nauwelaerts
220f865f77 rtpmp4vpay: add config-interval parameter to re-insert config in stream
Add a new config-interval property to instruct the payloader to insert
config (VOSH, VOS, etc) at periodic intervals in the stream
(when a GOP or VOP-I is encountered).

Based on patch by <marc.leeman at gmail.com>

Fixes #607452.
2010-05-04 11:19:43 +02:00
Alessandro Decina
40899379c0 rtpjitterbuffer: move some initialization code from change_state to _init.
Set ->active to TRUE in _init so it can be set to FALSE after creating the
jitterbuffer and it won't be mistakenly reset to TRUE in the change_state
function.
This is needed to start the jitterbuffer as inactive when rtpbin is buffering.
2010-05-03 13:34:59 +02:00
Alessandro Decina
ffc2da30fc rtpbin: fix a bug handling BUFFERING messages.
If a session exists but has no streams, set the min buffering percent to 0
since it means that we haven't received anything for that session yet.
2010-05-03 11:56:58 +02:00
Alessandro Decina
f6e9f359b9 rtpbin: when a stream is created, pause the jitterbuffer if rtpbin is buffering. 2010-05-03 11:51:37 +02:00
Alessandro Decina
38a5b08ef2 rtpbin: fix a bug calculating stream offsets. 2010-05-03 11:23:59 +02:00
Sebastian Dröge
ad1c01661f matroskamux: Write previous cluster's size
This is useful for backwards playback, which should be implemented
in matroskademux at some point.
2010-05-01 14:20:59 +02:00
Sebastian Dröge
1e1cf5df70 matroskademux: Set interlaced flag in the caps if the flag is set in the Matroska file 2010-05-01 14:15:49 +02:00
Sebastian Dröge
db6a3e55c6 matroskamux: Write interlaced flag if the input video content is interlaced
Unfortunately Matroska has no way to specify TFF and friends...
2010-05-01 14:13:24 +02:00
Tim-Philipp Müller
c1d24699f5 rtp: fix printf format of some debug messages 2010-05-01 11:25:26 +01:00
Tim-Philipp Müller
fa4b2938bc matroska: init variable to avoid compiler warning on OSX
Fixes (bogus) "'offset' may be used uninitialized in this function"
warning on build bot (also spotted by philn).
2010-05-01 11:15:04 +01:00
David Schleef
1df1d34fe1 qtdemux: UYVY is 4:2:2, not 4:2:0 2010-04-30 17:19:44 -07:00
Sebastian Dröge
2ac1f1c7ee deinterlace: Make automatic detection of interlacing the default
Previously "force deinterlacing" was the default, which is a not very
sensible default for the normal use case where deinterlace should act
in passthrough mode unless interlaced content is present.
2010-04-30 22:17:12 +02:00
Mark Nauwelaerts
be5ffd96fe rtptheoradepay: also accept in-band configuration
Fixes #574416 (theora).
2010-04-30 13:54:56 +02:00
Mark Nauwelaerts
a344cfba27 rtpvorbisdepay: also accept in-line configuration
Fixes #574416 (vorbis).
2010-04-30 13:54:52 +02:00
Olivier Crête
7bc3253761 rtptheoradepay: Ignore packets without a known codebook
Don't produce an error if a packet is received without a valid codebook,
it's possible that the codebook will just be coming later.

See #574416.
2010-04-30 13:54:50 +02:00
Benjamin M. Schwartz
c3dc498278 y4menc: add 4:2:2, 4:1:1, and 4:4:4 output support
Fixes #610902.
2010-04-30 13:50:08 +02:00
Mark Nauwelaerts
6bf7f5cfd3 rtph264depay: DELTA_UNIT marking of output buffers
... which evidently makes (most) sense if output buffers are
actually frames.

Partially based on a patch by
Miguel Angel Cabrera <mad_aluche at hotmail.com>

Fixes #609658.
2010-04-30 13:50:03 +02:00
Mark Nauwelaerts
0206b67b1d rtph263depay: extra keyframe info from PTYPE header
... as opposed to taking it from h263 payload header, which need not
be so reliable.

Fixes #610172.
2010-04-30 13:50:00 +02:00
Mark Nauwelaerts
fe9e6d82ee rtph263depay: also use Picture Start Code to detect packet loss
This ensures a whole frame is dropped if a (start) packet is lost,
rather than relying only on the DISCONT flag.
2010-04-30 13:49:57 +02:00
Mark Nauwelaerts
84ac277add rtph263depay: detect frame start using Picture Start Code
So we stop dropping fragments as soon as there is a picture start (code).
In particular, this prevents dropping the first frame following
initial DISCONT.
2010-04-30 13:49:54 +02:00
Mark Nauwelaerts
e7903311f5 rtph263depay: handle a few FIXMEs 2010-04-30 13:49:51 +02:00
Mark Nauwelaerts
3692bbb7ae rtph263depay: slightly refactor payload dropping 2010-04-30 13:49:47 +02:00
Mark Nauwelaerts
a08f76a92e rtph263pay: use found GOBs to apply Mode A payloading
... rather than falling back to sending the whole frame in one packet
if number of GOB startcodes < maximum.
One might take this further and still perform Mode B/C payloading,
but at least this should cater for decent fragments in typical cases.

Fixes #599585.
2010-04-30 13:49:43 +02:00
Mark Nauwelaerts
a6bb8338fd matroskademux: implement push mode seeking 2010-04-30 13:49:39 +02:00
Tim-Philipp Müller
e79f7beba6 docs: update for videofilter plugin merge and add gtk-doc blurb for new property 2010-04-29 20:08:43 +01:00
Sebastian Dröge
61217b521c deinterlace: Improve segment handling a bit 2010-04-29 19:28:24 +02:00
Sebastian Dröge
05a2732851 deinterlace: Order caps by amount of contained information 2010-04-29 19:28:24 +02:00
Sebastian Dröge
cb789617f9 deinterlace: Properly set interlaced field in getcaps 2010-04-29 19:28:24 +02:00
Sebastian Dröge
eeb5a23483 deinterlace: Add planar YUV support to all other simple methods 2010-04-29 19:28:24 +02:00
Sebastian Dröge
4ca4ac3f03 deinterlace: Add planar YUV support to greedyh method 2010-04-29 19:28:24 +02:00
Sebastian Dröge
bdb9675519 deinterlace: Add support for planar YUV formats in greedyl method 2010-04-29 19:28:24 +02:00
Sebastian Dröge
03a8379e20 deinterlace: Add support for Y444, Y42B, I420, YV12 and Y41B
The vfir method supports them and will be used until something else
supports it.
2010-04-29 19:28:23 +02:00
Sebastian Dröge
a626b19490 deinterlace: Define deinterlace method base classes as abstract types 2010-04-29 19:28:23 +02:00
Sebastian Dröge
600f82fbfe deinterlace: Move deinterlacing methods to their own file 2010-04-29 19:28:23 +02:00
Sebastian Dröge
a405d5a4f1 deinterlace: Simplify passthrough mode detection 2010-04-29 19:28:23 +02:00
Sebastian Dröge
3dc7215492 deinterlace: Refactor deinterlacing as preparation for supporting more color formats 2010-04-29 19:28:23 +02:00
Sebastian Dröge
e2eb012a41 videobox: Add support for Y444, Y42B and Y41B 2010-04-29 19:28:23 +02:00
Sebastian Dröge
d20306b699 videobox: Add support for YVYU and reorder template caps 2010-04-29 19:28:23 +02:00
Sebastian Dröge
4e836d3271 videobox: Translate navigation events to make sense again upstream 2010-04-29 19:28:23 +02:00
Sebastian Dröge
a105bf49e3 videobox: Properly handle ranges/lists of width or height when transforming caps
Code partly taken from the videocrop element.
2010-04-29 19:28:23 +02:00
Sebastian Dröge
f71157fa06 alpha: Fix planar YUV->RGB processing 2010-04-29 19:28:22 +02:00
Sebastian Dröge
1897ab2928 alpha: Correctly clamp after YUV->RGB conversion 2010-04-29 19:28:22 +02:00
Sebastian Dröge
545b21c9bd alpha: Add support for YUY2, YVYU and UYVY 2010-04-29 19:28:22 +02:00
Sebastian Dröge
90058bc076 videobox: Sync properties to the controller in before_transform 2010-04-29 19:28:22 +02:00
Sebastian Dröge
9fa14f8c37 videobox: Add support for YUY2 and UYUV 2010-04-29 19:28:22 +02:00
Sebastian Dröge
0294e1e48a alpha: Refactor processing and add support for other planar YUV formats
This reduces the generated code size by a factor of 2.5.
2010-04-29 19:28:22 +02:00
Sebastian Dröge
ba72a058bb alpha: Add support for YV12 input 2010-04-29 19:28:22 +02:00
Sebastian Dröge
6dd3edd0f7 videomixer: Add support for YUY2, YVYU, UYVY 2010-04-29 19:28:22 +02:00
Sebastian Dröge
bd0b307a74 videomixer: Add support for Y444, Y42B, Y41B and YV12 2010-04-29 19:28:22 +02:00
Sebastian Dröge
314fbd80e8 videofilter: Order color formats by their contained amount of information 2010-04-29 19:28:21 +02:00
Sebastian Dröge
1bc924d8ad videoflip: Drop Y41B/Y42B support
Rotating 90°/270° with subsampled YUV where horizontal
and vertical subsampling are different doesn't really work.
2010-04-29 19:28:21 +02:00
Sebastian Dröge
45571f4bd4 videoflip: Also flip the pixel-aspect-ratio if width/height are exchanged 2010-04-29 19:28:21 +02:00
Sebastian Dröge
c0e990b58f videoflip: Change the default method to identity 2010-04-29 19:28:21 +02:00
Sebastian Dröge
0515f88f7c videobalance: Reduce number of allocations per instance 2010-04-29 19:28:21 +02:00
Sebastian Dröge
3ef25c28cd videofilter: Update last-reviewed comments 2010-04-29 19:28:21 +02:00
Sebastian Dröge
c5805b6e38 videobalance: Add support for all RGB formats 2010-04-29 19:28:21 +02:00
Sebastian Dröge
80676e1777 videobalance: Add support for YUY2, UYVY, AYUV and YVYU 2010-04-29 19:28:21 +02:00
Sebastian Dröge
3d70ce60fa videobalance: Add debug category 2010-04-29 19:28:20 +02:00
Sebastian Dröge
37de42977a videobalance: Make property access threadsafe 2010-04-29 19:28:20 +02:00
Sebastian Dröge
5f396b9a71 videobalance: Add support for Y41B, Y42B and Y444 2010-04-29 19:28:20 +02:00
Sebastian Dröge
2cb7ac0192 videobalance: Use libgstvideo for format specific things 2010-04-29 19:28:20 +02:00
Sebastian Dröge
fe4f9ea16b videobalance: Make properties controllable 2010-04-29 19:28:20 +02:00
Sebastian Dröge
ea06bd33f8 videobalance: Emit "value-changed" signal of color balance interface when values change 2010-04-29 19:28:20 +02:00
Sebastian Dröge
e13cd55fab videobalance: Some random cleanup 2010-04-29 19:28:20 +02:00
Sebastian Dröge
17ba0818b1 videobalance: Stop using liboil
The used liboil function is deprecated and has no optimized
implementation anyway.
2010-04-29 19:28:20 +02:00
Sebastian Dröge
bc2edb9706 videoflip: Make property access threadsafe 2010-04-29 19:28:20 +02:00
Sebastian Dröge
650072abed gamma: Sync properties to the controller in before_transform 2010-04-29 19:28:19 +02:00
Sebastian Dröge
537effad12 videoflip: Add support for all RGB formats and AYUV 2010-04-29 19:28:19 +02:00
Sebastian Dröge
516b5f7f2e videoflip: Add support for Y41B, Y42B and Y444 2010-04-29 19:28:19 +02:00
Sebastian Dröge
e8ca390be8 videoflip: Make processing more general and use libgstvideo for all format specific things 2010-04-29 19:28:19 +02:00
Sebastian Dröge
754690dad6 videoflip: Make method property controllable and improve debug output 2010-04-29 19:28:19 +02:00
Sebastian Dröge
8c4aeb2eac videoflip: Some random cleanup 2010-04-29 19:28:19 +02:00
Sebastian Dröge
1584d16b1c videofilter: Move all elements into a single plugin
Having all these small elements in a separate plugin
is not very memory effective...
2010-04-29 19:28:19 +02:00
Sebastian Dröge
92cedb0510 gamma: Improve docs a bit 2010-04-29 19:28:19 +02:00
Sebastian Dröge
e23d74ca84 gamma: Add support for all RGB formats 2010-04-29 19:28:19 +02:00
Sebastian Dröge
2d1e6cf3f5 gamma: Add support for many packed YUV formats
That is YUY2, UYVY, AYUV and YVYU.
2010-04-29 19:28:19 +02:00
Sebastian Dröge
2de3eabac6 gamma: Add support for all other planar YUV formats
That is Y41B, Y42B, Y444, NV12 and NV21.
2010-04-29 19:28:19 +02:00
Sebastian Dröge
9f727ea05c gamma: Stop using liboil
The used liboil function is deprecated, only has a reference implementation
and is more complex than what's needed here.
2010-04-29 19:28:19 +02:00
Sebastian Dröge
155e48fb90 gamma: Use libgstvideo for format specific values and make gamma processing more generic
Allows us to easily add support for new color formats later.
2010-04-29 19:28:18 +02:00
Sebastian Dröge
18273152b3 gamma: Make gamma property controllable
...and properly use liboil.
2010-04-29 19:28:18 +02:00
Sebastian Dröge
2a3f99ca5f gamma: Some random cleanup 2010-04-29 19:28:18 +02:00
Sebastian Dröge
ecb0c3a932 smptealpha: Sync properties to the controller in before_transform 2010-04-29 19:28:18 +02:00
Sebastian Dröge
f005c87037 smptealpha: Add support for YV12 (converted to AYUV) 2010-04-29 19:28:18 +02:00
Sebastian Dröge
ae1783e5cd smptealpha: Add support for all 4 ARGB formats
...without format conversion.
2010-04-29 19:28:18 +02:00
Sebastian Dröge
055c90359a smptealpha: Make color format support more generic
This allows easier addition of new formats later.
2010-04-29 19:28:18 +02:00
Sebastian Dröge
56d4230b22 smptealpha: Some random cleanup 2010-04-29 19:28:18 +02:00
Sebastian Dröge
04a1b1dc48 smpte: Add property for inverting the transition mask
This converts a left-to-right transition to right-to-left or
clock-wise to counter-clock-wise.
2010-04-29 19:28:17 +02:00
Sebastian Dröge
e17954aa6b smptealpha: Correctly detect property changes and update properties 2010-04-29 19:28:17 +02:00
Wim Taymans
754007b344 qcelpdepay: add first version of a QCELP depayloader 2010-04-29 18:07:10 +02:00
Tim-Philipp Müller
f48bc702af flvmux: hide is-live property for release
At the very least it needs a better/less wrong name.

See #613066.
2010-04-26 00:01:19 +01:00
Sebastian Dröge
5a530b19e8 videomixer: Fix byte order for MMX ARGB/AYUV color filling
Fixes bug #616409.
2010-04-22 13:30:55 +02:00
Sebastian Dröge
a27856e6b8 videomixer: Fix AYUV checker/color filling 2010-04-21 17:53:49 +02:00
Sebastian Dröge
3f88dce350 videomixer: Add i387 floating point registers to the clobbered registers list
They are the same as the mm0-mm7 MMX registers and will be overwritten
by the assembly code if gcc doesn't know about the MMX registers.

Note: They're all added to the list of clobbered registers in all cases
and not only when __MMX__ is not defined just to make sure that no other
bugs happen with this code just because some compiler version gets things
wrong.

Fixes bug #614466.
2010-04-19 16:57:19 +02:00
Sebastian Dröge
a904edfaf5 videobox: Use libgstvideo to get the order of RGB 2010-04-19 14:43:41 +02:00
Brian Cameron
f3c032e6ac goom: add edx to clobber list in inline assembly code
mull modifies %edx, so should be mentioned in clobber list.
Fixes crash on Solaris (#615998).
2010-04-17 10:26:25 +01:00
Sebastian Dröge
386169b9fe videobox: Fix I420->I420 copying
Fixes bug #615143.
2010-04-16 15:27:56 +02:00
Sebastian Dröge
e6dd1fc3db videobox: Fix AYUV->I420 copying 2010-04-16 15:27:56 +02:00
Mark Nauwelaerts
e053a89c21 rtph264depay: profile-level-id is an optional parameter
So, if needed, extract the corresponding info from
sprop-parameter-sets.

Based on patch provided by <dxssx at gmail.com>

Fixes #612657.
2010-04-16 12:14:26 +02:00
Edward Hervey
146e50455b videobox: transform_caps : We can only convert AYUV to xRGB
We were previously stating that we could convert AYUV/I420/YV12 to xRGB.
2010-04-14 18:27:52 +02:00
Tim-Philipp Müller
a155deaabf matroskademux, qtdemux: minor code cleanup in avc_level_idc_to_string()
Do the same with slightly fewer LOC.
2010-04-12 15:10:11 +01:00
Sebastian Dröge
37e3d2d9d5 videobox: Fix I420->AYUV copying 2010-04-12 11:43:49 +02:00
Sebastian Dröge
9da4f2906f videobox: Correctly clamp frame/background alphas to [0,255] before writing them 2010-04-12 11:27:40 +02:00
David Schleef
289f69eb84 deinterlace: Only check interlaced flag in sink caps
Fixes #615460.
2010-04-11 13:15:32 -07:00
Stefan Kost
d6e9af2a11 docs: do proper escaping for "%" 2010-04-08 18:05:46 +03:00
Stefan Kost
0e048803b9 rtsp: remove obsolete google extension
This was not build for a while and can be removed.
2010-04-08 17:50:49 +03:00
Stefan Kost
6772badb88 docs: enable the 2 of 65 rtp elements in the docs 2010-04-08 17:19:41 +03:00
Stefan Kost
ddfb2827d1 docs: upd -> udp and voila it shows up in the docs 2010-04-08 16:56:37 +03:00
Stefan Kost
04d9490ca9 docs: fix doc blob syntax 2010-04-08 16:51:27 +03:00
Stefan Kost
054b84359b flvdemux: make debug category static 2010-04-08 14:34:59 +03:00
Stefan Kost
fa09b5d519 flxdemux: rename GstFLVDemux for GstFlvDemux 2010-04-08 14:29:59 +03:00
Stefan Kost
fcc3db73a3 flvdemux: merge flvparse into the demuxer and make function static
No need to hide certain function in the docs. Allows to do more cleanups.
2010-04-08 14:29:59 +03:00
Sebastian Dröge
afed9b959c alpha: Add documentation 2010-04-08 13:14:23 +02:00
Stefan Kost
9967a4112b rtpsession: remove prototype for non existing function
There is no function by that name anywhere.
2010-04-08 14:02:50 +03:00
Sebastian Dröge
4d906b4a0a alphacolor: Improve docs a bit 2010-04-08 12:56:30 +02:00
Stefan Kost
acc742bbc9 matroska-mux: fix last commit
Use a local define for WAVEFORMAT_EX based on the size of the struct + 2 bytes
for the extension size.
2010-04-08 13:29:35 +03:00
Stefan Kost
7e3ccacc2f wavenc: remove internal copy of riff.h and use riff-library instead.
We don't use any function yet, just the structures and defines.
2010-04-08 13:03:43 +03:00
Stefan Kost
0c35e0c4db matroskamux: use riff lib more
Remove BITMAPINFOHEADER and use the one from riff-lib. Also remove the
WAVEFORMATEX_SIZE define and use a sizeof together with the respective struct.
Besides better code reuse this lessens the ununsed symbols in the docs.
2010-04-08 12:57:03 +03:00
Stefan Kost
e7a5ff40bd docs: trim sections file more
Rename some defines and move some itesm to *.c files. Add more items to internal
subsection.
2010-04-08 12:14:07 +03:00
Stefan Kost
43ebe8235f docs: fix xml
The title tag belongs into the refsect2.
2010-04-08 10:30:06 +03:00
Sebastian Dröge
4e277ebe7b videobox: Add support for YV12, including conversion support for I420/AYUV 2010-04-07 17:43:56 +02:00
Sebastian Dröge
b4e3532c1f videobox: Add support for grayscale input/output
This doesn't do any conversion and is the next step to
replacing videocrop by supporting all remaining formats
in passthrough mode.
2010-04-07 17:27:12 +02:00
Sebastian Dröge
02a4a150e8 videobox: Add support for filling the background with red, yellow and white 2010-04-07 16:24:38 +02:00
Sebastian Dröge
a0fd92dfc1 videobox: Add support for direct RGB<->AYUV conversion 2010-04-07 16:12:51 +02:00
Sebastian Dröge
84ce6f2a2b videobox: Fix RGB24 filling 2010-04-07 16:12:51 +02:00
Marco Ballesio
2ff1558a87 h264depay: handle properly STAPs
in rtph264depay.c, lines 577-576, NALU-type 24 (Single-Time Aggregation
Packet) is handled in fall-through as NALU-type 26 (unhandled).

This leads high quality h264 streams such as:

rtsp://stream.yle.mobi/yle/areena/MEDIA_E0342657_p3.mp4

to fail with "NAL unit type 24 not supported yet" (but it's actually
supported), and thus to close any stream which contains STAPs.

The proposed one-liner patch fixes the issue.
Fixes #615051.
2010-04-07 16:17:06 +03:00
Thijs Vermeir
d17ad171c9 build: fix compiler warnings
fix warnings for all plugins that use: setlocale (LC_ALL...
2010-04-07 13:48:12 +02:00
Thijs Vermeir
1e5bb1c300 avi: fix compiler warning 2010-04-07 13:32:09 +02:00
Mark Nauwelaerts
dc09ace2bd matroskademux: restrict resyncing to subtitle tracks
This should prevent skipping audio or video in not so well interleaved
cases.

Fixes #614460.
2010-04-07 12:40:13 +02:00
Arun Raghavan
861311e8f6 qtdemux: Post avg./max. bitrate tags for H.264
This reads the average and maximum bitrates from the 'btrt' atom if
available, and pushes these as tags,

https://bugzilla.gnome.org/show_bug.cgi?id=614927
2010-04-07 11:55:32 +02:00
Sebastian Dröge
3c1940c187 videobox: Fix conversion from 3 byte RGB to ARGB 2010-04-05 17:31:36 +02:00
Sebastian Dröge
687ff84592 videobox: Add support for 3 byte RGB formats and refactor RGB code a bit 2010-04-05 17:08:15 +02:00
Sebastian Dröge
d0ad28ad54 videobox: Add support for all 32 bit RGB formats
...including conversion between them.
2010-04-05 15:52:11 +02:00
Wim Taymans
b84bf10455 rtspsrc: add property to control the buffering method
Add a property to control how the jitterbuffer performs timestamping and
buffering.
2010-04-05 15:26:03 +02:00
André Dieb Martins
5a395846c6 alphacolor: Removing unused variable
Fixes bug #614843.
2010-04-05 10:31:45 +02:00
Thiago Santos
f966ff66f8 qtdemux: Read replaygain peak/gain tags
Make qtdemux read tags replaygain tags that are within '----' atoms.

Fixes #614471
2010-04-02 15:23:51 -03:00
Arun Raghavan
95c6d558f0 matroska: Export h.264 profile and level in caps
This replicates the code in qtdemux to export the h.264 profile and
level in the stream caps.

https://bugzilla.gnome.org/show_bug.cgi?id=614651
2010-04-02 18:51:34 +02:00
Sebastian Dröge
9317ad6fe9 qtdemux: Fix off-by-one introduced in last commit 2010-04-02 18:50:45 +02:00
Arun Raghavan
ccef64be39 qtdemux: Minor refactor of the code
This will make it easier to clump together common code when copying to
mastroskademux.

https://bugzilla.gnome.org/show_bug.cgi?id=614651
2010-04-02 18:49:20 +02:00
Arun Raghavan
d6dcd70b4c qtdemux: Export h.264 level in caps
This exports the h.264 level in the stream caps (as a string) which can
be used to match a decoder, or as metadata.

https://bugzilla.gnome.org/show_bug.cgi?id=614651
2010-04-02 18:48:45 +02:00
Arun Raghavan
503f0988bf qtdemux: Export h.264 profile in caps
This adds the h.264 profile for a given stream into caps. This can
(eventually) be used to select an appropriate decoder and as metadata
for certain applications.

https://bugzilla.gnome.org/show_bug.cgi?id=614651
2010-04-02 18:48:23 +02:00
Mark Nauwelaerts
2d6d2a4d95 flvdemux: remove obsolete reverse playback code path 2010-04-01 10:46:16 +02:00
Mark Nauwelaerts
1c7b1d110b flvdemux: support (pull mode) negative seek rate 2010-04-01 10:46:12 +02:00
Mark Nauwelaerts
d3ae0ef71f flvdemux: also check for segment stop for non-segment-seek 2010-04-01 10:46:10 +02:00
Mark Nauwelaerts
b9f569bfd0 matroskademux: push correctly sized flac header buffers
Fixes #614353.
2010-03-30 16:51:36 +02:00
Tim-Philipp Müller
9e1f5031cc id3demux: fix parsing of unsynced frames with data length indicator
Fixes bug #614158.
2010-03-30 01:54:40 +01:00
Tim-Philipp Müller
d756bab488 build: build plugins and examples in parallel where possible 2010-03-29 11:00:57 +01:00
Tim-Philipp Müller
af5e4d935a qtdemux: extract stream language in more cases
The 16-bit language code can be either a packed ISO-639-2T code
or a 'Macintosh language code'. Handle the latter type of language
codes as well, and map to the matching ISO code. Lastly, fix
language code posting for language #0, which is valid and stands
for 'English'.

Fixes #614001.
2010-03-26 17:02:50 +00:00
Sebastian Dröge
2873c3ad6b videobox: Fix AYUV->I420 frame copying 2010-03-26 13:45:46 +01:00
Sebastian Dröge
3bdd50c93b videobox: Always fill the complete frame if borders should be added
This makes sure that we don't get any gaps between rectangles because
of chroma subsampling for example.
2010-03-26 13:28:53 +01:00
Sebastian Dröge
298f1c3202 videobox: Refactor boxing to reduce code duplication 2010-03-26 13:28:53 +01:00
Sebastian Dröge
2e043908de alpha: Simplify caps transformation 2010-03-26 13:28:53 +01:00
Sebastian Dröge
cd6b4214a6 videobox: Add const qualifier to the source frame data 2010-03-26 13:28:53 +01:00
Mark Nauwelaerts
b1f3e4d0cf matroskademux: only seek when in proper state
... and data structures can be thread-safely accessed.

See #601617.
2010-03-26 11:45:47 +01:00
Mark Nauwelaerts
9157c262ba matroskademux: support (pull mode) negative seek rate 2010-03-26 11:45:41 +01:00
Mark Nauwelaerts
95e38e59a2 matroskademux: track clip duration in segment 2010-03-26 11:45:39 +01:00
Mark Nauwelaerts
6ccffcf5f1 matroskademux: prefer index of video track to perform seeking 2010-03-26 11:45:36 +01:00
Mark Nauwelaerts
d654eeb6de avidemux: fix typo in header validation check 2010-03-25 11:40:20 +01:00
Edward Hervey
66d9dbe49e icydemux: Handle upstream Content-Type.
Allows us to handle ShoutCast TV (NSV) streams.

If the upstream caps have the 'content-type' field set to video/nsv, then
we shortcut the typefinding and set video/x-nsv directly.
2010-03-23 19:48:24 +01:00
Stefan Kost
f1a75adcbc i18n: build fixes: #if -> #ifdef for ENABLE_NLS 2010-03-22 17:26:37 +02:00
Benjamin Otte
382afe983b multifile: Include headers instead fo defining functions 2010-03-21 17:36:28 +01:00
Benjamin Otte
c2846f698b Make goom not use aggregate returns 2010-03-21 17:23:43 +01:00
Benjamin Otte
412cc10314 Add -Wold-style-definition flag
And fix the warnings
2010-03-21 15:17:46 +01:00
Benjamin Otte
3f511ec361 Add -Wwrite-strings to the configure flags
... and fix all warnings
2010-03-21 14:17:47 +01:00
Sebastian Dröge
0f7631f8ec shapewipe: Add support for the remaining ARGB formats
And handle AYUV like ARGB, we need no YUV specific handling.
2010-03-21 11:14:12 +01:00
Sebastian Dröge
b78937aa6f alpha: Add support for RGB and xRGB input 2010-03-20 21:30:58 +01:00
Sebastian Dröge
5bbc7dd114 alpha: Add support for ARGB input 2010-03-20 21:13:23 +01:00
Sebastian Dröge
985ec0260c alpha: Add support for generating ARGB output 2010-03-20 20:46:19 +01:00
Sebastian Dröge
fe4ff4f324 videomixer: Add support for ABGR and RGBA
Now all 4 ARGB variants are supported by videomixer.
2010-03-20 17:32:48 +01:00
Sebastian Dröge
1fdbfb35ff alpha: Move chroma keying parameters into stack variables to prevent multiple pointer dereferences per pixel 2010-03-20 10:26:13 +01:00
Sebastian Dröge
9d9ba5b00e alpha: Move color conversion matrixes into stack variables to speed up processing 2010-03-20 10:20:53 +01:00
Sebastian Dröge
eb7a146b51 alpha: Use correct matrixes to convert chroma keying color to YUV 2010-03-20 10:18:04 +01:00
Sebastian Dröge
b64619dc4e alpha: Add support for different color matrixes 2010-03-19 19:30:32 +01:00
Sebastian Dröge
00b3eb1dfc alpha: Rename and move functions as further preparation for supporting more color formats 2010-03-19 19:30:32 +01:00
Sebastian Dröge
46025bbd8f alpha: Remove some unneeded calculations and instance struct fields
And document the instance struct fields a bit better
2010-03-19 19:30:32 +01:00
Sebastian Dröge
6b0c535e8d alpha: Some preparations for supporting more color formats 2010-03-19 19:30:32 +01:00
Wim Taymans
b019a78ab8 h264pay: fix config-interval property
Use the same units for comparing the elapsed time against the interval.

Fixes #613013
2010-03-19 17:13:07 +01:00
Sebastian Dröge
e3584bf52c alphacolor: Implement color-matrix support and use integer arithmetic only
Alphacolor now uses the correct matrixes for SDTV and HDTV and can
convert between them.
2010-03-19 16:45:07 +01:00
Wim Taymans
ef804589ca rtsp: use GType from -base and bump required version
Use the transport flags GType from -base and bump the required version of -base
because of this.
2010-03-19 15:03:43 +01:00
Tim-Philipp Müller
553e0295b2 apetag: minor Makefile.am surgery
-I$(top_srcdir)/gst-libs/ is already in $(GST_CFLAGS)
2010-03-19 00:05:19 +00:00
Tim-Philipp Müller
073201b329 build: Makefile.am cleanups
Mostly add $(GST_BASE_CFLAGS) where it was missing, but also fix up
order of flags and libs if needed (see docs/random/moving-plugins).
2010-03-18 21:34:24 +00:00
Sebastian Dröge
dad4e96672 alpha: Remove remaining floating point arithmetic when processing a pixel 2010-03-18 19:01:47 +01:00
Sebastian Dröge
f7ba12513e alpha: Refactor chroma keying into a single function
This reduces code duplication once we add support for more color formats.
2010-03-18 19:01:47 +01:00
Benjamin Otte
cccfeaa59c gst_element_class_set_details => gst_element_class_set_details_simple 2010-03-18 14:32:00 +01:00
Benjamin Otte
bc1b65bee3 Remove oldcore directory
The elements have been unused for ages and all important ones have been
replaced or copied elsewhere.
2010-03-18 14:32:00 +01:00
Benjamin Otte
46fdd8b624 avi: Remove old file
Seems to be leftover from the 0.4 days or so.
2010-03-18 14:32:00 +01:00
Mark Nauwelaerts
fd5164af96 rtph264depay: do not call _push_ts with unneeded (and wrong) time parameter
Fixes #613206.
2010-03-18 12:43:14 +01:00
Mark Nauwelaerts
abd9c0c657 avidemux: fix typo in header validation check 2010-03-18 11:37:12 +01:00
Jan Urbański
7d32f46b7a flvmux: put more information in the metadata
Additional tags are: audiocodecid, videocodecid framerate and (in the
non-live case) filesize.

While at it, fix index rewriting to update duration and filesize
values even if the index is empty.

Fixes #613094.
2010-03-18 10:00:58 +01:00
Benjamin Otte
c76e72a7f5 Add -Wundef to configure flags
and fix the resulting warnings
2010-03-17 21:33:28 +01:00
Benjamin Otte
1055aaa9cb Add -Wredundant-decls warning flag
Also fix compile issues
2010-03-17 19:35:10 +01:00
Benjamin Otte
18bc896605 Fix warnings in experimental plugins, too 2010-03-17 18:49:11 +01:00
Benjamin Otte
3342b1679e Add -Wmissing-declarations -Wmissing-prototypes warning flags
And fix all the warnings.
2010-03-17 18:23:28 +01:00
Wim Taymans
7e363149f3 mp4gdepay: improve constantDuration guessing
When no constantDuration has been given in the caps, try to derive one from the
timestamp difference between packets. Also keep doing this for each packet
because some broken streams might simply provide wrong timestamps.
2010-03-17 16:27:13 +01:00
Jan Urbański
dcb5afd351 flvmux: Put width and height in the metadata
Some players use that info to scale their display.

See #613094.
2010-03-17 09:28:03 +01:00
Jan Urbański
96de71d74b flvmux: don't put timestamps larger than G_MAXINT32 in the FLV tags
For non-live input respond by pushing EOS, for live wrap the
timestamps every G_MAXINT32 miliseconds.

Fixes #613003.
2010-03-17 09:24:49 +01:00
Sebastian Dröge
f961f884b6 alphacolor: Fix RGBA<->AYUV conversion 2010-03-16 21:23:11 +01:00
Sebastian Dröge
117e7401c5 alpha: Remove redundant instance field 2010-03-16 21:16:26 +01:00
Sebastian Dröge
9e4ebba45e alpha: Protect property values from changes during frame processing 2010-03-16 21:10:08 +01:00
Jan Urbański
a99ee96172 flvmux: Always put a duration tag in the metadata
Some Flash players (for instance JW Player) always expect a duration
tag, otherwise they don't start playback.

If duration can be queried from the sink pads or is provided as a tag,
use it. Otherwise try to determine it from the last seen timestamp of
the sink pads after EOS and rewrite it in the header before writing
the index.
2010-03-16 15:12:46 +01:00
Jan Urbański
ef8f7614ff flvmux: Remove the send_codec_data field from GstFlvPad
That field is not used anymore after the changes in
9fdecbc1c1.
2010-03-16 15:12:46 +01:00
Wim Taymans
efbdecd0ac multiudpsink: get family of external sockets too
Get the family of externally configured sockets so that we can configure it
correctly.
2010-03-16 13:53:26 +01:00
Sebastian Dröge
3197490c2f alphacolor: Add support for the remaining ARGB formats 2010-03-15 20:37:51 +01:00
Sebastian Dröge
d6379362e5 alphacolor: Simplify ARGB<->AYUV conversions by code generation macros 2010-03-15 19:16:18 +01:00
Sebastian Dröge
322a8f5e6d alpha: Minor cleanups and move declarations into a separate header file 2010-03-15 19:07:28 +01:00
Sebastian Dröge
6f80d41c04 alpha: Use GstVideoFilter as base class for automatic QoS support 2010-03-15 18:58:51 +01:00
Sebastian Dröge
c01cf035c1 alphacolor: Add support for inplace conversions from AYUV to ARGB 2010-03-15 18:52:39 +01:00
Sebastian Dröge
8cbb9608f9 alphacolor: Use libgstvideo for caps parsing 2010-03-15 18:22:21 +01:00
Sebastian Dröge
751b293df8 alphacolor: Use GstVideoFilter as base class for automatic QoS support 2010-03-15 18:09:55 +01:00
Sebastian Dröge
e46f0261c8 alphacolor: Some minor cleanup 2010-03-15 18:07:29 +01:00
Jan Urbański
c69c5cb0d7 flvmux: Correctly mark buffers as delta units
Mark video interframes, video codec data buffers and audio buffers (if
it's not an audio-only stream) as delta units.
2010-03-15 13:54:39 +01:00
Jan Urbański
9fdecbc1c1 flvmux: Support streamheaders
Put the FLV header, the metadata tag and (if present) codec
information in the streamheader to allow the muxer to be used for
streaming.
2010-03-15 13:53:53 +01:00
Jan Urbański
7deee29d2c flvmux: Preallocate index space and fill it after finishing output
Make the index appear at the beginning of the file, which is what most
players are expecting.

Fixes #601236.
2010-03-15 13:52:03 +01:00
Sebastian Dröge
7c74f7d525 flvmux: Minor coding style fixes and cleanup 2010-03-15 13:47:13 +01:00
Jan Urbański
54a8237d62 flvmux: Add a is-live property
If it is set, the muxer will not write the index. Defaults to false.
2010-03-15 13:46:09 +01:00
Jan Urbański
c9bb3edd6f flvmux: Only put valid seek points in the index
For files containing video only video keyframes are valid points to
which a player can seek. For audio-only files any tag start is a valid
seek point.

See #601236.
2010-03-15 13:45:21 +01:00
Jan Urbański
b21c5c9015 flvmux: Fix index building to make entries point to tag's start offset
Previous coding was wrongly incrementing the total byte count before
adding an index entry.
2010-03-15 13:44:14 +01:00
Wim Taymans
ba6dbaecfc rtspsrc: don't forget to send keepalive messages
When we operate in TCP mode, still send keepalive messages when we
need to.

Fixes #612696
2010-03-15 11:38:23 +01:00
Thiago Santos
5efda5caf7 qtdemux: add XMP parsing support
Use xmp helpers to parse XMP metadata in udta atom.

Fixes #609539
2010-03-11 19:04:49 -03:00
Michael Smith
5b357ce22e udp: fix compilation errors on non-windows. 2010-03-11 12:32:56 -08:00
Andoni Morales Alastruey
7f980d28aa multiudpsink: avoid getting the socket family using getsockname() 2010-03-11 10:33:10 -08:00
Edward Hervey
32498746ad qtdemux: Fix print statements for pointer differences.
This fixes it for both 32 and 64 bit
2010-03-11 17:28:47 +01:00
Edward Hervey
8d794e6a9f qtdemux: Fix unitialized variables 2010-03-11 17:28:35 +01:00
Edward Hervey
6dfcee8fdb flvdemux: Fix printf formatting for macosx 2010-03-11 17:04:41 +01:00
Edward Hervey
8e0a8b30b8 flvdemux: Fix unitialized variables 2010-03-11 17:04:41 +01:00
Edward Hervey
c4d55cf782 avidemux: Fix unitialized variable. 2010-03-11 17:04:41 +01:00
Edward Hervey
95d087ed77 flvparse: Make script tag parsing more flexible.
* The nb_elements for arrays is just an indication, we can therefore ignore
  it and carry on parsing metadata items until we reach the end marker.
* If type == 3, then the script tag contains a list of object followed
  by the end marker.

Refactor code slightly to handle both cases

https://bugzilla.gnome.org/show_bug.cgi?id=610447
2010-03-11 17:04:41 +01:00
Mark Nauwelaerts
c007d8535c avidemux: ignore stream with invalid header time metadata 2010-03-11 15:04:19 +01:00
Thiago Santos
145b3a3079 qtdemux: Set stream-format=raw on AAC caps
Set stream-format=raw for AAC caps, as that is the
expected AAC format to be in this container family.

Fixes #566250
2010-03-11 09:38:32 -03:00
Wim Taymans
d29fa60f97 rtspsrc: check for NULL before doing strcmp
Check the connection and address type for NULL before doing strcmp and
crashing.

Fixes #612553
2010-03-11 12:56:11 +01:00
Stefan Kost
0a43c86723 build: include stdlib.h for atoi() 2010-03-11 11:09:55 +02:00
Stefan Kost
f405f9c775 audiopanorama: move invariant check out of the inner loop
Improves performance for simple method.
2010-03-11 10:35:05 +02:00
Benjamin Otte
21f66635e8 Update for recent changes to common submodule
This just replaces every "$ERROR_CFLAGS" usage with a usage of
"$WARNING_CFLAGS $ERROR_CFLAGS" to get the same functionality as
previously.

Actually using that separation will happen later.
2010-03-10 21:53:51 +01:00
Andoni Morales Alastruey
2eb651d46f multiudpsink: Reset windows error code after getting corresponding error message. 2010-03-10 10:51:28 -08:00
Michael Smith
c3b0509beb avimux: put the codec_data blob into the actual data for MPEG4 video,
to match other implementations in the wild.
2010-03-10 10:40:47 -08:00
Mark Nauwelaerts
1a60c7b040 avidemux: push mode; also report seekable without an element index
... since recent code also seeks around to obtain required data
from avi index.
2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
3a1a140e2d avidemux: add some check and standardized seek event handling in push mode 2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
d90aed1857 avidemux: fix offset handling in push mode seeking
Push mode seeking uses same index data as pull mode, and stores
offset to data in chunk, whereas push mode operates in chunks,
and as such needs offset consistently corresponding to chunk headers.
Also fix determining best matching stream for incoming newsegment event,
as well as setting some stream state accordingly.
2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
1dfcc3227c flvdemux: conduct index scan in task thread
... rather than in seeking thread, which might then occupy mainloop
for some time with possible unresponsive side-effects.
2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
f23fb39bc7 flvdemux: avoid indefinite index growth
That is, check for and do not add an index entry that has already
been added.
2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
f79de81bb4 flvdemux: also collect index info on-the-fly in pull mode 2010-03-10 11:48:07 +01:00
Mark Nauwelaerts
86a1aec2c0 flvdemux: incrementally build index in pull mode
Scan for needed part upon a seek as opposed to doing a complete scan
at startup, which may take some time depending on file and/or platform.
Also accept index metadata in pull mode and peek for some metadata
at the end of the file when deemed appropriate.
2010-03-10 11:48:06 +01:00
Mark Nauwelaerts
66fabd8bfd flvdemux: some more variable cleanup 2010-03-10 11:48:06 +01:00
Mark Nauwelaerts
122daaf6af flvdemux: refactor adding index entry 2010-03-10 11:48:06 +01:00
Mark Nauwelaerts
6aa4d5df2d flvdemux: fix setting DELTA_UNIT flag on outgoing buffers
... which should not depend on having index available or not.
Also refactor resulting collapsed code.
2010-03-10 11:48:06 +01:00
Mark Nauwelaerts
561a506822 qtdemux: avoid erroneous codec-data overriding of stsd information 2010-03-10 11:48:06 +01:00
Wim Taymans
821096c4f1 rtspsrc: parse connection information
Parse the connection information from the SDP and use it to figure out if we are
dealing with ipv4 or ipv6 connections.
2010-03-10 11:28:22 +01:00
Wim Taymans
8eb5c2c794 rtspsrc: require a destination for multicast
When setting up the multicast sockets, we need a destination address to listen
on or else we error.
2010-03-10 11:21:20 +01:00
Wim Taymans
574447b092 rtspsrc: handle ipv6 listening ports when needed
Add some code to make udpsrc listen on an ipv6 address when needed. The
detection of IPV6 is not yet implemented.
2010-03-10 11:21:20 +01:00
Wim Taymans
455f53c896 udp: use uri parsing code
Use the uri parsing helper functions to manage the host and port pairs. This
adds support for IPV6.
2010-03-10 11:21:19 +01:00
Wim Taymans
14ae2080d2 udpnetutils: add helper functions for udp uri handling
Add some helpers to parse udp uris. Make sure IPV6 is supported too.
2010-03-10 11:21:19 +01:00
Olivier Crête
a6dfe96169 rtpsession: Make it possible to favor new sources in case of SSRC conflict
Add a "favor-new" property that tells the session to favor new sources when
there is a SSRC conflict. This is useful for SIP calls and other such cases
where a remote loop is extremely unlikely.

Fixes #607615
2010-03-10 11:21:19 +01:00
Olivier Crête
f336ea283f rtpsession: Move SSRC conflicts lists into RTPSource
We will also need to track SSRC conflicts in remote sources.

See #607615
2010-03-10 11:21:18 +01:00
Wim Taymans
38f2b4735d rtspsrc: send keep alive when paused
When we are paused, send keep alive messages to the server so that our session
doesn't time out when we go back to playing later.
2010-03-10 11:21:18 +01:00
David Schleef
acb6ebbc9a multifilesink: Add key-frame option to next-file
This allows segmenting of MPEG-TS files at key frames, which is
exactly what is needed for Apple's HTTP streaming.
2010-03-09 13:52:30 -08:00
Sebastian Dröge
42ff597f41 videobox: Fix autocropping for odd width/height differences 2010-03-09 21:03:18 +00:00
Sebastian Dröge
1819fcb4a5 videobox: Use libgstvideo for format specific stuff 2010-03-09 21:03:18 +00:00
Sebastian Dröge
79e720052a audiofx: Sync properties to the stream time 2010-03-09 21:03:18 +00:00
Sebastian Dröge
4381b9296f videobox: Make properties controllable 2010-03-09 21:03:18 +00:00
Sebastian Dröge
7dcb294b54 videobox: Some cleanup 2010-03-09 21:03:18 +00:00
Sebastian Dröge
f8b7308c21 effectv: Use controller where possible, optimize a bit and make properties threadsafe 2010-03-09 21:03:18 +00:00
Benjamin Otte
b5a3b9cb1c flx: fix description
It's video, not audio
2010-03-09 19:15:07 +01:00
Tim-Philipp Müller
8127670c86 Revert "Add 4:2:2, 4:1:1, and 4:4:4 output support"
This reverts commit 637c26f61a.
2010-03-09 00:09:34 +00:00
Wim Taymans
66709a7a68 rtspsrc: configure multicast correctly
Take the transport destination for multicast.
Disable loop and autojoin for multicast on the udpsinks.
2010-03-08 17:48:46 +01:00
Wim Taymans
83a0c73dc0 multicast: always configure loop and ttl
Also configure TTL and loop parameters when we add a client after initializing
the sender.
2010-03-08 17:48:37 +01:00
Wim Taymans
cabe01ef95 Revert "rtph263depay: baseclass handles timestamps for us"
This reverts commit 564581e1b8.

If we don't call push_ts, there will be no timestamp at all on the outgoing
buffer.

Fixes #612154
2010-03-08 17:48:27 +01:00
Benjamin M. Schwartz
637c26f61a Add 4:2:2, 4:1:1, and 4:4:4 output support 2010-03-08 17:48:11 +01:00
Wim Taymans
529f443a61 rtpsource: use payload size to estimate bitrate
Use the length of the payload for estimating the receiver bitrate so that it
matches the calculations done on the sender side. Together with the number of
packets one can scale the bitrate with the header overhead of the lower
transport.
2010-03-08 17:48:04 +01:00
Wim Taymans
c971d1a9ab rtpsource: refactor bitrate estimation
Don't reuse the same variable we need for stats for the bitrate estimation
because we're updating it.
Refactor the bitrate estimation code so that both sender and receivers use the
same code path.
2010-03-08 17:48:00 +01:00
Tristan Matthews
a0a6d4ff3b added bitrate estimation to receiver-side stats, fixes #611213 2010-03-08 17:47:55 +01:00
Wim Taymans
968c981e74 h263pay: fix typo in debug 2010-03-08 17:47:14 +01:00
Edward Hervey
869ff4263f matroskademux: Make sure we don't send invalid newsegments
Fixes #611501
2010-03-02 21:20:45 +01:00
Edward Hervey
be186bd089 matroskademux: Mark streams as being EOS at the right time.
This allows us to stop streaming only when all streams have gone past the
segment.stop and not before.

Fixes #611501
2010-03-02 21:20:31 +01:00
Sebastian Dröge
ad71d43f52 matroskademux: Advance sparse streams only as much as required to keep the gap smaller than 500ms
Changing it to the newest timestamp that was ever pushed will
increase the segment start in 500ms jumps, which could be just
after the next sparse stream buffer. E.g.

Video at 1.0s, sparse stream at 0.5s would jump the
sparse stream to 1.0s. Now a new sparse stream buffer could
appear that has a timestamp of 0.9s and this would be
dropped for no good reason because of bad luck.
2010-02-27 12:20:06 +01:00
Alessandro Decina
49b2a94644 Make sure FLUSH_STOP is sent so not to leave downstream flushing. 2010-02-24 02:05:49 +01:00
Sebastian Dröge
bcd06ea527 rtpjitterbuffer: Reset skew detection after instantiating the jitterbuffer
...not only when going to READY. This sets high_level and friends to
a more useful value.
2010-02-23 17:24:03 +01:00
Sebastian Dröge
0a12e69024 rtpjitterbuffer: Return 100 if high-level is 0 instead of dividing by zero 2010-02-23 17:20:02 +01:00
Wim Taymans
3a09d334a0 rtpmp4gdepay: avoid division by 0
Avoid a division by 0 when no constantDuration was specified and when out two
timestamps are equal.

Fixes #610265
2010-02-23 12:58:03 +01:00
Wim Taymans
e43839eae9 dvdepay: don't output frames until we have a header
Wait for the complete first 6 header DIF packets before outputting a frame.
Decoders need this info to correctly decode the data.

Fixes #610556
2010-02-23 12:54:36 +01:00
Tim-Philipp Müller
8c46cce875 flvdemux: minor micro-optimisation
We know these values don't change during the loop, but the compiler
doesn't and has to re-check them for every iteration.
2010-02-19 12:13:08 +00:00
Tim-Philipp Müller
ec9add84a8 flvdemux: remove static keyword from variables that shouldn't be static
Multiple flvparse/flvdemux instances should be able to operate without
trampling over each other by accidentally re-using the same (static)
variables. (Spotted by Mark Nauwelaerts)
2010-02-19 12:13:07 +00:00
Tim-Philipp Müller
07fa73f199 docs: add Since: markers for new jitterbuffer properties 2010-02-19 12:13:07 +00:00
Robert Swain
8d801f41d8 qtdemux: Fix off-by-one logic error in frame rate cap regression commit 2010-02-18 18:20:24 +01:00
Thiago Santos
f1c61e1d84 qtdemux: Use the correct duration when comparing segments
Do not confuse QtDemuxSegments with GstSegments when
comparing the total file duration with the segment duration

Fixes #610296
2010-02-18 07:53:34 -03:00
Robert Swain
2723de585e qtdemux: add durations modulo 1<<32
For calculating the durations of each sample, we are supposed to add each
duration modulo 1<<32 so make the elapsed time counter a uint32.

Fixes #610280
2010-02-17 18:06:29 +01:00
Anders Skargren
6a877b2e6d multipartdemux: improve header mime-type parsing
Make the handing of the mime type within the "boundary" a bit less naive.
The standard for MIME allows parameters to follow the "type" / "subtype"
clause separated from the mime type by ';'.

Modifies the multipartdemuxer's header parsing so it doesnt assume
the whole line after "content-type:" is the mime type and thus makes it a bit
more resilient to finding absurd mime types in the case where parameters are
added.

Fixes #604711
2010-02-16 21:05:24 +01:00
Wim Taymans
a0b651bf5b rtspsrc: avoid stopping NULL tasks
Check the task for NULL, it could be paused and set to NULL before.
2010-02-16 19:54:32 +01:00
Mark Nauwelaerts
d14685eb08 qtdemux: fix ALAC codec-data handling
ALAC codec-data apparently comes in (at least) two flavours (mov, mp4),
so use atom based parsing to retrieve required data, rather than
aiming for a specific offset.

See also #580731.
2010-02-16 16:22:28 +01:00
Mark Nauwelaerts
105d8c925b qtdemux: fix debug message 2010-02-16 16:09:36 +01:00
Mark Nauwelaerts
58d84a993c qtdemux: handle signed values in 3GPP location tag 2010-02-16 16:09:26 +01:00
Mark Nauwelaerts
87e80aab57 rtspsrc: fix typo in debug message 2010-02-16 16:07:21 +01:00
Mark Nauwelaerts
172c0c6a6a avidemux: reset some more stream state after seek
In particular, fixes non-flushing seek.
2010-02-16 15:03:59 +01:00
Robert Swain
e2f5409d40 qtdemux: Fix frame rate cap regression
Look for a non-zero min_duration during initialisation to avoid
incorrect frame rate caps.
2010-02-16 14:44:11 +01:00
Brian Cameron
a45b351ddf matroska: fix GST_ELEMENT_ERROR usage
Fixes #610053.
2010-02-16 01:40:19 +00:00
Wim Taymans
9d40d60960 rtpbin: remove use of ntp_ns_base 2010-02-15 21:36:29 +01:00
Wim Taymans
5a4ecc9da1 rtpbin: remove more ntpnstime and cleanups
Remove some code where we pass ntpnstime around, we can do most things with the
running_time just fine.
Rename a variable in the ArrivalStats struct so that it's clear that this is the
current system time.
2010-02-15 21:36:29 +01:00
Wim Taymans
74241e549f rtpsource: use running_time for jitter
Use the running_time to calculate the jitter instead of the ntp time. Part of
the plan to get rid of ntpnsbase.
2010-02-15 21:36:29 +01:00
Wim Taymans
83cb1aecc8 rtpbin: change how NTP time is calculated in RTCP
Don't calculate the NTP time based on the running_time of the pipeline but from
the systemclock. This allows us to generate more accurate NTP timestamps in case
the systemclock is synchronized with NTP or similar.
2010-02-15 21:36:29 +01:00
Tim-Philipp Müller
0233257612 matroska: fix printf format string 2010-02-15 10:33:02 +00:00
Tim-Philipp Müller
63c86ac3d8 raw1394, matroska, rtpmanager: remove padding from structures
None of these element and class structures are in public headers,
so don't need padding.
2010-02-15 00:50:10 +00:00
Edward Hervey
fa0e3184dd flvdemux: Audio tags without any content are valid.
We silently ignore them instead of erroring out.
2010-02-13 18:18:42 +01:00
Edward Hervey
817911664e flvdemux: Fix GST_CLOCK_DIFF usage.
It was previously checking for DIFF(a, b > 6 * GST_SECOND) instead of
the proper DIFF(a,b) > 6 * GST_SECOND
2010-02-13 18:07:50 +01:00
Edward Hervey
d263119589 flvdemux: Don't forget to reset the indexed variable when cleaning up 2010-02-13 16:27:07 +01:00
Edward Hervey
0dd06da5e8 flvdemux: Speedup GstIndex usage
Used the _add_associationv variant of GstIndex since we know how many
associations we're adding. Trims up to 50% from index generation time.

Note : It would be great if the index could be generated on the fly or
on request as opposed to being fully created at startup.
2010-02-13 14:57:59 +01:00
Wim Taymans
7f08081016 jitterbuffer: don't resync to invalid timestamps
If we detect backward timestamps on the server, don't try to resync when we
don't have an input timestamp (such as when using RTSP over TCP) instead, do
nothing but assume the timestamp was ok, it will correct itself when time goes
forwards.
2010-02-12 19:32:27 +01:00
Wim Taymans
d344754f03 rtpbin: fix typo 2010-02-12 17:22:56 +01:00
Wim Taymans
772eca5aff jitterbuffer: start out active and not buffering
There is no need to set the latency in the jittebuffer in _init, we will set
that later when going to PAUSED.
Set the jitterbuffer active and not buffering when starting.
2010-02-12 17:22:56 +01:00
Wim Taymans
8bbfd94c25 rtpbin: more buffering work
When deactivating jitterbuffers when the buffering starts, keep the current
percent of the jitterbuffer and also set the jitterbuffer in the buffering state
so that we know when it's filled again.
Add property to get the buffering percentage of the jitterbuffer.
2010-02-12 17:22:56 +01:00
Wim Taymans
e6e287cdcc rtpjitterbuffer: adjust latency in buffer mode
When we are in buffer mode, adjust the buffering low/high thresholds based on
the total configured latency. If we don't and there is a huge queue or element
with a big latency downstream we might drain the complete queue immediately and
start buffering again.
2010-02-12 17:22:55 +01:00
Wim Taymans
ab73603031 jitterbuffer: add ts-offset to timestamp
Add the ts-offset to the buffer timestamp to get the final output timestamp of
the buffer.
2010-02-12 17:22:55 +01:00
Wim Taymans
74a3be350d rtpbin: do more accurate buffer offsets
Return the next timestamp in the jitterbuffer.
Use the min-timestamp of the jitterbuffers to calculate an offset so that the
next timestamp is pushed with a timestamp equal to running_time.
Start producing timestamps from 0 in the buffering case too.
2010-02-12 17:22:55 +01:00
Wim Taymans
3efcc0fbc1 rtpbin: only start buffering when < 100%
Only start buffering when the percentage message is < 100 %.
2010-02-12 17:22:55 +01:00
Wim Taymans
0348ebe651 rtpbin: keep track of elapsed pause time
Keep track of the time we spend pausing the jitterbuffers when they were
buffering and distribute this elapsed time to the jitterbuffers.
Also keep the latency in nanosecond precision.
2010-02-12 17:22:54 +01:00
Wim Taymans
ecf6ed8fc1 jitterbuffer: keep track of offset
Keep track of an outgoing offset that we add to each outgoing buffer to
compensate for PAUSE when buffering.
Adjust the offset when activating.
2010-02-12 17:22:54 +01:00
Wim Taymans
048e5b6fbe jitterbuffer: report level using high watermark 2010-02-12 17:22:54 +01:00
Wim Taymans
8d814f3782 rtpbin: pass running_time to jitterbuffer pause
Pass the current running time to the jitterbuffer when pausing or resuming so
that it calculate the right offsets.
Small cleanups and comments.
Set the default rtspsrc latency to 2 seconds.
2010-02-12 17:22:54 +01:00
Wim Taymans
bf697b12e3 rtpbin: add some comments 2010-02-12 17:22:53 +01:00
Wim Taymans
20a27a545a rtpbin: more buffering updates
Add signal to pause the jitterbuffer. This will be emitted from gstrtpbin when
one of the jitterbuffers is buffering.
Make rtpbin collect the buffering messages and post a new buffering message with
the min value.
Remove the stats callback from jitterbuffer but pass a percent integer to
functions that affect the buffering state of the jitterbuffer. This allows us
then to post buffering messages from outside of the jitterbuffer lock.
2010-02-12 17:22:53 +01:00
Wim Taymans
a5b9d3f917 rtpbin: propagate buffer-mode property
Propagate buffer-mode property to the jitterbuffers.
Intercept BUFFERING messages in rtpbin
2010-02-12 17:22:53 +01:00
Wim Taymans
d3db9574a9 jitterbuffer: do more buffering implementation
Add callback for buffering stats.
Configure the latency in the jitterbuffer instead of passing it with _insert.
Calculate buffering levels when pushing and popping
Post buffering messages.
2010-02-12 17:22:52 +01:00
Wim Taymans
aeacbfed3e jitterbuffer: flesh out buffering mode some more
Add a buffering state to the jitterbuffer and wait until buffering ends before
pushing out packets.
2010-02-12 17:22:52 +01:00
Wim Taymans
56b29c9a6b jitterbuffer: hook up the mode property
Expose a mode property on the jitterbuffer.
Fix the case where timestamps are -1 in the check for outgoing timestamps.
2010-02-12 17:22:52 +01:00
Wim Taymans
be4517a6b8 jitterbuffer: add buffering mode options
Add getters and setters for different buffering modes that the jitterbuffer will
support. Default to the current slave mode.
2010-02-12 17:22:52 +01:00
Robert Swain
bf9d8dbbdc flvdemux: Obtain the index from the end of an flv file in push mode
Allows for better support of seeking in flv files when in push mode
2010-02-12 16:25:44 +01:00
Robert Swain
dd23397b4f avidemux: Drop video frames up to the desired keyframe after a seek
The audio packets in AVI are generally muxed ~0.5s before the
corresponding video packet. This changes causes downstream to only
receive packets with roughly corresponding timestamps.
2010-02-12 15:56:18 +01:00
Wim Taymans
1175d0698c avidemux: more DISCONT handling
Add some debug in the DISCONT handling code.
When we receive a DISCONT in push mode, mark all streams as DISCONT.
2010-02-12 15:56:18 +01:00
Robert Swain
0011c9b0da avidemux: Fix _handle_seek_push () and new segement behaviour 2010-02-12 15:56:18 +01:00
Wim Taymans
2ce79998a1 avidemux: cleanups
Make sure we reset the demuxer correctly wrt parsing the index.
Don't leak pending seek events.
Rename some methods to reflect what they do and to avoid confusion with similar
method names.
Try to make the seeking threadsafe by protecting the setup code with a lock.
Make sure we post errors when a seek fails.
2010-02-12 15:56:18 +01:00
Wim Taymans
e6cc145352 avidemux: rename some variables
seek_event -> seg_event
event_seek -> seek_event
2010-02-12 15:56:18 +01:00
Wim Taymans
784d888cb2 avidemux: take fallback duration from avih
When we have not parsed any indexes yet, we don't know the length of the streams
and we must take the length given in the avih as a fallback.
Avoid some typechecking.
2010-02-12 15:56:18 +01:00
Robert Swain
3e1ed0c727 avidemux: Push mode seeking support 2010-02-12 15:56:18 +01:00
Wim Taymans
c2dfc94b1d rtspsrc: cleanup properties
Use more default constants.
Use static strings param flag.
Init properties explicitly instead of letting gobject do this.
2010-02-12 15:20:07 +01:00
Stefan Kost
f003fef3ad taginject: fix multi-value tag example
We need to use {} to specify a list.
2010-02-12 15:35:30 +02:00
Stefan Kost
ef343d8ad9 avi,wav: also handle JUNQ chunk in addition to JUNK 2010-02-12 15:35:30 +02:00
Wim Taymans
ad6d4540a7 rtppay: don't ignore result from set_outcaps
set_outcaps can fail and we need to propagate the result upstream.
2010-02-12 13:53:58 +01:00
Wim Taymans
1f9c39da2a flvparse: fix confusing debug messages 2010-02-12 13:53:58 +01:00
Wim Taymans
99a581215f jitterbuffer: add some more debug info 2010-02-12 13:53:57 +01:00
Wim Taymans
caec8d9837 videomixer: fix timestamp problems
When the pad with the highest framerate goes EOS, instead of not timestamping
output buffers, intepollate timestamps and durations from the last seen ones.

Fixes #608026
2010-02-12 13:53:57 +01:00
Sebastian Dröge
919e93f1b2 [MOVED FROM BAD 29/29] shapewipe: Preserve the input color values in all cases 2010-02-12 11:12:35 +01:00
Sebastian Dröge
e9f9f4cfd4 [MOVED FROM BAD 28/29] shapewipe: Scale mask alpha values by the source alpha values 2010-02-12 11:12:35 +01:00
Sebastian Dröge
8786380c9a [MOVED FROM BAD 27/29] shapewipe: Fix ARGB processing 2010-02-12 11:12:35 +01:00
Sebastian Dröge
6e086c8e2f [MOVED FROM BAD 25/29] shapewipe: Improve/add debug output 2010-02-12 11:12:34 +01:00
Sebastian Dröge
4d038dc516 [MOVED FROM BAD 24/29] shapewipe: Always hold the mask mutex before signalling the GCond 2010-02-12 11:12:34 +01:00
Sebastian Dröge
e2ab650079 [MOVED FROM BAD 23/29] shapewipe: Move chain function error cases at the end of the function and add useful debug output 2010-02-12 11:12:34 +01:00
Sebastian Dröge
11a16e95e2 [MOVED FROM BAD 22/29] shapewipe: Fix race condition during shutdown that can lead to a deadlock 2010-02-12 11:12:34 +01:00
Sebastian Dröge
69b9c76dc8 [MOVED FROM BAD 21/29] shapewipe: Drop mask buffer on FLUSH events 2010-02-12 11:12:34 +01:00
Sebastian Dröge
104471f517 [MOVED FROM BAD 20/29] shapewipe: Update copyright year 2010-02-12 11:12:34 +01:00
Sebastian Dröge
a089677871 [MOVED FROM BAD 19/29] shapewipe: Don't reset properties when going PAUSED->READY
Also use defines for the default values of the properties.
2010-02-12 11:12:34 +01:00
Sebastian Dröge
89605b416b [MOVED FROM BAD 18/29] shapewipe: Replace floating point arithmetic in the inner processing loops by integer arithmetic 2010-02-12 11:12:34 +01:00
Sebastian Dröge
5f2e64e3a0 [MOVED FROM BAD 17/29] shapewipe: Don't do pointer dereferences in the processing loop
Lowers the time taken there in my testcase from 6.91% to 6.20%
as measured by callgrind.
2010-02-12 11:12:34 +01:00
Sebastian Dröge
41eed9dcca [MOVED FROM BAD 16/29] shapewipe: Add BGRA support for video in/output 2010-02-12 11:12:33 +01:00
Sebastian Dröge
9716cb9935 [MOVED FROM BAD 15/29] shapewipe: Add support for ARGB video input/output 2010-02-12 11:12:33 +01:00
Sebastian Dröge
76a21dec7f [MOVED FROM BAD 14/29] shapewipe: Correctly handle 0/1 fps 2010-02-12 11:12:33 +01:00
Sebastian Dröge
809d15428c [MOVED FROM BAD 13/29] shapewipe: Implement basic QoS
This change is based on Tim's QoS implementation
for jpegdec.
2010-02-12 11:12:33 +01:00
Sebastian Dröge
5fba6963ff [MOVED FROM BAD 12/29] shapewipe: Proxy queries on the video pads to the correct peers 2010-02-12 11:12:33 +01:00
Sebastian Dröge
48dd557fea [MOVED FROM BAD 11/29] shapewipe: Proxy bufferalloc on the video sinkpad 2010-02-12 11:12:33 +01:00
Sebastian Dröge
91668db57c [MOVED FROM BAD 10/29] shapewipe: Try to work inplace if possible
This saves one new, large allocation per frame for the
most cases.
2010-02-12 11:12:33 +01:00
Sebastian Dröge
e5d41ba407 [MOVED FROM BAD 08/29] shapewipe: Fix some issues that were exposed by the new unit test 2010-02-12 11:12:33 +01:00
Sebastian Dröge
e207e7b8a3 [MOVED FROM BAD 06/29] shapewipe: Add documentation and integrate into the build system 2010-02-12 11:12:32 +01:00
Sebastian Dröge
19a0764537 [MOVED FROM BAD 05/29] shapewipe: Adjust border to still have everything transparent at 1.0 and the other way around 2010-02-12 11:12:32 +01:00
Sebastian Dröge
88f4bd4efd [MOVED FROM BAD 04/29] shapewipe: Divide the border value by two, otherwise we use a twice a wide border 2010-02-12 11:12:32 +01:00
Sebastian Dröge
c0f9553707 [MOVED FROM BAD 03/29] shapewipe: Add border property to allow smooth borders
...and use a border of 0.01 in the example application.
2010-02-12 11:12:32 +01:00
Sebastian Dröge
12a27a46f9 [MOVED FROM BAD 01/29] shapewipe: Add a simple shapewipe transition filter & example application 2010-02-12 11:12:32 +01:00
Robert Swain
4aff3e48be qtdemux: temporary safety check to avoid crashes with a certain file
Add temporary check to avoid crashes with a certain file when seeking
until the real cause of this is figured out. See #609405.
2010-02-10 20:36:56 +00:00
Robert Swain
7877ffb6f5 qtdemux: skip unknown atoms when looking for moov
Fixes bug #609107
2010-02-07 10:56:02 +01:00
Robert Swain
9ed6c58006 qtdemux: Set the segment start time to the requested seek time for non-keyframe seeks 2010-02-04 18:54:58 +00:00
Robert Swain
8d4f70c5ce qtdemux: Fix time returned for index at a byte offset
The logic for searching forwards/backwards was swapped
2010-02-04 18:54:53 +00:00
Mark Nauwelaerts
f0d6b841a2 matroskademux: improve stream synchronization
In particular, do not make it send newsegment updates that
sort-of contradict the indented playback segment (e.g. start time).
2010-02-02 16:54:05 +01:00
Mark Nauwelaerts
b527360f21 matroskademux: fix bridging (time) gaps in streams
As a side effect, avoid sending newsegment updates with start times
that go back and forth, which leads to bogus downstream running_time.

Also fixes seeking in bug #606744.
2010-02-02 16:53:56 +01:00
Mark Nauwelaerts
9bec2b1127 matroskademux: fix stream synchronization
.. by initializing streams starting at 0, as that is basically
where we 'seek to' at the start and assume streams to start elsewhere.
Also enables newsegment update events for subtitle streams.
2010-02-02 16:53:51 +01:00
Wim Taymans
c35a984801 rtspsrc: free transports on errors
See #608564
2010-02-01 19:32:11 +01:00
Robert Swain
f9bf5970a3 flvmux: index timestamps should be in seconds, not milliseconds 2010-01-27 20:24:41 +01:00
Mark Nauwelaerts
71e35b2bf3 rtpspeexpay: fix occasional buffer leak
Fixes #608255.
2010-01-27 17:05:34 +01:00
Sebastian Dröge
41b17ec2a7 videomixer: Fix assembly register constraints
Fixes bug #608209.
2010-01-27 16:35:10 +01:00
Wim Taymans
01f0a5ce32 avidemux: ignore streams that finished
When we receive an UNEXPECTED from a stream, move to the next stream and only go
EOS when all streams are EOS. When selecting a stream to push, ignore streams
that went EOS.

Fixes #607949
2010-01-26 11:22:56 +01:00
Edward Hervey
cb0474b6b3 qtdemux: dmb1 is a valid fourcc for Motion-JPEG 2010-01-23 14:47:55 +01:00
Edward Hervey
a782ef3ce8 qtdeux: IV32 is also used for Indeo 3 video streams 2010-01-23 14:20:02 +01:00
Roland Krikava
8a80fdaad1 qtdemux: Avoid negative overflow on keyframe search
Do not overflow negatively when searching a previous
"keyframe" on audio streams. Could cause infinite loops
on backwards playback

Fixes #607718
2010-01-21 23:20:34 -03:00
Alessandro Decina
5d3d3f28e1 qtdemux: fix compiler warnings under OS X. 2010-01-21 19:24:22 +01:00
Wim Taymans
7d39f8e5bb avidemux: don't parse NULL indexes
for some streams we might fail to fetch the index offsets. Don't try to parse
NULL indexes in those cases.
2010-01-21 17:59:25 +01:00
Olivier Crête
9afc247906 rtpg729pay: ptime should is in nanoseconds
https://bugzilla.gnome.org/show_bug.cgi?id=607403
2010-01-21 10:54:14 +01:00
Thiago Santos
ef2b7bbcab wavenc: Post warning if file isnt finished properly
When the pipeline is shut down and the file isn't
finished properly, wavenc should post a warning.

Fixes #607440
2010-01-20 15:11:15 -03:00
Arnout Vandecappelle
ca41ddda75 matroskamux: make index size configurable.
Added the 'min-index-interval' property to matroskamux,
which determines how much time (nanoseconds) is left
between keyframes stored in the index.

Fixes #583985.
2010-01-20 14:37:20 -03:00
Wim Taymans
1f6b06ce66 rtph264pay: scale spspps_interval to milliseconds
The spspps_interval is kept in seconds. Convert it to milliseconds before
comparing it to another value in milliseconds.
2010-01-20 16:29:57 +01:00
Mark Nauwelaerts
8ca984d5e8 qtdemux: always keep media segments within total duration
... as opposed to only doing so following a seek.
2010-01-20 16:03:21 +01:00
Wim Taymans
95333115cd rtph264pay: rename spspps-interval property
Rename the spspps-interval property to config-interval because it is nicer.
2010-01-20 15:44:40 +01:00
Wim Taymans
afc3c674c0 avidemux: skip RIFF and index in push mode
When we are in push mode, we can encounter RIFF and idx tags in the data chunk
when we are dealing with ODML files. In these cases, simply skip the chunks and
continue streaming instead of going EOS.
2010-01-20 11:47:04 +01:00
Wim Taymans
570319822a avidemux: more DISCONT handling
Add some debug in the DISCONT handling code.
When we receive a DISCONT in push mode, mark all streams as DISCONT.
2010-01-20 11:47:04 +01:00
Wim Taymans
40e3b0189a avidemux: reset on flush events
When we receive a flush event on the sinkpad, reset the EOS state and the
flowreturn of all streams. Also mark the streams with a DISCONT.
2010-01-20 11:47:03 +01:00
Wim Taymans
183d450113 avidemux: rename some variable
Rename the seek_event variable to seg_event because it really contains the
newsegment event that needs to be pushed.
2010-01-20 11:47:03 +01:00
Olivier Crête
c4fa559f15 rtph264pay: Don't set profile-level-id in out caps
The profile-level-id represents restrictions on what can be sent, it does not
describe the stream. So it should be reflected in the sink caps of the
payloader, not the src caps.

https://bugzilla.gnome.org/show_bug.cgi?id=607353
2010-01-19 13:47:38 +01:00
Olivier Crête
7a0590b1f1 rtph264pay: Don't ignore the return value from set_outcaps
https://bugzilla.gnome.org/show_bug.cgi?id=607353
2010-01-19 13:35:37 +01:00
Sebastian Dröge
2261bd8346 deinterlace: Fix license and copyright headers 2010-01-18 17:44:17 +01:00
Wim Taymans
fb716a6250 avidemux: avoid some typecasting 2010-01-15 18:15:14 +01:00
Wim Taymans
592b440911 avidemux: avoid some type checks 2010-01-15 18:13:24 +01:00
Wim Taymans
d4301d900f avidemux: fallback to avih duration
when we have not yet parsed the indexes (in push mode, for example) use
the duration as given in the avih header instead of -1.
2010-01-15 18:09:15 +01:00
Thiago Santos
e61a71b490 qtdemux: g_free is NULL safe 2010-01-15 13:42:30 -03:00
Thiago Santos
b07f406634 qtdemux: use DEMUX errors, instead of DECODE
qtdemux should use DEMUX errors, and not DECODE

Conflicts:

	gst/qtdemux/qtdemux.c
2010-01-15 13:42:30 -03:00
Thiago Santos
b988ff4f57 qtdemux: Minor refactor
Replace repeated code with a function call
2010-01-15 13:42:30 -03:00
Thiago Santos
92a83e016a qtdemux: Handle another kind of redirect trak
Some traks might contain a redirect rtsp uri inside
hndl atom (which is a dref atom entry). This commit makes qtdemux
post a message when it finds one of these traks and there are
no other traks.

Fixes #597497
2010-01-15 13:42:29 -03:00
Thiago Santos
06de494640 qtdemux: Post error when reaching EOS without pads
Post an error when EOS is reached and there are no src pads
2010-01-15 13:42:22 -03:00
Thiago Santos
b53a45ed44 qtdemux: Do not post empty redirect messages
Some misinterpreted data could result in posting redirect messages
with empty redirect strings. It is better not to post them.

An example is the file on bug #597497
2010-01-15 13:13:59 -03:00
Mark Nauwelaerts
891ca1f4d3 matroskademux: polish last buffer end time usage
That is, reset it upon seek, and note that (rarely) last pushed buffer
time might precede segment start.
2010-01-14 18:19:25 +01:00
Stefan Kost
404e673ac0 videomixer: use 'q' constraint instead of 'r'
This avoids the "bad register name `%dil'" compilation errors on 32bit where
because of 'r' gcc puts the value in a general purpose register and then tries
to access the lower part as %dil/%sil which is not existing on 32bit. 'q' requests
a-d registers
2010-01-13 16:48:46 +02:00
Stefan Kost
7e3783cbac avi: add missing include for sscanf 2010-01-13 16:44:58 +02:00
Sebastian Dröge
4a0f441c59 equalizer: Fix property description for the 3rd band of the 10band equalizer
The frequency is actually 237 Hz, not 227 Hz.

Fixes bug #606692.
2010-01-13 09:36:03 +01:00
Kipp Cannon
d009678bc5 audioamplify: Allow negative amplifications
Fixes bug #606807.
2010-01-13 09:22:20 +01:00
Edward Hervey
3f5add8820 qtdemux: use G_GSIZE_FORMAT for platform independent gsize qualifier
Fixes build on macosx
2010-01-12 17:39:05 +01:00
Mark Nauwelaerts
59224d77f8 matroskademux: refactor eos sending when pausing loop
Also, prevent hanging if no pads yet on which to send eos by
posting a message instead.
2010-01-11 21:15:47 +01:00
Mark Nauwelaerts
ae515fead4 matroskademux: standardize seek handling
... which implies fixing some corner cases.
2010-01-11 21:15:46 +01:00
Mark Nauwelaerts
927c22bdc4 matroskamux: use more generic xiphN_streamheader_to_codecdata helper 2010-01-11 21:15:43 +01:00
Mark Nauwelaerts
847d1dd4ed matroskamux: reflow audio and video setcaps and improve logging
Also ensure width and height are available as they are mandatory
in matroska specs.
2010-01-11 21:15:41 +01:00
Michael Smith
144fbd2d8f qtdemux: fix offset for type 2 mp4a sound sample descriptions.
Allows us to correctly find the esds (and thus the codec data) for such
mp4a files.
2010-01-11 11:48:29 -08:00
Thiago Santos
fa32e08d91 rtpmp4g(de)pay: Only handle raw aac
rtpmp4g(de)pay should only handle raw AAC streams
2010-01-11 15:46:50 -03:00
Sebastian Dröge
daa52708b3 videomixer: Implement basic QoS
This drops frames if they're too late anyway before blending and all
that starts but QoS events are not forwarded upstream. In the future
the QoS events should be transformed somehow and forwarded upstream.
2010-01-11 19:32:35 +01:00
Thiago Santos
c563dd7eb2 rtpmp4a(de)pay: Only accept raw aac
rtpmp4a(de)pay should only handle raw aac to conform to the RFC
2010-01-11 15:00:00 -03:00
Sebastian Dröge
6158f401a1 videomixer: Add MMX implementations for I420 and all non-alpha RGB formats 2010-01-11 18:37:45 +01:00
Sebastian Dröge
2950262186 videomixer: Refactor processing functions
This allows easier plugging of optimized processing functions
in the future, like for SSE or AltiVec.
2010-01-11 18:37:44 +01:00
Thiago Santos
5975b01b01 avimux: matroskamux: rename aac's stream-format to raw
AAC's none stream-format has been renamed to raw, rename
on avimux and matroskamux as well
2010-01-11 13:26:32 -03:00
Thiago Santos
1314853210 matroskamux: Only accept raw aac
makes matroskamux reject aac streams that are not
in raw format (stream-format=none)

Fixes #598350
2010-01-11 12:32:29 -03:00
Thiago Santos
bacd350483 avimux: Only accept raw aac
makes avimux reject aac streams that are not
in raw format (stream-format=none)

Fixes #598350
2010-01-11 12:32:27 -03:00
Robert Swain
866d13e7b9 qtdemux: Oops. The gpointer cast is needed because of the const
qualifiers on the data elements
2010-01-11 10:38:10 +01:00
Robert Swain
4ac643c2d9 qtdemux: Debug -> info level for a message for benchmarking index parsing
The extra message output at higher levels affects the accuracy of the
benchmark.
2010-01-11 10:17:54 +01:00
Robert Swain
c93ea637ef qtdemux: Don't check for NULL pointers or cast to gpointer as this is
not needed
2010-01-11 10:05:10 +01:00
Robert Swain
a340359127 qtdemux: Refactor stbl sub-atom freeing. Free when index has been
completely parsed.
2010-01-11 09:50:33 +01:00
Robert Swain
3daf1871c1 qtdemux: Avoid whitespace commits due to inconsistent GNU indent
behaviour
2010-01-11 09:50:33 +01:00
Tim-Philipp Müller
e1bff64f00 qtdemux: remove newline at end of debug statement 2010-01-11 00:10:34 +00:00
Havard Graff
4ead3d85bf multiudpsink: Compiler warning fixes for Windows
Just simple missing casts

Fixes bug #606438.
2010-01-09 17:17:23 +01:00
Thiago Santos
8e84d457b2 avidemux: Use more glib and be safer
Be safer on sscanf by limiting string format sizes.
Remove useless parameter and use g_strndup.
2010-01-08 11:33:02 -03:00
Thiago Santos
c0e184641a avidemux: Simplifying code
Greatly simplify the IDIT chunk handling by using sscanf
instead of 'manually' parsing. Also replaces strncasecmp and
is_alpha/is_digit with glib versions.
2010-01-08 10:51:17 -03:00
Thiago Santos
7024ce14cf avidemux: it's feb for february
Fix typo in last commit.
2010-01-08 10:18:30 -03:00
Thiago Santos
a5197a94ee avidemux: Parse and post IDIT dates
Parses and post date tags contained in IDIT chunks.

Fixes #503582
2010-01-08 09:17:22 -03:00
Sebastian Dröge
a9a5e0c7e1 audiofxbasefirfilter: Add property for not draining the history on kernel changes
Currently this only works if the kernel size doesn't change, in the future
it will be possible to change the kernel size too without draining
the complete history and without loosing anything.

Partially based on a patch by
Thiago Santos <thiago.sousa.santos@collabora.co.uk>
2010-01-07 17:28:43 +01:00
Wim Taymans
ed22a97478 rtph264pay: remove weird memcmp code
Use plain memcmp for comparing memory instead of the custom buggy one.

Fixes #606198
2010-01-07 17:00:20 +01:00
Edward Hervey
3e08a0cb4e level: fix typo in 'message' property description 2010-01-07 15:38:36 +01:00
Wim Taymans
4c1947045e rtpg728pay: remove unused adapter peek 2010-01-06 13:45:59 +01:00
Michael Smith
7f442ab1c1 qtdemux: Add support for wave-style audio in qt.
Uses gstriff to parse the wave headers appropriately. Tested with MS-ADPCM
content.
2010-01-05 12:11:31 -08:00
Olivier Crête
63a9db5826 rtpg729pay: Simplify adapter usage
https://bugzilla.gnome.org/show_bug.cgi?id=606050
2010-01-05 13:23:26 -05:00
Olivier Crête
0a18587792 rtpg729pay: Support ptime from caps
https://bugzilla.gnome.org/show_bug.cgi?id=606050
2010-01-05 13:23:26 -05:00
Olivier Crête
321829f595 rtp: Add maxptime to the README
https://bugzilla.gnome.org/show_bug.cgi?id=606050
2010-01-05 13:23:26 -05:00
Wim Taymans
b32ddfc174 rtpg723depay: add G723 depayloader 2010-01-05 19:03:06 +01:00
Wim Taymans
ca7ecdf2f3 rtpg729depay: remove unused variable 2010-01-05 19:02:39 +01:00
Wim Taymans
d6d06630e8 rtpg723pay: rewrite payloader
Handle all 3 packet sizes according to RFC 3551.
Totally untested, we don't have a G723 encoder.

Fixes #605882
2010-01-05 18:33:25 +01:00
Wim Taymans
48615d5e98 qtdemux: fix chunk counter 2010-01-05 15:51:55 +01:00
Wim Taymans
17630760f4 qtdemux: more work at reducing loop overhead
Try to avoid derefs when parsing the index. Save the state into the structures
when we exit the loop instead of for each iteration.
2010-01-05 15:51:52 +01:00
Wim Taymans
91a5e5138f qtdemux: cleanups and make duration more accurate
Make the QtDemuxSample struct smaller by keeping the duration and the pts_offset
as their 32 bit values.
Make some macros to calculate PTS, DTS and duration of a sample.
Deref the sample index less often by keeping a ref to the sample we're dealing
with.
2010-01-05 15:51:50 +01:00
Wim Taymans
22eb18f828 qtdemux: simplify logic to calculate duration
Since we no longer store the timestamp and duration in nanoseconds, we can now
simply store the duration as-is.
2010-01-05 15:51:48 +01:00
Robert Swain
1c27ed4dae qtdemux: Store timestamps in mov format in the index
This allows faster building of the index upon seeks so that scaling of
timestamps only occurs when actually needed.
2010-01-05 15:51:45 +01:00
Wim Taymans
86021857c5 qtdemux: make seeking in push mode work
Move sample position checks into qtdemux_parse_samples where we can protect it
with a lock.
Refactor and make an qtdemux_ensure_index function.
Rename qtdemux_do_push_seek to qtdemux_seek_offset in order to avoid confusion
with gst_qtdemux_do_push_seek.
2010-01-05 15:51:43 +01:00
Wim Taymans
3b643817be qtdemux: move error code out of normal flow 2010-01-05 15:51:40 +01:00
Robert Swain
4b2b7067b6 qtdemux: Add push mode seek support for seeking to obtain the moov atom 2010-01-05 15:51:36 +01:00
Wim Taymans
8c5a822250 rtspsrc: fix on-npt-stop signal warnings for RDT
The RDT manager does not implement this signal so we need to check for it before
trying to connect to it.
2010-01-05 12:23:16 +01:00
Stefan Kost
fd9530d2d5 avimux: fix typo in warning message 2010-01-05 00:12:44 +02:00
Arun Raghavan
e9f9164fb6 qtdemux: Add tags for average and maximum bitrate
Fixes #599300.
2009-12-31 18:25:20 +00:00
Thiago Santos
173be1422c audiofxbasefirfilter: do not try to alloc really large buffers
When nsamples_out is larger than nsamples_in, using unsigned
ints lead to a overflow and the resulting value is wrong and
way too large for allocating a buffer. Use signed integers
and returning immediatelly when that happens.
2009-12-26 16:59:14 -03:00
Wim Taymans
362785df88 videomixer: optimize blend code some more
Use more efficient formula that uses less multiplies.
Reduce the amount of scalar code, use MMX to calculate the desired
alpha value.
Unroll and handle 2 pixels in one iteration for improved pairing.
2009-12-25 12:38:45 +01:00
Wim Taymans
4f9ded7742 videomixer: scale and clamp
Scale and clamp to the max alpha values.
2009-12-24 22:59:09 +01:00
Wim Taymans
0620797a18 alpha: scale and clamp alpha to its full extend
Convert the alpha value to 0->255 when setting and to 0->256 when using as
a scaling factor. This makes sure we can reach the full opacity value of 0xff in
all cases.
2009-12-24 22:50:31 +01:00
Wim Taymans
a65240d1c1 rtspsrc: fix some comments, remove property check
Fix some comments, clarify some FIXMEs
Remove the on-ntp-stop signal check now that the jitterbuffer is in
-good and we know that it supports this signal.
2009-12-24 22:23:01 +01:00
Wim Taymans
3c0f18d765 videomixer: some trivial cleanups 2009-12-24 21:45:12 +01:00
Thiago Santos
ac03ad782a rtspsrc: Parse all rtpinfo entries
Do not forget to parse all rtp-info entries, instead of
parsing the first one only.

Fixes #605222
2009-12-24 17:08:22 -03:00
Thiago Santos
5d86010dad qtdemux: perf tag should map to GST_TAG_ARTIST 2009-12-24 17:06:16 -03:00
Wim Taymans
fe529e71c5 interleave: fix weird indentation 2009-12-24 17:03:02 +01:00
Wim Taymans
59dc9dac03 rtph263ppay: use faster _adapter_copy() whem possible 2009-12-24 17:01:54 +01:00
Mark Nauwelaerts
05307c46e7 rtph264pay: fix uninitialized variable 2009-12-23 19:39:05 +01:00
Wim Taymans
9f098b352b rtp: use boilerplate 2009-12-23 13:09:54 +01:00
Wim Taymans
2ee7f58416 rtpL16pay: convert to baseaudiopayload
Use GstRTPBaseAudioPayload as the base class. This saves a lot of code and fixes
a bunch of problems that were already solved in the base class.

Fixes #853367
2009-12-23 00:38:05 +01:00
Wim Taymans
cdb8c718bb rtppcmapay: the boilerplate macro sets parent_class 2009-12-23 00:30:49 +01:00
Wim Taymans
05418f1687 rtpbin: avoid some structure copies
Don't make copied in the getter and setter for SDES in the RTPSource. This
avoids a couple of copies of the SDES structure when generating RTCP
packets.
2009-12-22 22:27:21 +01:00
Pascal Buhler
c3448f978e rtpmanager: improve SDES handling
Store SDES internally as a struct to support multiple PRIV values.
Include all values set in SDES struct when sending RTCP SDES.
2009-12-22 21:43:25 +01:00
Wim Taymans
251401aef1 rtph263depay: add some fixmes 2009-12-22 14:41:35 +01:00
Wim Taymans
564581e1b8 rtph263depay: baseclass handles timestamps for us 2009-12-22 14:35:13 +01:00
Wim Taymans
27ff4a8a47 rtph263depay: reset start variable properly 2009-12-22 14:27:40 +01:00
Marco Ballesio
74b3439374 Drop the whole frame if a packet is lost.
Fixes #582575
2009-12-22 11:48:52 +01:00
Wim Taymans
4687199348 rtph264pay: add option to insert PPS/SPS in streams
Add a new spspps-interval property to instruct the payloader to insert
SPS and PPS at periodic intervals in the stream.
Rework the SPS/PPS handling so that bytestream and AVC sample code both use the
same code paths to handle sprop-parameter-sets. This also allows to have the AVC
code to insert SPS/PPS like the bytestream code.

Fixes #604913
2009-12-21 20:45:54 +01:00
Jonathan Conder
1112090589 qtdemux: Adds new tags
Adds some new tags mapping to qtdemux.

Fixes #599759
2009-12-21 12:03:30 -03:00
Wim Taymans
9734699788 rtpbin: add property to remove pads automatically
Add a property called autoremove to automatically remove the pads of sources
that timed out.

Fixes #554839
2009-12-21 15:07:44 +01:00
Wim Taymans
c611bbaa8e ssrcdemux: fix comparison
A NULL means no pad was found.
2009-12-21 15:07:34 +01:00
Michael Smith
eab08d67b3 multiudpsink: pass length parameter to g_convert 2009-12-20 17:26:15 -08:00
Edward Hervey
188725811f matroska: Fix unitialized variable.
Yes, it's stupid, but macosx compilers are even more stupid.
2009-12-18 12:46:06 +01:00
Sebastian Dröge
3ac6f5e48b videomixer: Fix assembly compilation on x86
Fixes bug #604814.
2009-12-17 18:14:55 +01:00
Branko Čibej
7b107f64f3 rganalysis: fix timestamp rounding
Use scaling function to round and avoid overflows.

Fixes #604352
2009-12-17 17:37:03 +01:00
Tiago Katcipis
908a9ee63b rtp: add G723 payloader
Fixes #597823
2009-12-17 17:27:42 +01:00
Wim Taymans
cc277b4a26 qtdemux: Fix ALAC codec_data parsing
Fixes #604611
2009-12-17 16:23:56 +01:00
Thiago Santos
4063bb87e8 qtdemux: Remove cpp style coments
Removes // comments and replace them with /* */ comments
2009-12-16 17:28:30 -03:00
Mark Nauwelaerts
c9a0d2339e matroskademux: also consider BlockNumber indicated in index when seeking 2009-12-16 12:48:02 +01:00
Mark Nauwelaerts
900ff7247e matroskademux: support push based mode
Fixes #598610.
2009-12-16 12:46:40 +01:00
Mark Nauwelaerts
e4183c6904 matroskademux: fix ebml read cache usage 2009-12-16 12:46:37 +01:00
Sebastian Dröge
0a0f7ecc16 videomixer: Use movzbl instead of movzxb for moving one byte to a l register
For some reason latest gcc/binutils accept movzxb here while
movzbl would be correct and is the only thing accepted by older
gcc/binutils.

Fixes bug #604679.
2009-12-16 10:50:32 +01:00
Sebastian Dröge
9e45038d8d videomixer: src/dest are input and output of the AYUV blending MMX assembler 2009-12-16 06:59:01 +01:00
Sebastian Dröge
c26ccb9722 audiowsincband: Use the same upper length limit as audiowsinclimit 2009-12-15 18:18:54 +01:00
Sebastian Dröge
7fec6843c0 audiowsinc{limit,band}: Allow much larger filter lengths now 2009-12-15 18:12:47 +01:00
Sebastian Dröge
119a6ce637 audiofxbasefirfilter: Fix frequency response calculation 2009-12-15 18:12:47 +01:00
Sebastian Dröge
8695581751 audiofxbasefirfilter: Remove dead assignments 2009-12-15 18:12:46 +01:00
Sebastian Dröge
cd2b1c1b58 audiofxbasefirfilter: Add special processing functions for Mono/Stereo
This provides another 7% speedup for the time domain convolution and 1.5%
speedup for the FFT convolution on Mono input.

This optimization assumes that the compiler simplifies calculations
and conditions on constant numbers and unrolls loops with a constant
number of repeats.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
a3d7321c50 audiofxbasefirfilter: Add a "low-latency" mode
This will always use time-domain convolution, which lowers the latency.
With FFT convolution it's always a multiple of the kernel length,
with time domain convolution it's only the pre-latency of the filter kernel.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
ca568ff079 audiofxbasefirfilter: Remove obsolete TODO comments 2009-12-15 18:12:46 +01:00
Sebastian Dröge
45edc1bbd8 audiofxbasefirfilter: Use samples everywhere instead of samples*channels sometimes 2009-12-15 18:12:46 +01:00
Sebastian Dröge
02960383c1 audiofxbasefirfilter: FFT convolution implementation
This provides a great speedup, especially the relationship between kernel
length and processing size is now logarithmic instead of linear. Below a
kernel size of 32 it's a bit slower, afterwards it's much faster:

17     0.788000 -> 0.950000
33     1.208000 -> 1.146000
65     2.166000 -> 1.146000
...
4097 107.444000 -> 1.508000

For sizes smaller 32 the normal time-domain convolution is chosen,
for larger sizes the FFT convolution is automatically used.

Fixes bug #594381.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
ddafc20b28 audiofxbasefirfilter: Make most code parts independent of the processing functions and used convolution algorithm
Only remaining part is the residue pushing, which will be fixed later.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
43576fb0cf audiofxbasefirfilter: Optimize time-domain convolution
Remove some redundant calculations, move comparisions out of
inner loops, etc.

This makes the convolution about 3 (!) times faster but
processing time is of course still proportional to the
filter size.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
c5f955a3b6 audiofxbasefirfilter: Use _CAST macros in some places and do some calculations only once 2009-12-15 18:12:46 +01:00
Sebastian Dröge
abb437454e audiofxbasefirfilter: Rewrite timestamp tracking
It's much simpler now and doesn't introduce accumulating rounding
errors.
2009-12-15 18:12:46 +01:00
Sebastian Dröge
c57be62881 audiofxbasefirfilter: Rename some variables and change comments 2009-12-15 18:12:45 +01:00
Sebastian Dröge
742a7c7f50 audiofxbasefirfilter: Add const qualifier to the source data array 2009-12-15 18:12:45 +01:00
Sebastian Dröge
061ededa36 videomixer: Add MMX implementations of the AYUV blending and color filling functions
This provides a 20% speedup for blending and 100% for color filling.

The blending can probably be optimized even more.
2009-12-15 12:30:21 +01:00
Tim-Philipp Müller
d3a9f07669 id3demux: prefer two letter ISO 639-1 code for extended comment 2009-12-13 13:19:43 +00:00
Tim-Philipp Müller
6c4c8f8670 qtdemux: fix up language code extraction some more
Quicktime uses ISO 639-2 for language codes, but GST_TAG_LANGUAGE
is supposed to hold a ISO 639-1 code, so convert as needed using
the new API from -base.

See #602126.
2009-12-13 13:10:12 +00:00
Tim-Philipp Müller
b66f914586 matroska: fix language code writing and extraction
Matroska uses three-letter ISO 639-2B codes, but GST_TAG_LANGUAGE is
supposed to contain two-letter ISO 639-1 codes, so use new language
code mapping functions in -base to convert between those two as
needed.

Fixes #505823.
2009-12-13 12:51:13 +00:00
Tim-Philipp Müller
1b786258c2 avidemux: minor debug message changes
Fix up a few debug messages so that it's clearer what they mean.
2009-12-13 12:51:13 +00:00
Thiago Santos
52177fa056 Revert "qtdemux: Correctly parse classification tags"
This reverts commit cd883aa60c.

Previous code was correct, 4 is due to table and language code,
not only language code
2009-12-12 17:44:04 -03:00
Thiago Santos
cd883aa60c qtdemux: Correctly parse classification tags
In clsf atoms, the language code is 2 bytes long, not 4.
2009-12-12 16:31:35 -03:00
Sebastian Dröge
66d3ac8fb7 videomixer: Dequeue current buffer on FLUSH_STOP and don't unref NULL buffers
... NULL buffers shouldn't really happen anymore when popping the
buffer from GstCollectPads but better check for this and print a warning.
2009-12-12 16:55:13 +01:00
Sebastian Dröge
760eaf7b2a videomixer: Fix stupid mistake in last commit 2009-12-11 13:11:12 +01:00
Sebastian Dröge
089d9d9dba videomixer: Don't do floating point math in the inner processing loop for I420 blending 2009-12-11 12:36:42 +01:00
Wim Taymans
b8c2ccce4e rtspsrc: handle NULL and empty transport strings
When an RTSP extension returns NULL or an empty transport string, just ignore it
and try to get the next possible transport. Fixes playback of RealMedia streams.
2009-12-10 18:45:55 +01:00
Wim Taymans
6a44d8e198 rtspsrc: install event function on internal RTCP pad
Install a custom event function on the internal RTCP pad so that we can reply
TRUE to a latency event.
2009-12-10 18:45:55 +01:00
Sebastian Dröge
6f51dfba95 videomixer: Remove wrong comments, copied from the I420 blend function 2009-12-10 10:48:49 +01:00
Sebastian Dröge
93089ef445 videomixer: The queued duration is a signed integer
...and it will really be negative sometimes.
2009-12-09 21:15:07 +01:00
Sebastian Dröge
7418dee253 videomixer: Only pop buffers from collectpads after they're fully consumed
This decreases latency and memory usage because new buffers are only
accepted by collectpads if there's no queued buffer.
2009-12-09 21:03:57 +01:00
Sebastian Dröge
cd888c0531 matroskademux: Clean up position/duration handling
Also use the last end time for closing the segment, not the
start time of the last buffer.
2009-12-09 20:42:44 +01:00
Sebastian Dröge
0766a54138 matroskademux: Close the segment on EOS if the real duration is known 2009-12-09 16:50:02 +01:00
Sebastian Dröge
5ca96043ff matroskademux: Update duration if current buffer is already after the old duration 2009-12-09 16:46:18 +01:00
Sebastian Dröge
c9b1ab53fe matroskademux: Drop buffers that are after segment stop
...and if this happened for all streams go EOS.
2009-12-09 16:43:41 +01:00
Sebastian Dröge
276a61ab2a matroskademux: Fix position tracking and sending of filler segments 2009-12-09 16:41:04 +01:00
Sebastian Dröge
b0f8978fd8 videomixer: Use gst_util_uint64_scale_int() for fps to seconds per frame calculations 2009-12-09 16:15:09 +01:00
Sebastian Dröge
3ddb75e3c5 matroskademux: Keep the segment stop position for update newsegment events 2009-12-08 17:34:15 +01:00
Wim Taymans
ee6d7fd2db avidemux: init current_entry in push mode
Set the current_entry to 0 (instead of -1) in push mode so that we correctly
calculate the current frame number and timestamp.

Add some more debug info and fic the duration debug.
2009-12-04 13:52:49 +01:00
Tim-Philipp Müller
24b93d82ec rtspsrc: fix major memory leak when playing back rtsp video streams
Don't forget to unref QoS, navigation and latency events when
dropping them.
2009-12-04 11:14:03 +00:00
Tim-Philipp Müller
d0b25845ec matroskademux: only send pending tags with newsegment events
Send pending tags only from the streaming thread, just after we've sent
the newsegment event, not with e.g. flush-start. This not only does the
right thing, but also makes sure we're not trampling over variables set
up in the streaming thread from the seeking thread in case someone tries
to issue a seek just as the demuxer is parsing the headers.

Fixes #601617. Spotted by Ognyan Tonchev.
2009-12-04 11:13:31 +00:00
Thiago Santos
ff4ac9ddf6 qtdemux: fix debug message printf args
Fixes debug message printf format to make it build in mac's gcc
2009-12-03 17:49:55 -03:00
Aurelien Grimaud
07f27f0efd rtpsession: avoid buffer ref/unref pairs for CSRCs
We ref the buffer before pushing it downstream in order to get the CSRCs of it
after pushing. This causes performance problems when downstream elements want to
change the metadata because the buffer needs to be subbuffered.

Instead, read and store the CSRCs of the buffer in an array before pushing it
and process the array after pushing the buffer. This allows us to remove the
ref/unref pair.

Fixes #603376
2009-11-30 15:59:50 +01:00
Mark Nauwelaerts
e49e71a1d9 rtph264depay: optionally merge NALUs into Access Units
... which may be expected/desired by some downstream decoders
(and spec-wise highly recommended for at least non-bytestream mode).
2009-11-26 17:29:26 +01:00
Mark Nauwelaerts
baa28ddedf qtdemux: fix timestamp datatype 2009-11-26 17:29:03 +01:00
Wim Taymans
8070ae967b jitterbuffer: avoid using wrong clock-rate
Check for a valid clock-rate before attempting to estimate the npt
stop time.
2009-11-25 10:38:23 -06:00
Wim Taymans
5682e2bf01 rtpbin: fix typo in comments 2009-11-25 10:37:30 -06:00
Michael Smith
9d6adc8f3c multiudpsink: return error message on windows too. 2009-11-24 11:13:06 -08:00
Michael Smith
d4826d987c multiudpsink: first phase of fixing up error reporting for windows. 2009-11-24 10:58:49 -08:00
Thiago Santos
b59dc3e5fb avimux: also set the suggested buf size for audio
We were only setting the suggested buf size for video,
we can set it for audio as well.

This and 195e14529d80ef318ce3a778c1995efb11f266cd
fix an issue that prevented seeking on large avi files
on WMP (non-recent versions).
2009-11-24 12:44:57 -03:00
Thiago Santos
831b1e958a avimux: fix indx duration for PCM audio
GstBuffers for PCM audio usually contains more than
1 sample, we need to get the total number of samples to set
the indx duration.
2009-11-24 12:44:56 -03:00
Thiago Santos
8dd78015f1 avimux: Audio buffers should be picked earlier
Adds a 0.5s advantage for audio buffers to being
picked earlier for muxing.
2009-11-24 12:44:56 -03:00
Robert Swain
98279be735 qtdemux: Fix push mode by making sure stbl information is available in
next_entry_size ()
2009-11-24 16:40:19 +01:00
Robert Swain
db5de8f1b6 qtdemux: Fix order of arguments in log message 2009-11-24 16:35:20 +01:00
Robert Swain
f9745e89d3 qtdemux: Ease debugging by removing a goto for an error message 2009-11-23 16:29:15 +01:00
Robert Swain
4025d7cbd7 qtdemux: Parse per sample rather than all at once but build complete index when
seeking
2009-11-23 16:29:15 +01:00
Robert Swain
0c62109d20 qtdemux: Save atom data for later use so it doesn't get freed after initial
parsing
2009-11-23 16:29:15 +01:00
Robert Swain
29c33806c1 qtdemux: Parse from the previously parsed sample up to sample n 2009-11-23 16:29:14 +01:00
Robert Swain
52b1040219 qtdemux: Make qtdemux_parse_samples () parse up to n samples 2009-11-23 16:29:14 +01:00
Robert Swain
1f7b878d89 qtdemux: Separate off stbl sub-atom initialisation 2009-11-23 16:29:14 +01:00
Robert Swain
6a6d2c4970 qtdemux: Move variables into context in preparation for refactorisation 2009-11-23 16:29:14 +01:00
Robert Swain
ab61fb22f6 qtdemux: Fix bug where stps is never parsed due to logic error 2009-11-23 16:29:14 +01:00
Robert Swain
a1e2047472 qtdemux: Port ctts from Gnode * to GstByteReader 2009-11-23 16:29:14 +01:00
Robert Swain
9e49197208 qtdemux: Switch from QtAtomParser to GstByteReader 2009-11-23 16:29:14 +01:00
Wim Taymans
5d41590601 qtdemux: fix typo and grammar 2009-11-23 12:53:50 +01:00
Tim-Philipp Müller
5908c40405 deinterlace: fix typo in mode enum description 2009-11-20 10:30:00 +00:00
Stefan Kost
9ee0815e85 docs: more links and better short description
Fix spelling of GstRtpSsrcDemux to get it linked. Add more links. Change
the short description to be more meaningful.
2009-11-20 11:25:49 +02:00
Thiago Santos
e35085e5b5 qtdemux: Add more fields to SVQ3 caps
qtdemux only added the whole stsd atom as 'codec_data'
in its output caps for SVQ3. This patch makes it add
the SEQH (inside a SMI atom) and a gamma field (taken
from the gama atom) if available.

Fixes #587922
2009-11-18 16:41:50 -03:00
Edward Hervey
f2f75d7fd9 wavenc: Raise rank of muxer to PRIMARY 2009-11-18 17:55:42 +01:00
Edward Hervey
8a1e0c53ae y4m: Raise rank of encoder to PRIMARY 2009-11-18 17:54:36 +01:00
Edward Hervey
a5dd867d6f law: Raise rank of encoders to PRIMARY 2009-11-18 17:54:35 +01:00
Bastien Nocera
efc611e420 Add user-id and user-pw properties
So that one doesn't need to modify the URL to have access
to authenticated RTSP streams.

fixes #601728
2009-11-18 17:27:19 +01:00
Mark Nauwelaerts
bf5f3a3964 qtdemux: fix bogus memory chunk size check 2009-11-18 12:54:48 +01:00
Wim Taymans
f52859432f jitterbuffer: release lock before emiting signals
Release the jbuf lock before emiting the request-pt-map signal to avoid
deadlocks. We also need to catch the shutdown case when locking again.

Fixes #593354
2009-11-18 10:50:44 +01:00
Wim Taymans
8c3b03de26 rtp: add BroadcomVoice depayloader 2009-11-18 10:50:43 +01:00
Wim Taymans
039d225a78 rtpbvpay: add rfc reference 2009-11-18 10:50:43 +01:00
Wim Taymans
02476fb5a3 rtp: add BroadcomVoice payloader 2009-11-18 10:50:43 +01:00
Jan Urbański
dd82612340 flvmux: properly finish the ECMA array
The ECMA array with the file index was missing a mandatory end marker.
Fixes bug #601242.
2009-11-18 08:03:43 +01:00
Jan Schmidt
baa79ffecb Use new still-frame API from gst-plugins-base 2009-11-18 03:09:06 +00:00
Michael Smith
fe9415544e qtdemux: identify IMA adpcm in qt properly. 2009-11-17 17:59:13 -08:00
Tim-Philipp Müller
4b1566d7f3 equalizer: printf format fix 2009-11-05 23:40:15 +00:00
Thiago Santos
feed8c2af3 avimux: do not write empty INFO list
avoid writing an empty INFO list chunk, both because
it is useless and because vlc refuses to play the
resulting file.
2009-11-05 12:31:56 -03:00
Sebastian Dröge
fb682d0444 equalizer: Notify about band property changes caused by changing number of bands 2009-11-05 10:54:12 +01:00
Sebastian Dröge
64e00f172c equalizer: Make changes to band properties and the number of bands threadsafe 2009-11-05 10:45:59 +01:00
Sebastian Dröge
025e26f73a equalizer: Fix stupid off by two bug 2009-11-05 10:30:46 +01:00
Sebastian Dröge
9405a328b1 equalizer: Add band property to select the band filter type
This allows per band configuration of a peak, low shelf or
high shelf filter, which can be very useful if the band frequencies
and widths are manually configured.
2009-11-05 08:21:33 +01:00
Sebastian Dröge
0525abd4af equalizer: Fix code style 2009-11-05 08:21:33 +01:00
Sebastian Dröge
e1acc8f4da equalizer: Some cleanup 2009-11-05 08:21:33 +01:00
Gabriel Millaire
773f142483 celtpay/depay : change GST_DEBUG_OBJECT to GST_LOG_OBJECT in pay_handle_buffer and depay_process 2009-11-04 12:02:50 -05:00
Gabriel Millaire
ac90398092 celtpay/depay: Negotiate parameters through caps
celtdepay : added default framesize(480) channels(1) and clockrate(32000)
            depay_setcaps : now gets channels and framesize from string with default value
            depay_process : now adds timestamp to outbuf
            Added frame_size to GstRtpCeltDepay
            Changed some GST_DEBUG to GST_DEBUG_OBJECT or GST_LOG_OBJECT
celtpay : getcaps : gets channel and framesize and sets caps
          Added frame-size to static caps for audio/x-celt
2009-11-04 12:02:50 -05:00
Jan Schmidt
1636bb0800 deinterlace: Pull in CFLAGS and LIBS flags from -base before core before system. 2009-11-04 15:59:49 +00:00
Edward Hervey
8df3e5c22b qtdemux: init variables to make compiler on osx build bot happy 2009-11-04 16:47:42 +01:00
Tim-Philipp Müller
261454dd92 qtdemux: init variables to make compiler on osx build bot happy 2009-11-03 16:05:47 +00:00
Tim-Philipp Müller
65a1db99eb deinterlace: remove pointless call to gst_element_no_more_pads() 2009-11-02 08:45:53 +00:00
Stefan Kost
03d2f4bdec level: fix decay to be smooth
The length not having any fractional part as it was promoted to gdouble after
dividing two guint64.
2009-11-01 00:31:48 +02:00
Stefan Kost
71044b37b6 level: calculate the message-intervall when it changes 2009-11-01 00:31:48 +02:00
Stefan Kost
f5b3392fa6 level: clocktime is a guint64, use right macro to init fields 2009-11-01 00:31:48 +02:00
Stefan Kost
519e424494 level: use more g-style types 2009-11-01 00:31:48 +02:00
Wim Taymans
0c12f585e3 avidemux: use segment_full when we can
Use segment_full so that we can pass the applied rate to the segment values. We
will change the applied rate when we implement skip mode.
2009-10-27 18:07:18 +01:00
Robert Swain
0cbe0d6e98 wavenc: Fix buffer offset by moving length incrementation 2009-10-27 12:43:33 +01:00
Michael Smith
b0b54d9324 Add dependencies of gstriff to things that link to gstriff, needed on Win32. 2009-10-23 18:09:43 -07:00
Stefan Kost
e43eb89449 tests: add a jitterbuffer test
Tests pushing a few buffers in various order and asserting the order sent by the
jitterbuffer. Contains two disabled tests that need more work.
2009-10-22 13:35:57 +03:00
Sebastian Dröge
68176befa2 matroskamux: Dirac "muxing" units end on EOS too
A Dirac muxing unit are all non-picture, non-end-of-sequence
packets up to and including the first picture or eos packet.

See http://www.diracvideo.org/wiki/index.php/ContainerFormatMappingGuidelines
2009-10-22 12:32:32 +02:00
Tim-Philipp Müller
457ac565ba avidemux: fix compilation with debugging disabled
total_idx is always evaluated.
2009-10-22 02:09:08 +01:00
Edward Hervey
683f2a02fb avidemux: Stop scanning at the last entry... and not the one before :)
This ensures we actually push out everything
2009-10-20 18:23:28 +02:00
Andy Wingo
c917d65e6d qtdemux: unpack more information into image/x-j2c caps
* gst/qtdemux/qtdemux_fourcc.h: Add new fourccs for use by the mj2
  unpacker.
* gst/qtdemux/qtdemux.c (qtdemux_parse_trak): Unpack JPEG2000 component
  mapping and channel definitions from the jp2h header. Will add
  component-map and channel-definitions elements to the caps if the
  component maps or channel definitions are nonstandard, where standard
  order means RGB, 444 packed YUV, or greyscale, with no alpha channel.

Fixes #598915.
2009-10-20 17:20:55 +02:00
Stefan Kost
217b54a8f6 level: code cleanup
Use gdouble instead of double. Calculate falloff_time once instead of twice.
2009-10-18 23:53:42 +03:00
Edward Hervey
024f1bae0c avidemux: MEMDUMP the junk blobs
It will only actually pull the junk blobs from upstream if the memdump
level is activated
2009-10-18 16:16:43 +02:00
Edward Hervey
1f5ace4de1 avidemux: Some avi files have INFO lists in the headers. 2009-10-18 16:16:43 +02:00
Edward Hervey
6e849f84fc avidemux: Don't seek on empty streams 2009-10-18 16:16:43 +02:00
Edward Hervey
a6ed612f42 avidemux: Ensure _calculate_durations_from_index only uses valid streams 2009-10-18 16:15:08 +02:00
Edward Hervey
1936d6ed26 avidemux: Only call convert function if we have strf.auds 2009-10-18 16:15:08 +02:00
Edward Hervey
af99a4a1de avidemux: Use first indexed stream for seeking.
In the future, main_stream can be adjusted to contain the optimal stream
as mentionned in the FIXME line 3440
2009-10-18 16:15:05 +02:00
Edward Hervey
2110cbe556 avidemux: Only expose streams that actually have something in it.
This guarantees that in pull-mode, all streams have a valid index to
work with.
2009-10-18 16:14:40 +02:00
Edward Hervey
546aa4c4dd avidemux: Properly mark presence of index.
Instead of blindly saying we have an index, only do so if we have a
non-empty index.
2009-10-18 15:40:37 +02:00
Mark Nauwelaerts
3d0659b813 debugutils: register pushfilesrc element 2009-10-16 18:19:20 +02:00
Mark Nauwelaerts
8f2beb5e51 avimux: support (some) VBR audio muxing
AVI format can handle VBR audio provided audio chunks are of fixed duration
(cfr fixed duration video frames).  Apply this approach to (always) parsed
raw AAC and (if parsed) to MPEG-1/2 audio.

See #368681.
2009-10-16 17:31:02 +02:00
Stefan Kost
6904e46ef2 build: use gst-glib-gen.mak to fix the glib build rules.
The build rules in glib-gen.mak were using pattern rules in a non save way.
2009-10-16 11:53:38 +03:00
Mark Nauwelaerts
7ceeb14834 avidemux: adjust flow return aggregation to updated loop_data
In particular, each stream is now treated separately, and one stream's
EOS should not lead to overall EOS.
2009-10-15 21:32:08 +02:00
Mark Nauwelaerts
354a062c89 qtdemux: check some more atom sizes prior to parsing 2009-10-15 17:06:41 +02:00
Wim Taymans
6725c91387 rtsp: handle events in TCP mode
We need to handle events in TCP mode so that we can reply to the LATENCY event
with TRUE.
2009-10-15 13:20:26 +02:00
Mark Nauwelaerts
f071ff6993 avidemux: add missing argument in debug message 2009-10-15 11:26:09 +02:00
Wim Taymans
88884cfddb rtspsrc: forward events into the rtpbin
Only catch the SEEK event on the srcpad and let other events enter the rtpbin.
2009-10-14 17:01:51 +02:00
Thiago Santos
959a3f9c95 matroskademux: Fix late tags finding
Use the correct taglist variable when notifying of late tags.
2009-10-14 11:33:24 -03:00
Mark Nauwelaerts
0141934eec avidemux: use GstIndex for (limited) seeking in push mode
... but disable this for now.  Although it basically works fine,
user experience might be shaky (depending on taste), since there
is no keyframe info in push mode.
2009-10-14 13:15:09 +02:00
Mark Nauwelaerts
35dc28d69a avidemux: add GstIndex support 2009-10-14 13:15:06 +02:00
Mark Nauwelaerts
92dd51e511 avidemux: also determine duration in push mode 2009-10-14 13:15:04 +02:00
Mark Nauwelaerts
e967767b27 qtdemux: add GstIndex support 2009-10-14 13:15:02 +02:00
Håvard Graff
58b9de4cca rtpptdemux: only forward the lost-event to the last seen pt-number
forward all events on all pads except for the PacketLost event, which we want to
forward to the last seen pt pad.

Fixes #598377
2009-10-14 12:28:55 +02:00
Wim Taymans
daa6d8f206 avidemux: demote some warnings to debug 2009-10-13 18:19:32 +02:00
Wim Taymans
9aa151a661 avi: add new avi flag we might want to use 2009-10-13 17:48:51 +02:00
Wim Taymans
df0335e65b avimux: calculate suggested buffer size
Calculate the suggested buffer size based on the largest chunk in the file.

See #597847
2009-10-13 17:48:51 +02:00
Wim Taymans
b134ca31fa avimux: add jpeg2000 to allowed caps 2009-10-13 17:48:51 +02:00
Wim Taymans
aea78a75ac avidemux: add debug for the superindex offsets 2009-10-13 17:48:50 +02:00
Jan Schmidt
99f43dbb58 qtdemux: Fix uninitialized variable warning
Fix another bogus may-be-used-uninitialized warning in qtdemux
2009-10-13 16:03:13 +01:00
Wim Taymans
50110d022d avi: lower max file size
Make a constant of the max file size and lower the value to what ffmpeg does,
hopefully improving compatibility with windows media player.

See #597847
2009-10-13 13:08:33 +02:00
Jan Schmidt
42b09362f6 qtdemux: Fix uninitialized variable warnings
The gcc on the OS/X buildbot complains about these variables not being
initialized, even though they can't possibly actually be used
uninitialized.
2009-10-13 00:12:42 +01:00
Mark Nauwelaerts
6f34e2b0db qtdemux: also consider Quicktime text subtitles 2009-10-09 17:49:20 +02:00
Mark Nauwelaerts
955a719c1a qtdemux: provide language tag for stream 2009-10-09 17:49:17 +02:00
Mark Nauwelaerts
1210a92ff6 qtdemux: refactor common parts in track parsing 2009-10-09 17:49:14 +02:00
Mark Nauwelaerts
5ed2c3e562 qtdemux: refactor buffer processing and sending
... so it can be used in both pull and push based mode.
2009-10-09 17:49:12 +02:00
Mark Nauwelaerts
674b0c4289 qtdemux: extract palette data for dvd subpicture streams
... and send it downstream using custom dvd event
2009-10-09 17:49:10 +02:00
Mark Nauwelaerts
b2d70862e8 qtdemux: support 3GPP timed text subtitles
In particular, also make subtitle support less subp(icture)-centric.
2009-10-09 17:49:06 +02:00
Mark Nauwelaerts
faaa32dccb qtdemux: NULL is not a valid taglist 2009-10-09 17:49:04 +02:00
Mark Nauwelaerts
533106203c qtdemux: recognize some more encypted track cases 2009-10-09 17:49:02 +02:00
Josep Torra
114dbba7ad id3: fixes warnings building on macosx
Another round on the formating of that debug line.
2009-10-09 15:59:25 +02:00
Stefan Kost
53cb3e2716 id3: cast pointer math results to glong 2009-10-09 14:44:02 +03:00
Stefan Kost
f854836f5c buikd: explicitely cast, to tell some compilers that this is not long int 2009-10-09 14:21:09 +03:00
Stefan Kost
f41d7e7bd5 build: don't cast, but use the right format specified instead
This correct some of the previous macos fixes.
2009-10-09 13:54:24 +03:00
Josep Torra
863233abf5 rtpvrawpay: fix warning on macosx 2009-10-09 12:01:10 +02:00
Josep Torra
a1fbe64317 rtph263pay: fix warning on macosx 2009-10-09 11:57:59 +02:00
Josep Torra
c3d3eb6c3b qtdemux: fix warnings building on macosx 2009-10-09 11:54:03 +02:00
Josep Torra
093546ba74 id3demux: fix printf warnings on macosx 2009-10-09 11:43:45 +02:00
Josep Torra
28ccc40bab avidemux: fix warning in macosx making the format portable 2009-10-09 11:43:44 +02:00
Josep Torra
00aa3421e0 audiofx: use G_GUINT64_FORMAT to fix warnings on OSX 2009-10-09 11:43:44 +02:00
René Stadler
c40cb18762 matroskademux: fix strstr() usage on possibly unterminated string 2009-10-08 23:31:07 +03:00
Jan Schmidt
cdb0b68e21 avi/wav: Fix some compiler warnings about incompatible pointers. 2009-10-08 10:20:09 +01:00
Jan Schmidt
db6af4bd57 multifile: Fix plugin description 2009-10-07 23:42:48 +01:00
Stefan Kost
e0cdd879b4 build: fprintf, sprintf, sscanf need stdio.h 2009-10-07 14:03:20 +03:00
Stefan Kost
27ea0b076a equalizer: use shelfing filters for first and last band
Refactor the filter setup. Add two new filters with shelf characteristics for
first and last band. Change gain calculation as recommended in the quoted
document (no qrt needed). Rename variables to match the formulas in the
document.
2009-10-07 00:35:27 +03:00
Stefan Kost
7b6e594b69 equalizer: fix filter history usage. Fixes #597397
The process functions where overwriting the history for each channel. Also pull
some static things out of the inner loop.
2009-10-05 23:04:39 +03:00
Wim Taymans
0040d01265 rtpbin: use locking around the sessions 2009-10-05 16:07:24 +02:00
Tim-Philipp Müller
45ff905771 qtdemux: make sure compatible brands buffer exists before dereferencing it 2009-10-05 11:46:08 +01:00
Robert Swain
c7b5df91a9 qtdemux: fix printf warnings on OSX
Cast variables passed to printf to avoid warnings about incorrect
formats (most likely caused by sizeof returning a size_t).

Fixes #597348.
2009-10-05 00:35:15 +01:00
Tim-Philipp Müller
4590daf202 qtdemux: remove internal genre table
No need to maintain our own genre table in qtdemux. The genres are
identical to the ID3 genres, so we can just use libgsttag's
gst_tag_id3_genre_get() to look them up.
2009-10-05 00:26:44 +01:00
Robert Swain
c45c304a7e Fix printf formats to avoid warnings in avidemux. Fixes #597214
https://bugzilla.gnome.org/show_bug.cgi?id=597214
2009-10-03 17:25:19 +02:00
Sebastian Dröge
650292706d matroskademux: Change one GST_WARNING to a GST_DEBUG 2009-10-03 12:21:34 +02:00
Sebastian Dröge
48b784e715 flvdemux: If there's no audio stream after 6 seconds of video signal no-more-pads
...and the other way around. Also ignore any audio/video streams that appear
after no-more-pads.

Fixes bug #597091.
2009-10-03 12:21:34 +02:00
Sebastian Dröge
f84bc538b5 flvdemux: Make sure to only signal no-more-pads a single time 2009-10-03 12:21:34 +02:00
Stefan Kost
d1d126b5b4 rtp: add missing include to fix the build 2009-10-02 18:25:16 +03:00
Stefan Kost
da05a85455 videofilter: add G_OBJECT_WARN_INVALID_PROPERTY_ID to property setter 2009-10-02 13:44:41 +03:00
Stefan Kost
948d5168ce level: don't give wrong number of fields in the message docs 2009-10-02 13:44:41 +03:00
Wim Taymans
8fb77403c5 jitterbuffer: cache latency in nanoseconds
Cache the latency in nanoseconds units to avoid having to convert the
milliseconds value to nanoseconds all the time.
2009-10-01 12:52:40 +02:00
Wim Taymans
c262735164 jitterbuffer: handle -1 input timestamps
Don't try to check a -1 timestamp against the max delay.
2009-10-01 12:12:09 +02:00
Stefan Kost
458cd4dcdc avi: don't misues perf-category and remove unused ext category
The performance category is meant to be used to audit codepaths that lead to bad
performance (e.g. copies, conversion that can be avoided).
Remove the event category which is not used.
2009-10-01 10:57:42 +03:00
Olivier Crête
00db9a585b rtpg729pay/depay: Demote per-buffer debug messages to log level 2009-09-30 20:36:05 -04:00
Olivier Crête
165516f0ef rtpg729pay: Don't leak incoming buffers after subbuffering them 2009-09-30 20:36:05 -04:00
Olivier Crête
680c97a7ca rtpg729pay/depay: Add debug categories 2009-09-30 20:36:05 -04:00
Olivier Crête
1ba7693f7a rtpg729pay: Remove long unneeded define replacement 2009-09-30 20:36:05 -04:00
Wim Taymans
3f263edbbf avi: small cleanups 2009-09-28 22:18:25 +02:00
Wim Taymans
217315c20b avi: fix timestamping in some audio streams
For vbr audio streams we need to use the number of blocks to calculate the
timestamps.
When the allocation of additional index memory fails, don't throw away what
we had before.
Various cleanups.
2009-09-28 22:17:02 +02:00
Wim Taymans
7b9b8343ba avi: add support for ODML indexes again 2009-09-28 22:17:00 +02:00
Wim Taymans
ceb7d66e25 avi: implement index scanning
Implement scanning of the file when we can parse the index.
Some refactoring of common code.
Cleanups and comments.
Remove some reimplemented code.
Remove index massage code and put a FIXME where we should do something
equivalent later.
2009-09-28 22:16:57 +02:00
Wim Taymans
8aa3830852 avi: fix reverse playback 2009-09-28 22:16:55 +02:00
Wim Taymans
3338f91cfe avi: fix prev keyframe search and cleanups 2009-09-28 22:16:53 +02:00
Wim Taymans
1b325945e5 avi: remove code that got converted 2009-09-28 22:16:50 +02:00
Wim Taymans
c199b1d039 avi: more cleanups
Remove some duplicate counters.
Be smarter when updateing the current the timestamp and offset in the stream
because we can reuse previously calculated values when simply go forward one
step.
Correctly set metadata on outgoing buffers.
2009-09-28 22:16:48 +02:00
Wim Taymans
0d70fe30a8 avidemux: small cleanups 2009-09-28 22:16:46 +02:00
Wim Taymans
b4a490655a avi: fix read offset and cleanups 2009-09-28 22:16:43 +02:00
Wim Taymans
9c37611dfa avi: rewrite index playback
disable code, start on reimplementing loop based operation.
Rewrite the index handling so that all streams use their own index for decoding
media.
2009-09-28 22:16:41 +02:00
Wim Taymans
89bcbbbe7c avidemux: add new index parsing code
Add a new function and datastructure to parse and hold the index entries on a
per stream base. Also avoid doing too much work trying to figure out the
timestamps and durations as we can trivially do that later.

Less information in the entries makes them 2 times smaller and not doing too
much work makes this code about 12 times faster than the regular case.

Hook in the new function alongside the existing function for comparison until
the rest of the code is updated to handle the new index datastructure.
2009-09-28 22:16:38 +02:00
Mark Nauwelaerts
0fac7b5347 qtdemux: some optional QT specified stsd MPEG-4 atoms also apply to H264
Fixes #596319.
2009-09-25 19:23:15 +02:00
Mark Nauwelaerts
e21d16a4f8 qtdemux: only send tag events downstream after newsegment 2009-09-25 16:47:42 +02:00
Mark Nauwelaerts
50d5c8dce5 rtspsrc: if transport protocol unsupported, try another one
Also change error message to more accurately reflect cases in which
it can occur.
2009-09-25 16:47:39 +02:00
Wim Taymans
03f46a42e5 qtdemux: add durations modulo 1<<32
For calculating the durations of each sample, we are supposed to add each
duration modulo 1<<32 so make the elapsed time counter a uint32.

Fixes #595942
2009-09-25 11:54:06 +02:00
Wim Taymans
4e114a2b24 qtdemux: small cleanup 2009-09-24 20:38:54 +02:00
Tim-Philipp Müller
01e00ba1cd qtdemux: don't use core API that doesn't exist yet
There's no gst_byte_reader_has_remaining() yet. Fixes build.
2009-09-24 19:33:39 +01:00
Tim-Philipp Müller
fab4113c24 qtdemux: map some atomparser functions to their new bytereader equivalents
Now that GstByteReader has unchecked and inlined variants as well, map
atomparser functions to their respective bytereader equivalents.
2009-09-24 16:34:08 +01:00
Tim-Philipp Müller
0f197776e1 qtdemux: add qt_atom_parser_has_chunks() and fix indentation 2009-09-24 16:32:02 +01:00
Tim-Philipp Müller
f65e6ea3a1 qtdemux: bail out instead of trying to alloc silly index sizes
If it looks like we would be allocating a silly size for our sample
index, just bail out instead of trying to allocate it. Helps with
broken or fuzzed files where we might end up trying to malloc a
couple of hundred MBs otherwise.
2009-09-24 16:29:26 +01:00
Tim-Philipp Müller
abaf91e428 qtdemux: error out correctly if we don't even have enough bytes for an atom header 2009-09-24 16:29:25 +01:00
Tim-Philipp Müller
25db7df49b qtdemux: init fourcc to 0 as well to avoid invalid reads when printf'ing error message 2009-09-24 16:29:25 +01:00
Tim-Philipp Müller
9da3ed6491 qtdemux: add qt_atom_parse_has_remaining() to avoid overflows with _get_remaining() 2009-09-24 16:28:40 +01:00
Tim-Philipp Müller
a16feec38e qtdemux: use GstByteReader when parsing tkhd atom 2009-09-23 16:54:43 +01:00
Tim-Philipp Müller
6b7f4f5e23 qtdemux: use unsigned ints for node length and do more sanity checking of the atom length 2009-09-23 16:54:43 +01:00
Tim-Philipp Müller
3abeb1e578 qtdemux: use GstByteReader for atom dumping and fix a few bugs 2009-09-23 16:54:42 +01:00
Tim-Philipp Müller
c8c9b0f35d qtdemux: move stco, stts, stss and stps atom parsing over to GstByteReader
Make sure we don't read beyond the atom boundary. Note that the code
behaves slightly differently in the corner case where there is not
enough atom data for the specified number of samples (n_samples_time)
in the atom, but still enough data to fill the pre-allocated index of
n_samples entries: before we would just stop parsing the stts data
and continue, whereas now we will likely error out. This should not
be a problem in practice though. We could maintain the old behaviour
by doing reads with a size check inside the loop if needed.
2009-09-23 16:54:42 +01:00
Tim-Philipp Müller
4be46b1586 qtdemux: use bytereader to parse stsz and stsc atoms
Use GstByteReader to parse stsz and stsc chunks, and check size of
available data before parsing it, instead of blindly assuming there
will be enough data. Fixes crashes with some fuzzed/broken files.
2009-09-23 16:54:42 +01:00
Tim-Philipp Müller
5875e2016a qtdemux: add qt_atom_parser_get_offset() and optimise _peek_sub() 2009-09-23 16:54:42 +01:00
Tim-Philipp Müller
410ebb7eb3 qtdemux: add QtAtomParser, an inlined GstByteReader variant 2009-09-23 16:54:41 +01:00
Mark Nauwelaerts
02581dd2a5 matroskademux: use proper order for no-more-pads and newsegment and tag sending 2009-09-23 17:24:22 +02:00
Mark Nauwelaerts
702df566c3 matroskademux: sprinkle a few branch prediction macros 2009-09-23 17:24:22 +02:00
Alessandro Decina
195883b30a Fix compile warnings with gcc 4.0.1. 2009-09-22 15:04:36 +02:00
Jan Schmidt
600516be90 matroskamux: Don't get stuck in an infinite loop with Dirac
At the end, Dirac streams have an EOS packet with 0 length.
Don't ever sit in an infinite loop when processing one. Allows
muxing Dirac into mkv to complete successfully.
2009-09-22 11:50:11 +01:00
Tim-Philipp Müller
0506545b04 videomixer: fix up Makefile some more
Remove CFLAGS from LIBADD and make order of the various CFLAGS and
LIBS at least consistent with each other.
2009-09-22 11:02:02 +01:00
Brian Cameron
341be447a6 videomixer: Add $(GST_PLUGINS_BASE_LIBS) to LDFLAGS for linking libgstvideo
Fixes bug #595897.
2009-09-22 08:09:39 +02:00
Wim Taymans
10eb1a0ff4 avi: fix timestamps in push mode 2009-09-21 18:10:12 +02:00
Wim Taymans
2f26ee4285 avi: add some performance measurements
Measure the performance of various index and header parsing steps to the
PERFORMANCE debug category.
2009-09-21 12:32:51 +02:00
Stefan Kost
0868ddf30f avidemux: some logging cleanup to help understanding the index parsing overhead 2009-09-18 14:27:45 +03:00
Olivier Crête
750387f520 rtpg729pay: Fix adapter leak
The adapter would be leaked if it was empty and the data could be pushed out directly.
2009-09-15 17:24:24 -04:00
David Schleef
78eeb6636e multifilesink: Add next-file property
Add a property to allow control over what event causes a file
to finish being written and a new file start.  The default is
the same as before -- each buffer causes a new file to be
written.  Added is a case where buffers are written to the
same file until a discontinuity in the stream.
2009-09-13 20:00:53 -07:00
Michael Smith
3257374310 wavparse: treat a zero-sized data chunk as extending to the end of the file.
This fixes playback of some files that don't have a valid data chunk length,
apparently some program creates these.
2009-09-11 13:34:01 -07:00
Wim Taymans
445236a769 spectrum: add post-messages property
Add a post-messages property and deprecate the less descriptive message
property.
2009-09-11 13:28:35 +02:00
Wim Taymans
1935483fbf multifilesink: rename silent to post-messages
Use the post-messages property name instead of silent as it is more
descriptive.
2009-09-11 13:12:54 +02:00
Wim Taymans
f68cd7e708 multifilesink: post messages for each buffer
Add a silent property that can be set to FALSE to post messages on the bus for
each written file.
Do some more cleanups.
Add some docs.

Fixes #594663
2009-09-11 12:17:21 +02:00
Olivier Crête
411c71da13 rtph263pay: Allocate Boundry structs on the stack instead of the heap to avoid leaks
Fixes bug #594691.
2009-09-11 07:31:38 +02:00
Stefan Kost
0a7ef67ad0 docs: fix gtk-doc warnings 2009-09-10 10:28:48 +03:00
Sebastian Dröge
a9909c1abf videobox: Fix AYUV->I420 conversion
For this fix the averaging of the chroma values. It should't be (a/2 + b)/2
but just (a + b)/2.

Fixes bug #594599.
2009-09-09 16:28:53 +02:00
Marc-André Lureau
fe2d8bdc64 multipartmux: mark data buffer as delta-unit
So that multifdsink always start sending header buffer first

Fixes #594520
2009-09-08 18:34:49 +02:00
Marc Leeman
6b46aeb6a3 rtpbin: add ignore-pt parameter
Add a parameter 'ignore-pt' that disables creating a gstrtpptdemux module and
ghosts the pads of gstrtpjitterbuffer instead of the ones of gstrtpptdemux.

Fixes #594490
2009-09-08 17:38:32 +02:00
Håvard Graff
2912b21d14 rtpbin: propagate payload-type-change signal from demuxer
fixes #594254
2009-09-08 13:59:56 +02:00
Havard Graff
a52309eff7 jitterbuffer: change severity of clock-rate change debug
Make log GST_DEBUG under normal circumstances, GST_WARNING otherwise.

Fixes #594253
2009-09-08 13:44:49 +02:00
Håvard Graff
40549278c3 jitterbuffer: avoid throwing reordered buffers with same timestamps
When we receive a reordered packet with the same timestamp as the previous one
(which can happen for fragmented packets) don't consider the packet as lost but
instead wait for the reordered packet to arrive.

Switch the warning-level, so that a reordering does not get a warning, only
an actual produced lost-packet.

Fixes #594251
2009-09-08 13:39:31 +02:00
Havard Graff
6108024838 rtpjpegdepay: add missing math.h include
Fixes #594247
2009-09-08 13:32:51 +02:00
Arnout Vandecappelle
19455200b1 rtspsrc: fix memory leak
In gst_rtspsrc_parse_digest_challenge(), rtspsrc does a g_strndup of the auth
header items and then passes them to gst_rtsp_connection_set_auth_param()
without freeing.

Fixes #594133
2009-09-08 13:30:29 +02:00
Stig Sandnes
8f3299c547 rtpbin: make free_session() remove stream references
When receiving a sync-packet, all sessions with the same cname will be compared
and synced together. In this process, there could still be references to a
session that has been shut down in the meanwhile.

This patch makes sure that these references are removed when shutting down a
session, so that the syncing can be done safely.

Fixes #594283
2009-09-08 13:18:29 +02:00
Havard Graff
e08e610db0 rtpbin: use locked state on internal bins
Set the locked state on internal elements to make sure that they don't change
back to another state when shutting down.

Fixes #594248
2009-09-08 12:41:52 +02:00
Zaheer Merali
c6b2dff77e y4menc: Add interlaced support
Fixes #591713

Signed-off-by: David Schleef <ds@schleef.org>
2009-09-05 20:53:10 -07:00
David Schleef
55d2754098 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-09-05 20:53:10 -07:00
Mark Nauwelaerts
868a4b1303 qtdemux: prevent a spurious debug warning 2009-09-04 13:51:25 +02:00
Sebastian Dröge
b35b752c41 matroskademux: Correctly handle NULL GstIndex 2009-09-04 07:10:03 +02:00
Laurent Glayal
371875c57a rtpsource: fix memleak
Don't leak the input buffer when the received and expected seqnum are different when
in probation.

fixes #594039
2009-09-03 19:37:10 +02:00
Olivier Crête
f542f710cf rtpjitterbuffer: Lock clock_rate variable
The priv->clock_rate variable could become -1 between when its checked to not
be -1 and when its used, causing an assertion. Fixed by taking the mutex
earlier in the chain() function.

Fixes #593955
2009-09-03 19:17:00 +02:00
Wim Taymans
3fcde4486d rtpsource: whitespace fixes 2009-09-03 19:17:00 +02:00
Wim Taymans
bf73a6ee3a rtpmpapay: whitespace fixes 2009-09-03 19:17:00 +02:00
Wim Taymans
3f629f6001 rtpsession: whitespace fixes 2009-09-03 19:16:59 +02:00
Stefan Kost
272683ff36 flvmux: fully use tagsetter to manage the tags. Fixes #563221
There is no need to manage a separate taglist.
2009-09-03 14:48:14 +03:00
Peter Kjellerstedt
fdf18653b7 rtpmanager: Fixed a copy & paste error 2009-09-01 15:06:46 +02:00
Peter Kjellerstedt
dc4f9575be rtpmanager: Removed unused variable priv
The variable priv was initialized in a lot of functions but then never
used for anything.
2009-09-01 13:21:23 +02:00
Peter Kjellerstedt
57adc2a803 rtpmanager: A little clean up
Make the code flow of gst_rtp_session_send_rtcp() and
gst_rtp_session_sync_rtcp() identical.
2009-09-01 13:04:14 +02:00
Peter Kjellerstedt
923b5b495a rtpmanager: Make sure that used caps are not freed already (take 2)
This reintroduces the fix for bug #593391. It also applies it in
gst_rtp_session_sync_rtcp() which has very similar code to
gst_rtp_session_send_rtcp().
2009-09-01 13:04:14 +02:00
Wim Taymans
8d924611e7 jitterbuffer: make sure time does not go backwards
When we construct a timestamp that would result in a timestamp that is earlier
than when the packet was received, reset the skew calculation as this is
probably a sign that the sender restarted or paused.

Fixes #593354
2009-09-01 12:48:28 +02:00
Peter Kjellerstedt
bfb1260af4 rtpmanager: Set caps in gst_rtp_session_send_rtcp() correctly again
The test for when to set an RTCP caps on the output pad in
gst_rtp_session_send_rtcp() accidentally got inverted in the last commit.
2009-09-01 11:32:41 +02:00
Sebastian Dröge
e7efa0a5be qtdemux: Add support for QCELP audio
Fixes bug #593757.
2009-09-01 10:26:46 +02:00
Peter Kjellerstedt
fbefd9c666 effectv: Fix compilation with gcc 3
Recent changes in gst-plugins-good/gst/effectv prevents it from being compiled
with gcc 3. The problem is that the new code uses preprocessor conditionals
within a macro call which does not work with older versions of gcc.

Fixes bug #593688.
2009-08-31 18:11:28 +02:00
Mark Nauwelaerts
c9a434bbff rtpmp4gdepay: consider (optional) auxiliary data when parsing 2009-08-31 16:50:01 +02:00
Mark Nauwelaerts
30efa405f3 rtpmp4gdepay: handle broken AU-Index in non-interleaved streams
In case of non-interleaved (= sequentially payloaded) streams,
the AU-Index serves little purpose (that is not already covered by
RTP fields).  (Broken) Payloaders might consider this field then
to be disregarded and have non spec compliant values, e.g. each
RTP packet having AU-Index 2 (rather than 0).  As such, ensure/force
simple sequential sending of non-interleaved streams.
2009-08-31 16:50:01 +02:00
Mark Nauwelaerts
15fa7d33ed qtdemux: also extract ftyp info in push mode 2009-08-31 16:50:01 +02:00
Mark Nauwelaerts
c469f6b38d qtdemux: consider 3gpp style tag parsing in some more cases
3GPP specs define a number of tags along with precise layout. While these
are normally expected to be found in a container whose major brand is a
3GPP brand, this may also happen when a 3GPP brand is only mentioned as a
compatible brand.  Apply some checks, heuristic and fallbacks to extract
such tags as well.
2009-08-31 16:50:00 +02:00
Mark Nauwelaerts
0f900afe1f wavparse: reflow exit, and fix some leaks 2009-08-31 16:50:00 +02:00
Mark Nauwelaerts
efb5d1b545 wavparse: push mode; add pad if needed so downstream gets EOS 2009-08-31 16:50:00 +02:00
Mark Nauwelaerts
79f69bbf72 wavparse: push mode; fix/improve chunk handling
Handle large, invalid or otherwise unusual chunk sizes.
Verify some chunk sizes to be at least the size they are
expected to be and round up some sizes to even number for
e.g. offset administration, which must also be properly
tracked in push mode.
2009-08-31 16:50:00 +02:00
Mark Nauwelaerts
bb2b02c5b7 avidemux: push mode; cater for unusual chunk sizes 2009-08-31 16:50:00 +02:00
Wim Taymans
a74c385b7b rtpsession: use proper locking for pads and caps
Use the sesion lock and shotdown variable to protect and ref the pads we are
going to push on.

fixes #561825
2009-08-31 16:38:27 +02:00
Wim Taymans
a522a2d4d2 rtpbin: whitespace fixes 2009-08-31 16:33:26 +02:00
Tim-Philipp Müller
4cf513da9b wavparse: clean up adapter properly
Reflow code so we don't try to clear or re-use an already-freed adapter.
2009-08-31 13:40:14 +01:00
Tim-Philipp Müller
d875e72b02 flactag, wavparse: GstAdapter is not a GstObject 2009-08-31 13:07:53 +01:00
Jan Schmidt
3f69f8d3ee flvdemux: Fix tests warning from setting a NULL index
Setting a null index in the tests was causing warnings by unreffing
NULL pointers. This is a bug exposed by a recent change in core, it
seems.
2009-08-31 12:10:05 +01:00
Wim Taymans
a26a2a9ff5 jitterbuffer: add slope estimation code and debug
Add some code to measure the sender speed vs the receiver speed. This can be
used to detect bursts.
2009-08-31 13:02:16 +02:00
Wim Taymans
4814d899c2 jitterbuffer: reset skew when timestamps change
Refactor the jitterbuffer resync code.
Reset the skew correction when we detect a big timestamp discont.

See #593354
2009-08-31 12:57:32 +02:00
Wim Taymans
e254936e34 jitterbuffer: make sure time never goes invalid
Since the skew can be negative, we might end up with invalid timestamps. Check
for negative results and clamp to 0.

See #593354
2009-08-31 12:47:15 +02:00
Jarkko Palviainen
1f14f577d8 udpsink: Add ttl multicast property
Add a new ttl-mc property to control the TTL on multicast addresses.

Fixes #588245
2009-08-31 12:16:01 +02:00
Jarkko Palviainen
e2518fedbe udp: split out TTL and loop options
Split setting the TTL and loop parameters in 2 methods as they are not related.
Fix setting the TTL correctly for multicast streams.

See #588245
2009-08-31 12:13:07 +02:00
Wim Taymans
6a53d0a2c9 rtp: whitespace fixes 2009-08-31 11:32:06 +02:00
Sebastian Dröge
867b8c9d15 videobox: Split declarations into a header file and add autocrop stuff to the docs 2009-08-31 08:19:25 +02:00
Sebastian Dröge
6976f3d39a videobox: Reconfigure basetransform if something changes again
For this invent a new lock and don't abuse the basetransform lock,
otherwise we'll end up in deadlocks.
2009-08-31 08:19:25 +02:00
Stephen Jungels
041ddd6f8f videobox: Add support for autocropping according to the caps
Fixes bug #582238.
2009-08-31 08:19:25 +02:00
Sebastian Dröge
041fa82179 rtpsession: Make sure that used caps are not freed already
Fixes bug #593391.
2009-08-31 08:09:09 +02:00
Sebastian Dröge
000a483d31 rtp: Use new gst_iterator_new_single() for the internal linked pads iteration 2009-08-31 08:09:09 +02:00
Sebastian Dröge
a1cddb3fd6 rtpsession: Use iterate internal links instead of deprecated get internal links 2009-08-31 08:09:09 +02:00
Sebastian Dröge
c8c02d2c7a jitterbuffer: Use iterate internal links instead of deprecated get internal links 2009-08-31 08:09:08 +02:00
Sebastian Dröge
97cb7bdb6c rtpssrcdemux: Use iterate internal links instead of deprecated get internal links 2009-08-31 08:09:08 +02:00
Wim Taymans
e9e94a771b qtdemux: add support for agsm
Fixes #592530
2009-08-21 11:44:43 +02:00
Mark Nauwelaerts
15d17763c0 qtdemux: fix qt style string tag extraction
QT style tags are tested on starting with (C) symbol using >>,
and (unsigned) int (may) have different >> behaviour.
Fixes #592232.
2009-08-18 19:01:11 +02:00
Olivier Crête
7f569ca9c8 rtpbin: Fix reference leak
Fixes #591476.
2009-08-14 13:47:18 +01:00
ric
92abe07e80 rtpsource: avoid buffer leak on bad seqnum
Fixes #590797
2009-08-11 02:30:47 +01:00
Wim Taymans
9f68303a2e rtpsource: allow for NULL caps on buffers
Add the NULL caps check where it matters and also cover another case of
potential NULL caps.

Fixes #590030
2009-08-11 02:30:47 +01:00
Olivier Crête
e37844fdc7 rtpsource: Incoming buffers do not always have caps 2009-08-11 02:30:47 +01:00
Wim Taymans
3091137217 rtpsession: avoid doing lip-sync in BYE
When we get a BYE packet, don't do lip-sync with the SR inside because some
senders have trouble constructing valid SR packets after BYE.
2009-08-11 02:30:47 +01:00
Wim Taymans
3747ede14a rtpbin: don't do lip-sync after a BYE
After a BYE packet from a source, stop forwarding the SR packets for lip-sync
to rtpbin. Some senders don't update their SR packets correctly after sending a
BYE and then we break lip-sync. We prefer to let the jitterbuffers drain with
the current lip-sync instead.
2009-08-11 02:30:47 +01:00
Wim Taymans
d2ef095b80 rtpbin: only reconsider once for BYE
When iterating the sources of a BYE packet, don't signal a reconsideration for
each of them but signal after we handled all sources.
2009-08-11 02:30:47 +01:00
Olivier Crête
e8c6bcdf8d rtpsession: Free conflicting addresses on finalize 2009-08-11 02:30:46 +01:00
Wim Taymans
428368b44a rtpbin: use new method for netaddress to string 2009-08-11 02:30:46 +01:00
Wim Taymans
512ba93159 rtpbin: do better cleanup of the src ghostpads
Connect to the pad-removed signal of the ptdemux elements so that we remove the
ghostpads for them. Fixes cleanup when going to NULL as well as when releasing
the sinkpads.

Fixes #561752
2009-08-11 02:30:46 +01:00
Wim Taymans
d7a8663e05 rtpsession: add a comment 2009-08-11 02:30:46 +01:00
Wim Taymans
c53e595d23 rtpbin: add SDES property
Remove all individual SDES properties and use one sdes property that takes a
GstStructure instead. This will allow us to add more custom stuff to the SDES
messages later.
2009-08-11 02:30:46 +01:00
Wim Taymans
9f330992f5 rtpbin: add SDES property that takes GstStructure
Remove all individual SDES properties and use one sdes property that takes a
GstStructure instead. This will allow us to add more custom stuff to the SDES
messages later.
2009-08-11 02:30:46 +01:00
Wim Taymans
d8496fb105 rtpbin: removed old gstrtpclient 2009-08-11 02:30:45 +01:00
Branko Subasic
779f67adc4 rtpbin: add support for buffer-list
Add support for sending buffer-lists.
Add unit test for testing that the buffer-list passed through rtpbin.

fixes #585839
2009-08-11 02:30:45 +01:00
Tim-Philipp Müller
c5793a6a45 Make build without warnings with debugging disabled 2009-08-11 02:30:45 +01:00
Olivier Crête
cf873498d2 rtpbin: Transform the right session sdes message
Fixes #584165
2009-08-11 02:30:45 +01:00
Olivier Crête
dee142a945 Add ssrc to application/x-rtp-source-sdes structure 2009-08-11 02:30:45 +01:00
Wim Taymans
bf15048f42 rtpsouce: the network address is in network order
Bring the network address in netowkr byte order to the host order.
2009-08-11 02:30:45 +01:00
Wim Taymans
91eef69131 rtpsource: byteswap the port from GstNetAddress
Since the port in GstNetAddress is in network order we might need to byteswap it
before adding it to the source statistics.
2009-08-11 02:30:45 +01:00
Wim Taymans
51251d0fa8 rtpbin: remove ptdemux ghostpads 2009-08-11 02:30:44 +01:00
Wim Taymans
7d9c2d20df rtpbin: add to new signal to remove SSRC pads 2009-08-11 02:30:44 +01:00
Ali Sabil
6c684e59c6 ssrcdemux: emit signal when pads are removed
Add action signal to clear an SSRC in the ssrc demuxer.
Add signal to notify of removed ssrc.

See #554839
2009-08-11 02:30:44 +01:00
Wim Taymans
48872d8215 rtpbin: use our ghostpads instead of its target
Since we keep a reference to our ghostpads, we can use them to track sessions.
This avoid us having to mess with the target of the ghostpad.
2009-08-11 02:30:44 +01:00
Wim Taymans
901b7f3b69 rtpbin: don't warn when getting request pads twice
Allow getting the request pads multiple times, just return the previously
created pads.
2009-08-11 02:30:44 +01:00
Wim Taymans
0ae6e3603b rtpsource: add RTP and RTCP source address
Add the RTP and RTCP sender addresses in the stats structure.
2009-08-11 02:30:44 +01:00
Wim Taymans
62727e8fab rtpsession: reuse source code for SDES
Reuse the RTPSource object property instead of duplicating code.
2009-08-11 02:30:44 +01:00
Wim Taymans
1719af9113 rtpbin: set target state on new elements
Set the state on newly added elements to the state of the parent.
Add some debug info and do some cleanups
2009-08-11 02:30:43 +01:00
Wim Taymans
9c92ee6209 rtpbin: unref requests pads after releasing 2009-08-11 02:30:43 +01:00
Olivier Crête
a1c0bb2488 rtpbin: Implement releasing the streams
See #561752
2009-08-11 02:30:43 +01:00
Olivier Crête
e77542d350 rtpbin: Keep jb signals handler
Keep the signal handlers so they can be disconnected at release time

See #561752
2009-08-11 02:30:43 +01:00
Wim Taymans
59d0590cd7 rtpbin: use the right lock for the sessions
Use the right lock when iterating the sessions.
2009-08-11 02:30:42 +01:00
Olivier Crête
a9d6f3558c rtpbin: Free session if request pads are released
Free the session when all the request pads are released.
Don't mess with the session list in free_session as it is called from a foreach
on that list.
Set the state of the upstream element to NULL first.

See #561752
2009-08-11 02:30:42 +01:00
Olivier Crête
46388b767f rtpbin: Implement relasing of the rtp recv pad 2009-08-11 02:30:42 +01:00
Olivier Crête
3509098468 rtpbin: Implement releasing of rtp send pads 2009-08-11 02:30:42 +01:00
Olivier Crête
2f6e9d7bf2 rtpbin: Implement release of the recv rtcp pad
See #561752
2009-08-11 02:30:42 +01:00
Olivier Crête
47d4bb90c1 rtpbin: Implement releasing of rtcp src pad
See #561752
2009-08-11 02:30:41 +01:00
Wim Taymans
11607c4d63 rtpssrcdemux: drop unexpected RTCP packets
We usually only get SR packets in our chain function but if an invalid packet
contains the SR packet after the RR packet, we must not fail but simply ignore
the malformed packet.

Fixes #581375
2009-08-11 02:30:41 +01:00
Olivier Crete
3482b47666 rtpsouce: make WARNING into LOG
Since neither rtpmanager nor any of the payloaders properly implement
pad allocation, there is no way for the rtpmanager to inform downstream elements
of the new SSRC if there is an SSRC collision. So the warning is emitted all the
time and it is confusing.

Fixes #580144
2009-08-11 02:30:41 +01:00
Olivier Crete
63636b1290 rtpsession: notify when SSRC changes
Emit a g_object_notify when the SSRc changes because of a collision.
Fixes #580144
2009-08-11 02:30:41 +01:00
Wim Taymans
d45d18c735 rtpsession: join the RTCP thread
Avoid a case where a joinable thread would be left unjoined, which leaked the
thread structure.
Fixes #577318.
2009-08-11 02:30:41 +01:00
Wim Taymans
64046416cc jitterbuffer: prevent overflow in EOS estimation
Use a guint64 instead of a guint to hold a 64bit value to prevent completely
bogues EOS estimation values due to overflows.
2009-08-11 02:30:41 +01:00
Wim Taymans
d6c623e90c rtpbin: we should not provide a clock
There is no need to provide a clock.
2009-08-11 02:30:41 +01:00
Wim Taymans
5ece6ae4e3 jitterbuffer: more estimated EOS fixes
Do more accurate EOS estimate and guard against backward timestamps.
2009-08-11 02:30:41 +01:00
Wim Taymans
cbad89600c jitterbuffer: release lock before pushing EOS
Make sure we release the jitterbuffer lock before we start pushing out data
because else we might deadlock.
2009-08-11 02:30:41 +01:00
Wim Taymans
918c9448f2 rtpbin: add on_npt_stop signal
Add the on_npt_stop signal to rtpbin and rtpjitterbuffer to notify the
application that the NPT stop position has been reached.
2009-08-11 02:30:41 +01:00
Wim Taymans
55c3da71c1 rtpbin: don't return FALSE on seek events
Silently ignore the seek event instead of returning FALSE.
2009-08-11 02:30:41 +01:00
Olivier Crête
109874ed50 gstrtpbin: Don't forward revc events to sender
Don't send events from the receiver to the sender side.
Fixes #572900.
2009-08-11 02:30:40 +01:00
Stefan Kost
7ae3923ac6 docs: various doc fixes
No short-desc as we have them in the element details.
Also keep things (Makefile.am and sections.txt) sorted.
Reword ambigous returns. No text after since please.
2009-08-11 02:30:40 +01:00
Wim Taymans
2c6ab34114 Send BYE packets immediatly for small sessions
When the number of participants is less than 50, the RFC allows for sending the
BYE packet immediatly instead of using the regular BYE timeout.
Fixes #567828.
2009-08-11 02:30:40 +01:00
Wim Taymans
7f0b100db5 Unlock the jitterbuffer before pushing out the packet-lost events.
Move some code before we do the unlock to make the jitterbuffer state
consistent while we are unlocked.
2009-08-11 02:30:40 +01:00
Olivier Crete
dfdc9b6662 gst/rtpmanager/: When an SSRC is found on the caps of the sender RTP, use this as the internal SSRC. Fixes #565910.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_setcaps_send_rtp), (create_send_rtp_sink):
* gst/rtpmanager/rtpsession.c: (rtp_session_set_internal_ssrc):
When an SSRC is found on the caps of the sender RTP, use this as the
internal SSRC. Fixes #565910.
2009-08-11 02:30:40 +01:00
Wim Taymans
0ad92e7da6 gst/rtpmanager/: Rename a method to better reflect what it really does.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_event_send_rtp_sink),
(gst_rtp_session_getcaps_send_rtp):
* gst/rtpmanager/rtpsession.c: (check_collision),
(rtp_session_schedule_bye_locked), (rtp_session_schedule_bye):
* gst/rtpmanager/rtpsession.h:
Rename a method to better reflect what it really does.
2009-08-11 02:30:40 +01:00
Wim Taymans
06d1532024 gst/rtpmanager/gstrtpsession.c: Use method to get the internal SSRC.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_getcaps_send_rtp):
Use method to get the internal SSRC.
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(rtp_session_set_property), (rtp_session_get_property):
Add property to congiure the internal SSRC of the session.
Fixes #565910.
2009-08-11 02:30:40 +01:00
Wim Taymans
1786eb1e25 gst/rtpmanager/rtpsession.c: Only change the SSRC of the session and reset the internal source when the SSRC actually...
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (rtp_session_set_internal_ssrc):
Only change the SSRC of the session and reset the internal source when
the SSRC actually changed. See #565910.
2009-08-11 02:30:40 +01:00
Wim Taymans
3fe87f7eab gst/rtpmanager/rtpsource.*: When no payload was specified on the caps but there was a clock-rate, assume the clock-ra...
Original commit message from CVS:
* gst/rtpmanager/rtpsource.c: (rtp_source_init),
(rtp_source_update_caps), (get_clock_rate):
* gst/rtpmanager/rtpsource.h:
When no payload was specified on the caps but there was a clock-rate,
assume the clock-rate corresponds to the first payload type found in the
RTP packets. Fixes #565509.
2009-08-11 02:30:40 +01:00
Arnout Vandecappelle
2142edd399 gst/rtpmanager/rtpjitterbuffer.*: Keep track of the last outgoing timestamp and of the last sender-side time. Timest...
Original commit message from CVS:
Patch by: Arnout Vandecappelle <arnout at mind dot be>
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew),
(calculate_skew):
* gst/rtpmanager/rtpjitterbuffer.h:
Keep track of the last outgoing timestamp and of the last sender-side
time.  Timestamps can only go forward if they do at the sender
side, can only go back if they do at the sender side, and remain the
same if they remain the same at the sender side. Fixes #565319.
2009-08-11 02:30:40 +01:00
Wim Taymans
5b6700a022 gst/rtpmanager/rtpsession.c: Make obtain_source return an aditional ref so that we don't lose our ref to it when a se...
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (obtain_source),
(rtp_session_create_source), (rtp_session_process_rtp),
(rtp_session_process_sr), (rtp_session_process_rr),
(rtp_session_process_sdes), (rtp_session_process_bye):
Make obtain_source return an aditional ref so that we don't lose our ref
to it when a session cleanup occurs when we are emiting a signal.
Emit the on_new_ssrc signal for the CSRC, not the SSRC.
Fixes #562319.
2009-08-11 02:30:39 +01:00
Wim Taymans
a80f7dc19a gst/rtpmanager/gstrtpbin.c: Reset the sync parameters when clearing the payload type map too.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_reset_sync),
(gst_rtp_bin_clear_pt_map):
Reset the sync parameters when clearing the payload type map too.
Fixes #562312.
2009-08-11 02:30:39 +01:00
Wim Taymans
a2d7487ee1 gst/rtpmanager/gstrtpbin.*: Remove a lot of per stream state that is not needed and pass new info in the method call.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (get_client),
(gst_rtp_bin_reset_sync), (gst_rtp_bin_associate),
(gst_rtp_bin_handle_sync), (create_stream),
(gst_rtp_bin_class_init), (new_ssrc_pad_found):
* gst/rtpmanager/gstrtpbin.h:
Remove a lot of per stream state that is not needed and pass new info in
the method call.
Add signal to reset sync parameters.
Avoid parsing the caps to get a clock_base, we get this from the sync
signal now.
2009-08-11 02:30:39 +01:00
Wim Taymans
b8408946b7 gst/rtpmanager/gstrtpsession.c: Fix event leak.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_event_send_rtcp_src):
Fix event leak.
2009-08-11 02:30:39 +01:00
Wim Taymans
ae346d9a6d gst/rtpmanager/rtpsession.c: Add property to configure the RTCP MTU.
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(rtp_session_init), (rtp_session_set_property),
(rtp_session_get_property):
Add property to configure the RTCP MTU.
2009-08-11 02:30:39 +01:00
Wim Taymans
55bb4d5c95 gst/rtpmanager/rtpsession.c: Add G_PARAM_STATIC_STRINGS.
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(copy_source), (rtp_session_create_sources),
(rtp_session_get_property):
Add G_PARAM_STATIC_STRINGS.
Add property to return a GValueArray of all known RTPSources in the
session.
* gst/rtpmanager/rtpsource.c: (rtp_source_class_init),
(rtp_source_create_sdes), (rtp_source_set_property),
(rtp_source_get_property):
Remove properties to set the various SDES items, an application is never
supposed to change the RTPSource data.
Change the SDES getter properties to one SDES property that returns all
SDES items in a GstStructure.
2009-08-11 02:30:39 +01:00
Wim Taymans
c84ffd8460 gst/rtpmanager/gstrtpbin.c: Also unref the target pad for unknown pads.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_release_pad):
Also unref the target pad for unknown pads.
2009-08-11 02:30:39 +01:00
Olivier Crete
75580396d9 gst/rtpmanager/gstrtpbin.c: Release the right pads on rtpbin. Fixes #561752.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_release_pad):
Release the right pads on rtpbin. Fixes #561752.
2009-08-11 02:30:39 +01:00
Wim Taymans
2f5b130af3 gst/rtpmanager/gstrtpsession.c: Pass the running time to the session when processing RTP packets.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (get_current_times),
(rtcp_thread), (gst_rtp_session_chain_recv_rtp):
Pass the running time to the session when processing RTP packets.
Improve the time function to provide more info.
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(rtp_session_init), (update_arrival_stats),
(rtp_session_process_rtp), (rtp_session_process_sdes),
(rtp_session_process_rtcp), (session_start_rtcp),
(rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Mark the internal source with a flag.
Use running_time instead of the more useless timestamp.
Validate a source when a valid SDES has been received.
Pass the current system time when processing SR packets.
* gst/rtpmanager/rtpsource.c: (rtp_source_class_init),
(rtp_source_init), (rtp_source_create_stats),
(rtp_source_get_property), (rtp_source_send_rtp),
(rtp_source_process_rb), (rtp_source_get_new_rb),
(rtp_source_get_last_rb):
* gst/rtpmanager/rtpsource.h:
Add property to get source stats.
Mark params as STATIC_STRINGS.
Calculate the bitrate at the sender SSRC.
Avoid negative values in the round trip time calculations.
* gst/rtpmanager/rtpstats.h:
Update some docs and change some variable name to more closely reflect
what it contains.
2009-08-11 02:30:39 +01:00
Sebastian Dröge
e51423aab9 gst/rtpmanager/gstrtpjitterbuffer.c: Initialize return value to fix compiler warning about uninitialized variable.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain_rtcp):
Initialize return value to fix compiler warning about uninitialized
variable.
2009-08-11 02:30:39 +01:00
Wim Taymans
d0ada6127e gst/rtpmanager/gstrtpjitterbuffer.c: Mark signal arg as static scope.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init):
Mark signal arg as static scope.
2009-08-11 02:30:39 +01:00
Wim Taymans
592c3f222f gst/rtpmanager/gstrtpbin.c: Remove internal sync pad, use signals instead to get lip-sync notifications.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_associate),
(gst_rtp_bin_handle_sync), (create_stream), (free_stream),
(new_ssrc_pad_found):
Remove internal sync pad, use signals instead to get lip-sync
notifications.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_base_init),
(gst_rtp_jitter_buffer_class_init),
(gst_rtp_jitter_buffer_internal_links), (create_rtcp_sink),
(remove_rtcp_sink), (gst_rtp_jitter_buffer_request_new_pad),
(gst_rtp_jitter_buffer_release_pad),
(gst_rtp_jitter_buffer_sink_rtcp_event),
(gst_rtp_jitter_buffer_chain_rtcp),
(gst_rtp_jitter_buffer_get_property):
* gst/rtpmanager/gstrtpjitterbuffer.h:
Make it possible to send SR packets to the jitterbuffer.
Check if the SR timestamps are valid by comparing them to the RTP
timestamps.
Signal the SR packet and the timing information to listeners.
* gst/rtpmanager/gstrtpssrcdemux.c: (create_demux_pad_for_ssrc),
(gst_rtp_ssrc_demux_rtcp_chain), (gst_rtp_ssrc_demux_src_query):
Remove some unused code.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew),
(calculate_skew), (rtp_jitter_buffer_get_sync):
* gst/rtpmanager/rtpjitterbuffer.h:
Keep track of the last seen RTP timestamp so that we can filter out
invalid SR packets.
2009-08-11 02:30:38 +01:00
Sebastian Dröge
c3645239f5 gst/rtpmanager/rtpsource.c: Fix GST_DEBUG call to only have as many arguments as required by the format string. Fixes...
Original commit message from CVS:
* gst/rtpmanager/rtpsource.c: (get_clock_rate):
Fix GST_DEBUG call to only have as many arguments as required
by the format string. Fixes a compiler warning.
2009-08-11 02:30:38 +01:00
Wim Taymans
5ab3e10594 gst/rtpmanager/gstrtpbin.c: Do not try to keep track of the clock-rate ourselves but simply get the value from the ji...
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_associate),
(gst_rtp_bin_sync_chain), (create_stream), (new_ssrc_pad_found):
Do not try to keep track of the clock-rate ourselves but simply get the
value from the jitterbuffer.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_chain),
(gst_rtp_jitter_buffer_get_sync):
* gst/rtpmanager/gstrtpjitterbuffer.h:
Add some debug info.
Pass the clock-rate to the jitterbuffer.
Also pass the clock-rate along with the rtp timestamp when getting the
sync parameters.
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_chain):
Fix some debug.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew),
(calculate_skew), (rtp_jitter_buffer_get_sync):
* gst/rtpmanager/rtpjitterbuffer.h:
Keep track of clock-rate changes and return the clock-rate together with
the rtp timestamps used for sync.
Don't try to construct timestamps when we have no base_time.
* gst/rtpmanager/rtpsource.c: (get_clock_rate):
Request a new clock-rate when the payload type changes.
Reset the jitter calculation when the clock-rate changes.
2009-08-11 02:30:38 +01:00
Wim Taymans
1656fad93e gst/rtpmanager/: Small cleanups and some more debug info.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_jitter_buffer_sink_parse_caps),
(gst_rtp_jitter_buffer_flush_stop), (gst_rtp_jitter_buffer_chain):
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew),
(calculate_skew):
Small cleanups and some more debug info.
2009-08-11 02:30:38 +01:00
Wim Taymans
6485d60a01 gst/rtpmanager/gstrtpjitterbuffer.c: Also configure the next expected output seqnum when we get a seqnum-base on the ...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_chain):
Also configure the next expected output seqnum when we get a seqnum-base
on the caps.
2009-08-11 02:30:38 +01:00
Stefan Kost
b835296809 Don't install static libs for plugins. Fixes #550851 for -bad.
Original commit message from CVS:
* ext/alsaspdif/Makefile.am:
* ext/amrwb/Makefile.am:
* ext/apexsink/Makefile.am:
* ext/arts/Makefile.am:
* ext/artsd/Makefile.am:
* ext/audiofile/Makefile.am:
* ext/audioresample/Makefile.am:
* ext/bz2/Makefile.am:
* ext/cdaudio/Makefile.am:
* ext/celt/Makefile.am:
* ext/dc1394/Makefile.am:
* ext/dirac/Makefile.am:
* ext/directfb/Makefile.am:
* ext/divx/Makefile.am:
* ext/dts/Makefile.am:
* ext/faac/Makefile.am:
* ext/faad/Makefile.am:
* ext/gsm/Makefile.am:
* ext/hermes/Makefile.am:
* ext/ivorbis/Makefile.am:
* ext/jack/Makefile.am:
* ext/jp2k/Makefile.am:
* ext/ladspa/Makefile.am:
* ext/lcs/Makefile.am:
* ext/libfame/Makefile.am:
* ext/libmms/Makefile.am:
* ext/metadata/Makefile.am:
* ext/mpeg2enc/Makefile.am:
* ext/mplex/Makefile.am:
* ext/musepack/Makefile.am:
* ext/musicbrainz/Makefile.am:
* ext/mythtv/Makefile.am:
* ext/nas/Makefile.am:
* ext/neon/Makefile.am:
* ext/ofa/Makefile.am:
* ext/polyp/Makefile.am:
* ext/resindvd/Makefile.am:
* ext/sdl/Makefile.am:
* ext/shout/Makefile.am:
* ext/snapshot/Makefile.am:
* ext/sndfile/Makefile.am:
* ext/soundtouch/Makefile.am:
* ext/spc/Makefile.am:
* ext/swfdec/Makefile.am:
* ext/tarkin/Makefile.am:
* ext/theora/Makefile.am:
* ext/timidity/Makefile.am:
* ext/twolame/Makefile.am:
* ext/x264/Makefile.am:
* ext/xine/Makefile.am:
* ext/xvid/Makefile.am:
* gst-libs/gst/app/Makefile.am:
* gst-libs/gst/dshow/Makefile.am:
* gst/aiffparse/Makefile.am:
* gst/app/Makefile.am:
* gst/audiobuffer/Makefile.am:
* gst/bayer/Makefile.am:
* gst/cdxaparse/Makefile.am:
* gst/chart/Makefile.am:
* gst/colorspace/Makefile.am:
* gst/dccp/Makefile.am:
* gst/deinterlace/Makefile.am:
* gst/deinterlace2/Makefile.am:
* gst/dvdspu/Makefile.am:
* gst/festival/Makefile.am:
* gst/filter/Makefile.am:
* gst/flacparse/Makefile.am:
* gst/flv/Makefile.am:
* gst/games/Makefile.am:
* gst/h264parse/Makefile.am:
* gst/librfb/Makefile.am:
* gst/mixmatrix/Makefile.am:
* gst/modplug/Makefile.am:
* gst/mpeg1sys/Makefile.am:
* gst/mpeg4videoparse/Makefile.am:
* gst/mpegdemux/Makefile.am:
* gst/mpegtsmux/Makefile.am:
* gst/mpegvideoparse/Makefile.am:
* gst/mve/Makefile.am:
* gst/nsf/Makefile.am:
* gst/nuvdemux/Makefile.am:
* gst/overlay/Makefile.am:
* gst/passthrough/Makefile.am:
* gst/pcapparse/Makefile.am:
* gst/playondemand/Makefile.am:
* gst/rawparse/Makefile.am:
* gst/real/Makefile.am:
* gst/rtjpeg/Makefile.am:
* gst/rtpmanager/Makefile.am:
* gst/scaletempo/Makefile.am:
* gst/sdp/Makefile.am:
* gst/selector/Makefile.am:
* gst/smooth/Makefile.am:
* gst/smoothwave/Makefile.am:
* gst/speed/Makefile.am:
* gst/speexresample/Makefile.am:
* gst/stereo/Makefile.am:
* gst/subenc/Makefile.am:
* gst/tta/Makefile.am:
* gst/vbidec/Makefile.am:
* gst/videodrop/Makefile.am:
* gst/videosignal/Makefile.am:
* gst/virtualdub/Makefile.am:
* gst/vmnc/Makefile.am:
* gst/y4m/Makefile.am:
* sys/acmenc/Makefile.am:
* sys/cdrom/Makefile.am:
* sys/dshowdecwrapper/Makefile.am:
* sys/dshowsrcwrapper/Makefile.am:
* sys/dvb/Makefile.am:
* sys/dxr3/Makefile.am:
* sys/fbdev/Makefile.am:
* sys/oss4/Makefile.am:
* sys/qcam/Makefile.am:
* sys/qtwrapper/Makefile.am:
* sys/vcd/Makefile.am:
* sys/wininet/Makefile.am:
* win32/common/config.h:
Don't install static libs for plugins. Fixes #550851 for -bad.
2009-08-11 02:30:38 +01:00
Wim Taymans
eaa23fd49a gst/rtpmanager/gstrtpjitterbuffer.c: Fix problem with using the output seqnum counter to check for input seqnum disco...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_jitter_buffer_sink_parse_caps),
(gst_rtp_jitter_buffer_flush_start),
(gst_rtp_jitter_buffer_flush_stop), (gst_rtp_jitter_buffer_chain),
(gst_rtp_jitter_buffer_loop):
Fix problem with using the output seqnum counter to check for input
seqnum discontinuities.
Improve gap detection and recovery, reset and flush the jitterbuffer on
seqnum restart. Fixes #556520.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_insert):
Fix wrong G_LIKELY.
2009-08-11 02:30:38 +01:00
Wim Taymans
3563bbaabd gst/rtpmanager/gstrtpsession.c: Install event handler on the rtcp_src pad, make LATENCY event return
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_event_send_rtcp_src), (create_send_rtcp_src):
Install event handler on the rtcp_src pad, make LATENCY event return
TRUE.
2009-08-11 02:30:38 +01:00
Håvard Graff
3bebd53b6f gst/rtpmanager/gstrtpbin-marshal.list: Add marshaller for new action signal.
Original commit message from CVS:
Patch by: Håvard Graff <havard dot graff at tandberg dot com>
* gst/rtpmanager/gstrtpbin-marshal.list:
Add marshaller for new action signal.
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_get_internal_session),
(gst_rtp_bin_class_init):
* gst/rtpmanager/gstrtpbin.h:
Add action signal to retrieve the internal RTPSession object.
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(gst_rtp_session_get_property), (gst_rtp_session_release_pad):
Add property to access the internal RTPSession object.
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(check_collision):
* gst/rtpmanager/rtpsession.h:
Add action signal to retrieve an RTPSource object by SSRC.
See #555396.
2009-08-11 02:30:38 +01:00
Wim Taymans
bd8f4b6c58 gst/rtpmanager/gstrtpbin.c: Release pads of the session manager.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (find_session_by_pad),
(free_session), (gst_rtp_bin_dispose), (remove_recv_rtp),
(remove_recv_rtcp), (remove_send_rtp), (remove_rtcp),
(gst_rtp_bin_release_pad):
Release pads of the session manager.
Start implementing releasing pads of gstrtpbin.
* gst/rtpmanager/gstrtpsession.c: (remove_recv_rtp_sink),
(remove_recv_rtcp_sink), (remove_send_rtp_sink),
(remove_send_rtcp_src), (gst_rtp_session_release_pad):
Implement releasing pads in gstrtpsession.
2009-08-11 02:30:38 +01:00
Wim Taymans
4553863755 gst/rtpmanager/gstrtpjitterbuffer.c: Only update the seqnum-base when it was not already configured for the streams.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_jitter_buffer_sink_parse_caps):
Only update the seqnum-base when it was not already configured for the
streams.
2009-08-11 02:30:37 +01:00
Wim Taymans
55b7860cc4 gst/rtpmanager/rtpsession.c: Ref the rtpsource object before we release the session lock when we emit the signals.
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (on_new_ssrc), (on_ssrc_collision),
(on_ssrc_validated), (on_ssrc_active), (on_ssrc_sdes),
(on_bye_ssrc), (on_bye_timeout), (on_timeout), (on_sender_timeout):
Ref the rtpsource object before we release the session lock when we emit
the signals.
2009-08-11 02:30:37 +01:00
Wim Taymans
c2c69bfb86 gst/rtpmanager/: Fix some docs.
Original commit message from CVS:
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_insert),
(rtp_jitter_buffer_get_sync):
* gst/rtpmanager/rtpsession.c: (on_sender_timeout),
(session_cleanup):
* gst/rtpmanager/rtpsource.c:
Fix some docs.
2009-08-11 02:30:37 +01:00
Jan Schmidt
a2b86bbce5 Fix compiler warnings on OS/X
Original commit message from CVS:
* ext/jack/gstjackaudiosink.c: (jack_process_cb):
* gst/rtpmanager/rtpjitterbuffer.c: (calculate_skew):
Fix compiler warnings on OS/X
2009-08-11 02:30:37 +01:00
Wim Taymans
5e98fa572f gst/rtpmanager/gstrtpbin.c: Do not try to adjust the offset of streams for which we have not yet seen an SR packet. A...
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_session),
(gst_rtp_bin_associate), (gst_rtp_bin_sync_chain):
Do not try to adjust the offset of streams for which we have not yet
seen an SR packet. Avoids large ts-offsets in some cases.
2009-08-11 02:30:37 +01:00
Wim Taymans
85e26f6546 gst/rtpmanager/gstrtpbin.*: Add signal to notify listeners when a sender becomes a receiver.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (on_sender_timeout),
(create_session), (gst_rtp_bin_associate),
(gst_rtp_bin_sync_chain), (gst_rtp_bin_class_init),
(gst_rtp_bin_request_new_pad):
* gst/rtpmanager/gstrtpbin.h:
Add signal to notify listeners when a sender becomes a receiver.
Tweak lip-sync code, don't store our own copy of the ts-offset of the
jitterbuffer, don't adjust sync if the change is less than 4msec.
Get the RTP timestamp <-> GStreamer timestamp relation directly from
the jitterbuffer instead of our inaccurate version from the source.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop),
(gst_rtp_jitter_buffer_get_sync):
* gst/rtpmanager/gstrtpjitterbuffer.h:
Add G_LIKELY macros, use global defines for max packet reorder and
dropouts.
Reset the jitterbuffer clock skew detection when packets seqnums are
changed unexpectedly.
* gst/rtpmanager/gstrtpsession.c: (on_sender_timeout),
(gst_rtp_session_class_init), (gst_rtp_session_init):
* gst/rtpmanager/gstrtpsession.h:
Add sender timeout signal.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew),
(calculate_skew), (rtp_jitter_buffer_insert),
(rtp_jitter_buffer_get_sync):
* gst/rtpmanager/rtpjitterbuffer.h:
Add some G_LIKELY macros.
Keep track of the extended RTP timestamp so that we can report the RTP
timestamp <-> GStreamer timestamp relation for lip-sync.
Remove server timestamp gap detection code, the server can sometimes
make a huge gap in timestamps (talk spurts,...) see #549774.
Detect timetamp weirdness instead by observing the sender/receiver
timestamp relation and resync if it changes more than 1 second.
Add method to report about the current rtp <-> gst timestamp relation
which is needed for lip-sync.
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(on_sender_timeout), (check_collision), (rtp_session_process_sr),
(session_cleanup):
* gst/rtpmanager/rtpsession.h:
Add sender timeout signal.
Remove inaccurate rtp <-> gst timestamp relation code, the
jitterbuffer can now do an accurate reporting about this.
* gst/rtpmanager/rtpsource.c: (rtp_source_init),
(rtp_source_update_caps), (calculate_jitter),
(rtp_source_process_rtp):
* gst/rtpmanager/rtpsource.h:
Remove inaccurate rtp <-> gst timestamp relation code.
* gst/rtpmanager/rtpstats.h:
Define global max-reorder and max-dropout constants for use in various
subsystems.
2009-08-11 02:30:37 +01:00
Wim Taymans
5c89bb2ab3 gst/rtpmanager/gstrtpsession.c: Send EOS when the session object instructs us to.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_send_rtcp),
(gst_rtp_session_event_send_rtp_sink):
Send EOS when the session object instructs us to.
* gst/rtpmanager/rtpsession.c: (rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Make it possible for the session manager to instruct us to send EOS. We
currently will EOS when the session is a sender and when the sender part
goes EOS. This is not entirely correct behaviour because the session
could still participate as a receiver.
Fixes #549409.
2009-08-11 02:30:37 +01:00
Wim Taymans
62ecaee748 gst/rtpmanager/gstrtpbin.c: Reset rtp timestamp interpollation when we detect a gap when the clock_base changed.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_associate),
(gst_rtp_bin_sync_chain), (new_ssrc_pad_found):
Reset rtp timestamp interpollation when we detect a gap when the
clock_base changed.
Don't try to adjust the ts-offset when it's too big (> 3seconds)
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_set_ssrc):
* gst/rtpmanager/gstrtpsession.h:
Add method to set session SSRC.
* gst/rtpmanager/rtpsession.c: (check_collision),
(rtp_session_set_internal_ssrc), (rtp_session_get_internal_ssrc),
(rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Added debugging for the collision checks.
Add method to change the internal SSRC of the session.
* gst/rtpmanager/rtpsource.c: (rtp_source_process_rtp):
Reset the clock base when we detect large jumps in the seqnums.
2009-08-11 02:30:37 +01:00
Stefan Kost
cc74738d83 gst/rtpmanager/gstrtpbin.c: Print the pad-name in debug log.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c:
Print the pad-name in debug log.
* sys/dshowsrcwrapper/gstdshowaudiosrc.c:
* sys/dshowsrcwrapper/gstdshowvideosrc.c:
Use "-" instead of "_" in property names. Can we call them just
"device" like everywhere else?
2009-08-11 02:30:37 +01:00
Olivier Crete
d392defbd3 gst/rtpmanager/gstrtpjitterbuffer.c: Make the buffer metadata writable before inserting it in the jitterbuffer becaus...
Original commit message from CVS:
Based on patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop):
Make the buffer metadata writable before inserting it in the
jitterbuffer because the jitterbuffer will modify the timestamps.
* gst/rtpmanager/rtpjitterbuffer.c:
Update method comment about requiring writable metadata on buffers.
* gst/rtpmanager/rtpsession.c: (rtp_session_process_sr),
(rtp_session_process_rtcp):
Make the RTCP buffer metadata writable because we want to modify the
metadata.
Fixes #546312.
2009-08-11 02:30:37 +01:00
Håvard Graff
1bef5a8ab8 gst/rtpmanager/gstrtpjitterbuffer.c: Fix debug by logging the right seqnum.
Original commit message from CVS:
Patch by: Håvard Graff <havard dot graff at tandberg dot com>
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain):
Fix debug by logging the right seqnum.
2009-08-11 02:30:37 +01:00
Olivier Crete
2707a84d78 gst/rtpmanager/gstrtpbin.c: Release lock before emitting the request-pt-map signal.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpbin.c: (get_pt_map):
Release lock before emitting the request-pt-map signal.
Fixes #543480.
2009-08-11 02:30:37 +01:00
Peter Kjellerstedt
fd44690d4f gst/rtpmanager/: Corrected a typo (interpollate -> interpolate).
Original commit message from CVS:
* ChangeLog:
* gst/rtpmanager/gstrtpjitterbuffer.c: (gst_rtp_jitter_buffer_loop):
* gst/rtpmanager/rtpsource.c: (rtp_source_get_new_sr):
Corrected a typo (interpollate -> interpolate).
2009-08-11 02:30:36 +01:00
Peter Kjellerstedt
e2f49d9ccf gst/rtpmanager/: Changed some GST_DEBUG() to GST_LOG() to reduce the spam when a pipeline is running normally.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_process_rtp),
(gst_rtp_session_send_rtp), (gst_rtp_session_send_rtcp),
(gst_rtp_session_sync_rtcp), (gst_rtp_session_chain_recv_rtp),
(gst_rtp_session_chain_recv_rtcp), (gst_rtp_session_chain_send_rtp):
* gst/rtpmanager/rtpsession.c: (source_push_rtp),
(rtp_session_send_rtp):
* gst/rtpmanager/rtpsource.c: (push_packet), (calculate_jitter),
(rtp_source_process_rtp), (rtp_source_send_rtp):
Changed some GST_DEBUG() to GST_LOG() to reduce the spam when a
pipeline is running normally.
2009-08-11 02:30:36 +01:00
Peter Kjellerstedt
ca15984e14 gst/rtpmanager/: Do not mix the use of g_get_current_time() with gst_clock_get_time().
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_init),
(gst_rtp_session_finalize), (rtcp_thread),
(gst_rtp_session_chain_recv_rtp), (gst_rtp_session_chain_recv_rtcp),
(gst_rtp_session_event_send_rtp_sink),
(gst_rtp_session_chain_send_rtp):
* gst/rtpmanager/rtpsession.c: (check_collision),
(update_arrival_stats), (rtp_session_process_rtp),
(rtp_session_process_rtcp), (rtp_session_send_rtp),
(rtp_session_send_bye_locked), (rtp_session_send_bye),
(rtp_session_next_timeout), (session_report_blocks), (session_cleanup),
(is_rtcp_time), (rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Do not mix the use of g_get_current_time() with gst_clock_get_time().
2009-08-11 02:30:36 +01:00
Stefan Kost
a71ffc55d8 Final round of doc updates.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/speed/gstspeed.c:
* gst/speexresample/gstspeexresample.c:
* gst/videosignal/gstvideoanalyse.c:
* gst/videosignal/gstvideodetect.c:
* gst/videosignal/gstvideomark.c:
* sys/dvb/gstdvbsrc.c:
* sys/oss4/oss4-mixer.c:
* sys/oss4/oss4-sink.c:
* sys/oss4/oss4-source.c:
* sys/wininet/gstwininetsrc.c:
Final round of doc updates.
2009-08-11 02:30:36 +01:00
Stefan Kost
138c2b7cf9 gst/: More doc updates. More xrefs.
Original commit message from CVS:
* gst/deinterlace/gstdeinterlace.c:
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtpsession.c:
* gst/rtpmanager/gstrtpssrcdemux.c:
* gst/sdp/gstsdpdemux.c:
More doc updates. More xrefs.
2009-08-11 02:30:36 +01:00
Stefan Kost
2d1ccbf52e Do not use short_description in section docs for elements. We extract them from element details and there will be war...
Original commit message from CVS:
* ext/dc1394/gstdc1394.c:
* ext/ivorbis/vorbisdec.c:
* ext/jack/gstjackaudiosink.c:
* ext/metadata/gstmetadatademux.c:
* ext/mythtv/gstmythtvsrc.c:
* ext/theora/theoradec.c:
* gst-libs/gst/app/gstappsink.c:
* gst/bayer/gstbayer2rgb.c:
* gst/deinterlace/gstdeinterlace.c:
* gst/rawparse/gstaudioparse.c:
* gst/rawparse/gstvideoparse.c:
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtpsession.c:
* gst/rtpmanager/gstrtpssrcdemux.c:
* gst/selector/gstinputselector.c:
* gst/selector/gstoutputselector.c:
* gst/videosignal/gstvideoanalyse.c:
* gst/videosignal/gstvideodetect.c:
* gst/videosignal/gstvideomark.c:
* sys/oss4/oss4-mixer.c:
* sys/oss4/oss4-sink.c:
* sys/oss4/oss4-source.c:
Do not use short_description in section docs for elements. We extract
them from element details and there will be warnings if they differ.
Also fixing up the ChangeLog order.
2009-08-11 02:30:36 +01:00
Wim Taymans
8dc879f15e gst/rtpmanager/gstrtpbin.c: Fix deadlock when shutting down, use a new lock instead to properly shutdown.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_init),
(gst_rtp_bin_finalize), (gst_rtp_bin_change_state):
Fix deadlock when shutting down, use a new lock instead to properly
shutdown.
2009-08-11 02:30:36 +01:00
Wim Taymans
fda8195d76 gst/rtpmanager/gstrtpbin.c: Break out of callbacks when we are shutting down.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c:
(gst_rtp_bin_propagate_property_to_jitterbuffer),
(gst_rtp_bin_change_state), (new_payload_found),
(new_ssrc_pad_found):
Break out of callbacks when we are shutting down.
Make sure no state changes can happen when we reconfigure.
2009-08-11 02:30:36 +01:00
Wim Taymans
bd1e0ebfc0 gst/rtpmanager/gstrtpjitterbuffer.c: When checking the seqnum, reset the jitterbuffer if the gap is too big, we need ...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop):
When checking the seqnum, reset the jitterbuffer if the gap is too big,
we need to do this so that we can better handle a restarted source.
Fix some comments.
* gst/rtpmanager/rtpjitterbuffer.c: (calculate_skew),
(rtp_jitter_buffer_insert):
Tweak the skew resync diff.
Use our working seqnum compare function in -base.
Rework the jitterbuffer insert code to make it clearer and more
performant by only retrieving the seqnum of the input buffer once and by
adding some G_LIKELY compiler hints.
Improve debugging for duplicate packets.
* gst/rtpmanager/rtpsource.c: (rtp_source_process_rtp):
Fix a comment, we don't do skew correction here..
2009-08-11 02:30:36 +01:00
Håvard Graff
b889dfad30 gst/rtpmanager/gstrtpbin.c: Propagate the do-lost and latency properties to the jitterbuffers when they are changed o...
Original commit message from CVS:
Patch by: Håvard Graff <havard dot graff at tandberg dot com>
* gst/rtpmanager/gstrtpbin.c:
(gst_rtp_bin_propagate_property_to_jitterbuffer),
(gst_rtp_bin_set_property):
Propagate the do-lost and latency properties to the jitterbuffers when
they are changed on rtpbin.
2009-08-11 02:30:36 +01:00
Wim Taymans
6716231857 Don't use _gst_pad().
Original commit message from CVS:
* examples/switch/switcher.c: (switch_timer):
* gst/replaygain/gstrgvolume.c: (gst_rg_volume_init):
* gst/rtpmanager/gstrtpclient.c: (create_stream):
* gst/sdp/gstsdpdemux.c: (gst_sdp_demux_stream_configure_udp),
(gst_sdp_demux_stream_configure_udp_sink):
* tests/check/elements/deinterleave.c: (GST_START_TEST),
(pad_added_setup_data_check_float32_8ch_cb):
* tests/check/elements/rganalysis.c: (send_eos_event),
(send_tag_event):
Don't use _gst_pad().
2009-08-11 02:30:35 +01:00
Jan Schmidt
4e5347c8fe docs/Makefile.am: Don't attempt to build plugin docs when they're disabled.
Original commit message from CVS:
* docs/Makefile.am:
Don't attempt to build plugin docs when they're disabled.
* gst/bayer/Makefile.am:
Add libgstvideo to the link.
* gst/rtpmanager/Makefile.am:
Fix link order, and move LIBS things to _LIBS
2009-08-11 02:30:35 +01:00
Wim Taymans
2506d13ecc gst/rtpmanager/gstrtpjitterbuffer.c: Simply drop bad RTP packets with a warning instead of just posting an error and ...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain):
Simply drop bad RTP packets with a warning instead of just posting an
error and stopping. This is a perfectly recoverable event and we don't
force people to use an rtpbin to filter out bad packets first.
2009-08-11 02:30:35 +01:00
Wim Taymans
cd00eb71b4 gst/rtpmanager/gstrtpbin.c: Actually add the do-lost property to the object.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_class_init):
Actually add the do-lost property to the object.
2009-08-11 02:30:35 +01:00
Wim Taymans
71c2510665 gst/rtpmanager/gstrtpjitterbuffer.c: Avoid waiting for a negative (huge) duration when the last packet has a lower ti...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_loop):
Avoid waiting for a negative (huge) duration when the last packet has a
lower timestamp than the current packet.
2009-08-11 02:30:35 +01:00
Peter Kjellerstedt
fd8061784a gst/rtpmanager/gstrtpsession.c: Make sure to unref the rtpsession returned by gst_pad_get_parent() to prevent a memor...
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_query_send_rtcp_src):
Make sure to unref the rtpsession returned by gst_pad_get_parent() to
prevent a memory leak.
2009-08-11 02:30:35 +01:00
Jan Schmidt
95ab282083 gst/rtpmanager/gstrtpjitterbuffer.c: Initialise with GST_CLOCK_TIME_NONE to avoid compiler warning.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_loop):
Initialise with GST_CLOCK_TIME_NONE to avoid compiler warning.
2009-08-11 02:30:35 +01:00
Peter Kjellerstedt
b1ef03968a gst/rtpmanager/rtpsource.c: Make sure to unref the caps used by RTPSource to prevent a memory leak.
Original commit message from CVS:
* gst/rtpmanager/rtpsource.c: (rtp_source_finalize):
Make sure to unref the caps used by RTPSource to prevent a memory leak.
2009-08-11 02:30:35 +01:00
Olivier Crete
bddddbd409 gst/rtpmanager/rtpsession.c: Unlock the session lock when calling one of our callbacks.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/rtpsession.c: (source_clock_rate),
(rtp_session_process_bye), (rtp_session_send_bye_locked):
Unlock the session lock when calling one of our callbacks.
Fixes #532011.
2009-08-11 02:30:35 +01:00
Sjoerd Simons
c466ae6bdc gst/rtpmanager/gstrtpsession.c: Send RTP BYE command on EOS. Fixes bug #531955.
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_event_send_rtp_sink):
Send RTP BYE command on EOS. Fixes bug #531955.
2009-08-11 02:30:35 +01:00
Wim Taymans
d6c8809739 gst/rtpmanager/gstrtpbin.*: Expose new jitterbuffer property in rtpbin too.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_stream), (gst_rtp_bin_init),
(gst_rtp_bin_set_property), (gst_rtp_bin_get_property):
* gst/rtpmanager/gstrtpbin.h:
Expose new jitterbuffer property in rtpbin too.
2009-08-11 02:30:35 +01:00
Wim Taymans
250c38a5ce gst/rtpmanager/gstrtpjitterbuffer.c: Disable sending out rtp packet lost events by default and make a property to ena...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init), (gst_rtp_jitter_buffer_init),
(gst_rtp_jitter_buffer_loop), (gst_rtp_jitter_buffer_set_property),
(gst_rtp_jitter_buffer_get_property):
Disable sending out rtp packet lost events by default and make a
property to enabe it. We will likely enable it by default when the base
depayloaders have a default handler for them so that we don't send these
events all through the pipeline for now.
2009-08-11 02:30:35 +01:00
Wim Taymans
e2ab966d14 gst/rtpmanager/gstrtpjitterbuffer.c: Remove private version of a function that is in -base now.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_init), (gst_rtp_jitter_buffer_flush_stop),
(gst_rtp_jitter_buffer_src_event), (gst_rtp_jitter_buffer_chain),
(gst_rtp_jitter_buffer_loop):
Remove private version of a function that is in -base now.
Add src event handler.
Rework the jitterbuffer pushing loop so that it can quickly react to
lost packets and instruct the depayloader of them. This can then be used
to implement error concealment data.
2009-08-11 02:30:34 +01:00
Wim Taymans
a05b42ef04 gst/rtpmanager/gstrtpsession.c: Set up some internal links functions for the RTCP and sync pads because the defaults ...
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_query_send_rtcp_src), (create_recv_rtcp_sink),
(create_send_rtcp_src):
Set up some internal links functions for the RTCP and sync pads because
the defaults are really not correct.
Implement a query handler for the RTCP src pad, mostly to correctly
report about the latency.
2009-08-11 02:30:34 +01:00
Wim Taymans
e779adca69 gst/rtpmanager/: Also keep track of the first buffer timestamp together with the first
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_associate),
(gst_rtp_bin_sync_chain):
* gst/rtpmanager/rtpsession.c: (update_arrival_stats),
(rtp_session_process_sr), (rtp_session_on_timeout):
* gst/rtpmanager/rtpsource.c: (rtp_source_init),
(calculate_jitter):
* gst/rtpmanager/rtpsource.h:
* gst/rtpmanager/rtpstats.h:
Also keep track of the first buffer timestamp together with the first
RTP timestamp as they both are needed to construct the timing of
outgoing packets in the jitterbuffer and are therefore also needed to
manage lip-sync. This fixes lip-sync if the first RTP packets arrive
with a wildly different gap.
2009-08-11 02:30:34 +01:00
Olivier Crete
3c5cf0cd38 gst/rtpmanager/gstrtpbin.c: Ref caps when inserting into the cache.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpbin.c: (create_session), (get_pt_map),
(new_ssrc_pad_found):
Ref caps when inserting into the cache.
Don't leak pads.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_get_clock_rate),
(gst_rtp_jitter_buffer_query):
Avoid a caps leak.
Don't leak refcount in query.
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_get_caps),
(gst_rtp_pt_demux_chain):
Avoid caps leaks.
* gst/rtpmanager/gstrtpsession.c: (source_get_sdes_structure),
(gst_rtp_session_init), (return_true),
(gst_rtp_session_clear_pt_map), (gst_rtp_session_cache_caps),
(gst_rtp_session_clock_rate):
Ref caps when inserting into the cache.
Fix some more caps leaks. Fixes #528245.
2009-08-11 02:30:34 +01:00
Wim Taymans
4cc70a0c22 gst/rtpmanager/: Unset GValues after g_signal_emitv so that we avoid a refcount leak.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (get_pt_map), (free_client),
(gst_rtp_bin_associate), (gst_rtp_bin_get_free_pad_name):
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_get_clock_rate):
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_get_caps):
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_clock_rate):
Unset GValues after g_signal_emitv so that we avoid a refcount leak.
Don't leak a padname.
Don't leak client streams list.
Lock rtpbin when associating streams. Fixes #528245.
2009-08-11 02:30:34 +01:00
Peter Kjellerstedt
959c341cbd gst/rtpmanager/: Avoid leaking pads in the RTP manager.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (free_session):
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_finalize):
Avoid leaking pads in the RTP manager.
2009-08-11 02:30:34 +01:00
Olivier Crete
3f58847080 gst/rtpmanager/rtpsession.*: Implement collision and loop detection in rtpmanager.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/rtpsession.c: (find_add_conflicting_addresses),
(check_collision), (obtain_source), (rtp_session_create_new_ssrc),
(rtp_session_create_source), (rtp_session_process_rtp),
(rtp_session_process_sr), (rtp_session_process_rr),
(rtp_session_process_sdes), (rtp_session_process_bye),
(rtp_session_send_bye_locked), (rtp_session_send_bye),
(rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Implement collision and loop detection in rtpmanager.
Fixes #520626.
* gst/rtpmanager/rtpsource.c: (rtp_source_reset),
(rtp_source_init):
* gst/rtpmanager/rtpsource.h:
Add method to reset stats.
2009-08-11 02:30:34 +01:00
Ole André Vadla Ravnås
6ba2fcd4ff gst/rtpmanager/gstrtpsession.c: Avoid a deadlock when joining the RTCP thread in PAUSED because it might be blocked d...
Original commit message from CVS:
Based on patch by: Ole André Vadla Ravnås  <ole.andre.ravnas@tandberg.com>
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_init),
(rtcp_thread), (start_rtcp_thread), (stop_rtcp_thread),
(join_rtcp_thread), (gst_rtp_session_change_state):
Avoid a deadlock when joining the RTCP thread in PAUSED because it might
be blocked downstream. Also avoid spawning multiple rtcp threads.
Fixes #520894.
2009-08-11 02:30:34 +01:00
Stefan Kost
52cdd3c59a gst/rtpmanager/rtpjitterbuffer.c: Don't try to reset the clock skew when we have no timestamps.
Original commit message from CVS:
Patch by: Stefan Kost <ensonic@users.sf.net>
* gst/rtpmanager/rtpjitterbuffer.c: (calculate_skew):
Don't try to reset the clock skew when we have no timestamps.
Fixes #519005.
2009-08-11 02:30:34 +01:00
Olivier Crete
db8bdc8b92 gst/rtpmanager/gstrtpbin.c: Fix small memory leak, leaking caps. Fixes #bug 517571.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpbin.c: (new_ssrc_pad_found):
Fix small memory leak, leaking caps. Fixes #bug 517571.
2009-08-11 02:30:34 +01:00
Olivier Crete
a301c9a22b gst/rtpmanager/gstrtpbin.c: Ignore streams that did not receive an SR packet when doing synchronisation. Fixes #516160.
Original commit message from CVS:
Patch by: Olivier Crete <tester@tester.ca>
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_associate):
Ignore streams that did not receive an SR packet when doing
synchronisation. Fixes #516160.
2009-08-11 02:30:34 +01:00
Thijs Vermeir
b638626053 gst/rtpmanager/gstrtpjitterbuffer.c: Try to get the new clock-rate from the buffer caps when we receive a new payload...
Original commit message from CVS:
Patch by: Thijs Vermeir  <thijsvermeir at gmail dot com>
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain):
Try to get the new clock-rate from the buffer caps when we receive a new
payload type instead of always firing the signal. Fixes #512774.
2009-08-11 02:30:33 +01:00
Olivier Crete
7b2446b676 gst/rtpmanager/gstrtpbin.c: Also handle lip-sync when the clock-rate is not provided with caps but with a signal.
Original commit message from CVS:
Patch by: Olivier Crete <tester@tester.ca>
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_associate),
(create_stream), (payload_type_change), (new_ssrc_pad_found):
Also handle lip-sync when the clock-rate is not provided with caps but
with a signal.
2009-08-11 02:30:33 +01:00
Olivier Crete
41ada27f2e gst/rtpmanager/: Remove the fixed clock-rate from the jitterbuffer and extend it so that a clock-rate can be provided...
Original commit message from CVS:
Patch by: Olivier Crete <tester@tester.ca>
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_chain):
* gst/rtpmanager/rtpjitterbuffer.c: (calculate_skew),
(rtp_jitter_buffer_insert):
* gst/rtpmanager/rtpjitterbuffer.h:
Remove the fixed clock-rate from the jitterbuffer and extend it so that
a clock-rate can be provided with each buffer instead. Fixes #511686.
2009-08-11 02:30:33 +01:00
Olivier Crete
eb0993af12 gst/rtpmanager/gstrtpjitterbuffer.c: Remove old unused variable.
Original commit message from CVS:
Patch by: Olivier Crete <tester@tester.ca>
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_init), (gst_rtp_jitter_buffer_change_state),
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop):
Remove old unused variable.
Track pt on input buffers and get the clock-rate when it changes.
Ignore packets with unknown clock-rate. See #511686.
2009-08-11 02:30:33 +01:00
Olivier Crete
0369f87020 gst/rtpmanager/rtpsource.c: Fix unref of buffer using the wrong function. Fixes #511920
Original commit message from CVS:
Patch by: Olivier Crete <tester@tester.ca>
* gst/rtpmanager/rtpsource.c: Fix unref of buffer using the
wrong function.  Fixes #511920
2009-08-11 02:30:33 +01:00
Wim Taymans
6e6c59a198 gst/rtpmanager/gstrtpsession.c: If we find the caps in the cache, use it to parse the clock-rate instead of returning...
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_clock_rate):
If we find the caps in the cache, use it to parse the clock-rate instead
of returning an error. Fixes a TODO as found by Youness Alaoui.
2009-08-11 02:30:33 +01:00
Youness Alaoui
03d9faf5fa gst/rtpmanager/: Make it possible to use different user_data for each of the callbacks.
Original commit message from CVS:
Patch by: Youness Alaoui <youness dot alaoui at collabora dot co dot uk>
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_clock_rate):
* gst/rtpmanager/rtpsession.c: (rtp_session_set_callbacks),
(rtp_session_set_process_rtp_callback),
(rtp_session_set_send_rtp_callback),
(rtp_session_set_send_rtcp_callback),
(rtp_session_set_sync_rtcp_callback),
(rtp_session_set_clock_rate_callback),
(rtp_session_set_reconsider_callback), (source_push_rtp),
(source_clock_rate), (rtp_session_process_bye),
(rtp_session_process_rtcp), (rtp_session_send_bye),
(rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Make it possible to use different user_data for each of the callbacks.
Fixes #508587.
2009-08-11 02:30:33 +01:00
Thijs Vermeir
c6d892420a gst/rtpmanager/gstrtpbin.c: Fix documentation for latest patch
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c:
Fix documentation for latest patch
2009-08-11 02:30:33 +01:00
Thijs Vermeir
a4db9d0943 gst/rtpmanager/gstrtpbin.c: Allow request_new_pad with name NULL (bug #508515)
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c:
Allow request_new_pad with name NULL (bug #508515)
2009-08-11 02:30:33 +01:00
Wim Taymans
c7818b0c0f gst/rtpmanager/gstrtpsession.c: Don't set fixed caps, we can basically do everything the upsteam peer pad can renegot...
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (create_send_rtp_sink):
Don't set fixed caps, we can basically do everything the upsteam peer
pad can renegotiate to. Fixes #507940.
2009-08-11 02:30:33 +01:00
Wim Taymans
c5e9700eda gst/rtpmanager/gstrtpjitterbuffer.c: Don't unref the popped buffer when we don't have ownership.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_loop):
Don't unref the popped buffer when we don't have ownership.
Fixes #507020.
2009-08-11 02:30:33 +01:00
Wim Taymans
cba910a430 gst/rtpmanager/gstrtpssrcdemux.c: Don't clean up pads when going to PAUSED.
Original commit message from CVS:
* gst/rtpmanager/gstrtpssrcdemux.c:
(gst_rtp_ssrc_demux_change_state):
Don't clean up pads when going to PAUSED.
2009-08-11 02:30:32 +01:00
Wim Taymans
a965ebff09 gst/rtpmanager/: Clean up the dynamic pads when going to READY.
Original commit message from CVS:
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_finalize),
(gst_rtp_pt_demux_setup), (gst_rtp_pt_demux_release),
(gst_rtp_pt_demux_change_state):
* gst/rtpmanager/gstrtpssrcdemux.c: (gst_rtp_ssrc_demux_reset),
(gst_rtp_ssrc_demux_dispose), (gst_rtp_ssrc_demux_src_query),
(gst_rtp_ssrc_demux_change_state):
Clean up the dynamic pads when going to READY.
2009-08-11 02:30:32 +01:00
Wim Taymans
df55cf2f08 gst/rtpmanager/: Fix some leaks.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_finalize),
(gst_rtp_bin_set_sdes_string), (gst_rtp_bin_get_sdes_string),
(gst_rtp_bin_handle_message):
* gst/rtpmanager/rtpsession.c: (rtp_session_finalize),
(rtp_session_send_bye):
* gst/rtpmanager/rtpsource.c: (rtp_source_finalize):
Fix some leaks.
2009-08-11 02:30:32 +01:00
Wim Taymans
771ed2339d gst/rtpmanager/: Post a message when the SDES infor changes for a source.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_class_init),
(gst_rtp_bin_handle_message):
* gst/rtpmanager/gstrtpsession.c: (source_get_sdes_structure),
(on_ssrc_sdes):
Post a message when the SDES infor changes for a source.
* gst/rtpmanager/rtpsession.c:
* gst/rtpmanager/rtpsource.c:
Update some comments.
2009-08-11 02:30:32 +01:00
Wim Taymans
49e501a647 gst/rtpmanager/: Add signal to notify of an SDES change.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (on_ssrc_sdes), (create_session),
(gst_rtp_bin_class_init):
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpclient.h:
* gst/rtpmanager/gstrtpjitterbuffer.h:
* gst/rtpmanager/gstrtpmanager.c:
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtpptdemux.h:
* gst/rtpmanager/gstrtpsession.c: (on_ssrc_sdes),
(gst_rtp_session_class_init), (gst_rtp_session_init):
* gst/rtpmanager/gstrtpsession.h:
* gst/rtpmanager/gstrtpssrcdemux.c:
* gst/rtpmanager/gstrtpssrcdemux.h:
* gst/rtpmanager/rtpjitterbuffer.c:
* gst/rtpmanager/rtpjitterbuffer.h:
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(on_ssrc_sdes), (rtp_session_process_sdes):
* gst/rtpmanager/rtpsession.h:
* gst/rtpmanager/rtpsource.c:
* gst/rtpmanager/rtpsource.h:
* gst/rtpmanager/rtpstats.c:
* gst/rtpmanager/rtpstats.h:
Add signal to notify of an SDES change.
Fix object type in the signal callbacks.
2009-08-11 02:30:32 +01:00
Wim Taymans
95d1f62397 gst/rtpmanager/gstrtpbin.*: Expose SDES items as properties and configure the session managers with them.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_session),
(gst_rtp_bin_class_init), (gst_rtp_bin_init), (sdes_type_to_name),
(gst_rtp_bin_set_sdes_string), (gst_rtp_bin_get_sdes_string),
(gst_rtp_bin_set_property), (gst_rtp_bin_get_property):
* gst/rtpmanager/gstrtpbin.h:
Expose SDES items as properties and configure the session managers with
them.
* gst/rtpmanager/rtpsource.c: (rtp_source_class_init),
(rtp_source_set_property):
Fix SSRC property.
2009-08-11 02:30:32 +01:00
Wim Taymans
1971ae0d82 gst/rtpmanager/: Update comment.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_session):
* gst/rtpmanager/rtpjitterbuffer.c:
Update comment.
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(gst_rtp_session_set_property), (gst_rtp_session_get_property):
Define some GObject properties to set SDES and other configuration.
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(rtp_session_init), (rtp_session_finalize),
(rtp_session_set_property), (rtp_session_get_property),
(on_ssrc_sdes), (rtp_session_set_bandwidth),
(rtp_session_get_bandwidth), (rtp_session_set_rtcp_fraction),
(rtp_session_get_rtcp_fraction), (rtp_session_set_sdes_string),
(rtp_session_get_sdes_string), (obtain_source),
(rtp_session_get_internal_source), (rtp_session_process_sdes),
(rtp_session_send_rtp), (rtp_session_next_timeout), (session_sdes),
(is_rtcp_time):
* gst/rtpmanager/rtpsession.h:
Add signal when new SDES infor has been found for a source.
Create properties for SDES and other info.
Simplify the SDES API.
Add method for getting the internal source object of the session.
* gst/rtpmanager/rtpsource.c: (rtp_source_class_init),
(rtp_source_finalize), (rtp_source_set_property),
(rtp_source_get_property), (rtp_source_set_callbacks),
(rtp_source_get_ssrc), (rtp_source_set_as_csrc),
(rtp_source_is_as_csrc), (rtp_source_is_active),
(rtp_source_is_validated), (rtp_source_is_sender),
(rtp_source_received_bye), (rtp_source_get_bye_reason),
(rtp_source_set_sdes), (rtp_source_set_sdes_string),
(rtp_source_get_sdes), (rtp_source_get_sdes_string),
(rtp_source_get_new_sr), (rtp_source_get_new_rb):
* gst/rtpmanager/rtpsource.h:
Add GObject properties for various things.
Don't leak the bye reason.
2009-08-11 02:30:32 +01:00
Wim Taymans
1a8f489093 gst/rtpmanager/gstrtpjitterbuffer.c: jitterbuffer can buffer an unlimited amount of time and thus has no max_latency ...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_query):
jitterbuffer can buffer an unlimited amount of time and thus has no
max_latency requirements.
2009-08-11 02:30:32 +01:00
Ole André Vadla Ravnås
c5fdb6bff3 gst/rtpmanager/gstrtpsession.c: Fix bad function signatures (#492798).
Original commit message from CVS:
Patch by: Ole André Vadla Ravnås  <ole.andre.ravnas@tandberg.com>
* gst/rtpmanager/gstrtpsession.c:
Fix bad function signatures (#492798).
2009-08-11 02:30:32 +01:00
Laurent Glayal
8da59edc68 gst/rtpmanager/gstrtpbin.c: Fix memleak. Fixes #484990.
Original commit message from CVS:
Patch by: Laurent Glayal <spglegle at yahoo dot fr>
* gst/rtpmanager/gstrtpbin.c: (create_stream),
(gst_rtp_bin_class_init):
Fix memleak. Fixes #484990.
2009-08-11 02:30:31 +01:00
Jan Schmidt
c924d4a466 gst/: Fix compiler warnings shown by Forte.
Original commit message from CVS:
* gst/librfb/rfbbuffer.c: (rfb_buffer_new_and_alloc):
* gst/librfb/rfbbuffer.h:
* gst/librfb/rfbdecoder.c: (rfb_socket_get_buffer):
* gst/mpegvideoparse/mpegvideoparse.c: (gst_mpegvideoparse_chain):
* gst/nsf/nes6502.c: (nes6502_execute):
* gst/real/gstrealaudiodec.c: (gst_real_audio_dec_setcaps):
* gst/real/gstrealvideodec.c: (open_library):
* gst/real/gstrealvideodec.h:
* gst/rtpmanager/gstrtpsession.c: (create_recv_rtp_sink),
(create_recv_rtcp_sink), (create_send_rtp_sink):
Fix compiler warnings shown by Forte.
2009-08-11 02:30:31 +01:00
Wim Taymans
4556ccb666 gst/rtpmanager/gstrtpbin.c: Fix caps refcounting for payload maps.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (get_pt_map),
(gst_rtp_bin_clear_pt_map), (gst_rtp_bin_class_init):
Fix caps refcounting for payload maps.
When clearing payload maps, also clear sessions and streams payload
maps.
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_get_caps),
(gst_rtp_pt_demux_clear_pt_map), (gst_rtp_pt_demux_chain),
(find_pad_for_pt):
Implement clearing the payload map.
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_event_send_rtp_sink):
Forward flush events instead of leaking them.
* gst/rtpmanager/gstrtpssrcdemux.c:
(gst_rtp_ssrc_demux_rtcp_sink_event):
Correctly refcount events before pushing them.
2009-08-11 02:30:31 +01:00
Wim Taymans
76a89b5e50 gst/rtpmanager/rtpsession.c: When reconsidering RTCP timeouts, set the next timeout against the last report time inst...
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (rtp_session_next_timeout),
When reconsidering RTCP timeouts, set the next timeout against the last
report time instead of the current clock time so that we don't end up
reconsidering forever.
2009-08-11 02:30:31 +01:00
Wim Taymans
387f41e157 gst/rtpmanager/gstrtpjitterbuffer.c: Only peek at the tail element instead of popping it off, which allows us to grea...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop):
Only peek at the tail element instead of popping it off, which allows
us to greatly simplify things when the tail element changes.
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_event_recv_rtp_sink):
* gst/rtpmanager/gstrtpssrcdemux.c:
(gst_rtp_ssrc_demux_sink_event):
Forward FLUSH events instead of leaking them.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew),
(calculate_skew), (rtp_jitter_buffer_insert):
* gst/rtpmanager/rtpjitterbuffer.h:
Remove the tail-changed callback in favour of a simple boolean when we
insert a buffer in the queue.
Add method to peek the tail of the buffer.
2009-08-11 02:30:31 +01:00
Wim Taymans
b09507ab0c gst/rtpmanager/gstrtpjitterbuffer.c: Remove some old unused variables.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_flush_start),
(gst_rtp_jitter_buffer_flush_stop),
(gst_rtp_jitter_buffer_change_state), (apply_offset),
(gst_rtp_jitter_buffer_loop):
Remove some old unused variables.
Don't add the latency to the skew corrected timestamp, latency is only
used to sync against the clock.
Improve debugging.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_init),
(rtp_jitter_buffer_reset_skew), (calculate_skew):
* gst/rtpmanager/rtpjitterbuffer.h:
Handle case where server timestamp goes backwards or wildly jumps by
temporarily pausing the skew correction.
Improve debugging.
2009-08-11 02:30:30 +01:00
Wim Taymans
9c867a2160 gst/rtpmanager/gstrtpbin.c: Fix crasher in dispose.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (free_client):
Fix crasher in dispose.
* gst/rtpmanager/rtpjitterbuffer.c: (calculate_skew):
Handle cases where input buffers have no timestamps so that no clock
skew can be calculated, in this case interpollate timestamps based on
rtp timestamp and assume a 0 clock skew.
2009-08-11 02:30:30 +01:00
Wim Taymans
2b1f49a26e gst/rtpmanager/gstrtpjitterbuffer.c: Remove jitter correction code, it's now in the lower level object.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c: (apply_latency),
(gst_rtp_jitter_buffer_loop), (gst_rtp_jitter_buffer_query):
Remove jitter correction code, it's now in the lower level object.
Use new -core method for doing a peer query.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_init),
(calculate_skew), (rtp_jitter_buffer_insert):
* gst/rtpmanager/rtpjitterbuffer.h:
Move jitter correction to the lowlevel jitterbuffer.
Increase the max window size.
When filling the window, already start estimating the skew using a
parabolic weighting factor so that we have a much better startup
behaviour that gets more accurate with the more samples we have.
Increase the default weighting factor for the steady state to get
smoother timestamps.
2009-08-11 02:30:30 +01:00
Wim Taymans
fa00695a39 gst/rtpmanager/gstrtpbin.c: Fix cleanup crasher.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_dispose),
(gst_rtp_bin_finalize):
Fix cleanup crasher.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_init),
(calculate_skew):
* gst/rtpmanager/rtpjitterbuffer.h:
Dynamically adjust the skew calculation window so that we calculate it
over a period of around 2 seconds.
2009-08-11 02:30:30 +01:00
Wim Taymans
949f1685ce gst/rtpmanager/: Add notification of active SSRCs to various RTP elements. Fixes #478566.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (on_ssrc_active), (create_session),
(gst_rtp_bin_class_init):
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpsession.c: (on_ssrc_active),
(gst_rtp_session_class_init), (gst_rtp_session_init),
(gst_rtp_session_event_send_rtp_sink):
* gst/rtpmanager/gstrtpsession.h:
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(on_ssrc_active), (rtp_session_process_rb):
* gst/rtpmanager/rtpsession.h:
Add notification of active SSRCs to various RTP elements. Fixes #478566.
2009-08-11 02:30:30 +01:00
Wim Taymans
56d5832287 gst/rtpmanager/gstrtpbin.c: Link to the right pads regardless of which one was created first in the ssrc demuxer.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (new_ssrc_pad_found):
Link to the right pads regardless of which one was created first in the
ssrc demuxer.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop):
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_process_rtp),
(gst_rtp_session_chain_recv_rtp), (gst_rtp_session_chain_send_rtp):
* gst/rtpmanager/rtpsource.c: (calculate_jitter):
Improve debugging.
* gst/rtpmanager/gstrtpssrcdemux.c: (create_demux_pad_for_ssrc),
(gst_rtp_ssrc_demux_init), (gst_rtp_ssrc_demux_finalize),
(gst_rtp_ssrc_demux_sink_event),
(gst_rtp_ssrc_demux_rtcp_sink_event), (gst_rtp_ssrc_demux_chain),
(gst_rtp_ssrc_demux_rtcp_chain),
(gst_rtp_ssrc_demux_internal_links):
* gst/rtpmanager/gstrtpssrcdemux.h:
Fix race in creating the RTP and RTCP pads when a new SSRC is detected.
2009-08-11 02:30:30 +01:00
Wim Taymans
b2aa36cb0d gst/rtpmanager/gstrtpbin.c: Use lock to protect variable.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_set_property),
(gst_rtp_bin_get_property):
Use lock to protect variable.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_chain),
(convert_rtptime_to_gsttime), (gst_rtp_jitter_buffer_loop):
Reconstruct GST timestamp from RTP timestamps based on measured clock
skew and sync offset.
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_init),
(rtp_jitter_buffer_set_tail_changed),
(rtp_jitter_buffer_set_clock_rate),
(rtp_jitter_buffer_get_clock_rate), (calculate_skew),
(rtp_jitter_buffer_insert), (rtp_jitter_buffer_peek):
* gst/rtpmanager/rtpjitterbuffer.h:
Measure clock skew.
Add callback to be notfied when a new packet was inserted at the tail.
* gst/rtpmanager/rtpsource.c: (rtp_source_init),
(calculate_jitter), (rtp_source_send_rtp):
* gst/rtpmanager/rtpsource.h:
Remove clock skew detection, it's move to the jitterbuffer now.
2009-08-11 02:30:30 +01:00
Wim Taymans
0441ef80b0 gst/rtpmanager/gstrtpbin.c: Also set NTP base time on new sessions.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_session):
Also set NTP base time on new sessions.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_loop), (gst_rtp_jitter_buffer_query),
(gst_rtp_jitter_buffer_set_property),
(gst_rtp_jitter_buffer_get_property):
Use the right lock to protect our variables.
Fix some comment.
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_getcaps_send_rtp),
(gst_rtp_session_chain_send_rtp), (create_send_rtp_sink):
Implement getcaps on the sender sinkpad so that payloaders can negotiate
the right SSRC.
2009-08-11 02:30:30 +01:00
Wim Taymans
a93348cc6d gst/rtpmanager/: Various leak fixes.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_session), (free_session),
(get_client), (free_client), (gst_rtp_bin_associate),
(free_stream), (gst_rtp_bin_class_init), (gst_rtp_bin_dispose),
(gst_rtp_bin_finalize):
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_rtp_jitter_buffer_finalize):
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_release):
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_finalize),
(gst_rtp_session_set_property), (gst_rtp_session_chain_recv_rtp),
(gst_rtp_session_chain_send_rtp):
* gst/rtpmanager/gstrtpssrcdemux.c:
(gst_rtp_ssrc_demux_class_init), (gst_rtp_ssrc_demux_dispose):
* gst/rtpmanager/rtpsession.c: (rtp_session_finalize):
* gst/rtpmanager/rtpsession.h:
Various leak fixes.
2009-08-11 02:30:30 +01:00
Wim Taymans
919deb4490 gst/rtpmanager/gstrtpbin.c: Calculate and configure the NTP base time so that we can generate better
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (calc_ntp_ns_base),
(gst_rtp_bin_change_state), (new_payload_found), (create_send_rtp):
Calculate and configure the NTP base time so that we can generate better
NTP times in SR packets.
Set caps on new ghostpad.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_loop):
Clean debug statement.
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(gst_rtp_session_init), (gst_rtp_session_set_property),
(gst_rtp_session_get_property), (get_current_ntp_ns_time),
(rtcp_thread), (gst_rtp_session_event_recv_rtp_sink),
(gst_rtp_session_internal_links), (gst_rtp_session_chain_recv_rtp),
(gst_rtp_session_event_send_rtp_sink),
(gst_rtp_session_chain_send_rtp), (create_recv_rtp_sink),
(create_send_rtp_sink):
* gst/rtpmanager/gstrtpsession.h:
Add ntp-ns-base property to convert running_time to NTP time.
Handle NEWSEGMENT events on send and recv RTP pads so that we can
calculate the running time and thus NTP time of the packets.
Simplify getting the current NTP time using the pipeline clock.
Implement internal links functions.
Use the buffer timestamp to calculate the NTP time instead of the clock.
* gst/rtpmanager/gstrtpssrcdemux.c: (create_demux_pad_for_ssrc),
(gst_rtp_ssrc_demux_init), (gst_rtp_ssrc_demux_sink_event),
(gst_rtp_ssrc_demux_chain), (gst_rtp_ssrc_demux_rtcp_chain),
(gst_rtp_ssrc_demux_internal_links),
(gst_rtp_ssrc_demux_src_query):
* gst/rtpmanager/gstrtpssrcdemux.h:
Implement internal links function.
Calculate the diff between different streams, this might be used later
to get the inter stream latency.
* gst/rtpmanager/rtpsession.c: (rtp_session_send_rtp):
Simple cleanup.
* gst/rtpmanager/rtpsource.c: (rtp_source_init),
(calculate_jitter), (rtp_source_send_rtp), (rtp_source_get_new_sr):
Make the clock skew window a little bigger.
Apply the clock skew to all buffers, not just one with a new timestamp.
Calculate and debug sender clock drift.
Use extended last timestamp to interpollate for SR reports.
2009-08-11 02:30:29 +01:00
Tim-Philipp Müller
aa8985d1e4 gst/rtpmanager/gstrtpsession.c: Make compiler happy: fix compilation with -Wall -Werror (#473562).
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c:
Make compiler happy: fix compilation with -Wall -Werror
(#473562).
2009-08-11 02:30:29 +01:00
Wim Taymans
e7b6212c51 gst/rtpmanager/: Updated example pipelines in docs.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin-marshal.list:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_get_client),
(gst_rtp_bin_associate), (gst_rtp_bin_sync_chain), (create_stream),
(gst_rtp_bin_init), (caps_changed), (new_ssrc_pad_found),
(create_recv_rtp), (create_recv_rtcp), (create_send_rtp):
* gst/rtpmanager/gstrtpbin.h:
Updated example pipelines in docs.
Handle sync_rtcp buffers from the SSRC demuxer to perform lip-sync.
Set the default latency correctly.
Add some more points where we can get caps.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_loop),
(gst_rtp_jitter_buffer_query),
(gst_rtp_jitter_buffer_set_property),
(gst_rtp_jitter_buffer_get_property):
Add ts-offset property to control timestamping.
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(gst_rtp_session_init), (gst_rtp_session_set_property),
(gst_rtp_session_get_property), (get_current_ntp_ns_time),
(rtcp_thread), (stop_rtcp_thread), (gst_rtp_session_change_state),
(gst_rtp_session_send_rtcp), (gst_rtp_session_sync_rtcp),
(gst_rtp_session_cache_caps), (gst_rtp_session_clock_rate),
(gst_rtp_session_sink_setcaps), (gst_rtp_session_chain_recv_rtp),
(gst_rtp_session_event_send_rtp_sink),
(gst_rtp_session_chain_send_rtp), (create_recv_rtp_sink),
(create_recv_rtcp_sink), (create_send_rtp_sink),
(create_send_rtcp_src):
Various cleanups.
Feed rtpsession manager with NTP time based on pipeline clock when
handling RTP packets and RTCP timeouts.
Perform all RTCP with the system clock.
Set caps on RTCP outgoing buffers.
* gst/rtpmanager/gstrtpssrcdemux.c: (find_demux_pad_for_ssrc),
(create_demux_pad_for_ssrc), (gst_rtp_ssrc_demux_base_init),
(gst_rtp_ssrc_demux_init), (gst_rtp_ssrc_demux_sink_event),
(gst_rtp_ssrc_demux_rtcp_sink_event), (gst_rtp_ssrc_demux_chain),
(gst_rtp_ssrc_demux_rtcp_chain):
* gst/rtpmanager/gstrtpssrcdemux.h:
Also demux RTCP messages.
* gst/rtpmanager/rtpsession.c: (rtp_session_set_callbacks),
(update_arrival_stats), (rtp_session_process_rtp),
(rtp_session_process_rb), (rtp_session_process_sr),
(rtp_session_process_rr), (rtp_session_process_rtcp),
(rtp_session_send_rtp), (rtp_session_send_bye),
(session_start_rtcp), (session_report_blocks), (session_cleanup),
(rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Remove the get_time callback, the GStreamer part will feed us with
enough timing information.
Split sync timing and RTCP timing information.
Factor out common RB handling for SR and RR.
Send out SR RTCP packets for lip-sync.
Move SR and RR packet info generation to the source.
* gst/rtpmanager/rtpsource.c: (rtp_source_init),
(rtp_source_update_caps), (get_clock_rate), (calculate_jitter),
(rtp_source_process_rtp), (rtp_source_send_rtp),
(rtp_source_process_sr), (rtp_source_process_rb),
(rtp_source_get_new_sr), (rtp_source_get_new_rb),
(rtp_source_get_last_sr):
* gst/rtpmanager/rtpsource.h:
* gst/rtpmanager/rtpstats.h:
Use caps on incomming buffers to get timing information when they are
there.
Calculate clock scew of the receiver compared to the sender and adjust
the rtp timestamps.
Calculate the round trip in sources.
Do SR and RR calculations in the source.
2009-08-11 02:30:29 +01:00
Wim Taymans
f4e6f22315 gst/rtpmanager/gstrtpjitterbuffer.c: Use extended timestamp to release buffers from the jitterbuffer so that we can h...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_flush_stop),
(gst_rtp_jitter_buffer_change_state), (gst_rtp_jitter_buffer_loop):
Use extended timestamp to release buffers from the jitterbuffer so that
we can handle the rtp wraparound correctly.
2009-08-11 02:30:29 +01:00
Wim Taymans
c576bcec15 gst/rtpmanager/gstrtpjitterbuffer.c: Improve Comments.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_loop):
Improve Comments.
* gst/rtpmanager/gstrtpsession.c: (stop_rtcp_thread),
(gst_rtp_session_change_state), (gst_rtp_session_parse_caps),
(gst_rtp_session_clock_rate), (gst_rtp_session_sink_setcaps),
(gst_rtp_session_event_send_rtp_sink), (create_recv_rtp_sink),
(create_send_rtp_sink):
Also parse the sink caps for clock-rate instead of only relying on the
result of the signal.
* gst/rtpmanager/rtpsource.c: (rtp_source_send_rtp):
Make sure we fetch the clock rate for payloads we are sending out so
that we can use it for SR reports.
2009-08-11 02:30:29 +01:00
Wim Taymans
325dac0fc2 gst/rtpmanager/gstrtpsession.*: Distribute synchronisation parameters to the session manager so that it can generate ...
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (stop_rtcp_thread),
(gst_rtp_session_change_state),
(gst_rtp_session_event_send_rtp_sink):
* gst/rtpmanager/gstrtpsession.h:
Distribute synchronisation parameters to the session manager so that it
can generate correct SR packets for lip-sync.
* gst/rtpmanager/rtpsession.c: (rtp_session_set_base_time),
(rtp_session_set_timestamp_sync), (session_start_rtcp):
* gst/rtpmanager/rtpsession.h:
Add methods for setting sync parameters.
Set correct RTP time in SR packets using the sync params.
* gst/rtpmanager/rtpsource.c: (rtp_source_send_rtp):
* gst/rtpmanager/rtpsource.h:
Record last RTP <-> GST timestamp so that we can use them to convert NTP
to RTP timestamps in SR packets.
2009-08-11 02:30:29 +01:00
Wim Taymans
eb86865a62 gst/rtpmanager/gstrtpbin.c: Add some more advanced example pipelines.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_clear_pt_map):
Add some more advanced example pipelines.
* gst/rtpmanager/gstrtpsession.c: (rtcp_thread),
(stop_rtcp_thread), (gst_rtp_session_send_rtcp):
Add some debug and FIXME.
Release LOCK when performing session cleanup.
* gst/rtpmanager/rtpsession.c: (session_report_blocks):
Add some debug.
* gst/rtpmanager/rtpsource.c: (calculate_jitter),
(rtp_source_send_rtp):
Make sure we always send RTP packets with the session SSRC.
2009-08-11 02:30:29 +01:00
Wim Taymans
6835b966ec gst/rtpmanager/gstrtpjitterbuffer.c: When synchronizing buffers, take peer latency into account.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_change_state), (gst_rtp_jitter_buffer_loop),
(gst_rtp_jitter_buffer_query):
When synchronizing buffers, take peer latency into account.
Don't try to add our latency to invalid peer max latency values.
2009-08-11 02:30:29 +01:00
Tim-Philipp Müller
10d6ba4d61 Rename all GstRTPFoo structs to GstRtpFoo so that GST_BOILERPLATE registers a GType that's different than the GstRTPF...
Original commit message from CVS:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* docs/plugins/gst-plugins-bad-plugins.hierarchy:
* docs/plugins/gst-plugins-bad-plugins.interfaces:
* docs/plugins/gst-plugins-bad-plugins.signals:
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpclient.h:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/rtpmanager/gstrtpjitterbuffer.h:
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtpptdemux.h:
* gst/rtpmanager/gstrtpsession.c:
* gst/rtpmanager/gstrtpsession.h:
* gst/rtpmanager/gstrtpssrcdemux.c:
* gst/rtpmanager/gstrtpssrcdemux.h:
Rename all GstRTPFoo structs to GstRtpFoo so that GST_BOILERPLATE
registers a GType that's different than the GstRTPFoo types that
farsight registers (luckily GType names are case sensitive). Should
finally fix #430664.
2009-08-11 02:30:29 +01:00
Wim Taymans
f13ad91c77 gst/rtpmanager/gstrtpjitterbuffer.c: When drop-on-latency is set but we have no latency configured, just push the buf...
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain),
(gst_rtp_jitter_buffer_set_property):
When drop-on-latency is set but we have no latency configured, just push
the buffer as fast as possible.
Fix typo in comment.
2009-08-11 02:30:29 +01:00
Wim Taymans
ce70e0f43e gst/rtpmanager/rtpjitterbuffer.*: Fix undefined overflow prone ts_diff handling.
Original commit message from CVS:
* gst/rtpmanager/rtpjitterbuffer.c:
(rtp_jitter_buffer_get_ts_diff):
* gst/rtpmanager/rtpjitterbuffer.h:
Fix undefined overflow prone ts_diff handling.
2009-08-11 02:30:28 +01:00
Wim Taymans
076da98efb gst/rtpmanager/gstrtpjitterbuffer.c: Fix EOS handling.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_sink_event), (gst_rtp_jitter_buffer_chain),
(gst_rtp_jitter_buffer_loop):
Fix EOS handling.
Convert some DEBUG into WARNINGs.
Pause task when flushing.
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(rtcp_thread), (gst_rtp_session_event_recv_rtcp_sink):
Use system clock for RTCP session management timeouts.
* gst/rtpmanager/rtpsession.c: (on_new_ssrc), (on_ssrc_collision),
(on_ssrc_validated), (on_bye_ssrc), (on_bye_timeout), (on_timeout):
Release the session lock when emiting signals.
2009-08-11 02:30:28 +01:00
Stefan Kost
f24c54f4b5 gst/rtpmanager/rtpjitterbuffer.c: Include stdlib.
Original commit message from CVS:
* gst/rtpmanager/rtpjitterbuffer.c:
Include stdlib.
2009-08-11 02:30:28 +01:00
Wim Taymans
cdd82f2a95 gst/rtpmanager/: Remove complicated async queue and replace with more simple jitterbuffer code while also fixing some...
Original commit message from CVS:
* gst/rtpmanager/Makefile.am:
* gst/rtpmanager/async_jitter_queue.c:
* gst/rtpmanager/async_jitter_queue.h:
* gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_class_init),
(rtp_jitter_buffer_init), (rtp_jitter_buffer_finalize),
(rtp_jitter_buffer_new), (compare_seqnum),
(rtp_jitter_buffer_insert), (rtp_jitter_buffer_pop),
(rtp_jitter_buffer_flush), (rtp_jitter_buffer_num_packets),
(rtp_jitter_buffer_get_ts_diff):
* gst/rtpmanager/rtpjitterbuffer.h:
Remove complicated async queue and replace with more simple jitterbuffer
code while also fixing some bugs.
* gst/rtpmanager/gstrtpbin-marshal.list:
* gst/rtpmanager/gstrtpbin.c: (on_new_ssrc), (on_ssrc_collision),
(on_ssrc_validated), (on_bye_ssrc), (on_bye_timeout), (on_timeout),
(create_session), (gst_rtp_bin_class_init), (create_recv_rtp),
(create_send_rtp):
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_init), (gst_rtp_jitter_buffer_dispose),
(gst_jitter_buffer_sink_parse_caps),
(gst_rtp_jitter_buffer_flush_start),
(gst_rtp_jitter_buffer_flush_stop),
(gst_rtp_jitter_buffer_change_state),
(gst_rtp_jitter_buffer_sink_event), (gst_rtp_jitter_buffer_chain),
(gst_rtp_jitter_buffer_loop), (gst_rtp_jitter_buffer_set_property):
* gst/rtpmanager/gstrtpsession.c: (on_new_ssrc),
(on_ssrc_collision), (on_ssrc_validated), (on_bye_ssrc),
(on_bye_timeout), (on_timeout), (gst_rtp_session_class_init),
(gst_rtp_session_init):
* gst/rtpmanager/gstrtpsession.h:
* gst/rtpmanager/rtpsession.c: (on_bye_ssrc), (session_cleanup):
Use new jitterbuffer code.
Expose some new signals in preparation for handling EOS.
2009-08-11 02:30:28 +01:00
Stefan Kost
366a756552 Add stdlib include (free, atoi, exit).
Original commit message from CVS:
* examples/app/appsrc_ex.c:
* examples/switch/switcher.c:
* ext/neon/gstneonhttpsrc.c:
* ext/timidity/gstwildmidi.c:
* ext/x264/gstx264enc.c:
* gst/mve/mveaudioenc.c: (mve_compress_audio):
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/spectrum/demo-audiotest.c:
* gst/spectrum/demo-osssrc.c:
* sys/dvb/gstdvbsrc.c:
Add stdlib include (free, atoi, exit).
2009-08-11 02:30:28 +01:00
Jens Granseuer
31571c8cb2 gst/: Build fixes for gcc-2.9x (no mid-block variable declarations etc.).
Original commit message from CVS:
Patch by: Jens Granseuer  <jensgr at gmx net>
* gst/equalizer/gstiirequalizer.c:
* gst/equalizer/gstiirequalizer10bands.c:
* gst/equalizer/gstiirequalizer3bands.c:
* gst/equalizer/gstiirequalizernbands.c:
* gst/rtpmanager/async_jitter_queue.c:
(async_jitter_queue_push_sorted):
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_chain):
* gst/switch/gstswitch.c: (gst_switch_chain):
Build fixes for gcc-2.9x (no mid-block variable declarations etc.).
Fixes #450185.
2009-08-11 02:30:28 +01:00
Wim Taymans
0c4fe985b6 Rename elements to avoid conflict with farsight elements with the same name. Fixes #430664.
Original commit message from CVS:
* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* gst/rtpmanager/gstrtpbin.c: (create_session), (create_stream),
(gst_rtp_bin_class_init), (create_recv_rtp), (create_recv_rtcp),
(create_send_rtp), (create_rtcp), (gst_rtp_bin_request_new_pad):
* gst/rtpmanager/gstrtpclient.c: (create_stream),
(gst_rtp_client_request_new_pad):
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_clear_pt_map), (gst_rtp_jitter_buffer_loop):
* gst/rtpmanager/gstrtpmanager.c: (plugin_init):
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(gst_rtp_session_request_new_pad):
* gst/rtpmanager/gstrtpssrcdemux.c:
Rename elements to avoid conflict with farsight elements with the same
name. Fixes #430664.
2009-08-11 02:30:28 +01:00
Wim Taymans
2a8cfc6410 Document stuff.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_class_init):
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_rtp_jitter_buffer_clear_pt_map), (gst_rtp_jitter_buffer_loop):
* gst/rtpmanager/gstrtpjitterbuffer.h:
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_class_init),
(gst_rtp_pt_demux_clear_pt_map):
* gst/rtpmanager/gstrtpptdemux.h:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(rtcp_thread), (gst_rtp_session_clear_pt_map):
* gst/rtpmanager/gstrtpsession.h:
* gst/rtpmanager/gstrtpssrcdemux.c:
(gst_rtp_ssrc_demux_class_init):
Document stuff.
Add clear-pt-map action signal where needed.
2009-08-11 02:30:27 +01:00
Wim Taymans
3bc059707d gst/rtpmanager/gstrtpptdemux.c: We always use fixed caps.
Original commit message from CVS:
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_chain):
We always use fixed caps.
2009-08-11 02:30:27 +01:00
David Schleef
720dfeb3a5 gst/rtpmanager/gstrtpbin.c: g_hash_table_remove_all() only exists in 2.12. Work around.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c:
g_hash_table_remove_all() only exists in 2.12.  Work around.
2009-08-11 02:30:27 +01:00
Wim Taymans
62d401eb93 gst/rtpmanager/async_jitter_queue.c: Fix leak when flushing.
Original commit message from CVS:
* gst/rtpmanager/async_jitter_queue.c:
(async_jitter_queue_set_flushing_unlocked):
Fix leak when flushing.
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_clear_pt_map),
(gst_rtp_bin_class_init):
* gst/rtpmanager/gstrtpbin.h:
Add clear-pt-map signal.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_flush_stop),
(gst_rtp_jitter_buffer_sink_event), (gst_rtp_jitter_buffer_loop):
Init clock-rate to -1 to mark unknow clock rate.
Fix flushing.
2009-08-11 02:30:27 +01:00
Stefan Kost
15b54ec7e2 gst/qtdemux/qtdemux.c (gst_qtdemux_move_stream, gst_qtdemux_loop_state_header, gst_qtdemux_activate_segment, gst_qtde...
Original commit message from CVS:
* gst/qtdemux/qtdemux.c (gst_qtdemux_move_stream,
gst_qtdemux_loop_state_header, gst_qtdemux_activate_segment,
gst_qtdemux_prepare_current_sample, gst_qtdemux_combine_flows,
gst_qtdemux_loop_state_movie, gst_qtdemux_loop,
qtdemux_parse_segments, qtdemux_parse_trak):
* gst/rtpmanager/rtpsession.c (rtp_session_get_bandwidth,
rtp_session_get_rtcp_bandwidth, rtp_session_get_cname,
rtp_session_get_name, rtp_session_get_email, rtp_session_get_phone,
rtp_session_get_location, rtp_session_get_tool,
rtp_session_process_bye, session_report_blocks):
* gst/rtpmanager/rtpsource.c (rtp_source_process_rtp,
rtp_source_send_rtp, rtp_source_process_sr, rtp_source_process_rb):
More format arg fixing (spotted by Ali Sabil <ali.sabil@gmail.com>).
* gst/switch/Makefile.am:
Add require libraries(spotted by Ali Sabil <ali.sabil@gmail.com>).
2009-08-11 02:30:27 +01:00
Stefan Kost
091c2cfbc0 gst/rtpmanager/async_jitter_queue.c (tail_buffer_duration, async_jitter_queue_ref, async_jitter_queue_ref_unlocked, a...
Original commit message from CVS:
* gst/rtpmanager/async_jitter_queue.c (tail_buffer_duration,
async_jitter_queue_ref, async_jitter_queue_ref_unlocked,
async_jitter_queue_set_low_threshold,
async_jitter_queue_length_ts_units_unlocked,
async_jitter_queue_unref_and_unlock, async_jitter_queue_unref,
async_jitter_queue_lock, async_jitter_queue_push,
async_jitter_queue_push_unlocked, async_jitter_queue_push_sorted,
async_jitter_queue_pop_intern_unlocked, async_jitter_queue_pop,
async_jitter_queue_pop_unlocked, async_jitter_queue_length_unlocked,
async_jitter_queue_set_flushing_unlocked,
async_jitter_queue_unset_flushing_unlocked):
Format arg fix (spotted by Ali Sabil <ali.sabil@gmail.com>)
2009-08-11 02:30:27 +01:00
Wim Taymans
88f2441722 gst/rtpmanager/gstrtpjitterbuffer.c: Pass queries upstream.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_query):
Pass queries upstream.
2009-08-11 02:30:27 +01:00
Wim Taymans
a241c62ecb gst/rtpmanager/gstrtpjitterbuffer.c: Add some debug info.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_query):
Add some debug info.
* gst/rtpmanager/rtpsession.c: (rtp_session_init),
(rtp_session_send_rtp):
Store real user name in the session.
2009-08-11 02:30:27 +01:00
Wim Taymans
600afaaff9 gst/rtpmanager/async_jitter_queue.c: Fix the case where the buffer underruns and does not block.
Original commit message from CVS:
* gst/rtpmanager/async_jitter_queue.c: (signal_waiting_threads),
(async_jitter_queue_pop_intern_unlocked):
Fix the case where the buffer underruns and does not block.
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_base_init),
(create_recv_rtcp), (create_send_rtp), (create_rtcp),
(gst_rtp_bin_request_new_pad):
Rename RTCP send pad, like in the session manager.
Allow getting an RTCP pad for receiving even if we don't receive RTP.
fix handling of send_rtp_src pad.
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_chain):
When no pt map could be found, fall back to the sinkpad caps.
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_process_rtp),
(gst_rtp_session_send_rtp), (create_recv_rtp_sink),
(create_recv_rtcp_sink), (create_send_rtp_sink),
(create_send_rtcp_src):
Fix pad names.
* gst/rtpmanager/rtpsession.c: (source_push_rtp),
(rtp_session_create_source), (rtp_session_process_sr),
(rtp_session_send_rtp), (session_start_rtcp):
* gst/rtpmanager/rtpsession.h:
Unlock session when performing a callback.
Add callbacks for the internal session object.
Fix sending of RTP packets.
first attempt at adding NTP times in the SR packets.
Small debug and doc improvements.
* gst/rtpmanager/rtpsource.c: (rtp_source_send_rtp):
Update stats for SR reports.
2009-08-11 02:30:26 +01:00
Wim Taymans
e6537bcd7c gst/rtpmanager/gstrtpsession.c: Remove debug.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_send_rtcp):
Remove debug.
* gst/rtpmanager/rtpsession.c: (rtp_session_process_sr),
(rtp_session_process_sdes), (calculate_rtcp_interval),
(rtp_session_next_timeout), (session_report_blocks):
* gst/rtpmanager/rtpstats.c: (rtp_stats_calculate_rtcp_interval):
Improve debugging
Fix interval for BYE/RTCP packets.
2009-08-11 02:30:26 +01:00
Wim Taymans
a7b80281d1 gst/rtpmanager/gstrtpsession.c: Move reconsideration code to the rtpsession object.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (rtcp_thread),
(gst_rtp_session_send_rtcp), (gst_rtp_session_reconsider):
Move reconsideration code to the rtpsession object.
Simplify timout handling and add reconsideration.
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(rtp_session_init), (rtp_session_finalize), (on_bye_ssrc),
(on_bye_timeout), (on_timeout), (rtp_session_set_callbacks),
(obtain_source), (rtp_session_create_source),
(update_arrival_stats), (rtp_session_process_rtp),
(rtp_session_process_sr), (rtp_session_process_rr),
(rtp_session_process_bye), (rtp_session_process_rtcp),
(calculate_rtcp_interval), (rtp_session_send_bye),
(rtp_session_next_timeout), (session_start_rtcp),
(session_report_blocks), (session_cleanup), (session_sdes),
(session_bye), (is_rtcp_time), (rtp_session_on_timeout):
* gst/rtpmanager/rtpsession.h:
Handle timeout of inactive sources and senders.
Implement BYE scheduling.
* gst/rtpmanager/rtpsource.c: (calculate_jitter),
(rtp_source_process_sr), (rtp_source_get_last_sr),
(rtp_source_get_last_rb):
* gst/rtpmanager/rtpsource.h:
Add members to check for timeouts.
* gst/rtpmanager/rtpstats.c: (rtp_stats_init_defaults),
(rtp_stats_calculate_rtcp_interval), (rtp_stats_add_rtcp_jitter),
(rtp_stats_calculate_bye_interval):
* gst/rtpmanager/rtpstats.h:
Use RFC algorithm for calculating the reporting interval.
2009-08-11 02:30:26 +01:00
Wim Taymans
43f0b878c9 gst/rtpmanager/gstrtpsession.c: Implement forward and reverse reconsideration.
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c: (rtcp_thread):
Implement forward and reverse reconsideration.
* gst/rtpmanager/rtpsession.c: (rtp_session_get_num_sources),
(rtp_session_get_num_active_sources), (rtp_session_process_sr),
(session_report_blocks):
* gst/rtpmanager/rtpsession.h:
Small cleanups.
2009-08-11 02:30:26 +01:00
Wim Taymans
333764307d gst/rtpmanager/gstrtpbin.*: Make default jitterbuffer latency configurable.
Original commit message from CVS:
reviewed by: <delete if not using a buddy>
* gst/rtpmanager/gstrtpbin.c: (create_stream),
(gst_rtp_bin_class_init), (gst_rtp_bin_set_property),
(gst_rtp_bin_get_property):
* gst/rtpmanager/gstrtpbin.h:
Make default jitterbuffer latency configurable.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_loop),
(gst_rtp_jitter_buffer_set_property),
(gst_rtp_jitter_buffer_get_property):
Debuging cleanups.
2009-08-11 02:30:26 +01:00
Wim Taymans
ae536e0c89 gst/rtpmanager/gstrtpjitterbuffer.c: Report NO_PREROLL when going to PAUSED.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_change_state):
Report NO_PREROLL when going to PAUSED.
* gst/rtpmanager/gstrtpsession.c: (rtcp_thread):
Don't send RTCP right before we are shutting down.
* gst/rtpmanager/rtpsession.c: (rtp_session_process_rtp),
(rtp_session_process_sr), (session_report_blocks),
(rtp_session_perform_reporting):
Improve report blocks.
* gst/rtpmanager/rtpsource.c: (calculate_jitter), (init_seq),
(rtp_source_process_rtp), (rtp_source_process_sr),
(rtp_source_process_rb), (rtp_source_get_last_sr),
(rtp_source_get_last_rb):
* gst/rtpmanager/rtpsource.h:
* gst/rtpmanager/rtpstats.h:
Cleanups, add methods to access stats.
2009-08-11 02:30:25 +01:00
Wim Taymans
23883be047 gst/rtpmanager/gstrtpbin.c: fix for pad name change
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_rtcp):
fix for pad name change
* gst/rtpmanager/gstrtpsession.c: (rtcp_thread),
(gst_rtp_session_send_rtcp), (gst_rtp_session_clock_rate):
Fix for renamed methods.
* gst/rtpmanager/rtpsession.c: (rtp_session_init),
(rtp_session_finalize), (rtp_session_set_cname),
(rtp_session_get_cname), (rtp_session_set_name),
(rtp_session_get_name), (rtp_session_set_email),
(rtp_session_get_email), (rtp_session_set_phone),
(rtp_session_get_phone), (rtp_session_set_location),
(rtp_session_get_location), (rtp_session_set_tool),
(rtp_session_get_tool), (rtp_session_set_note),
(rtp_session_get_note), (source_push_rtp), (obtain_source),
(rtp_session_add_source), (rtp_session_get_source_by_ssrc),
(rtp_session_create_source), (rtp_session_process_rtp),
(rtp_session_process_sr), (rtp_session_process_sdes),
(rtp_session_process_rtcp), (rtp_session_send_rtp),
(rtp_session_get_reporting_interval), (session_report_blocks),
(session_sdes), (rtp_session_perform_reporting):
* gst/rtpmanager/rtpsession.h:
Prepare for implementing SSRC sampling.
Create SSRC for the session.
Add methods to set the SDES entries.
fix accounting of senders/receivers.
Implement SR/RR/SDES RTCP reporting.
* gst/rtpmanager/rtpsource.c: (rtp_source_init), (init_seq),
(rtp_source_process_rtp), (rtp_source_process_sr):
* gst/rtpmanager/rtpsource.h:
Implement extended sequence number.
* gst/rtpmanager/rtpstats.c: (rtp_stats_calculate_rtcp_interval):
* gst/rtpmanager/rtpstats.h:
Rename some fields.
2009-08-11 02:30:25 +01:00
Tim-Philipp Müller
677b361dc3 gst/rtpmanager/rtpsession.c: Don't use GLib-2.10 API, we only require GLib 2.8 at the moment.
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (rtp_session_finalize):
Don't use GLib-2.10 API, we only require GLib 2.8 at the moment.
2009-08-11 02:30:25 +01:00
Wim Taymans
54b3dec1f5 configure.ac: Disable rtpmanager for now because it depends on CVS -base.
Original commit message from CVS:
* configure.ac:
Disable rtpmanager for now because it depends on CVS -base.
* gst/rtpmanager/Makefile.am:
Added new files for session manager.
* gst/rtpmanager/gstrtpjitterbuffer.h:
* gst/rtpmanager/gstrtpbin.c: (create_session), (get_pt_map),
(create_stream), (pt_map_requested), (new_ssrc_pad_found):
Some cleanups.
the session manager can now also request a pt-map.
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_base_init),
(gst_rtp_session_class_init), (gst_rtp_session_init),
(gst_rtp_session_finalize), (rtcp_thread), (start_rtcp_thread),
(stop_rtcp_thread), (gst_rtp_session_change_state),
(gst_rtp_session_process_rtp), (gst_rtp_session_send_rtp),
(gst_rtp_session_send_rtcp), (gst_rtp_session_clock_rate),
(gst_rtp_session_get_time), (gst_rtp_session_event_recv_rtp_sink),
(gst_rtp_session_chain_recv_rtp),
(gst_rtp_session_event_recv_rtcp_sink),
(gst_rtp_session_chain_recv_rtcp),
(gst_rtp_session_event_send_rtp_sink),
(gst_rtp_session_chain_send_rtp), (create_send_rtcp_src),
(gst_rtp_session_request_new_pad):
* gst/rtpmanager/gstrtpsession.h:
We can ask for pt-map now too when the session manager needs it.
Hook up to the new session manager, implement the needed callbacks for
pushing data, getting clock time and requesting clock-rates.
Rename rtcp_src to send_rtcp_src to make it clear that this RTCP is to
be send to clients.
Add code to start and stop the thread that will schedule RTCP through
the session manager.
* gst/rtpmanager/rtpsession.c: (rtp_session_class_init),
(rtp_session_init), (rtp_session_finalize),
(rtp_session_set_property), (rtp_session_get_property),
(on_new_ssrc), (on_ssrc_collision), (on_ssrc_validated),
(on_bye_ssrc), (rtp_session_new), (rtp_session_set_callbacks),
(rtp_session_set_bandwidth), (rtp_session_get_bandwidth),
(rtp_session_set_rtcp_bandwidth), (rtp_session_get_rtcp_bandwidth),
(source_push_rtp), (source_clock_rate), (check_collision),
(obtain_source), (rtp_session_add_source),
(rtp_session_get_num_sources),
(rtp_session_get_num_active_sources),
(rtp_session_get_source_by_ssrc),
(rtp_session_get_source_by_cname), (rtp_session_create_source),
(update_arrival_stats), (rtp_session_process_rtp),
(rtp_session_process_sr), (rtp_session_process_rr),
(rtp_session_process_sdes), (rtp_session_process_bye),
(rtp_session_process_app), (rtp_session_process_rtcp),
(rtp_session_send_rtp), (rtp_session_get_rtcp_interval),
(rtp_session_produce_rtcp):
* gst/rtpmanager/rtpsession.h:
The advanced beginnings of the main session manager that handles the
participant database of RTPSources, SSRC probation, SSRC collisions,
parse RTCP to update source stats. etc..
* gst/rtpmanager/rtpsource.c: (rtp_source_class_init),
(rtp_source_init), (rtp_source_finalize), (rtp_source_new),
(rtp_source_set_callbacks), (rtp_source_set_as_csrc),
(rtp_source_set_rtp_from), (rtp_source_set_rtcp_from),
(push_packet), (get_clock_rate), (calculate_jitter),
(rtp_source_process_rtp), (rtp_source_process_bye),
(rtp_source_send_rtp), (rtp_source_process_sr),
(rtp_source_process_rb):
* gst/rtpmanager/rtpsource.h:
Object that encapsulates an SSRC and its state in the database.
Calculates the jitter and transit times of data packets.
* gst/rtpmanager/rtpstats.c: (rtp_stats_init_defaults),
(rtp_stats_calculate_rtcp_interval), (rtp_stats_add_rtcp_jitter):
* gst/rtpmanager/rtpstats.h:
Various stats regarding the session and sources.
Used to calculate the RTCP interval.
2009-08-11 02:30:25 +01:00
Wim Taymans
490113d40d gst/rtpmanager/: Protect lists and structures with locks.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_session), (get_pt_map),
(gst_rtp_bin_init), (gst_rtp_bin_finalize), (new_ssrc_pad_found),
(create_recv_rtp), (gst_rtp_bin_request_new_pad):
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(gst_rtp_session_init), (gst_rtp_session_finalize),
(gst_rtp_session_event_recv_rtp_sink),
(gst_rtp_session_event_recv_rtcp_sink),
(gst_rtp_session_chain_recv_rtcp),
(gst_rtp_session_request_new_pad):
Protect lists and structures with locks.
Return FLOW_OK from RTCP messages for now.
2009-08-11 02:30:25 +01:00
Wim Taymans
8bbea77a41 gst/rtpmanager/gstrtpbin.c: Emit pt map requests and cache results.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_session), (get_pt_map),
(create_stream), (gst_rtp_bin_class_init), (pt_map_requested):
Emit pt map requests and cache results.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_jitter_buffer_sink_parse_caps),
(gst_jitter_buffer_sink_setcaps),
(gst_rtp_jitter_buffer_get_clock_rate),
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop):
* gst/rtpmanager/gstrtpjitterbuffer.h:
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_chain):
Emit request-pt-map signals.
2009-08-11 02:30:25 +01:00
Wim Taymans
03bf43d50e gst/rtpmanager/gstrtpbin-marshal.list: Some more custom marshallers.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin-marshal.list:
Some more custom marshallers.
* gst/rtpmanager/gstrtpbin.c: (create_session), (get_pt_map),
(clock_rate_request), (create_stream), (gst_rtp_bin_class_init),
(pt_map_requested), (new_ssrc_pad_found), (create_recv_rtp):
* gst/rtpmanager/gstrtpbin.h:
Prepare for caching pt maps.
Connect to signals to collect pt maps.
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_class_init),
(gst_jitter_buffer_sink_setcaps), (gst_rtp_jitter_buffer_loop):
* gst/rtpmanager/gstrtpjitterbuffer.h:
Add request_clock_rate signal.
Use scale insteat of scale_int because the later does not deal with
negative numbers.
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_class_init),
(gst_rtp_pt_demux_chain):
* gst/rtpmanager/gstrtpptdemux.h:
Implement request-pt-map signal.
2009-08-11 02:30:24 +01:00
Wim Taymans
8c67b5d7dd gst/rtpmanager/: Added custom marshallers for signals.
Original commit message from CVS:
* gst/rtpmanager/.cvsignore:
* gst/rtpmanager/Makefile.am:
* gst/rtpmanager/gstrtpbin-marshal.list:
Added custom marshallers for signals.
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_class_init):
* gst/rtpmanager/gstrtpbin.h:
Prepare for emiting pt map signals.
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_class_init):
* gst/rtpmanager/gstrtpssrcdemux.c:
(gst_rtp_ssrc_demux_class_init):
Fix signals.
2009-08-11 02:30:24 +01:00
Wim Taymans
a6aa41dc21 gst/rtpmanager/gstrtpbin.*: Provide a clock.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_class_init),
(gst_rtp_bin_init), (gst_rtp_bin_provide_clock):
* gst/rtpmanager/gstrtpbin.h:
Provide a clock.
2009-08-11 02:30:24 +01:00
Wim Taymans
1b0ae2608f gst/rtpmanager/gstrtpbin.c: Fix pad template name parsing.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (create_rtcp):
Fix pad template name parsing.
2009-08-11 02:30:24 +01:00
Wim Taymans
63dbc75734 gst/rtpmanager/gstrtpjitterbuffer.c: Add some debug and comments.
Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_jitter_buffer_sink_setcaps), (gst_rtp_jitter_buffer_chain),
(gst_rtp_jitter_buffer_loop):
Add some debug and comments.
Fix double unref() in error cases.
2009-08-11 02:30:24 +01:00
Wim Taymans
9bfc641f0d gst/rtpmanager/gstrtpbin.*: Add debugging category.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (find_session_by_id),
(create_session), (find_stream_by_ssrc), (create_stream),
(gst_rtp_bin_class_init), (new_payload_found),
(new_ssrc_pad_found), (create_recv_rtp), (create_recv_rtcp),
(create_send_rtp), (create_rtcp):
* gst/rtpmanager/gstrtpbin.h:
Add debugging category.
Added RTPStream to manage stream per SSRC, each with its own
jitterbuffer and ptdemux.
Added SSRCDemux.
Connect to various SSRC and PT signals and create ghostpads, link stuff.
* gst/rtpmanager/gstrtpmanager.c: (plugin_init):
Added rtpbin to elements.
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_chain):
Fix caps and forward GstFlowReturn
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init),
(gst_rtp_session_event_recv_rtp_sink),
(gst_rtp_session_chain_recv_rtp),
(gst_rtp_session_event_recv_rtcp_sink),
(gst_rtp_session_chain_recv_rtcp),
(gst_rtp_session_event_send_rtp_sink),
(gst_rtp_session_chain_send_rtp), (create_recv_rtp_sink),
(create_recv_rtcp_sink), (create_send_rtp_sink), (create_rtcp_src),
(gst_rtp_session_request_new_pad):
Add debug category.
Add event handling
* gst/rtpmanager/gstrtpssrcdemux.c: (find_rtp_pad_for_ssrc),
(create_rtp_pad_for_ssrc), (gst_rtp_ssrc_demux_class_init),
(gst_rtp_ssrc_demux_init), (gst_rtp_ssrc_demux_chain),
(gst_rtp_ssrc_demux_change_state):
* gst/rtpmanager/gstrtpssrcdemux.h:
Add debug category.
Add new-pt-pad signal.
2009-08-11 02:30:24 +01:00
Wim Taymans
a9d14ed310 gst/rtpmanager/: Added simple SSRC demuxer.
Original commit message from CVS:
* gst/rtpmanager/Makefile.am:
* gst/rtpmanager/gstrtpmanager.c: (plugin_init):
* gst/rtpmanager/gstrtpssrcdemux.c: (find_pad_for_ssrc),
(create_pad_for_ssrc), (gst_rtp_ssrc_demux_base_init),
(gst_rtp_ssrc_demux_class_init), (gst_rtp_ssrc_demux_init),
(gst_rtp_ssrc_demux_finalize), (gst_rtp_ssrc_demux_sink_event),
(gst_rtp_ssrc_demux_chain), (gst_rtp_ssrc_demux_src_event),
(gst_rtp_ssrc_demux_change_state):
* gst/rtpmanager/gstrtpssrcdemux.h:
Added simple SSRC demuxer.
2009-08-11 02:30:23 +01:00
Wim Taymans
5351f0cb51 gst/rtpmanager/: Some more ghostpad magic.
Original commit message from CVS:
* gst/rtpmanager/gstrtpbin.c: (find_session_by_id),
(create_session), (gst_rtp_bin_base_init), (create_recv_rtp),
(create_recv_rtcp), (create_send_rtp), (create_rtcp),
(gst_rtp_bin_request_new_pad):
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpclient.c:
Some more ghostpad magic.
2009-08-11 02:30:23 +01:00
Wim Taymans
fdae491de7 gst/rtpmanager/Makefile.am: Add .h file so it can be disted properly.
Original commit message from CVS:
* gst/rtpmanager/Makefile.am:
Add .h file so it can be disted properly.
2009-08-11 02:30:23 +01:00
Wim Taymans
f0d1ab1c1f Add RTP session management elements. Still in progress.
Original commit message from CVS:
* configure.ac:
* gst/rtpmanager/Makefile.am:
* gst/rtpmanager/async_jitter_queue.c: (async_jitter_queue_new),
(signal_waiting_threads), (async_jitter_queue_ref),
(async_jitter_queue_ref_unlocked),
(async_jitter_queue_set_low_threshold),
(async_jitter_queue_set_high_threshold),
(async_jitter_queue_set_max_queue_length),
(async_jitter_queue_get_g_queue), (calculate_ts_diff),
(async_jitter_queue_length_ts_units_unlocked),
(async_jitter_queue_unref_and_unlock), (async_jitter_queue_unref),
(async_jitter_queue_lock), (async_jitter_queue_unlock),
(async_jitter_queue_push), (async_jitter_queue_push_unlocked),
(async_jitter_queue_push_sorted),
(async_jitter_queue_push_sorted_unlocked),
(async_jitter_queue_insert_after_unlocked),
(async_jitter_queue_pop_intern_unlocked), (async_jitter_queue_pop),
(async_jitter_queue_pop_unlocked), (async_jitter_queue_length),
(async_jitter_queue_length_unlocked),
(async_jitter_queue_set_flushing_unlocked),
(async_jitter_queue_unset_flushing_unlocked),
(async_jitter_queue_set_blocking_unlocked):
* gst/rtpmanager/async_jitter_queue.h:
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_base_init),
(gst_rtp_bin_class_init), (gst_rtp_bin_init),
(gst_rtp_bin_finalize), (gst_rtp_bin_set_property),
(gst_rtp_bin_get_property), (gst_rtp_bin_change_state),
(gst_rtp_bin_request_new_pad), (gst_rtp_bin_release_pad):
* gst/rtpmanager/gstrtpbin.h:
* gst/rtpmanager/gstrtpclient.c: (new_pad), (create_stream),
(free_stream), (find_stream_by_ssrc), (gst_rtp_client_base_init),
(gst_rtp_client_class_init), (gst_rtp_client_init),
(gst_rtp_client_finalize), (gst_rtp_client_set_property),
(gst_rtp_client_get_property), (gst_rtp_client_change_state),
(gst_rtp_client_request_new_pad), (gst_rtp_client_release_pad):
* gst/rtpmanager/gstrtpclient.h:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_base_init),
(gst_rtp_jitter_buffer_class_init), (gst_rtp_jitter_buffer_init),
(gst_rtp_jitter_buffer_dispose), (gst_rtp_jitter_buffer_getcaps),
(gst_jitter_buffer_sink_setcaps), (free_func),
(gst_rtp_jitter_buffer_flush_start),
(gst_rtp_jitter_buffer_flush_stop),
(gst_rtp_jitter_buffer_src_activate_push),
(gst_rtp_jitter_buffer_change_state), (priv_compare_rtp_seq_lt),
(compare_rtp_buffers_seq_num), (gst_rtp_jitter_buffer_sink_event),
(gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop),
(gst_rtp_jitter_buffer_query),
(gst_rtp_jitter_buffer_set_property),
(gst_rtp_jitter_buffer_get_property):
* gst/rtpmanager/gstrtpjitterbuffer.h:
* gst/rtpmanager/gstrtpmanager.c: (plugin_init):
* gst/rtpmanager/gstrtpptdemux.c: (gst_rtp_pt_demux_base_init),
(gst_rtp_pt_demux_class_init), (gst_rtp_pt_demux_init),
(gst_rtp_pt_demux_finalize), (gst_rtp_pt_demux_chain),
(gst_rtp_pt_demux_getcaps), (find_pad_for_pt),
(gst_rtp_pt_demux_setup), (gst_rtp_pt_demux_release),
(gst_rtp_pt_demux_change_state):
* gst/rtpmanager/gstrtpptdemux.h:
* gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_base_init),
(gst_rtp_session_class_init), (gst_rtp_session_init),
(gst_rtp_session_finalize), (gst_rtp_session_set_property),
(gst_rtp_session_get_property), (gst_rtp_session_change_state),
(gst_rtp_session_chain_recv_rtp),
(gst_rtp_session_chain_recv_rtcp),
(gst_rtp_session_chain_send_rtp), (create_recv_rtp_sink),
(create_recv_rtcp_sink), (create_send_rtp_sink), (create_rtcp_src),
(gst_rtp_session_request_new_pad), (gst_rtp_session_release_pad):
* gst/rtpmanager/gstrtpsession.h:
Add RTP session management elements. Still in progress.
2009-08-11 02:30:23 +01:00
Mark Nauwelaerts
96e72522fc avidemux: push mode; cater for chunk padding 2009-08-10 14:41:52 +02:00
Mark Nauwelaerts
f67db2a089 avidemux: only use stream's pad after having checked it exists 2009-08-10 14:41:34 +02:00
Mark Nauwelaerts
4249f52c6c avidemux: sprinkle some more GST_DEBUG_FUNCPTR 2009-08-10 14:41:29 +02:00
Mark Nauwelaerts
6d26594eef avidemux: post error message if no pads to push EOS event on 2009-08-10 14:41:27 +02:00
Mark Nauwelaerts
b0a0c06155 avidemux: fix typo in warning message 2009-08-10 14:41:23 +02:00
Mark Nauwelaerts
7750173244 avidemux: fix some buffer ref handling 2009-08-10 14:41:19 +02:00
Mark Nauwelaerts
5b0f7f04e7 avidemux: do not exceed maximum number of supported streams 2009-08-10 14:41:16 +02:00
Mark Nauwelaerts
effa7b4660 avidemux: prevent double unref; gst_avi_demux_parse_avih already unrefs 2009-08-10 14:41:14 +02:00
Mark Nauwelaerts
42bc085d95 avidemux: verify size of INFO LIST to satisfy subsequent expectations 2009-08-10 14:41:12 +02:00
Mark Nauwelaerts
f4f8e8532c avidemux: check video stream framerate against avi header frame duration
The former might be bogus in silly cases, and the latter seems to
carry more weight.
2009-08-10 14:41:09 +02:00
Mark Nauwelaerts
3863871100 avidemux: streamline stream duration calculation 2009-08-10 14:41:07 +02:00
Edward Hervey
d29ba8d48f matroska: remove dead assignments 2009-08-10 09:58:33 +02:00
Edward Hervey
0d6f0801f5 rtp: Remove dead assignments and resulting unneeded variables. 2009-08-10 09:58:33 +02:00
Thiago Santos
08862850a7 matroska: Adds support to muxing/demuxing WMA
Adds support for muxing wma audio family and fixes
demuxing of wma family in matroskademux. matroskademux
was broken because it missed codec_data.
2009-08-09 20:34:05 -03:00
Thiago Santos
df442b4727 matroskamux: adds support for wmv family
Adds support to WMV1, WMV2, WMV3 and other family formats that
are signaled by the 'format' field in the caps (i.e. WVC1).
Partially fixes #576378
2009-08-09 20:34:04 -03:00
LoneStar
494555cecd id3demux: Try GST_*_TAG_ENCODING and locale encoding if tags are not UTF8
Fixes bug #499242.
2009-08-09 12:52:17 +02:00
Vincent Penquerc'h
19b7001bf9 matroska: add kate subtitle support to matroska muxer and demuxer
See #525743.
2009-08-08 12:54:48 +01:00
Tim-Philipp Müller
b0bcb27517 id3demux: add ID3 v2.3 spec as well 2009-08-07 16:51:45 +01:00
Tim-Philipp Müller
0417283077 id3demux: sizes in ID3 v2.3 are unlikely to be sync-safe integers
In ID3 v2.3 compressed frames will have a 4-byte data length indicator
after the frame header to indicate the size of the decompressed data.
This integer is unlikely to be a sync-safe integer for v2.3 tags,
only in v2.4 it's sync-safe.
2009-08-07 16:42:39 +01:00
Tim-Philipp Müller
3ec0a31d64 id3demux: fix typo in debug message 2009-08-07 16:36:55 +01:00
Tim-Philipp Müller
2e05af3876 id3demux: fix parsing of unsync'ed ID3 v2.4 tags and frames
Reversing the unsynchronisation seems to work slightly differently
for ID3 v2.3 tags and v2.4 tags: v2.3 tags don't have syncsafe frame
sizes in the frame header, so the unsynchronisation is applied to
the whole frame data including all the frame headers. v2.4 frames
have sync-safe sizes, however, so the unsynchronisation only needs
to be applied to the actual frame data, and it seems that's what's
being done as well. So we need to undo the unsynchronisation on a
per-frame basis for v2.4 tags for things to work properly.

Fixes extraction of coverart/images from APIC frames in ID3 v2.4
tags (#588148).

Add unit test for this as well.
2009-08-07 16:02:23 +01:00
Wim Taymans
ddfa9961c6 rtph264pay: use array instead of queue 2009-08-06 11:14:44 +02:00
Mark Nauwelaerts
2bfb42c5f8 rtph264pay: push NALs only after SPS/PPS
parse complete (bytestream) buffer for SPS/PPS before pushing NALs.

Fixes #564501.
2009-08-06 11:14:44 +02:00
Edward Hervey
d65d542e9d rtpqdm2depay: Fix debug statement. 2009-08-04 11:17:17 +02:00
Edward Hervey
20c7977b9b rtpqdm2depay,rtpsv3vdepay: Add debugging category. 2009-08-03 21:26:31 +02:00
Edward Hervey
25c5514fab rtpqdm2depay: Handle gaps in incoming packets.
Whenever we see a gap, we flush the temporary packets (but not the adapter). If we
had some data temporarily stored it will be outputted (the sound will sound a bit
garbled... but that's how it sounds on MacOSX :)
2009-08-03 21:26:30 +02:00
Edward Hervey
6aff520a24 rtpqdmdepay: Fix CRC calculation and remove commented code. 2009-08-03 21:26:30 +02:00
Edward Hervey
d39c057e42 rtp: New QDM2 rtp depayloader.
Reverse-engineered by comparing:
* A rtp hinted file provided by DarwinStreamingServer
* The output procued by DSS for that same file

Also used various streaming sources available on the internet to fine-tune
the code.

The header/codec_data extraction methods are from FFMpeg (LGPL).
2009-08-03 21:26:30 +02:00
Edward Hervey
e2b3665ae6 rtpsv3vdepay: Properly fill codec_data and cleanup code a bite more. 2009-08-03 21:26:30 +02:00
Edward Hervey
65a2871e90 rtpsv3vdepay: Only output buffers once we're configured. 2009-08-03 21:26:30 +02:00
Edward Hervey
1743763c0b rtpsv3vdepay: Add more encoding-name variants 2009-08-03 21:26:30 +02:00
Sebastian Dröge
8b9d547c14 flvmux: Fix writing of the index for < 128 buffers
Partially fixes bug #590447.
2009-08-03 20:08:00 +02:00
Sebastian Dröge
cb4eb5714c flvmux: Fix resetting of the element
Reset the have_video/have_audio flags and make sure to
properly release the request pads.

Partially fixes bug #590447.
2009-08-03 20:07:00 +02:00
Wim Taymans
784b95ddbf rtspsrc: don't add non-utf8 chars to structures 2009-08-03 18:13:46 +02:00
Luc Deschenaux
654ca56d85 jpegdepay: use attributes for extra properties
Use some of the SDP attributes when they are present to specify the output
dimension and framerate. This allows us to receive jpeg frames larger than
2040 width/height.

Fixes #564437
2009-08-03 18:02:31 +02:00
Wim Taymans
efb9c17975 RTP docs: update with attributes in caps 2009-08-03 18:01:27 +02:00
Luc Deschenaux
f96e900a64 rtspsrc: put all SDP attributes on caps
Put the SDP attributes on the caps too so that they can be used by
depayloaders.

See #564437
2009-08-03 17:21:44 +02:00
Tim-Philipp Müller
6c323f5b0d multiudpsink: don't do things with side-effects inside g_return_val_if_fail()
Someone might compile this code with -DG_DISABLE_ASSERT some day.
2009-08-02 11:50:43 +01:00
Tim-Philipp Müller
93690bfdd6 flvmux: fix invalid write caused by using sizeof("string") as length
sizeof("foo") includes the string's NUL-terminator in the size returned,
but we're writing strings here with an explicit size at the beginning
and no NUL-terminator. In most cases using sizeof("foo") as length in
memcpy is not harmful, but it is where the string goes right at the
end of our buffer to write, since we don't allocate space for that
NUL terminator.
2009-07-31 23:54:47 +01:00
Sebastian Dröge
22d712786c avidemux: Fix last commit and improve readability 2009-07-29 14:31:48 +02:00
Руслан Ижбулатов
3702fcdb80 Fixed the fix for TIME->DEFAULT conversion.
Fixes bug #578052 again.
2009-07-29 13:58:33 +02:00
Edward Hervey
050e91995e rtpsv3depay: Fix width/height calculation, bring up to marginal rank.
Based on documentation found on http://wiki.multimedia.cx/
2009-07-29 13:39:08 +02:00
Thiago Santos
52482a3741 avimux: adds support to wma 2009-07-28 00:30:43 -03:00
Thiago Santos
f43b442cf9 avimux: adds support to wmv 2009-07-28 00:07:15 -03:00
Thiago Santos
40abf68562 qtdemux: Downgrade warning message to debug 2009-07-27 21:39:57 -03:00
Sebastian Dröge
f0054bcc82 effectv: Don't allow caps changes for some effectv filters
These filters use information from previous frames to
generate the current frame and a caps change will make
the effect start from the beginning again.
2009-07-24 19:54:05 +02:00
Sebastian Dröge
6eada080a0 warptv: Make the sine table global instead of having it in every instance 2009-07-24 19:54:05 +02:00
Sebastian Dröge
aa02444768 flvdemux: Implement SEEKING query
Also add some more query types to the answer of the query type function.

Fixes bug #589424.
2009-07-23 11:51:07 +02:00
Stefan Kost
8990398733 interleave: fix indenting and upgrade two debugs to warnings.
Fix newlines in variable decls. Change two debugs to become warnings as they
indicate that things will not work.
2009-07-21 10:07:00 +03:00
Sebastian Dröge
b7bf2f6820 matroskademux: Answer SEEKING queries in the original format 2009-07-21 07:52:00 +02:00
Josep Torra
efcfb89b5c udputils: initialize struct content with 0.
Fixes some random crashes.
2009-07-21 01:12:44 +02:00
Sebastian Dröge
bb03d8ff18 matroskademux: Implement SEEKING query 2009-07-20 16:52:19 +02:00
Sebastian Dröge
c5b420068a effectv: Chain up finalize to the parent class in warptv
Fixes a memory leak.
2009-07-16 17:10:21 +02:00
Sebastian Dröge
2abd58de9d effectv: Add rippletv element
This produces a water ripple effect on the video input,
based on motion or a rain drop algorithm.

Kindly relicensed to LGPL2+ by Kentaro Fukuchi <fukuchi@megaui.net>.

Fixes bug #588695.
2009-07-16 12:05:31 +02:00
Sebastian Dröge
433255304e effectv: Add streaktv effect filter element
This combines the StreakTV and BaltanTV filters from the
effectv project.

Kindly relicensed to LGPL2+ by Kentaro Fukuchi <fukuchi@megaui.net>.

Fixes bug #588368.
2009-07-16 12:04:38 +02:00
Sebastian Dröge
f981bec99d effectv: Fix processing on big endian architectures 2009-07-16 12:04:36 +02:00
Sebastian Dröge
c17134c6de effectv: Add radioactv effect filter
This filter adds a radiation-like motion blur effect
to the video stream.

Kindly relicensed to LGPL2+ by Kentaro Fukuchi <fukuchi@megaui.net>.

Fixes bug #588359.
2009-07-16 12:04:08 +02:00
Sebastian Dröge
3ad603be84 effectv: Make the optv threshold property an uint 2009-07-16 12:04:06 +02:00
Sebastian Dröge
2c2611b6bf effect: Add optv effect filter from the effectv project
This filter binarizes input frames and combines them with various
optical pattern.

Kindly relicensed to LGPL2+ by Kentaro Fukuchi <fukuchi@megaui.net>.

Fixes bug #588349.
2009-07-16 12:03:29 +02:00
Marc Leeman
7484b631b7 mpvpay: Rework the timestamping
Rework the timestamping in the mpv payloader so that the timestamps are more
accurate.

Fixes #587680
2009-07-13 17:55:25 +02:00
Sebastian Dröge
91ad86c0f9 videomixer: Random cleanup 2009-07-10 19:54:25 +02:00
Sebastian Dröge
f19ef7eada videomixer: Send queries to the master pad by default instead of all pads 2009-07-10 19:54:13 +02:00
Sebastian Dröge
0bf61ecfaf videomixer: Add RGB, BGR, xRGB, RGBx, xBGR, BGRx support 2009-07-10 19:35:49 +02:00
Sebastian Dröge
bbcb4f8f15 videomixer: Clean up debugging a bit 2009-07-10 17:43:07 +02:00
Sebastian Dröge
0775db4455 videomixer: Remove some redundant checks and error out immediately if not negotiated
Also stop leaking the output buffer in some error cases.
2009-07-10 17:33:40 +02:00
Sebastian Dröge
4ccd9c92ae videomixer: Remove the calculate_frame_size() function and use libgstvideo instead 2009-07-10 17:23:03 +02:00
Edward Hervey
34c97c0c6f videomixer: Remove unused link/unlink pad methods 2009-07-10 14:37:16 +02:00
Edward Hervey
b02949faeb videomixer: I420 mode: Add fast path for 0.0 and 1.0 alpha
If the source alpha is 0.0, we take nothing.
If the source alpha is 1.0, we overwrite everything.
2009-07-10 14:37:13 +02:00
Edward Hervey
3c88249d48 videomixer: I420 blending : Fix main algorithm.
When blending a source layer with an alpha of 'a' on top of another
destination layer we take the sum of:
* 'a' percent of the source layer
* (100 - 'a') percent of the destination layer (the remainder)
2009-07-10 14:37:10 +02:00
Edward Hervey
ace4cb2295 videomixer: Make debugging category global to all the code. 2009-07-10 14:37:07 +02:00
Edward Hervey
3ebf5e9a2a videomixer: improve readability of debugging statements. 2009-07-10 14:37:04 +02:00
Mark Nauwelaerts
a905ef233e rtspsrc: do not leak timeout message 2009-07-09 11:34:40 +02:00
Sebastian Dröge
63115fe72c avi: Don't forward NEWSEGMENT events from upstream
New ones are generated later and simply forwarding them can
result in NEWSEGMENT events of different format going downstream.

Fixes bug #587983.
2009-07-09 07:14:23 +02:00
Sebastian Dröge
356972740a videomixer: Make checker pattern lookup table constant 2009-07-08 18:19:45 +02:00
Sebastian Dröge
69f9b7c8d6 videomixer: Add support for ARGB
And clean up the caps parsing.
2009-07-08 18:17:48 +02:00
Benjamin Gaignard
abd383a2a6 udp: Initialize pointer to NULL
Otherwise we're calling free() with some random
memory address in error cases.

Fixes bug #587982.
2009-07-08 15:19:03 +02:00
Mark Nauwelaerts
977796fd07 qtdemux: sprinkle some more const 2009-07-08 11:20:30 +02:00
Mark Nauwelaerts
a4d586daac qtdemux: perform some more (careful) data buffering
Once buffering has started (with an mdat atom), continue buffering
until moov atom is reached, which handles cases with multiple
mdat atoms.  Also keep adapter/offset better in sync with upstream
and fix some debug statements.  Fixes #587426.
2009-07-08 11:20:27 +02:00
Philip Jgenstedt
0ebff2d14c avidemux: Replace deprecated GST_DISABLE_DEBUG with correct macro. Fixes #587826 2009-07-06 10:40:31 +02:00
Tim-Philipp Müller
2bcf52dde7 qtdemux: error out instead of dividing by 0
Error out if timescale is 0.
2009-07-01 13:07:48 +01:00
Tim-Philipp Müller
f6a1211495 Revert "qtdemux: Make sure we don't blacklist streams by wrongly comparing their"
This reverts commit 5503a59a57.

Reverting this since it causes regressions with a lot of sample files
I have, all of which worked fine with the last -good release (#586891).
2009-07-01 09:32:42 +01:00
Tim-Philipp Müller
ae27524be0 qtdemux: comment out unused structure 2009-07-01 09:24:38 +01:00