INTERNET DRAFT M. Ohta draft-ohta-ccc-video-01.txt Tokyo Institute of Technology T. Tsushima T. Tsushima Victor Company of Japan, Limited (JVC) H. FUJIWARA Graphics Communication Laboratories March 1998 Camera Recorder Control Protocol Status of this Memo This document is an Internet-Draft. 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." To view the entire list of current Internet-Drafts, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). This document is also a product of HSI (Home System Interface) WG of the multimedia standardization promotion commitee of Japanese national committee of IEC. Abstract CRCP (Camera Recorder Control Protocol) is designed after FTP to be useful to operate realtime/batch analog/digital video cameras and video/audio recorders over the Internet. The design of CRCP is completely modular. A unit consists of several subunits and CRCP currently specifies units POWER, STREAM, TAPE and CAMERA. However, CRCP allows arbitrary combination of subunits to make it useful to control any home electronics units. 1. Introduction CRCP (Camera Recorder Control Protocol) is a protocol to control audio visual units to send or receive multimedia information over the M. Ohta Expires on September 20, 1998 [Page 1] INTERNET DRAFT Camera Recorder Control Protocol March 1998 Internet. The model of CRCP is that there are a controller (a client) and a unit (a server). The controller issues commands and the unit receives them. Responses are generated by the unit to be reported to the controller. A unit may send or receive data stream to or from other units. The controller does not generate data streams, though a controller and a unit may be collocated in a host. A unit consists of several subunits controlled independently. The unit-subunit model is consistent with a model of IEEE.1394 TA and allows modular control of various home electronics equipments. The primary functions of CRCP are data transfer control, camera control and tape control. Data transfer control is designed after the existing data transfer protocol: FTP [FTP]. The controlled unit may be just a plain file server for non-realtime transfer, a VoD server with a realtime file system, a video camera connected to realtime MPEG encoder, a virtual camera in VRML space or an analog audio tape recorder connected to a PC sound board. Filenames of CRCP may mean UNIX filenames, names of tapes in automatic archive, names of input connectors, or names of TV channels. Even if the unit does not support the notion of file, some dummy filename should be supported. CRCP uses a ASCII text command over TCP control channel. Thus, long-haul control is possible without worrying about fair-share and congestion avoidance algorithms. The default well known TCP port number of the channel is . If the controller, such as infra-red remote controller, has a unidirectional interface, CRCP may also be used over UDP. No reply will be given for UDP control and users are expected to confirm the effect of the control by themselves, which is what we are doing with infra-red remote controllers today. The default well known UDP port number of the channel is . If a host have multiple entities to be controlled by CRCP, different port numbers should be used for the control channels. Control commands and responses are exchanged over the control channel with TELNET style ASCII. Unlike FTP, it is required that server and client must support monitor the control and data connections simultaneously. CRCP assumes a single controller for each unit. The appropriate M. Ohta Expires on September 20, 1998 [Page 2] INTERNET DRAFT Camera Recorder Control Protocol March 1998 interaction mechanisms between multiple controllers vary application by application and should be handled application level coordination entity, from which CRCP should be used to the unit. This assumption does not prohibit multiple controllers control a multiport VoD server independently port by port. Like FTP, a controller may not be collocated on a sender nor a receiver. A single controller may, of course, control several senders and receivers to transmit data between them. CRCP is designed to define a common and simple control interface of camera recorders. CRCP capable controllers or units are not required to support HTTP, HTML nor JAVA. CRCP commands may be issued by a JAVA applet running in an HTML client. 2. Command Syntax Commands of CRCP are ASCII string based and have the following syntax with BNF-like notation (RFC2234 should be followed, here): = ("STAT" / "HELP") [ ] CR LF / [ ] [ ] CR LF = [] = "POWER" / "CONNECTION" / "FILE" / "STREAM" / "TAPE" / "CAMERA" / ... = / = = / = " " / TAB / " " / TAB = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" = / = If field is omitted in , the default is "0". is different by . If M. Ohta Expires on September 20, 1998 [Page 3] INTERNET DRAFT Camera Recorder Control Protocol March 1998 is ommitted in a command line, is considered to be that of FTP [FTP] or its equivalent as described in sections 6.2, 6.3 and 6.4. The detailed syntax of the are different by . 3. Response Syntax The response of CRCP has the same syntax and semantics as FTP [FTP]. Responces are listed in Appendix A. 4. Command and Response Transport Commands and responses of CRCP are usually carried over a TCP connection as ASCII string with a default port number of . If a controller can not receive IP packets or do not want to receive CRCP response, CRCP commands may also be carried over UDP as ASCII string with a default port number of . Response is NOT returned over UDP. In this case, it is a responsibility of a human user or intelligent application to judge the effect of each command. Note that the UDP packets carrying CRCP commands may not be able to reach the unit, or they may reach the unit in an order different from that at the controller. Multiple command lines may be included in a single UDP packets and executed sequentially, unless error condition is encountered. The error may be ignored and command line processing may continue or the error may terminate the processing of the rest of the command lines in the packet. 5. Basic Command The basic command of CRCP is "STAT" and "HELP". The commands MUST be supported by any unit. 5.1 STAT command With no arguments, the command returns a list of available subunits and subunit numbers of the unit. With CRCP, four subunits, "POWER", "STREAM", "TAPE" and "CAMERA" with subunit numbers of 0 are defined. The response to "STAT" command will be: 211-status response M. Ohta Expires on September 20, 1998 [Page 4] INTERNET DRAFT Camera Recorder Control Protocol March 1998 POWER0 CONNECTION0 FILE0 STREAM0 TAPE0 CAMERA0 211 status response The order of subunits in the response is insignificant. The "STAT" command may also be used with an argument of a subunit name and a subunit number. That is, "STATUS CAMERA" and "STATUS TAPE" are the valid form of the STATUS command. There meanings are explained later with the related subunits. 5.2 HELP command HELP command always successes and returns responses useful to human controlling the unit. With an optional subunit argument, HELP response will be on the subunit. Detailed content of the response is outside the scope of protocol issues. The response may be identical to that of STAT. 6. Subunit Commands Subunit commands are different subunit by subunit. 6.1 POWER subunit commands POWER subunit has two subunit commands "ON" and "OFF" corresponding to the functions of unit power on and off. A unit may be able to receive some command even if the unit is powered off. 6.2 CONNECTION subunit commands The following subunit commands of CRCP are for connection management and have exactly the same semantics as FTP. USER NAME PASSWORD ACCOUNT M. Ohta Expires on September 20, 1998 [Page 5] INTERNET DRAFT Camera Recorder Control Protocol March 1998 LOGOUT No further explanation on them is given in this memo. 6.3 FILE subunit commands The following subunit commands of CRCP are for file system management and have exactly the same semantics as FTP. CHANGE WORKING DIRECTORY CHANGE TO PARENT DIRECTORY STRUCTURE MOUNT REINITIALIZE PRINT WORKING DIRECTORY LIST NAMELIST SYSTEM No further explanation on them is given in this memo. 6.4 STREAM subunit commands The following subcommands of STREAM subunit are extension of the corresponding commands of FTP. The detail is explained in section 7. DATA PORT (PORT) PASSIVE (PASV) REPRESENTATION TYPE (TYPE) TRANSFER MODE (MODE) RETRIEVE (RETR) STORE (STOR) ABORT (ABOR) 6.5 TAPE subunit commands M. Ohta Expires on September 20, 1998 [Page 6] INTERNET DRAFT Camera Recorder Control Protocol March 1998 The following commands of CRCP are unique to CCCP to be used for TAPE subunit control explained in section 8. PLAY (PLAY) PAUSE (PAUS) RECORD (RECO) FAST FORWARD (FF) STATUS TAPE (STAT TAPE) 6.6 CAMERA subunit commands The following commands of CRCP are unique to CCCP to be used for CAMERA subunit control explained in section 9. IRIS (IRIS) SENSITIVITY (SENS) ROLL (ROLL) PAN (PAN) TILT (TILT) ZOOM (ZOOM) HORIZONTAL (HORI) VERTICAL (VERT) DEPTH (DEPT) FOCUS (FOCU) WHITE BALANCE (WHIT) STATUS CAMERA (STAT CAMERA) FTP commands not mentioned in this section do not exist in CRCP. 7. Modified FTP Commands DATA PORT (PORT) M. Ohta Expires on September 20, 1998 [Page 7] INTERNET DRAFT Camera Recorder Control Protocol March 1998 PASSIVE (PASV) Unlike FTP, a port number may be one for UDP depending on TRANSFER MODE. A host address may be and SHOULD be represented by a DNS domain name. The address may be a multicast address. REPRESENTATION TYPE (TYPE) The types supported by CRCP are A for ASCII, and I for RTP- encapsulated audio/visual data. An ASCII type may be used only for LIST and NAMELIST commands, and the second format parameter, if any, should be N. The detailed format of Audio/visual data is determined by the second parameter, which is a comma separated list of decimal integers of well known RTP payload types [RFC1890] to be sent or received. TRANSFER MODE (MODE) The modes supported by CRCP are S for Stream (TCP), P for Packet (UDP). Packet mode uses UDP. Packet mode has a space separated second unsigned decimal numeric parameter to indicated the number of MPEG2-TS or RTP payloads included in a single UDP packet. Only a single RTP payload may be included in a UDP packet. In a TCP stream, RTP packets must be preceded by 2 byte bigendian headers containing the length of the next RTP payload. The optional second (for Stream mode) or third (for Packet mode) argument is an ASCII string specifying QoS requirement to be used with RSVP [RSVP]. The format of the string is, . If no QoS is specified, transfer mode is best effort. RETRIEVE (RETR) These command initiate the transfer of data. When QoS is specified with mode, PATH messages are also sent along with the data. Note that, with tape unit, blank image, noise or just silence may be sent unless PLAY command is issued. STORE (STOR) This command initiate the acceptance of data. When QoS is specified with mode, RESV messages are also sent upstream. ABORT (ABOR) This command terminates the acceptance of data. Unlike FTP, no special action is required, because CRCP servers must be able to monitor multiple ports simultaneously. When QoS is specified with mode, PATH or RESV messages are also stopped. M. Ohta Expires on September 20, 1998 [Page 8] INTERNET DRAFT Camera Recorder Control Protocol March 1998 8. Tape Control Commands Tape units, such as audio or video tape recorder or just a file, have a notion of current tape position. Some tape control commands have an argument to specify a tape position. The position is represented in seconds with decimal notation with optional fractional part. The integral part should be between 2147483647 and -2147483648, that is, can be represented by a 32 bit signed integer. When '+' or '-' sign precedes the number, it means a position relative to the current tape position. Arguments are separated by a single space character. The precision and range of the arguments are unit dependent and, sometimes, totally ineffective. PLAY (PLAY) RECORD (REC) Start playing or recording from the current tape position. The optional second signed integer argument represented in decimal notation with optional fractional part may designate the play or record speed (e.g. 1 for normal play speed, -1 for reverse play or record with the normal speed). The optional third argument may designate the position to stop playing or recording. If the stop position is already behind the current tape position (depending on the direction of the movement) at the beginning of the command, the command terminates. PAUSE (PAUS) Stop playing, recording or fast forwarding at the current position. FAST FORWARD (FF) An optional second signed integer argument represented in decimal notation with optional fractional part may designate the forwarding speed (e.g. 5 for fast forward, -5 for rewind). Move the current tape position forward (or backward). An optional third argument may designate the position to stop operation. If the stop position is already behind the current tape position (depending on the direction of the movement) at the beginning of the command, the command terminates. M. Ohta Expires on September 20, 1998 [Page 9] INTERNET DRAFT Camera Recorder Control Protocol March 1998 During the operation, image or sound may or may not be sent out depending on the nature of the unit. STATUS TAPE (STAT TAPE) Will cause multiline response. The first line begins with the name of the command in operation (PAUS if nothing) followed by a decimal integer with optional fractional part to show the current tape position. Other lines begins with the tape control command name supported by the unit. If the command has numeric arguments, two numbers separated by a comma will be returned which designate the minimum and the maximum meaningful value of the corresponding command parameter. Reply code of tape control commands will be "200 Command okay", "501 Syntax error" in parameters or arguments" or "502 Command not implemented". 9. Camera Control Commands Viewing parameters of camera units are controlled by camera control commands. Camera control commands other than CAMERA STATUS have a single argument to specify the view. The argument is usually numeric and is represented with decimal notation with optional fractional part. The integral part should be between 2147483647 and -2147483648, that is, can be represented by a 32 bit signed integer. When '+' or '-' sign precedes the number, it means a value relative to the current value. The argument may be a single character '+' or '-' with no decimal characters, in which case, the view changes some meaningful small amount toward the direction of the sign. The precision and range of the argument is unit dependent and, sometimes, be totally ineffective. The argument may also be a special keyword "AUTO", in which case, the viewing parameter is controlled in a unit dependent manner. The intention is to set the parameter automatically to make the view comfortable. IRIS (IRIS) Controls iris of a camera. Positive direction makes iris more open. M. Ohta Expires on September 20, 1998 [Page 10] INTERNET DRAFT Camera Recorder Control Protocol March 1998 SENSITIVITY (SENS) Controls sensitivity of a (CCD) camera. Positive direction makes image brighter. ROLL (ROLL) Controls roll angle of a camera. Positive direction turns the camera clockwise viewed behind the camera. PAN (PAN) Controls pan angle of a camera. Positive direction makes view move right. TILT (TILT) Controls tilt angle of a camera. Positive direction makes view move up. ZOOM (ZOOM) Controls viewing angle of a camera. Positive direction makes view angle narrower (more zoom). HORIZONTAL (HORI) Moves a camera horizontally. Positive HORIZONTAL movement moves the camera right viewed behind the camera. VERTICAL (VERT) Moves a camera vertically. Positive VERTICAL movement moves the camera to the upward direction.. DEPTH (DEPT) Moves a camera along the viewing direction. Positive DEPTH movement moves the camera forward. FOCUS (FOCU) Controls focal point of a camera. Positive direction makes the focal point farther. WHITE BALANCE (WHIT) Controls white balance of a camera represented as a color M. Ohta Expires on September 20, 1998 [Page 11] INTERNET DRAFT Camera Recorder Control Protocol March 1998 temperature, unit of which is Kelvin. Positive direction makes color temperature higher. STATUS CAMERA (STAT CAMERA) Will cause multiline response. The first line contain some string such as "OK", which is ignored. Other lines begin with the camera control command name supported by the unit followed by three numbers separated by a comma which designates the minimum meaningful, the current and maximum meaningful values of the corresponding viewing parameter. For the non-commutative commands of camera motion control, the order of them in the reply is significant. They are ordered according to the order of application of motions to the camera. For example, if rotations are applied first to the camera and then translation is applied, rotation commands appear before translation commands in the reply of the STATUS CAMERA command, Reply code of camera control commands will be "200 Command okay", "501 Syntax error in parameters or arguments" or "502 Command not implemented". 10. URL The URL for CRCP is identical to that of FTP, except that it start with "cccp" and have a different default port number . The URL is shared both by TCP and UDP control. 11. References [FTP] STD9, RFC959. [RFC1890] RFC1890. 12. Appendix A. List of Responces 13. Security Considerations CRCP is designed after FTP and, with TCP control, is just as secure as FTP. That is, CRCP control connection to servers can be protected by password. As the password-based security is not so secure, it is encouraged to deploy IPSEC security mechanisms, when they become stable enough. An easy, almost configurationless, key exchange mechanism suitable for home electronics use should be developed. M. Ohta Expires on September 20, 1998 [Page 12] INTERNET DRAFT Camera Recorder Control Protocol March 1998 It is also possible to let the reply to USER command contain seeds for one time password, but nothing is specified in this memo, partly because it is a waste of effort to develop CRCP's own security mechanism and partly because it is not useful with one way control through UDP. For UDP-based one way control, synchronized clocks should be used to close the window of the replay attacks. 14. Authors' Addresses Masataka Ohta Computer Center Tokyo Institute of Technology 2-12-1, O-okayama, Meguro-ku Tokyo 152-8550, JAPAN Phone: +81-3-5734-3299 Fax: +81-3-5734-3415 EMail: mohta@necom830.hpcl.titech.ac.jp Takuya Tsushima Video System Development Laboratories Victor Company of Japan, Limited 12, 3-chome, Moriya-cho, Kanagawa-ku, Yokohama, Kanagawa 221, Japan Phone : +81 45 450 2458 Fax : +81 45 450 2469 EMail : tsushima@krhm.jvc-victor.co.jp Hiroshi FUJIWARA Graphics Communication Laboratories 6F Annex Tohshin Bldg, 4-36-19, Yoyogi, Shibuya-ku TOKYO 151, JAPAN Phone: +81 3 5351 0181 Fax: +81 3 5351 0184 EMail: fujiwara@gctech.co.jp M. Ohta Expires on September 20, 1998 [Page 13]