platform/upstream/gstreamer.git
15 years agogst/rtpmanager/gstrtpbin.c: Calculate and configure the NTP base time so that we...
Wim Taymans [Wed, 12 Sep 2007 18:04:32 +0000 (18:04 +0000)]
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.

15 years agogst/rtpmanager/gstrtpsession.c: Make compiler happy: fix compilation with -Wall ...
Tim-Philipp Müller [Tue, 4 Sep 2007 15:23:34 +0000 (15:23 +0000)]
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).

15 years agogst/rtpmanager/: Updated example pipelines in docs.
Wim Taymans [Mon, 3 Sep 2007 21:19:34 +0000 (21:19 +0000)]
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.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: Use extended timestamp to release buffers from...
Wim Taymans [Fri, 31 Aug 2007 15:26:14 +0000 (15:26 +0000)]
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.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: Improve Comments.
Wim Taymans [Wed, 29 Aug 2007 16:56:27 +0000 (16:56 +0000)]
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.

15 years agogst/rtpmanager/gstrtpsession.*: Distribute synchronisation parameters to the session...
Wim Taymans [Wed, 29 Aug 2007 01:22:43 +0000 (01:22 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.c: Add some more advanced example pipelines.
Wim Taymans [Tue, 28 Aug 2007 20:30:16 +0000 (20:30 +0000)]
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.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: When synchronizing buffers, take peer latency...
Wim Taymans [Mon, 27 Aug 2007 21:17:21 +0000 (21:17 +0000)]
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.

15 years agoRename all GstRTPFoo structs to GstRtpFoo so that GST_BOILERPLATE registers a GType...
Tim-Philipp Müller [Thu, 23 Aug 2007 21:39:58 +0000 (21:39 +0000)]
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.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: When drop-on-latency is set but we have no laten...
Wim Taymans [Tue, 21 Aug 2007 17:18:29 +0000 (17:18 +0000)]
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.

15 years agogst/rtpmanager/rtpjitterbuffer.*: Fix undefined overflow prone ts_diff handling.
Wim Taymans [Tue, 21 Aug 2007 16:04:47 +0000 (16:04 +0000)]
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.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: Fix EOS handling.
Wim Taymans [Thu, 16 Aug 2007 11:40:16 +0000 (11:40 +0000)]
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.

15 years agogst/rtpmanager/rtpjitterbuffer.c: Include stdlib.
Stefan Kost [Mon, 13 Aug 2007 06:16:40 +0000 (06:16 +0000)]
gst/rtpmanager/rtpjitterbuffer.c: Include stdlib.

Original commit message from CVS:
* gst/rtpmanager/rtpjitterbuffer.c:
Include stdlib.

15 years agogst/rtpmanager/: Remove complicated async queue and replace with more simple jitterbu...
Wim Taymans [Fri, 10 Aug 2007 17:16:53 +0000 (17:16 +0000)]
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.

15 years agoAdd stdlib include (free, atoi, exit).
Stefan Kost [Wed, 18 Jul 2007 07:35:32 +0000 (07:35 +0000)]
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).

15 years agogst/: Build fixes for gcc-2.9x (no mid-block variable declarations etc.).
Jens Granseuer [Fri, 22 Jun 2007 20:23:18 +0000 (20:23 +0000)]
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.

15 years agoRename elements to avoid conflict with farsight elements with the same name. Fixes...
Wim Taymans [Mon, 28 May 2007 16:37:47 +0000 (16:37 +0000)]
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.

15 years agoDocument stuff.
Wim Taymans [Wed, 23 May 2007 13:08:52 +0000 (13:08 +0000)]
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.

15 years agogst/rtpmanager/gstrtpptdemux.c: We always use fixed caps.
Wim Taymans [Tue, 15 May 2007 13:29:53 +0000 (13:29 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.c: g_hash_table_remove_all() only exists in 2.12. Work...
David Schleef [Tue, 15 May 2007 03:45:45 +0000 (03:45 +0000)]
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.

15 years agogst/rtpmanager/async_jitter_queue.c: Fix leak when flushing.
Wim Taymans [Mon, 14 May 2007 15:28:36 +0000 (15:28 +0000)]
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.

15 years agogst/qtdemux/qtdemux.c (gst_qtdemux_move_stream, gst_qtdemux_loop_state_header, gst_qt...
Stefan Kost [Thu, 10 May 2007 14:02:07 +0000 (14:02 +0000)]
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>).

15 years agogst/rtpmanager/async_jitter_queue.c (tail_buffer_duration, async_jitter_queue_ref...
Stefan Kost [Thu, 10 May 2007 12:38:49 +0000 (12:38 +0000)]
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>)

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: Pass queries upstream.
Wim Taymans [Wed, 9 May 2007 11:24:22 +0000 (11:24 +0000)]
gst/rtpmanager/gstrtpjitterbuffer.c: Pass queries upstream.

Original commit message from CVS:
* gst/rtpmanager/gstrtpjitterbuffer.c:
(gst_rtp_jitter_buffer_query):
Pass queries upstream.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: Add some debug info.
Wim Taymans [Fri, 4 May 2007 12:32:27 +0000 (12:32 +0000)]
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.

15 years agogst/rtpmanager/async_jitter_queue.c: Fix the case where the buffer underruns and...
Wim Taymans [Mon, 30 Apr 2007 13:41:30 +0000 (13:41 +0000)]
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.

15 years agogst/rtpmanager/gstrtpsession.c: Remove debug.
Wim Taymans [Sun, 29 Apr 2007 14:46:27 +0000 (14:46 +0000)]
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.

15 years agogst/rtpmanager/gstrtpsession.c: Move reconsideration code to the rtpsession object.
Wim Taymans [Fri, 27 Apr 2007 15:09:12 +0000 (15:09 +0000)]
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.

15 years agogst/rtpmanager/gstrtpsession.c: Implement forward and reverse reconsideration.
Wim Taymans [Wed, 25 Apr 2007 16:38:03 +0000 (16:38 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.*: Make default jitterbuffer latency configurable.
Wim Taymans [Wed, 25 Apr 2007 15:48:46 +0000 (15:48 +0000)]
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.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: Report NO_PREROLL when going to PAUSED.
Wim Taymans [Wed, 25 Apr 2007 13:19:36 +0000 (13:19 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.c: fix for pad name change
Wim Taymans [Wed, 25 Apr 2007 08:30:48 +0000 (08:30 +0000)]
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.

15 years agogst/rtpmanager/rtpsession.c: Don't use GLib-2.10 API, we only require GLib 2.8 at...
Tim-Philipp Müller [Sat, 21 Apr 2007 19:21:49 +0000 (19:21 +0000)]
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.

15 years agoconfigure.ac: Disable rtpmanager for now because it depends on CVS -base.
Wim Taymans [Wed, 18 Apr 2007 18:58:53 +0000 (18:58 +0000)]
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.

15 years agogst/rtpmanager/: Protect lists and structures with locks.
Wim Taymans [Fri, 13 Apr 2007 09:20:55 +0000 (09:20 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.c: Emit pt map requests and cache results.
Wim Taymans [Thu, 12 Apr 2007 08:18:32 +0000 (08:18 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin-marshal.list: Some more custom marshallers.
Wim Taymans [Wed, 11 Apr 2007 13:49:54 +0000 (13:49 +0000)]
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.

15 years agogst/rtpmanager/: Added custom marshallers for signals.
Wim Taymans [Tue, 10 Apr 2007 09:14:07 +0000 (09:14 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.*: Provide a clock.
Wim Taymans [Fri, 6 Apr 2007 12:28:29 +0000 (12:28 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.c: Fix pad template name parsing.
Wim Taymans [Fri, 6 Apr 2007 12:07:30 +0000 (12:07 +0000)]
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.

15 years agogst/rtpmanager/gstrtpjitterbuffer.c: Add some debug and comments.
Wim Taymans [Thu, 5 Apr 2007 16:10:24 +0000 (16:10 +0000)]
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.

15 years agogst/rtpmanager/gstrtpbin.*: Add debugging category.
Wim Taymans [Thu, 5 Apr 2007 13:54:23 +0000 (13:54 +0000)]
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.

15 years agogst/rtpmanager/: Added simple SSRC demuxer.
Wim Taymans [Wed, 4 Apr 2007 10:23:15 +0000 (10:23 +0000)]
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.

15 years agogst/rtpmanager/: Some more ghostpad magic.
Wim Taymans [Tue, 3 Apr 2007 11:35:39 +0000 (11:35 +0000)]
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.

15 years agogst/rtpmanager/Makefile.am: Add .h file so it can be disted properly.
Wim Taymans [Tue, 3 Apr 2007 09:51:13 +0000 (09:51 +0000)]
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.

15 years agoAdd RTP session management elements. Still in progress.
Wim Taymans [Tue, 3 Apr 2007 09:13:17 +0000 (09:13 +0000)]
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.

15 years agoavidemux: push mode; cater for chunk padding
Mark Nauwelaerts [Mon, 10 Aug 2009 11:30:23 +0000 (13:30 +0200)]
avidemux: push mode; cater for chunk padding

15 years agoavidemux: only use stream's pad after having checked it exists
Mark Nauwelaerts [Tue, 4 Aug 2009 17:45:43 +0000 (19:45 +0200)]
avidemux: only use stream's pad after having checked it exists

15 years agoavidemux: sprinkle some more GST_DEBUG_FUNCPTR
Mark Nauwelaerts [Tue, 4 Aug 2009 11:38:09 +0000 (13:38 +0200)]
avidemux: sprinkle some more GST_DEBUG_FUNCPTR

15 years agoavidemux: post error message if no pads to push EOS event on
Mark Nauwelaerts [Tue, 4 Aug 2009 11:36:36 +0000 (13:36 +0200)]
avidemux: post error message if no pads to push EOS event on

15 years agoavidemux: fix typo in warning message
Mark Nauwelaerts [Tue, 4 Aug 2009 09:39:59 +0000 (11:39 +0200)]
avidemux: fix typo in warning message

15 years agoavidemux: fix some buffer ref handling
Mark Nauwelaerts [Tue, 4 Aug 2009 09:39:39 +0000 (11:39 +0200)]
avidemux: fix some buffer ref handling

15 years agoavidemux: do not exceed maximum number of supported streams
Mark Nauwelaerts [Tue, 4 Aug 2009 09:37:16 +0000 (11:37 +0200)]
avidemux: do not exceed maximum number of supported streams

15 years agoavidemux: prevent double unref; gst_avi_demux_parse_avih already unrefs
Mark Nauwelaerts [Tue, 4 Aug 2009 09:35:18 +0000 (11:35 +0200)]
avidemux: prevent double unref; gst_avi_demux_parse_avih already unrefs

15 years agoavidemux: verify size of INFO LIST to satisfy subsequent expectations
Mark Nauwelaerts [Tue, 4 Aug 2009 09:32:27 +0000 (11:32 +0200)]
avidemux: verify size of INFO LIST to satisfy subsequent expectations

15 years agoavidemux: check video stream framerate against avi header frame duration
Mark Nauwelaerts [Wed, 29 Jul 2009 13:25:38 +0000 (15:25 +0200)]
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.

15 years agoavidemux: streamline stream duration calculation
Mark Nauwelaerts [Tue, 4 Aug 2009 10:16:13 +0000 (12:16 +0200)]
avidemux: streamline stream duration calculation

15 years agodv1394src: Fix element for live usage... which has been broken for 2 years :(
Edward Hervey [Fri, 3 Jul 2009 12:04:13 +0000 (14:04 +0200)]
dv1394src: Fix element for live usage... which has been broken for 2 years :(

This is a live source, therefore:
* Use GST_FORMAT_TIME as the default format
* set_timestamp to True
* properly implement query latency.

This allows expected live usage like : playbin2 uri=dv://

15 years agoraw1394: Remove unneeded variable
Edward Hervey [Sun, 9 Aug 2009 07:43:41 +0000 (09:43 +0200)]
raw1394: Remove unneeded variable

15 years agomatroska: remove dead assignments
Edward Hervey [Sun, 9 Aug 2009 07:43:29 +0000 (09:43 +0200)]
matroska: remove dead assignments

15 years agortp: Remove dead assignments and resulting unneeded variables.
Edward Hervey [Sun, 9 Aug 2009 07:43:00 +0000 (09:43 +0200)]
rtp: Remove dead assignments and resulting unneeded variables.

15 years agowavpack: Use GLib GChecksum instead of our own MD5 implementation
Sebastian Dröge [Mon, 10 Aug 2009 07:53:28 +0000 (09:53 +0200)]
wavpack: Use GLib GChecksum instead of our own MD5 implementation

This requires GLib 2.16 but that version is already required by core anyway.

15 years agomatroska: Adds support to muxing/demuxing WMA
Thiago Santos [Sat, 8 Aug 2009 03:47:48 +0000 (00:47 -0300)]
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.

15 years agomatroskamux: adds support for wmv family
Thiago Santos [Thu, 6 Aug 2009 23:15:17 +0000 (20:15 -0300)]
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

15 years agov4l2src: if max == min width/height put an int in the probed caps, not an int range
Tim-Philipp Müller [Sun, 9 Aug 2009 13:19:42 +0000 (14:19 +0100)]
v4l2src: if max == min width/height put an int in the probed caps, not an int range

Fixes #560033.

15 years agoosxaudiosrc: if max_channels == min_channels, use an int instead of an int range...
Tim-Philipp Müller [Sun, 9 Aug 2009 12:58:07 +0000 (13:58 +0100)]
osxaudiosrc: if max_channels == min_channels, use an int instead of an int range in the caps

15 years agoid3demux: Try GST_*_TAG_ENCODING and locale encoding if tags are not UTF8
LoneStar [Sun, 9 Aug 2009 10:52:17 +0000 (12:52 +0200)]
id3demux: Try GST_*_TAG_ENCODING and locale encoding if tags are not UTF8

Fixes bug #499242.

15 years agoconfigure: bump core/base requirements to latest release
Tim-Philipp Müller [Sun, 9 Aug 2009 00:29:50 +0000 (01:29 +0100)]
configure: bump core/base requirements to latest release

To avoid confusion.

15 years agocheck: fix flvmux unit test on big endian machines
Tim-Philipp Müller [Sun, 9 Aug 2009 00:27:01 +0000 (01:27 +0100)]
check: fix flvmux unit test on big endian machines

flvmux only accepts raw audio in little endian, but audiotestsrc
produces audio in the native endianness, which makes linking
between audiotestsrc and flvmux fail on big endian machines. Add
an audioconvert element in between the two to fix this.

15 years agomatroska: add kate subtitle support to matroska muxer and demuxer
Vincent Penquerc'h [Sun, 15 Feb 2009 18:49:44 +0000 (18:49 +0000)]
matroska: add kate subtitle support to matroska muxer and demuxer

See #525743.

15 years agoid3demux: add ID3 v2.3 spec as well
Tim-Philipp Müller [Fri, 7 Aug 2009 15:51:45 +0000 (16:51 +0100)]
id3demux: add ID3 v2.3 spec as well

15 years agoid3demux: sizes in ID3 v2.3 are unlikely to be sync-safe integers
Tim-Philipp Müller [Fri, 7 Aug 2009 15:42:39 +0000 (16:42 +0100)]
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.

15 years agoid3demux: fix typo in debug message
Tim-Philipp Müller [Fri, 7 Aug 2009 15:36:55 +0000 (16:36 +0100)]
id3demux: fix typo in debug message

15 years agoid3demux: fix parsing of unsync'ed ID3 v2.4 tags and frames
Tim-Philipp Müller [Fri, 7 Aug 2009 15:02:23 +0000 (16:02 +0100)]
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.

15 years agosouphttpsrc: Use SOUP_METHOD_GET instead of "GET" string
Sebastian Dröge [Thu, 6 Aug 2009 19:24:14 +0000 (21:24 +0200)]
souphttpsrc: Use SOUP_METHOD_GET instead of "GET" string

Fixes bug #590970.

15 years agopulsesrc: set the default slave method to skew
Wim Taymans [Thu, 6 Aug 2009 11:00:59 +0000 (13:00 +0200)]
pulsesrc: set the default slave method to skew

Set the default slave method to the much better skew algorithm. This is the
default in the new base class but we override this here as well for the
upcomming release.

15 years agopulsesrc: fix compilation with --disable-gst-debug
Tim-Philipp Müller [Thu, 6 Aug 2009 09:20:34 +0000 (10:20 +0100)]
pulsesrc: fix compilation with --disable-gst-debug

15 years agortph264pay: use array instead of queue
Wim Taymans [Mon, 3 Aug 2009 16:59:32 +0000 (18:59 +0200)]
rtph264pay: use array instead of queue

15 years agortph264pay: push NALs only after SPS/PPS
Mark Nauwelaerts [Mon, 3 Aug 2009 16:55:19 +0000 (18:55 +0200)]
rtph264pay: push NALs only after SPS/PPS

parse complete (bytestream) buffer for SPS/PPS before pushing NALs.

Fixes #564501.

15 years agov4l2: Directly use GST_PTR_FORMAT for printing caps with the LOG_CAPS macro
Sebastian Dröge [Tue, 4 Aug 2009 12:44:36 +0000 (14:44 +0200)]
v4l2: Directly use GST_PTR_FORMAT for printing caps with the LOG_CAPS macro

15 years agortpqdm2depay: Fix debug statement.
Edward Hervey [Tue, 4 Aug 2009 09:17:17 +0000 (11:17 +0200)]
rtpqdm2depay: Fix debug statement.

15 years agov4l2: Remove some OMAP specific hacks
Sebastian Dröge [Tue, 4 Aug 2009 07:32:07 +0000 (09:32 +0200)]
v4l2: Remove some OMAP specific hacks

They require special build flags and are not useful in general.

15 years agov4l2sink: change where buffers get dequeued
Rob Clark [Tue, 4 Aug 2009 07:22:29 +0000 (09:22 +0200)]
v4l2sink: change where buffers get dequeued

It seems to cause strange occasional high latencies (almost 200ms) when dequeuing buffers from _buffer_alloc().  It is simpler and seems to work much better to dqbuf from the same thread that is queuing the next buffer.

15 years agov4l2: Add v4l2sink element
Rob Clark [Tue, 4 Aug 2009 07:14:20 +0000 (09:14 +0200)]
v4l2: Add v4l2sink element

This also does the following changes:
(1) pull the bufferpool code out into gstv4l2bufferpool.c, and make a
    bit more generic so it can be used both for v4l2src and v4l2sink
(2) move some of the device probing/configuration/caps stuff into
    gstv4l2object.c so it does not have to be duplicated between
    v4l2src and v4l2sink

Fixes bug #590280.

15 years agoflvmux: Enable unit test now that it passes
Sebastian Dröge [Tue, 4 Aug 2009 05:07:45 +0000 (07:07 +0200)]
flvmux: Enable unit test now that it passes

15 years agortpqdm2depay,rtpsv3vdepay: Add debugging category.
Edward Hervey [Mon, 3 Aug 2009 19:21:39 +0000 (21:21 +0200)]
rtpqdm2depay,rtpsv3vdepay: Add debugging category.

15 years agortpqdm2depay: Handle gaps in incoming packets.
Edward Hervey [Mon, 3 Aug 2009 19:22:48 +0000 (21:22 +0200)]
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 :)

15 years agortpqdmdepay: Fix CRC calculation and remove commented code.
Edward Hervey [Mon, 3 Aug 2009 17:01:07 +0000 (19:01 +0200)]
rtpqdmdepay: Fix CRC calculation and remove commented code.

15 years agortp: New QDM2 rtp depayloader.
Edward Hervey [Sun, 2 Aug 2009 11:42:12 +0000 (13:42 +0200)]
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).

15 years agortpsv3vdepay: Properly fill codec_data and cleanup code a bite more.
Edward Hervey [Mon, 3 Aug 2009 19:24:44 +0000 (21:24 +0200)]
rtpsv3vdepay: Properly fill codec_data and cleanup code a bite more.

15 years agortpsv3vdepay: Only output buffers once we're configured.
Edward Hervey [Mon, 3 Aug 2009 17:02:17 +0000 (19:02 +0200)]
rtpsv3vdepay: Only output buffers once we're configured.

15 years agortpsv3vdepay: Add more encoding-name variants
Edward Hervey [Mon, 3 Aug 2009 17:02:00 +0000 (19:02 +0200)]
rtpsv3vdepay: Add more encoding-name variants

15 years agoflvmux: Fix unit test to correctly handle request pads
Sebastian Dröge [Mon, 3 Aug 2009 18:08:33 +0000 (20:08 +0200)]
flvmux: Fix unit test to correctly handle request pads

Request pads are removed by the element instance in PAUSED->READY
so we need to re-request pads for every run and link them again.

Last fix for bug #590447.

15 years agoflvmux: Fix writing of the index for < 128 buffers
Sebastian Dröge [Mon, 3 Aug 2009 18:08:00 +0000 (20:08 +0200)]
flvmux: Fix writing of the index for < 128 buffers

Partially fixes bug #590447.

15 years agoflvmux: Fix resetting of the element
Sebastian Dröge [Mon, 3 Aug 2009 18:07:00 +0000 (20:07 +0200)]
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.

15 years agortspsrc: don't add non-utf8 chars to structures
Wim Taymans [Mon, 3 Aug 2009 16:13:46 +0000 (18:13 +0200)]
rtspsrc: don't add non-utf8 chars to structures

15 years agojpegdepay: use attributes for extra properties
Luc Deschenaux [Mon, 3 Aug 2009 16:02:31 +0000 (18:02 +0200)]
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

15 years agoRTP docs: update with attributes in caps
Wim Taymans [Mon, 3 Aug 2009 16:01:27 +0000 (18:01 +0200)]
RTP docs: update with attributes in caps

15 years agortspsrc: put all SDP attributes on caps
Luc Deschenaux [Mon, 3 Aug 2009 15:21:44 +0000 (17:21 +0200)]
rtspsrc: put all SDP attributes on caps

Put the SDP attributes on the caps too so that they can be used by
depayloaders.

See #564437

15 years agopulsesrc: initialize the probe with the server
Jonathan Tellier [Mon, 3 Aug 2009 11:32:12 +0000 (13:32 +0200)]
pulsesrc: initialize the probe with the server

When creating a new probe, pass the server instead of the device string.

fixes #590401