Network Working Group A. Narasimhan Internet-Draft J. Sergent Expires: August 23, 2002 Sun February 22, 2002 MUTE and UNMUTE extension to RTSP draft-sergent-rtsp-mute-00 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http:// www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on August 23, 2002. Copyright Notice Copyright (C) The Internet Society (2002). All Rights Reserved. Abstract RFC 2326 [1] overloads the functionality of the PLAY and PAUSE methods to provide rudimentary support for "muting" individual streams in an (Real Time Streaming Protocol) presentation. The current specification has several inconsistencies. In addition, we believe that this functionality should be optional. This document specifies an extension to RTSP consisting of new MUTE and UNMUTE methods, providing equivalent functionality in a consistent, optional manner. Narasimhan & Sergent Expires August 23, 2002 [Page 1] Internet-Draft MUTE and UNMUTE extension to RTSP February 2002 1. Introduction MUTE and UNMUTE are new optional RTSP methods designed to replace the functionality specified in [1] of doing PAUSE during an aggregate RTSP prsentation. Clients MAY implement these methods to temporarily suppress delivery of one or more streams in an RTSP presentation without affecting delivery of the other streams. Narasimhan & Sergent Expires August 23, 2002 [Page 2] Internet-Draft MUTE and UNMUTE extension to RTSP February 2002 2. Method definitions and examples 2.1 MUTE The MUTE method causes the server to temporarily suspend delivery of the requested stream. The URL must be for a stream which has already been SETUP in the current session. If aggregate control is in use, the client MUST NOT send the presentation URL. The presentation clock and any streams which are still playing are not affected. MUTE is legal in the Ready and Playing states. If the stream was muted and is subsequently PAUSEd or PLAYed, it remains muted. Subsequent PLAY and PAUSE requests MUST NOT implicitly mute or unmute the stream. The Range header may be used to schedule MUTE operations to occur at a particular time. If so used, the header MUST NOT contain a closed range. If the starting time is earlier than the current time, or no Range header was sent, the MUTE acts immediately. If the starting time is later than the current time, the MUTE does not act until that time. If the Range header specifies a time outside the current PLAY request, or a Range header is specified when sending a MUTE in the Ready state, the error "457 Invalid Range" is returned. If a MUTE request is scheduled for future execution, but a subsequent PAUSE request halts stream delivery before the scheduled MUTE point is reached, the server MUST NOT execute the the pending MUTE request. A MUTE request should override any previous MUTE request for the same stream that are currently active or pending. If the stream is being delivered over RTP [2], RTCP reports SHOULD continue to be exchanged while the stream is muted. This allows for synchronization to be maintained once the stream is unmuted so that loosely coupled RTP receivers will behave normally once the stream is unmuted. 2.2 UNMUTE The UNMUTE request causes the server to resume delivery of a stream that has previously been muted using the MUTE request. If aggregate control is in use, the client MUST NOT send the presentation URL. Each stream must be unmuted individually. If a server implements MUTE, it MUST also implement UNMUTE. If the session is in the Playing state, the stream is resumed at the point where it would be had the MUTE request not been sent. If Narasimhan & Sergent Expires August 23, 2002 [Page 3] Internet-Draft MUTE and UNMUTE extension to RTSP February 2002 aggregate control is in use, the stream MUST maintain the same synchronization it previously had with the rest of the streams in the presentation. If the presentation is in the Ready state, the stream is taken out of the muted state and any future PLAY requests will deliver the stream normally. The Range header may be used to schedule UNMUTE operations to occur at a particular time. If so used, the header MUST NOT contain a closed range. If the starting time is earlier than the current time, or no Range header was sent, the UNMUTE acts immediately. If the starting time is later than the current time, the UNMUTE does not act until that time. If the Range header specifies a time outside the current PLAY request, or a Range header is specified when sending a UNMUTE in the Ready state, the error "457 Invalid Range" is returned. If the stream is being delivered over RTP [2], the same RTP session is used after the stream as unmuted as was used before the stream was muted. Sequence numbers MUST continue in sequence (the server does not skip sequence numbers for the packets not delivered due to the MUTE). RTP timestamps must continue with the presentation time (the timestamps for the packets delivered after UNMUTE are the same as they would have been had the stream not been muted). The server SHOULD send an RTP-Info header with the UNMUTE response to inform the client where the unmuted packets begin. Narasimhan & Sergent Expires August 23, 2002 [Page 4] Internet-Draft MUTE and UNMUTE extension to RTSP February 2002 3. Negotiation Several mechanisms are available for clients and servers to negotiate their implementation of this extension. The client may send an OPTIONS request for one of the stream URLs. The server's Allow header will include MUTE and UNMUTE if the server supports them. The client may attempt a MUTE request. If the server implements RTSP properly but does not implement the MUTE extension, it will respond with "501 Not Implemented" but not terminate the session or the connection. The client may use the option tag "mute" in the Require header on a SETUP request. This may be useful if the client intends to use MUTE to switch between one or more streams with different representations of the same data. For example, if the client intends to use MUTE to switch between multiple language tracks, it can send "Require: mute" on all SETUP requests except for the user's current default language. If the server does not support MUTE, SETUP would then fail on the other tracks, and the client could disable the user interface to switch languages. To enable negotiation with the Require as outlined above, all servers implementing this specification MUST support the "mute" option by adding the "Supported: mute" header to any request it receives with "Require: mute". Clients SHOULD NOT fail to operate with servers that do not implement MUTE. Narasimhan & Sergent Expires August 23, 2002 [Page 5] Internet-Draft MUTE and UNMUTE extension to RTSP February 2002 References [1] Schulzrinne, H., Rao, A. and R. Lanphier, "Real Time Streaming Protocol (RTSP)", RFC 2326, April 1998. [2] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", RFC 1889, January 1996. Authors' Addresses Aravind Narasimhan Sun Microsystems, Inc. 901 San Antonio Road M/S UMPK15-215 Palo Alto, CA 94303 US Phone: +1 212 558 2494 EMail: Aravind.Narasimhan@Sun.COM Jonathan Sergent Sun Microsystems, Inc. 901 San Antonio Road M/S UMPK15-215 Palo Alto, CA 94303 US Phone: +1 650 352 6495 EMail: Jonathan.Sergent@Sun.COM Narasimhan & Sergent Expires August 23, 2002 [Page 6] Internet-Draft MUTE and UNMUTE extension to RTSP February 2002 Appendix A. Open issues 1. Should acknowledge RTSP telecon participants. 2. Needs examples. 3. Needs security considerations section. 4. Needs a definition of terms. 5. This doesn't work with multiple queued play requests. There has been some doubt as to whether there are interoperating implementations of queued play, so it may be removed from RTSP. If queued play is not removed from RTSP, this specification will need to support it. Narasimhan & Sergent Expires August 23, 2002 [Page 7] Internet-Draft MUTE and UNMUTE extension to RTSP February 2002 Full Copyright Statement Copyright (C) The Internet Society (2002). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society. Narasimhan & Sergent Expires August 23, 2002 [Page 8]