summaryrefslogtreecommitdiffstats
path: root/gst/rtsp
Commit message (Collapse)AuthorAgeFilesLines
...
* gst/rtsp/gstrtspsrc.c: Use new basesink async property to make sparse RTCP ↵Wim Taymans2007-08-291-0/+2
| | | | | | | | | | packet not wait for preroll. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_stream_configure_udp_sink), (gst_rtspsrc_dup_printf): Use new basesink async property to make sparse RTCP packet not wait for preroll.
* gst/rtsp/gstrtspsrc.c: Make sure we generate and parse floating point values ↵Wim Taymans2007-08-231-5/+38
| | | | | | | | | | in the POSIX locale instead of the curre... Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_dup_printf), (gst_rtspsrc_get_float), (gst_rtspsrc_play): Make sure we generate and parse floating point values in the POSIX locale instead of the current locale.
* gst/rtsp/gstrtspsrc.*: Fix method detection again.Wim Taymans2007-08-222-22/+64
| | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_do_seek), (gst_rtspsrc_parse_methods), (gst_rtspsrc_open), (gst_rtspsrc_play): * gst/rtsp/gstrtspsrc.h: Fix method detection again. Keep track of when we must send a Range header. Use segment values for Range, Speed and Scale headers. Parse Speed and Scale headers to update the segment values.
* gst/rtsp/gstrtspsrc.c: Refactor the udp and interleaved loop function a bit.Wim Taymans2007-08-181-84/+48
| | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_loop_udp), (gst_rtspsrc_loop_send_cmd), (gst_rtspsrc_loop): Refactor the udp and interleaved loop function a bit.
* gst/rtsp/gstrtspsrc.*: Protect connection activity with a new lock, avoids ↵Wim Taymans2007-08-172-27/+72
| | | | | | | | | | | | | | | deadlocks when going to PAUSED. Fixes #455... Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_init), (gst_rtspsrc_finalize), (gst_rtspsrc_connection_send), (gst_rtspsrc_connection_receive), (gst_rtspsrc_sink_chain), (gst_rtspsrc_handle_request), (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_loop_udp), (gst_rtspsrc_try_send), (gst_rtspsrc_pause): * gst/rtsp/gstrtspsrc.h: Protect connection activity with a new lock, avoids deadlocks when going to PAUSED. Fixes #455808.
* gst/rtsp/gstrtspsrc.c: Fix stray %u in debug line as spotted by Saur on IRC.Wim Taymans2007-08-171-1/+1
| | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_do_stream_eos): Fix stray %u in debug line as spotted by Saur on IRC.
* gst/rtsp/gstrtspsrc.*: Improve timeout handling.Wim Taymans2007-08-172-75/+189
| | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_set_property), (gst_rtspsrc_flush), (gst_rtspsrc_sink_chain), (gst_rtspsrc_stream_configure_udp_sink), (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_loop_udp), (gst_rtspsrc_loop_send_cmd), (gst_rtspsrc_try_send), (gst_rtspsrc_send), (gst_rtspsrc_parse_methods), (gst_rtspsrc_parse_range), (gst_rtspsrc_open), (gst_rtspsrc_close), (gst_rtspsrc_pause), (gst_rtspsrc_handle_message), (gst_rtspsrc_change_state): * gst/rtsp/gstrtspsrc.h: Improve timeout handling. Use the same socket for sending and receiving RTCP packets so that some servers can track clients better. Improve connection closed handling. Try to reconnect. Don't overwrite our content base with NULL. Improve debugging. Improve range parsing and handling. Remove flushing hack now that core does the right thing.
* gst/rtsp/gstrtpdec.*: Add (dummy) SSRC management signals.Wim Taymans2007-08-164-58/+273
| | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtpdec.c: (gst_rtp_dec_marshal_VOID__UINT_UINT), (gst_rtp_dec_class_init): * gst/rtsp/gstrtpdec.h: Add (dummy) SSRC management signals. * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_class_init), (gst_rtspsrc_set_property), (gst_rtspsrc_get_property), (find_stream), (gst_rtspsrc_create_stream), (new_session_pad), (request_pt_map), (gst_rtspsrc_do_stream_eos), (on_bye_ssrc), (on_timeout), (gst_rtspsrc_stream_configure_manager), (gst_rtspsrc_stream_push_event), (gst_rtspsrc_push_event), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_parse_rtpinfo), (gst_rtspsrc_handle_message), (gst_rtspsrc_change_state): * gst/rtsp/gstrtspsrc.h: Add connection-speed property. Add find_stream helper functions. Handle stream EOS based on BYE messages or SSRC timeout. Returns SUCCESS from the state change function as we hide our async elements from the parent.
* gst/rtsp/gstrtspsrc.c: Fix default clock-rate for realmedia.Wim Taymans2007-08-031-5/+14
| | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (get_default_rate_for_pt), (gst_rtspsrc_parse_rtpmap), (gst_rtspsrc_media_to_caps), (gst_rtspsrc_stream_configure_tcp), (gst_rtspsrc_stream_configure_udp_sink): Fix default clock-rate for realmedia. Fix parsing of transport. Don't try to link NULL pads.
* gst/rtsp/gstrtspsrc.c: If we don't hav a session manager, set the caps on ↵Wim Taymans2007-07-271-2/+23
| | | | | | | | | | | | | | | outgoing buffers ourselves. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_activate_streams), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_parse_methods), (gst_rtspsrc_create_transports_string), (gst_rtspsrc_prepare_transports): If we don't hav a session manager, set the caps on outgoing buffers ourselves. Force PAUSE/PLAY methods for now until the extensions can overwrite. Append final bit of the transport string even when it does not contain a placeholder.
* gst/rtsp/: Clean up the interface list.Wim Taymans2007-07-273-29/+47
| | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspext.c: (gst_rtsp_ext_list_free), (gst_rtsp_ext_list_connect): * gst/rtsp/gstrtspext.h: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_init), (gst_rtspsrc_finalize), (gst_rtspsrc_send_cb): Clean up the interface list. Allow connecting to interface signals for the extensions. Remove old extension code. Free list on cleanup. Allow extensions to send additional RTSP messages.
* gst/rtsp/gstrtspext.h: Fix include path for extension interface.Wim Taymans2007-07-271-1/+1
| | | | | | Original commit message from CVS: * gst/rtsp/gstrtspext.h: Fix include path for extension interface.
* gst/rtsp/: Use rank to filter out extensions.Wim Taymans2007-07-263-4/+10
| | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspext.c: (gst_rtsp_ext_list_filter), (gst_rtsp_ext_list_stream_select): * gst/rtsp/gstrtspext.h: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_setup_streams): Use rank to filter out extensions. Add url to stream_select interface call.
* gst/rtsp/: Use shiny new RTSP and SDP library.Wim Taymans2007-07-2526-5848/+600
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/Makefile.am: * gst/rtsp/base64.c: * gst/rtsp/base64.h: * gst/rtsp/gstrtspext.c: (gst_rtsp_ext_list_filter), (gst_rtsp_ext_list_init), (gst_rtsp_ext_list_get), (gst_rtsp_ext_list_detect_server), (gst_rtsp_ext_list_before_send), (gst_rtsp_ext_list_after_send), (gst_rtsp_ext_list_parse_sdp), (gst_rtsp_ext_list_setup_media), (gst_rtsp_ext_list_configure_stream), (gst_rtsp_ext_list_get_transports), (gst_rtsp_ext_list_stream_select): * gst/rtsp/gstrtspext.h: * gst/rtsp/gstrtspsrc.c: (gst_rtsp_lower_trans_get_type), (gst_rtspsrc_class_init), (gst_rtspsrc_init), (gst_rtspsrc_finalize), (gst_rtspsrc_create_stream), (gst_rtspsrc_parse_rtpmap), (gst_rtspsrc_media_to_caps), (gst_rtspsrc_flush), (gst_rtspsrc_do_seek), (gst_rtspsrc_sink_chain), (gst_rtspsrc_stream_configure_manager), (gst_rtspsrc_stream_configure_tcp), (gst_rtspsrc_stream_configure_mcast), (gst_rtspsrc_stream_configure_udp), (gst_rtspsrc_stream_configure_udp_sink), (gst_rtspsrc_stream_configure_transport), (gst_rtspsrc_handle_request), (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_loop_udp), (gst_rtspsrc_loop_send_cmd), (gst_rtsp_auth_method_to_string), (gst_rtspsrc_parse_auth_hdr), (gst_rtspsrc_setup_auth), (gst_rtspsrc_try_send), (gst_rtspsrc_send), (gst_rtspsrc_parse_methods), (gst_rtspsrc_create_transports_string), (gst_rtspsrc_prepare_transports), (gst_rtspsrc_setup_streams), (gst_rtspsrc_parse_range), (gst_rtspsrc_open), (gst_rtspsrc_close), (gst_rtspsrc_play), (gst_rtspsrc_pause), (gst_rtspsrc_change_state), (gst_rtspsrc_uri_set_uri): * gst/rtsp/gstrtspsrc.h: * gst/rtsp/rtsp.h: * gst/rtsp/rtspconnection.c: * gst/rtsp/rtspconnection.h: * gst/rtsp/rtspdefs.c: * gst/rtsp/rtspdefs.h: * gst/rtsp/rtspext.h: * gst/rtsp/rtspextwms.c: * gst/rtsp/rtspextwms.h: * gst/rtsp/rtspmessage.c: * gst/rtsp/rtspmessage.h: * gst/rtsp/rtsprange.c: * gst/rtsp/rtsprange.h: * gst/rtsp/rtsptransport.c: * gst/rtsp/rtsptransport.h: * gst/rtsp/rtspurl.c: * gst/rtsp/rtspurl.h: * gst/rtsp/sdp.h: * gst/rtsp/sdpmessage.c: * gst/rtsp/sdpmessage.h: * gst/rtsp/test.c: Use shiny new RTSP and SDP library. Implement RTSP extensions using the new interface. Remove a lot of old code.
* gst/rtsp/gstrtspsrc.c: Cast stack args to the proper types. Fixes #451249.Wim Taymans2007-06-271-4/+4
| | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_configure_caps): Cast stack args to the proper types. Fixes #451249.
* gst/rtsp/gstrtspsrc.*: For container formats we only need to activate one of ↵Wim Taymans2007-06-272-1/+6
| | | | | | | | | | | the streams so that we correctly signal ... Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_create_stream), (new_session_pad), (gst_rtspsrc_setup_streams): * gst/rtsp/gstrtspsrc.h: For container formats we only need to activate one of the streams so that we correctly signal no-more-pads. Fixes #451015.
* gst/rtsp/rtspconnection.c: Use threadsafe inet_ntop to convert an ip number ↵Wim Taymans2007-06-191-6/+12
| | | | | | | | | | | | to a string. Original commit message from CVS: * gst/rtsp/rtspconnection.c: (rtsp_connection_connect), (rtsp_connection_close), (rtsp_connection_free): Use threadsafe inet_ntop to convert an ip number to a string. Fixes #447961. Don't leak fd (and ip) when freeing a connection without first closing it.
* gst/rtsp/rtspconnection.c: Revert previous commit again, since we are frozen ↵Tim-Philipp Müller2007-06-171-2/+1
| | | | | | | | | (sorry). Original commit message from CVS: * gst/rtsp/rtspconnection.c: (rtsp_connection_connect), (rtsp_connection_free): Revert previous commit again, since we are frozen (sorry).
* gst/rtsp/rtspconnection.c: inet_ntoa() uses a static buffer internally, so ↵Peter Kjellerstedt2007-06-171-1/+2
| | | | | | | | | | | we need to copy the returned string if we ... Original commit message from CVS: Patch by: Peter Kjellerstedt <pkj at axis com> * gst/rtsp/rtspconnection.c: (rtsp_connection_connect), (rtsp_connection_free): inet_ntoa() uses a static buffer internally, so we need to copy the returned string if we want to store it for later (#447961).
* gst/rtsp/rtspconnection.c: Fix the MingW build.Vincent Torri2007-06-151-0/+16
| | | | | | | | | Original commit message from CVS: * gst/rtsp/rtspconnection.c: (rtsp_connection_create), (rtsp_connection_connect): Fix the MingW build. Patch By: Vincent Torri <vtorri at univ-evry dot fr> Fixes: #446981
* gst/rtsp/rtspconnection.c: Add include to make buildbot happy.Wim Taymans2007-06-011-0/+2
| | | | | | Original commit message from CVS: * gst/rtsp/rtspconnection.c: Add include to make buildbot happy.
* gst/rtsp/: Improves version checking, allowing an RTSP server to reply with "505Peter Kjellerstedt2007-06-015-65/+116
| | | | | | | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: Patch by: Peter Kjellerstedt <pkj at axis com> * gst/rtsp/rtspconnection.c: (rtsp_connection_create), (rtsp_connection_connect), (add_date_header), (rtsp_connection_send), (parse_response_status), (parse_request_line), (parse_line), (rtsp_connection_receive): * gst/rtsp/rtspdefs.c: (rtsp_version_as_text): * gst/rtsp/rtspdefs.h: * gst/rtsp/rtspmessage.c: (key_value_foreach), (rtsp_message_init_request), (rtsp_message_init_response), (rtsp_message_remove_header), (rtsp_message_append_headers), (rtsp_message_dump): * gst/rtsp/rtspmessage.h: Improves version checking, allowing an RTSP server to reply with "505 RTSP Version not supported. Adds a Date header to all messages. Replies with RTSP_EPARSE rather than RTSP_EINVALID in cases where we want to be able to send a response even if something in the request was invalid. EINVAL is only used when passing wrong arguments to functions. Do not handle an invalid method in parse_request_line(). Defer this to the caller so it can respond with "405 Method Not Allowed". Improves parsing of the timeout parameter to the Session header, allowing whitespace after the semicolon. Avoids a compiler warning due to variables shadowing a function argument.
* gst/rtsp/rtspextwms.c: Fix compile warning when debug is disabled as spotted ↵Wim Taymans2007-05-311-1/+3
| | | | | | | | bu Saur on IRC. Original commit message from CVS: * gst/rtsp/rtspextwms.c: (rtsp_ext_wms_configure_stream): Fix compile warning when debug is disabled as spotted bu Saur on IRC.
* gst/rtsp/rtsptransport.c: Use renamed RTP bin.Wim Taymans2007-05-281-1/+1
| | | | | | Original commit message from CVS: * gst/rtsp/rtsptransport.c: Use renamed RTP bin.
* gst/rtsp/gstrtspsrc.c: Init value to avoid infinte loops.Wim Taymans2007-05-241-1/+2
| | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_parse_methods): Init value to avoid infinte loops.
* gst/rtsp/: Fix for new API.Peter Kjellerstedt2007-05-245-113/+167
| | | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: Patch by: Peter Kjellerstedt <pkj at axis com> * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_setup_auth), (gst_rtspsrc_try_send), (gst_rtspsrc_parse_methods), (gst_rtspsrc_setup_streams), (gst_rtspsrc_open), (gst_rtspsrc_play): (rtsp_connection_send), (rtsp_connection_receive): * gst/rtsp/rtspextwms.c: (rtsp_ext_wms_after_send): Fix for new API. * gst/rtsp/rtspconnection.c: (add_auth_header), Only add authorisation and session headers when sending messages. * gst/rtsp/rtspmessage.c: (key_value_foreach), (rtsp_message_init), (rtsp_message_init_request), (rtsp_message_init_response), (rtsp_message_unset), (rtsp_message_add_header), (rtsp_message_remove_header), (rtsp_message_get_header), (rtsp_message_append_headers), (dump_key_value), (rtsp_message_dump): * gst/rtsp/rtspmessage.h: Add support for multiple headers of the same type by storing the parsed headers in a GArray instaed of a hashtable.
* gst/rtsp/gstrtpdec.*: Added signal for backwards compat.Wim Taymans2007-05-212-0/+8
| | | | | | | Original commit message from CVS: * gst/rtsp/gstrtpdec.c: (gst_rtp_dec_class_init): * gst/rtsp/gstrtpdec.h: Added signal for backwards compat.
* gst/rtsp/gstrtspsrc.c: Printf format fix.Tim-Philipp Müller2007-05-201-1/+1
| | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop_udp): Printf format fix.
* gst/rtsp/gstrtspsrc.c: Don't crash when an unsupported transport error was ↵Wim Taymans2007-05-181-4/+15
| | | | | | | | | returned by the server, just try to config... Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_setup_streams): Don't crash when an unsupported transport error was returned by the server, just try to configure the next stream. Fixes #439255.
* gst/rtsp/gstrtspsrc.*: Add TCP timeout property and use it for all TCP ↵Wim Taymans2007-05-183-13/+147
| | | | | | | | | | | | | | | | | connection. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_class_init), (gst_rtspsrc_set_property), (gst_rtspsrc_get_property), (gst_rtspsrc_stream_configure_udp), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_loop_udp), (gst_rtspsrc_try_send), (gst_rtspsrc_send), (gst_rtspsrc_setup_streams), (gst_rtspsrc_open): * gst/rtsp/gstrtspsrc.h: Add TCP timeout property and use it for all TCP connection. * gst/rtsp/rtspconnection.c: (rtsp_connection_connect), (rtsp_connection_write), (rtsp_connection_next_timeout), (rtsp_connection_reset_timeout): Make connect and writes cancelable and make them use the timeout.
* gst/rtsp/gstrtspsrc.c: Refactor timeout handling.Wim Taymans2007-05-183-63/+130
| | | | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_loop_udp), (gst_rtspsrc_try_send), (gst_rtspsrc_send), (gst_rtspsrc_setup_streams): Refactor timeout handling. Also send keep-alive when dealing with TCP transport. * gst/rtsp/rtspconnection.c: (rtsp_connection_create), (rtsp_connection_free), (rtsp_connection_next_timeout), (rtsp_connection_reset_timeout): * gst/rtsp/rtspconnection.h: Use a timer to handle the session timeouts, add some methods to deal with timeouts.
* gst/rtsp/gstrtspsrc.c: Ignore streams that fail the setup command, we will ↵Wim Taymans2007-05-172-3/+17
| | | | | | | | | | | | | retry with a different transport later on. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send), (gst_rtspsrc_setup_streams): Ignore streams that fail the setup command, we will retry with a different transport later on. * gst/rtsp/rtspextwms.c: (rtsp_ext_wms_parse_sdp), (rtsp_ext_wms_configure_stream): Fix encoding name case.
* gst/rtsp/gstrtspsrc.c: When we try to execute a method that is not supported ↵Wim Taymans2007-05-141-1/+15
| | | | | | | | | | by the server, don't error out but remov... Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send): When we try to execute a method that is not supported by the server, don't error out but remove the method from the accepted methods so that we never try to perform this method again.
* gst/rtsp/gstrtspsrc.c: Parse range correctly.Wim Taymans2007-05-142-6/+21
| | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_parse_range): Parse range correctly. * gst/rtsp/rtspurl.c: (rtsp_url_get_request_uri): The baseurl now always has a '/' at the start.
* gst/rtsp/gstrtspsrc.c: Factor out caps configuration and configure more ↵Wim Taymans2007-05-142-40/+74
| | | | | | | | | | | | | stuff such as the time ranges and speed/scale... Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_configure_caps), (gst_rtspsrc_parse_range), (gst_rtspsrc_open), (gst_rtspsrc_parse_rtpinfo), (gst_rtspsrc_play): Factor out caps configuration and configure more stuff such as the time ranges and speed/scale values. * gst/rtsp/rtsptransport.c: Add Copyright after non-trival fixes.
* gst/rtsp/: Make channel guint8 where possible.Peter Kjellerstedt2007-05-127-9/+12
| | | | | | | | | | | | | | | | | | | Original commit message from CVS: Patch by: Peter Kjellerstedt <pkj at axis com> * gst/rtsp/gstrtspsrc.h: * gst/rtsp/rtspconnection.c: (rtsp_connection_receive): * gst/rtsp/rtspmessage.c: (rtsp_message_init_data), (rtsp_message_get_header): * gst/rtsp/rtspmessage.h: Make channel guint8 where possible. Make rtsp_message_init_data() take the channel as a guint8. * gst/rtsp/rtspdefs.c: Fixed a typo: Timout -> Timeout * gst/rtsp/rtspdefs.h: Make RTSP_CHECK() behave as a statement. * gst/rtsp/sdpmessage.c: Avoid a compiler warning in INIT_ARRAY(). Fixes #437692.
* gst/rtsp/rtspurl.*: Add support for query parameters to RTSP URLs.Peter Kjellerstedt2007-05-122-21/+37
| | | | | | | | | Original commit message from CVS: Patch by: Peter Kjellerstedt <pkj at axis com> * gst/rtsp/rtspurl.c: (rtsp_url_parse), (rtsp_url_free), (rtsp_url_get_request_uri): * gst/rtsp/rtspurl.h: Add support for query parameters to RTSP URLs.
* gst/rtsp/rtsptransport.*: Add validation to rtsp_transport_parse().Peter Kjellerstedt2007-05-122-38/+364
| | | | | | | | | | | | | | | | | | Original commit message from CVS: Patch by: Peter Kjellerstedt <pkj at axis com> * gst/rtsp/rtsptransport.c: (rtsp_transport_init), (parse_mode), (parse_range), (range_as_text), (rtsp_transport_mode_as_text), (rtsp_transport_profile_as_text), (rtsp_transport_ltrans_as_text), (rtsp_transport_parse), (rtsp_transport_as_text): * gst/rtsp/rtsptransport.h: Add validation to rtsp_transport_parse(). Add rtsp_transport_as_text() to generate an RTSP header from an RTSPTransport. Change ssrc to guint (was a string) since that is what it is, even though it is sent as a hex string. Correctly identify PLAY|RECORD mode parameters (the syntax in the RFC is incorrect, which can be seen when looking at the examples in the RFC). Fixes #437670.
* gst/rtsp/: Preliminary seek support.Wim Taymans2007-05-113-16/+218
| | | | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_flush), (gst_rtspsrc_do_seek), (gst_rtspsrc_perform_seek), (gst_rtspsrc_handle_src_event), (gst_rtspsrc_stream_configure_manager), (gst_rtspsrc_stream_configure_tcp), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_open), (gst_rtspsrc_parse_rtpinfo), (gst_rtspsrc_play): * gst/rtsp/gstrtspsrc.h: * gst/rtsp/rtspdefs.h: Preliminary seek support. Activate internal pads so that we can receive events on them. Don't try to parse a range string when it's NULL.
* gst/rtsp/rtsptransport.c: UDP MCAST is actually the default for RTP/AVP.Wim Taymans2007-05-111-1/+1
| | | | | | Original commit message from CVS: * gst/rtsp/rtsptransport.c: UDP MCAST is actually the default for RTP/AVP.
* gst/rtsp/rtsptransport.c: Make UDP the default transport when not specified.Wim Taymans2007-05-111-1/+1
| | | | | | Original commit message from CVS: * gst/rtsp/rtsptransport.c: Make UDP the default transport when not specified.
* gst/rtsp/: Add code to parse time ranges.Wim Taymans2007-05-094-3/+302
| | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/Makefile.am: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_handle_src_query), (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_open): * gst/rtsp/rtsprange.c: (parse_npt_time), (parse_npt_range), (parse_clock_range), (parse_smpte_range), (rtsp_range_parse), (rtsp_range_free): * gst/rtsp/rtsprange.h: Add code to parse time ranges. Report DURATION on the stream when possible.
* gst/rtsp/gstrtspsrc.c: Let more error state trickle down so that we can ↵Wim Taymans2007-05-041-22/+41
| | | | | | | | | | | | | | | | catch more error cases. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_loop_udp), (gst_rtspsrc_try_send), (gst_rtspsrc_send), (gst_rtspsrc_setup_streams), (gst_rtspsrc_open), (gst_rtspsrc_close), (gst_rtspsrc_play), (gst_rtspsrc_pause), (gst_rtspsrc_change_state): Let more error state trickle down so that we can catch more error cases. Handle keep-alive a little smarter by selecting a method the server actually supports. Fix a race in UDP streaming shutdown.
* gst/rtsp/gstrtspsrc.c: Ignore errors when trying to use the keep-alive messages.Wim Taymans2007-05-041-1/+3
| | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send_keep_alive): Ignore errors when trying to use the keep-alive messages.
* gst/rtsp/gstrtspsrc.c: Send RTCP messages back to the server over the TCP ↵Wim Taymans2007-05-043-59/+167
| | | | | | | | | | | | | | | | | | | | | connection. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_handle_src_event), (gst_rtspsrc_handle_src_query), (gst_rtspsrc_sink_chain), (gst_rtspsrc_stream_configure_manager), (gst_rtspsrc_stream_free_udp), (gst_rtspsrc_stream_configure_tcp), (gst_rtspsrc_stream_configure_mcast), (gst_rtspsrc_stream_configure_udp), (gst_rtspsrc_stream_configure_udp_sink), (gst_rtspsrc_stream_configure_transport): Send RTCP messages back to the server over the TCP connection. * gst/rtsp/rtspconnection.c: (rtsp_connection_write), (rtsp_connection_send), (rtsp_connection_read), (read_body), (rtsp_connection_receive): * gst/rtsp/rtspconnection.h: Factor out and expose lowlevel _write and _read methods. Implement sending data messages to the server.
* gst/rtsp/gstrtspsrc.c: Refactor transport configuration code.Wim Taymans2007-05-031-220/+416
| | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_finalize), (gst_rtspsrc_alloc_udp_ports), (gst_rtspsrc_handle_src_event), (gst_rtspsrc_handle_src_query), (gst_rtspsrc_stream_configure_manager), (gst_rtspsrc_stream_free_udp), (gst_rtspsrc_stream_configure_tcp), (gst_rtspsrc_stream_configure_mcast), (gst_rtspsrc_stream_configure_udp), (gst_rtspsrc_stream_configure_udp_sink), (gst_rtspsrc_stream_configure_transport), (gst_rtspsrc_push_event), (gst_rtspsrc_loop_udp), (gst_rtspsrc_open), (gst_rtspsrc_parse_rtpinfo), (gst_rtspsrc_play), (gst_rtspsrc_pause): Refactor transport configuration code. Create internal pads for TCP transport so that we can implement events and queries. Handle events and queries. Parse range from the SDP. Fix race in pause handler where the connection could still be flushing.
* gst/rtsp/gstrtspsrc.*: Fix race when multiple udp sources post timeouts, ↵Wim Taymans2007-05-023-102/+163
| | | | | | | | | | | | | | | | | | | | | just act on the first received timeout. Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_init), (gst_rtspsrc_finalize), (new_session_pad), (request_pt_map), (gst_rtspsrc_loop_send_cmd), (gst_rtspsrc_try_send), (gst_rtspsrc_send), (gst_rtspsrc_async_open), (gst_rtspsrc_close), (gst_rtspsrc_play), (gst_rtspsrc_handle_message), (gst_rtspsrc_change_state): * gst/rtsp/gstrtspsrc.h: Fix race when multiple udp sources post timeouts, just act on the first received timeout. Protect stream list with a recursive lock to fix some races. Flush connection when we need to do a reconnect or stop. Make state lock recursive. * gst/rtsp/rtspconnection.c: (rtsp_connection_connect), (rtsp_connection_close): Some small cleanups.
* gst/rtsp/test.c: Fix compilation of deprecated test just because I'm too ↵Wim Taymans2007-05-021-8/+8
| | | | | | | | | lazy to delete it. Original commit message from CVS: * gst/rtsp/test.c: (main): Fix compilation of deprecated test just because I'm too lazy to delete it.
* gst/rtsp/gstrtspsrc.*: Fix sending RTCP to the right place.Wim Taymans2007-05-027-99/+289
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_init), (gst_rtspsrc_finalize), (gst_rtspsrc_stream_configure_transport), (gst_rtspsrc_handle_request), (gst_rtspsrc_loop_interleaved), (gst_rtspsrc_send_keep_alive), (gst_rtspsrc_loop_udp), (gst_rtspsrc_loop_send_cmd), (gst_rtspsrc_try_send), (gst_rtspsrc_open), (gst_rtspsrc_handle_message): * gst/rtsp/gstrtspsrc.h: Fix sending RTCP to the right place. Fix bug in reffing the wrong UDP element. Use new pad names for the session manager. Implement handling server requests in interleaved and UDP modes. Handle session keep-alive in UDP modes. Remove GCond for handling UDP timeouts. * gst/rtsp/rtspconnection.c: (rtsp_connection_connect), (rtsp_connection_send), (rtsp_connection_read), (read_body), (rtsp_connection_receive), (rtsp_connection_close): * gst/rtsp/rtspconnection.h: Store connection IP address for later. Add timeout args to all operations that might block forever. Parse session timeout. Only close sockets when not already closed. * gst/rtsp/rtspdefs.c: * gst/rtsp/rtspdefs.h: Add timeout return value and error string. * gst/rtsp/rtspmessage.c: (rtsp_message_init_response): Add small comment.
* gst/udp/gstmultiudpsink.c: Add code to drop membership of a multicast group.Wim Taymans2007-04-291-5/+22
| | | | | | | | | | | | | | Original commit message from CVS: * gst/udp/gstmultiudpsink.c: (leave_multicast), (gst_multiudpsink_add), (gst_multiudpsink_remove): Add code to drop membership of a multicast group. * gst/udp/gstudpsink.c: (gst_udpsink_update_uri), (gst_udpsink_set_uri): Implement URI handler. * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_stream_configure_transport), (gst_rtspsrc_parse_rtpinfo): Use URI handler to make udpsink instace. Improve code to configure port and destination.