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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Mark Nauwelaerts [Mon, 10 Aug 2009 11:30:23 +0000 (13:30 +0200)]
avidemux: push mode; cater for chunk padding
Mark Nauwelaerts [Tue, 4 Aug 2009 17:45:43 +0000 (19:45 +0200)]
avidemux: only use stream's pad after having checked it exists
Mark Nauwelaerts [Tue, 4 Aug 2009 11:38:09 +0000 (13:38 +0200)]
avidemux: sprinkle some more GST_DEBUG_FUNCPTR
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
Mark Nauwelaerts [Tue, 4 Aug 2009 09:39:59 +0000 (11:39 +0200)]
avidemux: fix typo in warning message
Mark Nauwelaerts [Tue, 4 Aug 2009 09:39:39 +0000 (11:39 +0200)]
avidemux: fix some buffer ref handling
Mark Nauwelaerts [Tue, 4 Aug 2009 09:37:16 +0000 (11:37 +0200)]
avidemux: do not exceed maximum number of supported streams
Mark Nauwelaerts [Tue, 4 Aug 2009 09:35:18 +0000 (11:35 +0200)]
avidemux: prevent double unref; gst_avi_demux_parse_avih already unrefs
Mark Nauwelaerts [Tue, 4 Aug 2009 09:32:27 +0000 (11:32 +0200)]
avidemux: verify size of INFO LIST to satisfy subsequent expectations
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.
Mark Nauwelaerts [Tue, 4 Aug 2009 10:16:13 +0000 (12:16 +0200)]
avidemux: streamline stream duration calculation
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://
Edward Hervey [Sun, 9 Aug 2009 07:43:41 +0000 (09:43 +0200)]
raw1394: Remove unneeded variable
Edward Hervey [Sun, 9 Aug 2009 07:43:29 +0000 (09:43 +0200)]
matroska: remove dead assignments
Edward Hervey [Sun, 9 Aug 2009 07:43:00 +0000 (09:43 +0200)]
rtp: Remove dead assignments and resulting unneeded variables.
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.
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.
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
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.
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
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.
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.
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.
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.
Tim-Philipp Müller [Fri, 7 Aug 2009 15:51:45 +0000 (16:51 +0100)]
id3demux: add ID3 v2.3 spec as well
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.
Tim-Philipp Müller [Fri, 7 Aug 2009 15:36:55 +0000 (16:36 +0100)]
id3demux: fix typo in debug message
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.
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.
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.
Tim-Philipp Müller [Thu, 6 Aug 2009 09:20:34 +0000 (10:20 +0100)]
pulsesrc: fix compilation with --disable-gst-debug
Wim Taymans [Mon, 3 Aug 2009 16:59:32 +0000 (18:59 +0200)]
rtph264pay: use array instead of queue
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.
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
Edward Hervey [Tue, 4 Aug 2009 09:17:17 +0000 (11:17 +0200)]
rtpqdm2depay: Fix debug statement.
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.
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.
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.
Sebastian Dröge [Tue, 4 Aug 2009 05:07:45 +0000 (07:07 +0200)]
flvmux: Enable unit test now that it passes
Edward Hervey [Mon, 3 Aug 2009 19:21:39 +0000 (21:21 +0200)]
rtpqdm2depay,rtpsv3vdepay: Add debugging category.
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 :)
Edward Hervey [Mon, 3 Aug 2009 17:01:07 +0000 (19:01 +0200)]
rtpqdmdepay: Fix CRC calculation and remove commented code.
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).
Edward Hervey [Mon, 3 Aug 2009 19:24:44 +0000 (21:24 +0200)]
rtpsv3vdepay: Properly fill codec_data and cleanup code a bite more.
Edward Hervey [Mon, 3 Aug 2009 17:02:17 +0000 (19:02 +0200)]
rtpsv3vdepay: Only output buffers once we're configured.
Edward Hervey [Mon, 3 Aug 2009 17:02:00 +0000 (19:02 +0200)]
rtpsv3vdepay: Add more encoding-name variants
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.
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.
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.
Wim Taymans [Mon, 3 Aug 2009 16:13:46 +0000 (18:13 +0200)]
rtspsrc: don't add non-utf8 chars to structures
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
Wim Taymans [Mon, 3 Aug 2009 16:01:27 +0000 (18:01 +0200)]
RTP docs: update with attributes in 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
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
Tim-Philipp Müller [Sun, 2 Aug 2009 10:44:03 +0000 (11:44 +0100)]
multiudpsink: don't do things with side-effects inside g_return_val_if_fail()
Someone might compile this code with -DG_DISABLE_ASSERT some day.
Tim-Philipp Müller [Sat, 1 Aug 2009 20:39:30 +0000 (21:39 +0100)]
pulsesink: don't do logic within g_assert() statements
Otherwise that code will just be expanded to nothing when compiled
-DG_DISABLE_ASSERT (PS: why is mainloop_start() called in the init
function and not when changing state to READY?)
Tim-Philipp Müller [Sat, 1 Aug 2009 16:07:42 +0000 (17:07 +0100)]
flacdec: send newsegment event when operating push-based and unframed
For some reason flac doesn't call our metadata callback when we operate
in push mode with unframed input, but that's where we set up the
newsegment event (since that's where we'd get the duration from the
stream info header), so we didn't send a newsegment event at all in this
case. Hack around this by storing a generic newsegment event for now
which will be used if we don't replace it with a better one that
includes the duration.
Tim-Philipp Müller [Sat, 1 Aug 2009 15:48:36 +0000 (16:48 +0100)]
flacdec: small cleanups
Remove some callback indirections which are no longer needed because
there's only one decoder object type now. Also remove unused variable.
Tim-Philipp Müller [Sat, 1 Aug 2009 14:22:49 +0000 (15:22 +0100)]
flacdec: use gst_adapter_copy() to avoid unnecessary buffer merges
gst_adapter_peek() will merge buffers as needed, which we can avoid
here since we're doing a memcpy anyway and then flush the copied
data from the adapter right away.
Tim-Philipp Müller [Fri, 31 Jul 2009 23:00:41 +0000 (00:00 +0100)]
flacdec: repair some broken indenting
Tim-Philipp Müller [Sat, 1 Aug 2009 11:19:41 +0000 (12:19 +0100)]
checks: add basic unit test for flvmux, but disable it for now
Basic unit test for flvmux. Fails miserably, hence disabled for now.
Tim-Philipp Müller [Fri, 31 Jul 2009 22:28:12 +0000 (23:28 +0100)]
check: add basic unit test for flvdemux
In particular, test re-use of flvdemux in both pull and push mode
(see #583030).
Tim-Philipp Müller [Fri, 31 Jul 2009 19:25:17 +0000 (20:25 +0100)]
flvmux: fix invalid write caused by using sizeof("string") as length
sizeof("foo") includes the string's NUL-terminator in the size returned,
but we're writing strings here with an explicit size at the beginning
and no NUL-terminator. In most cases using sizeof("foo") as length in
memcpy is not harmful, but it is where the string goes right at the
end of our buffer to write, since we don't allocate space for that
NUL terminator.
Edward Hervey [Mon, 27 Jul 2009 16:44:45 +0000 (18:44 +0200)]
soup: Use "GET" instead of SOUP_METHOD_GET. Fixes build with libsoup-2.7.*
This is due to a quality API change in libsoup 2.7. SOUP_METHOD_* are now
integers and not strings... they could have changed the names.
Stefan Kost [Thu, 30 Jul 2009 14:57:53 +0000 (17:57 +0300)]
jpeg: use longer macro names to not clash with some stupid windows defines
libjpeg headers pull some windows system inlcudes (on windows) that contain a
define for DEFAULT_QUALITY.
Sebastian Dröge [Wed, 29 Jul 2009 12:31:48 +0000 (14:31 +0200)]
avidemux: Fix last commit and improve readability
Руслан Ижбулатов [Fri, 24 Jul 2009 15:04:31 +0000 (19:04 +0400)]
Fixed the fix for TIME->DEFAULT conversion.
Fixes bug #578052 again.
Edward Hervey [Wed, 29 Jul 2009 11:38:03 +0000 (13:38 +0200)]
rtpsv3depay: Fix width/height calculation, bring up to marginal rank.
Based on documentation found on http://wiki.multimedia.cx/
Wim Taymans [Wed, 29 Jul 2009 10:13:20 +0000 (12:13 +0200)]
pulse: conditionally compile newer stuff
configured_sink/source_usec in the timing_info is only since 0.9.11 so
conditionally compile this information.
fixes #590038
Wim Taymans [Tue, 28 Jul 2009 16:29:07 +0000 (18:29 +0200)]
pulsesrc: cleanups
Keep track of the paused state of the source and leave the read function when
paused.
don't wait for a latency update when the delay is not yet known but simply
return 0 instead of blocking.
Keep track of the corked state of the stream.
Fix the state changes.
Wim Taymans [Tue, 28 Jul 2009 14:11:18 +0000 (16:11 +0200)]
pulsesrc: set maxlength always to -1
Wim Taymans [Tue, 28 Jul 2009 13:53:57 +0000 (15:53 +0200)]
pulsesrc; cleanups, report real latency
Add some more debug info
Avoid some type casts
Report the real latency to the application.
Mark Nauwelaerts [Tue, 28 Jul 2009 14:11:36 +0000 (16:11 +0200)]
jpegdec: when scanning for 0xff marker ends, ensure desired result
Otherwise, any non 0xff byte at end of data would be mistaken for
a tag byte, and in case of a frame_len 0 tag subsequently lead to an
infinite loop.
Thiago Santos [Tue, 28 Jul 2009 03:30:43 +0000 (00:30 -0300)]
avimux: adds support to wma
Thiago Santos [Tue, 28 Jul 2009 03:07:15 +0000 (00:07 -0300)]
avimux: adds support to wmv
Thiago Santos [Tue, 28 Jul 2009 00:34:22 +0000 (21:34 -0300)]
qtdemux: Downgrade warning message to debug
Wim Taymans [Mon, 27 Jul 2009 09:51:39 +0000 (11:51 +0200)]
pulsesink: avoid using ivalid stream indexes
when we get an invalid stream index from pulse because we were just starting,
avoid using it for getting and setting the volume.
Fixes #589365
Sebastian Dröge [Fri, 24 Jul 2009 17:38:07 +0000 (19:38 +0200)]
effectv: Don't allow caps changes for some effectv filters
These filters use information from previous frames to
generate the current frame and a caps change will make
the effect start from the beginning again.
Sebastian Dröge [Fri, 24 Jul 2009 17:37:09 +0000 (19:37 +0200)]
warptv: Make the sine table global instead of having it in every instance
Stefan Kost [Fri, 24 Jul 2009 07:47:44 +0000 (10:47 +0300)]
jpeg: make encoder work with libjpeg v7
We have to specify do_fancy_downsampling = FALSE in the encoder with did not exist before.