Commit graph

3238 commits

Author SHA1 Message Date
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