summaryrefslogtreecommitdiff
path: root/PROTOCOL
diff options
context:
space:
mode:
Diffstat (limited to 'PROTOCOL')
-rw-r--r--PROTOCOL139
1 files changed, 139 insertions, 0 deletions
diff --git a/PROTOCOL b/PROTOCOL
new file mode 100644
index 0000000..a0c999e
--- /dev/null
+++ b/PROTOCOL
@@ -0,0 +1,139 @@
+Written by: Sascha Volkenandt <sascha@akv-soft.de>
+
+Project's homepage: http://www.magoa.net/linux/
+
+Version: 0.0.3
+
+Description:
+------------
+
+I call this protocol "VTP", the Video Transfer Protocol. I hope that's not
+already claimed by someone ;).
+
+This Protocol was created for Video Transfers over a Network. It is a text-
+based protocol like the FTP, and is used by a client to communicate with a
+server providing different types of video data, such as live streams,
+recordings or disc media. The basic communication consists of short text
+commands sent by the client, answered by numerical codes accompanied by
+human-readable messages. All messages should be finished by a full CR/LF
+line-ending, which should preferably written as "\015\012", as this is fully
+platform-independent. Nevertheless, a client or (especially) a server should
+also act on "\n" line-endings. The MPEG data is being transmitted over a
+separate data connection.
+
+TODO:
+- PORT behaviour changed
+- TUNE syntax changed
+- connection IDs
+- new command PLAY
+
+
+Response Code Summary
+
+Code Meaning
+220 Last command ok / connection ready
+221 Service is closing the connection afterwards
+500 The command was not recognized
+501 The parameters couldn't be interpreted correctly
+550 Action not taken, for various reason
+551 Action not taken, a subsequent connection was unsuccessful
+560 Live-Stream not available currently [changed in 0.0.3]
+561 Capability not known [new in 0.0.2]
+562 Pid currently not available [new in 0.0.3]
+563 Stream not available currently [new in 0.0.3]
+
+
+Command Reference
+
+Command: Connect to VTP Server
+Responses: 220 - The server is ready
+Description: Upon connection to the server (which usually listens at port
+ 2004), the first thing the client has to expect is a welcome message with
+ the "220" response code. The client may now send a CAPS command, to tell
+ the server it's capabilities.
+
+Command: CAPS <Capability>
+Responses: 220 - This capability is known and will be used from now on.
+ 561 - This capability is unknown, try anotherone
+Description: This command tells the server to serve media data in a specific
+ format, like "PES" (for MPEG2-PES) or "TS" (for MPEG2-TS). A client can
+ do several CAPS commands until the server accepts one. So a client should
+ try all formats it can handle, descending from the most preffered one. If
+ no such command is sent, streaming is defaulted to PES.
+ Capabilities currently used:
+ TS Transport Stream (all PIDs belonging to a channel)
+ TSPIDS Only in conjunction with TS: Stream PIDs separately upon request
+ (this enables the ADDP/DELP commands)
+ PES Program Elementary stream (Video and primary Audio stream)
+[new in 0.0.2,updated in 0.0.3]
+
+Command: PROV <Priority> <Media>
+Responses: 220 - Media available for receive
+ 501 - The parameters were incorrect
+ 550 - The media couldn't be identified
+ 560 - This server can currently not serve that media
+Description: With this command, the server is asked if the given media can
+ be received. The Priority is a number between 0 and 100 (in case a media
+ can not be received by an unlimited number of clients, the server shall
+ grant higher priorities before lower ones, and it shall also quit streams
+ with lower permissions if a higher one is requested), or -1 to ask the
+ server if this media is available at all.
+ The Media is a string defining the wanted media type. This is currently for
+ free use, it could for example carry a VDR unique channel id, to specify
+ a TV channel.
+
+Command: PORT <Id> <Address and Port>
+Responses: 220 - The data connection was opened
+ 501 - The parameter list was wrong
+ 551 - The data connection was refused by the client or timed out
+Description: The PORT command tells the server the target of a following
+ media transmission. The parameter Id specifies an index which is used to
+ establish multiple data connections over one control connection. It is used
+ later in the ABRT command to close a specific data connection. The second
+ parameter argument has six comma-separated fields, of which the first four
+ represent the target IP address, in the byte-order as the dot-notation
+ would be printed. The last two fields represent the target port, with the
+ high-byte first. To calculate the actual values, you could use the
+ following:
+ Field(5) = (RealPort & 0xFF00) shr 8
+ Field(6) = RealPort & 0xFF
+ Reversed:
+ RealPort = (Field(5) shl 8) + Field(6)
+ After receiving the port command, the data connection is opened but no data
+ is transferred, yet.
+ Id's currently used:
+ 0 Data connection for live streams
+ 1 Data connection for saved streams
+[changed in 0.0.3]
+
+Command: TUNE <Priority> <Media>
+Responses: 220 - Data connection was opened successfully
+ 550 - The media couldn't be identified
+ 560 - The live stream is unavailable
+Description: This command tells the media server to start the transfer over a
+ connection to a remote target established by the PORT command before.
+ Please look at the PROV command for the meaning of the parameters. The
+ server begins to send MPEG data. After the transfer has been started, the
+ response code "220" is sent.
+
+Command: ADDP <Pid>
+Responses: 220 - The requested Pid is transferring
+ 560 - The requested Pid is not available currently
+Description: This tells the server to start the transfer of a specific Pid
+ over a data connection established by the PORT command before.
+
+Command: DELP <Pid>
+Responses: 220 - The requested Pid is transferring
+ 560 - The requested Pid was not transferring
+Description: This tells the server to stop the transfer of a specific Pid
+ enabled by DELP before.
+
+Command: ABRT <Id>
+Responses: 220 - Data connection closed
+Description: This one should be sent before requesting another media or when
+ a media isn't needed anymore. It terminates the data connection previously
+ opened by PORT.
+
+Command: QUIT
+Responses: 221 - Connection is being closed afterwards
+Description: This commands terminates the client connection.