[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog doc/C/amf.xml doc/C/appendix.xm...
From: |
Rob Savoye |
Subject: |
[Gnash-commit] gnash ChangeLog doc/C/amf.xml doc/C/appendix.xm... |
Date: |
Tue, 15 Aug 2006 05:07:34 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Rob Savoye <rsavoye> 06/08/15 05:07:34
Modified files:
. : ChangeLog
doc/C : amf.xml appendix.xml gnash.xml rtmp.xml
Log message:
* doc/C/rtmp.xml: Add RTMP chapter with graphic of the RTMP
protocol.
* doc/C/gnash.xml: Add entity for rtmp.xml.
* doc/C/Makefile.am: Add rtmp.xml.
* doc/C/amf.xml: Rewrite AMF chapter now that I understand how
it
really works.
* doc/C/appendix.xml: Replace AMF chapter with RTMP one. Make
AMF
chapter a sub section of the RTMP one.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.645&r2=1.646
http://cvs.savannah.gnu.org/viewcvs/gnash/doc/C/amf.xml?cvsroot=gnash&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/gnash/doc/C/appendix.xml?cvsroot=gnash&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/gnash/doc/C/gnash.xml?cvsroot=gnash&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/gnash/doc/C/rtmp.xml?cvsroot=gnash&r1=1.1&r2=1.2
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.645
retrieving revision 1.646
diff -u -b -r1.645 -r1.646
--- ChangeLog 14 Aug 2006 23:16:57 -0000 1.645
+++ ChangeLog 15 Aug 2006 05:07:33 -0000 1.646
@@ -19,6 +19,13 @@
2006-08-14 Rob Savoye <address@hidden>
+ * doc/C/rtmp.xml: Add RTMP chapter with graphic of the RTMP
+ protocol.
+ * doc/C/gnash.xml: Add entity for rtmp.xml.
+ * doc/C/Makefile.am: Add rtmp.xml.
+ * doc/C/amf.xml: Rewrite AMF chapter now that I understand how it
+ really works.
+
* macros/atk.m4: Look for atk.h, not atkgl.h.
* macros/opengl.m4: Put the single tick mark before the rest of
the statement so it gets expanded correctly.
Index: doc/C/amf.xml
===================================================================
RCS file: /sources/gnash/gnash/doc/C/amf.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- doc/C/amf.xml 22 Apr 2006 03:12:08 -0000 1.2
+++ doc/C/amf.xml 15 Aug 2006 05:07:34 -0000 1.3
@@ -1,203 +1,124 @@
-<sect2 id="amf">
+<sect3 id="amf">
<title>AMF Format</title>
<para>
- The AMF format is used the LocalConnection and SharedObject
- ActionScript classes. This is a means of binary data interchange
- between Flash movies.
+ The AMF format is used the LocalConnection, SharedObject,
+ NetConnection, and NetStream ActionScript classes. This is a means
+ of binary data interchange between Flash movies, or between a
+ Flash player and a Flash server.
</para>
<para>
- There are two sets of data types to consider. One set is used by
- the AfMF format, the other is an ActionScript data type tag used
- to denote which type of object is being transferred.
+ Like the RTMP messages, an AMF packet header can be of a variable
+ size. The size if either the same as the initial header of the
+ RTMP message, or a 1 byte header, which is commonly used for
+ streaming audio or video data.
</para>
<para>
- These data types are used to exchange data between Flash
- movies. The data part of a message is one of the ActionScript data
- types.
+ The body of an AMF packet may look something like this
+ example. The spaces have been added for clarity.
+
+ <screen>
+ 02 0007 636f6e6e656374
+ </screen>
<variablelist>
<varlistentry>
- <term>Byte</term>
- <listitem>
- <para>
- A single byte.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Int</term>
- <listitem>
- <para>
- Two bytes (a short).
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>MediumInt</term>
- <listitem>
- <para>
- Three bytes.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Long</term>
- <listitem>
- <para>
- Four bytes (an int).
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Double</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>UTF8</term>
+ <term>02</term>
<listitem>
<para>
+ This is a single byte header. The value of the first 2
+ bits is 0x3, and the AMF index is also 0x3.
</para>
</listitem>
</varlistentry>
+
<varlistentry>
- <term></term>
+ <term>0007</term>
<listitem>
<para>
+ This is the length in bytes of the string.
</para>
</listitem>
</varlistentry>
+
<varlistentry>
- <term>LongUTF8</term>
+ <term>63 6f 6e 6e 65 63 74</term>
<listitem>
<para>
+ This is the string. Note that there is no null terminator
+ since the length is specified.
</para>
</listitem>
</varlistentry>
+
</variablelist>
+
</para>
+<!--
<para>
+ These data types are used to exchange data between Flash
+ movies. The data part of a message is one of the ActionScript data
+ types.
+
<variablelist>
<varlistentry>
- <term>Number</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Boolean</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>String</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Object</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>MovieClip</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Null</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Undefined</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Reference</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>ECMAArray</term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>ObjectEnd</term>
+ <term>Byte</term>
<listitem>
<para>
+ A single byte.
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>StrictArray</term>
+ <term>Int</term>
<listitem>
<para>
+ Two bytes (a short).
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Date</term>
+ <term>MediumInt</term>
<listitem>
<para>
+ Three bytes.
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>LongString</term>
+ <term>Long</term>
<listitem>
<para>
+ Four bytes (an int).
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Unsupported</term>
+ <term>Double</term>
<listitem>
<para>
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Recordset</term>
+ <term>UTF8</term>
<listitem>
<para>
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>XMLObject</term>
+ <term></term>
<listitem>
<para>
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>TypedObject</term>
+ <term>LongUTF8</term>
<listitem>
<para>
</para>
@@ -205,5 +126,7 @@
</varlistentry>
</variablelist>
</para>
-</sect2>
+-->
+
+</sect3>
Index: doc/C/appendix.xml
===================================================================
RCS file: /sources/gnash/gnash/doc/C/appendix.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- doc/C/appendix.xml 14 Aug 2006 23:44:06 -0000 1.7
+++ doc/C/appendix.xml 15 Aug 2006 05:07:34 -0000 1.8
@@ -122,7 +122,6 @@
</sect2>
&rtmp;
- &amf;
<!--
<sect2 id="opcodes">
Index: doc/C/gnash.xml
===================================================================
RCS file: /sources/gnash/gnash/doc/C/gnash.xml,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- doc/C/gnash.xml 14 Aug 2006 23:44:07 -0000 1.23
+++ doc/C/gnash.xml 15 Aug 2006 05:07:34 -0000 1.24
@@ -658,10 +658,13 @@
<title>Authors</title>
<para>
<application>Gnash</application> is maintained by Rob Savoye
- <email>address@hidden</email>. Please send all comments and
- suggestions to <email>address@hidden</email> Please use this link
- to <ulink type="http"
- url="https://savannah.gnu.org/patch/?group=gnash">submit a patch</ulink>
+ <email>address@hidden</email>. The other developers currently are
+ Sandro Santilli, Bastiaan Jacques, Vitaly Alexeev, and Tomas
+ Groth. Please send all comments and suggestions to
+ <email>address@hidden</email> Please use this link to <ulink
+ type="http"
+ url="https://savannah.gnu.org/patch/?group=gnash">submit a
+ patch</ulink>
or this link to <ulink type="http"
url="https://savannah.gnu.org/bugs/?group=gnash">file a bug
report</ulink>.
@@ -672,11 +675,12 @@
<para>
The following people all contributed code to GameSWF, which was
- the original code base for Gnash. I was also a GameSWF
- contributor. The primary author of GameSWF is Thatcher Ulrich
- <email>address@hidden</email>. Other individuals that contributed code
are:
- Mike Shaver, Thierry Berger-Perrin, Ignacio Castaño, Willem
- Kokke, Vitaly Alexeev, Alexander Streit.
+ the original code base for Gnash. Both Vitaly and myself were
+ also GameSWF contributors. The primary author of GameSWF is
+ Thatcher Ulrich <email>address@hidden</email>. Other individuals
+ that contributed code are: Mike Shaver, Thierry Berger-Perrin,
+ Ignacio Castaño, Willem Kokke, Vitaly Alexeev,
+ Alexander Streit.
</para>
</sect1>
Index: doc/C/rtmp.xml
===================================================================
RCS file: /sources/gnash/gnash/doc/C/rtmp.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- doc/C/rtmp.xml 14 Aug 2006 23:44:07 -0000 1.1
+++ doc/C/rtmp.xml 15 Aug 2006 05:07:34 -0000 1.2
@@ -1,7 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
<sect2 id="rtmp">
<title>RTMP Protocol</title>
<para>
+ This document is based mostly on my own reverse engineering of the
+ RTMP protocol and AMF format. <code>tcpdump</code> and
+ <code>ethereal</code> are your friend. Some addition info that got
+ me started was from the <ulink type="http"
+ url="http://www.osflash.org/red5">Red5</ulink>
+ project. <code>Red5</code> is the only other open source Flash
+ server. So some details are still vague, but as the implementation
+ appears to work, we'll figure out what they are later.
+ </para>
+
+ <para>
The Real Time Messaging Protocol was created by MacroMedia (now
Adobe) for delivering Flash objects and video over a network
connection. Currently the only servers that support this format
@@ -12,12 +24,15 @@
This is a simple protocol, optimized for poor bandwidth
connections. It can support up to 64 concurrent streams over the
same network connection. Part of each AMF packet header contains
- the index number of the stream.
+ the index number of the stream. A single RTMP message can contain
+ multiple AMF packets.
</para>
<para>
An RTMP connection uses Tcp/ip port 1935. It is also possible to
- tunnel RTMP over an HTTP connection using port 80.
+ tunnel RTMP over an HTTP connection using port 80. Each AMF packet
+ is 128 bytes long except for streaming audio, which has 64 byte
+ packets.
</para>
<para>
@@ -46,12 +61,500 @@
<para>
The client receives the 1536 byte data block, and if they match,
- the connection is established.
+ the connection is established. After the handshake process is
+ done, there are three other messages that the client sends to the
+ sever to start the data flowing.
+ </para>
+
+ <para>
+ The first AMF packet sent to the server contains the
+ <emphasis>connect</emphasis> packet. This doesn't appear to do
+ much but notify the server the client is happy with the
+ handshake, and to start reading packets.
+ </para>
+
+ <para>
+ The second packet is the <code>NetConnection</code> object from
+ the client. This ActionScript class is used by the Flash movie to
+ create the network connection to the server.
+ </para>
+
+ <para>
+ The third packet is the <code>NetStream</code> object from the
+ client. This is the ActionScript class used to specify the file to
+ be streamed by the server.
+ </para>
+
+ <para>
+ The RTMP packet for our example looks like this:
+
+ <programlisting>
+
030000190000c91400000000020007connect00?f0000000000000030003app0200#software/gnash/tests/1153948634.flv0008flashVer02000cLNX
6,0,82,0
0006swfUrl02001dfile:///file|%2Ftmp%2Fout.swfc30005tcUrl\002\0004rtmp://localhost/software/gnash/tests/1153948634.flv\000\000\t\002\000\005userx
+ </programlisting>
+
+ We'll take this apart in a bit, but you can see how all three AMF
+ packets are in the same message. The message ius recieved in
+ several 128 byte blocks, with the last one being less than
+ that. The total size of the RTMP message is in the header, so the
+ reader can tell if the entire message was read or not.
+ </para>
+
+ <para>
+ The RTMP header is first, followed by the connect message as an
+ ascii string as the message body. The following AMF packet is the
+ <code>NetConnection</code> one, that specifies this is coming from
+ a Flash application/ This also contains the file path the server
+ can use to find the file to stream. This is then followed by the
+ version number, which I assume is the version of the Flash player,
+ so the server knows what it is talking to.
</para>
<para>
- The first AMF packet sent to the server contains the connect
+ The third packet is the one from <code>NetStream</code>, which
+ specifies the URL used for the movie, followed by the user name
+ for a semblance of security.
</para>
+ <para>
+ For the next level of detail, we'll explain the format of AMF. AMF
+ is used by the RTMP protocol to transfer data. Each Flash object
+ is encapsulated in an AMF packet, including streaming audio or
+ video.
+ </para>
+
+ <para>
+ The first byte of the RTMP header determines two things about the
+ rest of the message. The first 2 bits of this byte signify the
+ total size of the RTMP header. The RTMP header is of a variable
+ size, so this is important.
+
+ <variablelist>
+ <varlistentry>
+ <term>0x0</term>
+ <listitem>
+ <para>
+ This specifies the header contains 12 bytes, including
+ this one.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x1</term>
+ <listitem>
+ <para>
+ This specifies the header contains 8 bytes, including this
+ one.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>02</term>
+ <listitem>
+ <para>
+ This specifies the header contains 4 bytes, including this
+ one.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x3</term>
+ <listitem>
+ <para>
+ This specifies the header contains 1 byte, so this is the
+ complete header.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ The other 6 bits in this byte represent the AMF index. As a single
+ RTMP connection can support multiple data streams, this signifies
+ which stream this packet is for. Once an AMF object is fully
+ received by the client, the AMF index may be reused.
+ </para>
+
+ <para>
+ For messages with a 4 bytes or larger header, the next 3 bytes are
+ used by audio and video data packets, but at this time the meaning
+ of this field is unknown.
+ </para>
+
+ <para>
+ For messages with a 8 byte or larger header, the next 3 bytes
+ determine the size of the RTMP message being transmitted. Messages
+ with a 1 byte or 4 byte header use a standard size, 128 bytes for
+ video, and 64 bytes for audio.
+ </para>
+
+ <para>
+ For messages with an 8 byte or larger header, the next byte is the
+ type of the AMF object.
+
+ <variablelist>
+ <varlistentry>
+ <term>0x3</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP packet is the
+ number of bytes read. This is used to start the RTMP
+ connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x4</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP message is a
+ <code>ping</code> packet.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x5</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP message is
+ server response of some type.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x6</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP packet is
+ client request of some type.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x8</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP packet is an
+ audio message.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x9</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP message is a
+ video packet.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x12</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP message is
+ notify.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x13</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP message is
+ shared object.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>0x14</term>
+ <listitem>
+ <para>
+ This specifies the content type of the RTMP message is
+ remote procedure call. This invokes the method of a Flash
+ class remotely.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ <para>
+ </para>
+
+ <para>
+ There are two sets of data types to consider. One set is used by
+ the to specify the content type of the AMF object, the other is an
+ ActionScript data type tag used to denote which type of object is
+ being transferred.
+ </para>
+
+ <para>
+ The values of the initial type byte are:
+ <variablelist>
+
+ <varlistentry>
+ <term>0x0</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a numeric
+ value. All numeric values in Flash are 64 bit,
+ <code>big-endian</code>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x1</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a boolean
+ value.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x2</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is an
+ <code>ASCII</code> string.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x3</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a Flash
+ object. The Flash object data type field furthur along in
+ the message specifies which type of ActionScript object it
+ is.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x4</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a Flash
+ movie, ie... another Flash movie.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x5</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a NULL
+ value. NULL is often used as the return code from calling
+ Flash functions.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x6</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a
+ undefined. This is also used as the return code from
+ calling Flash functions.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x7</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a reference.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x8</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a ECMA
+ array.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x9</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is the end of an
+ objct definition. As an object is transmitted with
+ multiple AMF packets, this lets the server know when the
+ end of the object is reached.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
+ <term>0xa</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a Strict
+ array.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0xb</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a date.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0xc</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a multibyte
+ string. Multibyt strings are used for international
+ language support to represent non <code>ASCII</code>
+ fonts.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0xd</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a an
+ unsupported feature.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0xe</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a record
+ set.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0xf</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a AML
+ object. XML objects are then parsed by the
+ <code>XML</code> ActionScript class.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>0x10</term>
+ <listitem>
+ <para>
+ This specifies the data in the AMF packet is a typed object.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </para>
+
+ <para>
+ For messages with a 12 byte header, the last 4 bytes are the
+ routing of the message. If the destination is the server, this
+ value is the NetStream object source. If the destination is the
+ cllient, this is the NetStream object for this RTMP message. A
+ value of 0x00000000 appears to be reserved for the NetConnection
+ object.
+ </para>
+
+ <para>
+ Multiple AMF streams can be contained in a single RTMP messages,
+ so it's important to check the index of each AMF packet.
+ </para>
+
+ <para>
+ An example RTMP header might look like this. (spaces added between
+ fields for clarity) All the numbers are in hex.
+
+ <screen>
+ 03 000019 0000c9 14 000000000
+ </screen>
+
+ <variablelist>
+ <varlistentry>
+ <term>03</term>
+ <listitem>
+ <para>
+ The first two bits of this byte are the size of the
+ header, which in this example is 00, for a 12 byte
+ header. The next 6 bits is the AMF stream index number,
+ which in this example is 0x3.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>000019</term>
+ <listitem>
+ <para>
+ These 3 bytes currently have an unknown purpose.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>000c9</term>
+ <listitem>
+ <para>
+ Since this example has a 12 byte header, this is the size
+ of the RTMP message, in this case 201 bytes.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>14</term>
+ <listitem>
+ <para>
+ This is the content type of the RTMP message, which in
+ this case is to invoke a remote function call. (which we
+ later see is the connect function)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>00000000</term>
+ <listitem>
+ <para>
+ The source is the NetConnection object used to start this
+ connection.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ &amf;
+
</sect2>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog doc/C/amf.xml doc/C/appendix.xm...,
Rob Savoye <=