Original commit message from CVS:
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_setup_streams),
(gst_rtspsrc_dup_printf):
Give meaningfull error when all streams failed to configure for some
reason.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Original commit message from CVS:
* gst/rtsp/rtspconnection.c: (rtsp_connection_connect),
(rtsp_connection_free):
Revert previous commit again, since we are frozen (sorry).
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).
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.