13.07.2015 Views

A Free Software Streaming-Video Application based on MMTP

A Free Software Streaming-Video Application based on MMTP

A Free Software Streaming-Video Application based on MMTP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A <str<strong>on</strong>g>Free</str<strong>on</strong>g> <str<strong>on</strong>g>Software</str<strong>on</strong>g> <str<strong>on</strong>g>Streaming</str<strong>on</strong>g>-<str<strong>on</strong>g>Video</str<strong>on</strong>g> <str<strong>on</strong>g>Applicati<strong>on</strong></str<strong>on</strong>g> <str<strong>on</strong>g>based</str<strong>on</strong>g> <strong>on</strong><strong>MMTP</strong>Douglas Teixeira and Luiz MagalhãesCentro Tecnológico, Escola de Engenharia – Universidade Federal Fluminense (UFF)Rua Passo da Pátria, 156 – Bloco D – São Domingos – CEP: 24.210-240Niterói, RJ – Brasil{vidal, schara}@midiacom.uff.brAbstractThere are many streaming video protocols, but most are proprietary, and while theclient is free, the server is not. The proprietary nature of the protocol also precludesinvestigati<strong>on</strong> <strong>on</strong> its c<strong>on</strong>gesti<strong>on</strong> c<strong>on</strong>trol mechanism, which is fundamental for the wellbeing of a best-effort network. In this work we present a client-server streaming videoapplicati<strong>on</strong> that bases its transport <strong>on</strong> <strong>MMTP</strong>, the Multimedia Multiplexing TransportProtocol. The rate-<str<strong>on</strong>g>based</str<strong>on</strong>g> nature of streaming video is a good match for the rate-<str<strong>on</strong>g>based</str<strong>on</strong>g><strong>MMTP</strong>, and a prototype is used to validate our model.1. Introducti<strong>on</strong> and Related WorkThe work presented in the paper is part of a larger project <strong>on</strong> Interactive Televisi<strong>on</strong>within the free-software initiative funded by the Brazilian Government. There are threemajor lines of work <strong>on</strong> the Interactive Televisi<strong>on</strong> Group (Midiacom Lab) atUniversidade Federal Fluminense. The first is the definiti<strong>on</strong> of a framework forinteractivity[1]. The sec<strong>on</strong>d is the study of transport protocols[2] for communicati<strong>on</strong>,and the third is the formal definiti<strong>on</strong> and testing of those protocols[3]. The first spin-offof the project is a client-server video-streaming applicati<strong>on</strong>. In this work we begin theformal definiti<strong>on</strong> of the Multimedia Multiplexing Transport Protocol, <strong>MMTP</strong>, theprotocol used as the basis for our video-streaming applicati<strong>on</strong>. <strong>MMTP</strong> is describedthrough state machines, which we intend to use to generate a descripti<strong>on</strong> that can beformally validated. A further step is to use this descripti<strong>on</strong> to generate the actual codefor the protocol through a descripti<strong>on</strong> compiler. At this stage, the code is still handproducedfrom a high-level protocol definiti<strong>on</strong>.<str<strong>on</strong>g>Video</str<strong>on</strong>g> streaming is an interesting problem because the most widely usedtransport protocols are so badly suited for it. A video stream does not require the fullreliability offered by TCP. In fact, video streaming as d<strong>on</strong>e daily in open televisi<strong>on</strong>,cable and satellite has no reliability at all, and occasi<strong>on</strong>al glitches are well tolerated by


the receiving parties 1 . Moreover, TCP’s retransmissi<strong>on</strong> mechanism to implementreliability and its requirement of in-order delivery introduces too much jitter to be usedin streaming. On the other hand, the bare-b<strong>on</strong>es approach, which is to stream framesusing UDP, requires that each video-streaming applicati<strong>on</strong> has to build its ownbuffering and flow c<strong>on</strong>trol, and the absence of c<strong>on</strong>gesti<strong>on</strong> c<strong>on</strong>trol can wreak havoc withthe network.The first approaches to video streaming were to build flow (and sometimesc<strong>on</strong>gesti<strong>on</strong>) c<strong>on</strong>trol over UDP. The growing availability of high-bandwidth access in thelast mile meant that a growing segment of users could access richer c<strong>on</strong>tent, and theimportance of video streaming grew. The ec<strong>on</strong>omic model pursued by companies thatdeveloped video streaming was to freely distribute the client applicati<strong>on</strong> (sometimescharging a premium for better/more sophisticated clients), while charging for theservers. The proprietary nature of the applicati<strong>on</strong> level streaming protocols made usershave several pieces of software, each <strong>on</strong>e for the specific standard used by the providerof the media the user was interested in.A free client/server streaming video applicati<strong>on</strong> opti<strong>on</strong> can fulfill similar needsas the free operating system and free “office” applicati<strong>on</strong>s initiatives. Remote learningis an example where live and pre-recorded classes can be streamed to students and byitself can justify the project. Our project differs from other free streaming videoinitiatives such as MPEG4IP[4] and <str<strong>on</strong>g>Video</str<strong>on</strong>g>LAN[5] in that we are specifically interestedin the transport aspects of streaming, and less interested in media coding.It should be pointed out that there is a framework for multimedia transport in theInternet, which is composed by RTP/RTCP[6,7]. The Real-time Transport Protocol canbe thought as an applicati<strong>on</strong>-level framing protocol, and offers a framework wheredifferent applicati<strong>on</strong>s can build their own c<strong>on</strong>trols as needed/desired. <strong>MMTP</strong> is morefine-tuned with the transmissi<strong>on</strong> of video streams, and has most mechanisms needed byvideo streaming applicati<strong>on</strong>s without the need for further development.The remainder of the paper is organized as follows: in Secti<strong>on</strong> 2 we describebriefly the <strong>MMTP</strong>; in Secti<strong>on</strong> 3 we present our video streaming applicati<strong>on</strong>; Secti<strong>on</strong> 4closes the paper with c<strong>on</strong>clusi<strong>on</strong>s and future work.2. <strong>MMTP</strong>The Multimedia Multiplexing Transport Protocol was originally designed as a mobilityawaretransport protocol, part of a suite of transport protocols bel<strong>on</strong>ging to a frameworkthat simplify mobility by requiring no external agents (as it is the case in Mobile IP),and that are able to deal with the higher bit error rate found in wireless links. Allprotocols in the suite share the characteristic of being rate-<str<strong>on</strong>g>based</str<strong>on</strong>g>. Mobility is achievedby dynamically adding and deleting sub-channels. A sub-channel is an end-to-end pathwith at least <strong>on</strong>e unique end-point, characterized by an IP address. The assumpti<strong>on</strong> isthat a mobile host will potentially have many interfaces, or a single interface that willacquire different IP addresses as the host moves. The novel aspect of the protocol is its1 Compressed digital c<strong>on</strong>tent as we use today is naturally less failure tolerant due to frameinterdependence, but can be made more resilient by adding redundancy in the coding process.


multiplexing characteristics, where not <strong>on</strong>ly a mobile host can have multiple activeinterfaces (with a different IP address in each interface), but a single flow can be sent(or received) simultaneously through all active interfaces (each defining a sub-channel).<strong>MMTP</strong> is a real time protocol for multimedia c<strong>on</strong>tent, aware of frame deadlinesand differing priorities that are assigned to different frames. Because it is wasteful ofnetwork resources to transmit a frame that will arrive past its deadline, frames thatcannot arrive <strong>on</strong> time for display will not be transmitted. In the same token, framestagged with higher priorities are transmitted ahead of lower priority frames. Theexistence of lower priority frames enqueued means that not enough bandwidth isavailable for transmissi<strong>on</strong> at full source rate, and lower priority frames will be droppedahead of higher priority frames. The applicati<strong>on</strong> has the task of setting frame priorities,<str<strong>on</strong>g>based</str<strong>on</strong>g> <strong>on</strong> its c<strong>on</strong>tent, informing <strong>MMTP</strong> when the frame is sent. For instance, a MPEG I-frame should get a higher priority than a P-frame. <strong>MMTP</strong> provides the mechanismwhere the applicati<strong>on</strong> can select different treatment of transmitted frames. It rests <strong>on</strong> theapplicati<strong>on</strong> to tag its traffic the best way, that is, to choose the policy it will use. It mayhave a MJPEG source, where each frame is of equal importance, and tag the sent framesaccordingly. On the other hand, it may choose to alternate between priorities, so in theevent <strong>MMTP</strong> has to drop frames for lack of bandwidth, the probability of twoc<strong>on</strong>secutive frames being dropped is lowered. The assumpti<strong>on</strong> is that the applicati<strong>on</strong>knows its c<strong>on</strong>tent, and it is better to leave the decisi<strong>on</strong> of what should be dropped in thecase the need arises to it.As a result of the reverse multiplexing, the protocol can offer to the applicati<strong>on</strong>layer a Channel abstracti<strong>on</strong>. The applicati<strong>on</strong> w<strong>on</strong>'t be aware of the use of multiple linksand will deal with the abstracti<strong>on</strong> through the protocol interface. This architecture willalso require a link-layer-aware system entity resp<strong>on</strong>sible for finding when newlydetected links acquire an IP address (or vice-versa, when an address is lost), andnotifying <strong>MMTP</strong> of those changes in link-layer availability. This entity is called theLocal Link Manager (LLM). The Channel will handle multiple SubChannels, each <strong>on</strong>ereading the frames from the protocol single queue and sending it using lower layer (IP)services.3. <str<strong>on</strong>g>Streaming</str<strong>on</strong>g> video applicati<strong>on</strong>To stream a stored video file using <strong>MMTP</strong> it has to be parsed into frames, and thoseframes fed to <strong>MMTP</strong> with their deadlines. We decided to use as a parser (and player)the Berkeley MPEG tools player [12], which is an open source video player that worksunder Linux.The base of our work is the Berkley video player software developed by theBerkley MPEG Tools team [10]. Basically, it is a set of C programs working with someX11 libraries to create an interactive, graphical interface for the playback of mpeg files.The next issue treated was the transport over the Internet using the <strong>MMTP</strong>. In [2] it isexplained the available structures in the <strong>MMTP</strong> for the data encapsulati<strong>on</strong>. However,n<strong>on</strong>e work has been d<strong>on</strong>e surrounding the delivery of rate <str<strong>on</strong>g>based</str<strong>on</strong>g> streaming video datawith distinct priorities. At last, the third issue treated was the creati<strong>on</strong> of the parsingapplicati<strong>on</strong> that sends MPEG frames in c<strong>on</strong>stants rates. Furthermore, before we start to


detail the applicati<strong>on</strong>’s functi<strong>on</strong>s, at this point it becomes necessary to make a brieflyexplanati<strong>on</strong> about MPEG files.3.1 <str<strong>on</strong>g>Applicati<strong>on</strong></str<strong>on</strong>g> general structureThe user software is composed by four executable files, each <strong>on</strong>e running a distinctsystem process, two in the sending terminal and the other two in the receiving <strong>on</strong>e:Parser and Sender are the former, and Receiver and Mpeg_play are the other two.Being yet <strong>on</strong>ly a prototype, the software management is not intuitive for theinexperienced user. We will now explain how they interact:First, in the receiver terminal, the Mpeg_play must be called, this means that wewill have a process running and wainting. Then the Receiver is started, thereby anotherwaiting process will be in standby in the terminal. Now, the sending terminal must bestarted. The first process to be called is the Sender, after that the Receiver process mustanswer because of the <strong>MMTP</strong> handshake process. After that, the Parser process isstarted with the movie file name filled in the command line; then streaming processbegins. The Parser program sends the mpeg frames, through a local UDP pipe, to theSender. The Sender will encapsulate those mpeg frames in a <strong>MMTP</strong> packet and willsend them through the Internet to the Receiver process, running in the other terminal.The Receiver retrieves the frames in the correct order and delivers them to theMpeg_play process, through another UDP local pipe. The frames are exhibited by thetime they arrive in the receiver terminal due to the minimal processing time expended inthe local pipe. The process is illustrated in the figure above:Parser (local UDP pipe) Sender (<strong>MMTP</strong>) Receiver (local UDP pipe) Mpeg_playMpeg videoframes<strong>MMTP</strong> c<strong>on</strong>trol packets anddataMpeg videoframs<strong>MMTP</strong> c<strong>on</strong>trol packetsSec<strong>on</strong>d c<strong>on</strong>figurati<strong>on</strong>: mpegvideo frames transmissi<strong>on</strong> throughUDP, without <strong>MMTP</strong>.Inter-process communicati<strong>on</strong>One of the reas<strong>on</strong>s for the entire applicati<strong>on</strong> be c<strong>on</strong>structed in that way was tokeep the edge processes (Parser and Mpeg_play) independents. In that way, we couldhave the same applicati<strong>on</strong> transmitting mpeg frames <strong>on</strong>ly over UDP (without the<strong>MMTP</strong> protocol encapsulati<strong>on</strong>). Therefore we were able to compare the <strong>MMTP</strong>protocol performance face n<strong>on</strong>e applicati<strong>on</strong>-level-transport protocol.


The actual state of the applicati<strong>on</strong> demands attenti<strong>on</strong> from the user. They mustbe started in the way it was presented: First, receiving terminal: Mpeg_play andReceiver. Then, the sending terminal: Sender and Parser.Another important issue remains over the implementati<strong>on</strong> of the <strong>MMTP</strong>protocol. Three distinct main programs compose the original <strong>MMTP</strong> protocol package:source, sender and receiver [2]. Our applicati<strong>on</strong> did not require the source program,which was formerly built for testing purposes. The present state of the <strong>MMTP</strong> protocolrequires a c<strong>on</strong>figurati<strong>on</strong> file for each running program, the “params.txt”. It is a text filewhere the user must correctly fill in some informati<strong>on</strong>. Some of them, like initial<strong>MMTP</strong> rate and network latency, may be acquired over the network through probingprocesses (this is currently under work, in the present state they must be filled in by theuser) other may not (like machine addresses and ports).We choose to keep this characteristic of the protocol and we applied the sameidea in our two extra programs. Therefore all the four applicati<strong>on</strong> programs have, each<strong>on</strong>e, a c<strong>on</strong>figurati<strong>on</strong> file. Using the “params.txt” file for the Parser program, we areable to choose the frame rate and the transmissi<strong>on</strong> protocol (this means the presence ornot of the <strong>MMTP</strong> protocol).3.2 The playback program Mpeg_playThe basic structure is <str<strong>on</strong>g>based</str<strong>on</strong>g> <strong>on</strong> the client-server paradigm. One terminal waits requestscoming from the network and another terminal must send the request to start thestreaming. In that way, we will have a database of mpeg movies in the server and aclient receiving them and performing the playback.Our user level client is an adjustment of the original software created by [10] formpeg files playback <strong>on</strong>ly. Instead of reading a file from the hard disk, ourimplementati<strong>on</strong> reads blocks from a local UDP pipe between the player and the receivertransport applicati<strong>on</strong>. Those blocks must be well-defined frames from the original file;otherwise the player will not recognize them and will stop the executi<strong>on</strong>. Thoseadjustments in the original program were made in a functi<strong>on</strong> called “get_more_data”,which uses another functi<strong>on</strong> called “pure_get_more_data”. They are located in thearchive “readfile.c”.The “get_more_data” functi<strong>on</strong> does the reading of the mpeg file from the diskand loads the memory buffer with it. Besides, it analyses the presence of system calls inthe bitstream to return the presence or not of multiplexed audio with the video. If audiois detected, it calls the “read_sys” functi<strong>on</strong> to separate it from the video stream. Thisproceeding does <strong>on</strong>ly the disjointing of the audio stream, without processing it. In fact,the present state of the Berkley mpeg player is not processing audio. Therefore, thestudy of the “read_sys” functi<strong>on</strong> is now unnecessary. C<strong>on</strong>tinuing, if no audio isdetected, the “get_more_data” functi<strong>on</strong> calls the “pure_get_more_data” functi<strong>on</strong> toread <strong>on</strong>ly video stream.The exhibiti<strong>on</strong> of the frames is d<strong>on</strong>e by a functi<strong>on</strong> called “correct_underflow”(located in the “utils.c” archive of the original program). This functi<strong>on</strong> is called severaltimes during the video decoding and, therefore, it uses the two functi<strong>on</strong>s describedabove. Every time the memory buffer needs to be loaded, the program calls“correct_underflow”. The next proceeding made in the original program was thereplacement of the C functi<strong>on</strong> fread to a <strong>MMTP</strong> functi<strong>on</strong> called “UdpRecv” in the


“get_more_data” and in the “pure_get_more_data” functi<strong>on</strong>s. The “UdpRecv” functi<strong>on</strong>is specified in the file “net.c” of the <strong>MMTP</strong> protocol set of archives: int UdpRecv(unsigned char * buf, int len, int interface). The required parameters are:• char *buf pointer to a local buffer where data from socket will be stored;• int len number of bytes to be read from socket;• int interface number, starting from 0, which identifies the selected networkinterface to be c<strong>on</strong>nect to the socket. Due to the capability of the <strong>MMTP</strong>functi<strong>on</strong> to work with multiple interfaces, this functi<strong>on</strong> receives this parameterspecified in the text file “params.txt”. If <strong>on</strong>ly <strong>on</strong>e interface is being used, thisnumber must be 0. Using the UdpRecv our playback applicati<strong>on</strong> will receive data coming from thetransport applicati<strong>on</strong> through local pipe. Intuitively, the UdpRecv functi<strong>on</strong> in the playerprogram will <strong>on</strong>ly have the loopback interface specified in the parameters file, beingrepresented by 0 in the functi<strong>on</strong> “interface” parameter. This functi<strong>on</strong> is very useful fortwo reas<strong>on</strong>s: reduces the number of input parameters of the original recvfrom C functi<strong>on</strong>and allows the user to handles multiple interfaces in a very easy way.Finally, the player applicati<strong>on</strong> loads its video buffer directly from UdpRecv.Keeping the rest of the original Berkley program, it will perform the playback normally(decoding and exhibiting) as it receives from the transport applicati<strong>on</strong>, since data isdelivery correctly (well-defined frames in order).3.3 Transport: Linking the client and server applicati<strong>on</strong>s to the <strong>MMTP</strong> protocolThe UdpRecv functi<strong>on</strong> from the <strong>MMTP</strong> library, used in our client and serverapplicati<strong>on</strong>s, uses another two <strong>MMTP</strong> set of archives: “defs.h” and “params.c”. Thefirst <strong>on</strong>e works with structures and parameters needed by the UDP protocol semantics.A good reference (and by the way the best in my opini<strong>on</strong>) for the BSD-UNIXnetworking functi<strong>on</strong>s can be found in [14]. The sec<strong>on</strong>d <strong>on</strong>e specifies the “ReadParams”functi<strong>on</strong>, which reads the necessary parameters from the “params.txt” text file inexecuti<strong>on</strong> time. In this file it must be written, in the correct order, some necessaryinformati<strong>on</strong> for the communicati<strong>on</strong> process. There is work in progress to reduce the userknowledge to fill the file (such as initial interface transmissi<strong>on</strong> rate).This subsecti<strong>on</strong> will explain our implementati<strong>on</strong>s made in the original protocolfor our video streaming purposes.Intuitively, some work had to be made in the protocol for the transport of mpegbit stream instead of assorted data. At the server side, we have a running program: theserver. A specific code was included in the original protocol server program to interactwith the parser program. Its purpose was, firstly, to analyze the header bits of eachreceived frame to identify the type of frame (I, P or B). After that, our implementati<strong>on</strong>should “tell” to the <strong>MMTP</strong> protocol each frame priority (0, 1 or 2, highest to lowestpriority), through the encapsulati<strong>on</strong> process. It is clear that I frames must receive highestpriority, in that way those will be delivered with guarantee. The <strong>MMTP</strong> supplies anintermediate priority where the packets will be delivered if the network offers areas<strong>on</strong>able throughput for the packets deadlines. We can set P frames to this priority.The B frames will not receive any kind of guarantee treatment (they will have nopriority) the same way UDP works when n<strong>on</strong>e kind of user level treatment is present. Inthat way, the sender applicati<strong>on</strong> gives to each frame its specific priority in the <strong>MMTP</strong>


packet structure. The parser program specifies the type of frame during the reading ofthe video bit streams from the disk. Besides, it is necessary to guarantee the highestpriority to the first frame, otherwise if it is dropped, the playback will not even start.Last, by the client side we have the “receiver.c” program running. Here, the<strong>MMTP</strong> code was modified in the “process_data” functi<strong>on</strong>, so that it could be able torebuild the frame when all its related packets were already received and stored in thearriving buffer. When the frame is complete, the receiver program delivers it, throughlocal UDP pipe, to the video playback applicati<strong>on</strong> “mpeg_play”.3.4 The frame server program “Parser”The parser program, which receives the same name, was entirely written by us.It works through the following steps: 1 st the mpeg file is read from the local source(disk, video-camera, etc); 2 nd the header of the mpeg file is sent through local UDP pipeby the <strong>MMTP</strong> UdpSend functi<strong>on</strong> to the sender applicati<strong>on</strong>; 3 rd . does the parsing process,breaking the bit streams in distinct video frames; 4 th . send those frames throughUdpSend functi<strong>on</strong> to the sender applicati<strong>on</strong>.The UdpSend is similar to the UdpRecv functi<strong>on</strong>. Its specificati<strong>on</strong> is placed in thesame archive “net.c“ and requires the same other functi<strong>on</strong>s described above forUdpRecv: int UdpSend (unsigned char *buf, int len, int interface).The server applicati<strong>on</strong> does not the video playback, it <strong>on</strong>ly does the parsing and thesending proceedings. It is still necessary to say that the parser does the breaking processof the video bit streams reading informati<strong>on</strong> present in the same video file. Besides thetype of frame, the parser program also informs the sender program whether it is astarting frame or not and its timestamp. The sending of the timestamp is essential for the<strong>MMTP</strong> to determine the packet deadline and to deliver them correctly.4. C<strong>on</strong>clusi<strong>on</strong>s and Future WorkThe first applicati<strong>on</strong> test was d<strong>on</strong>e comparing it with UDP protocol. Wetransmitted a 416K video file of 100 frames through direct link between the parser andthe mpeg_player (UDP) and with the <strong>MMTP</strong> suite, measuring the number of deliveredpackets for different rates, shown above:Taxa (bps) UDP (received frames) <strong>MMTP</strong> (received frames)9600 3 119200 6 738400 14 1257600 14 3078800 57 60115200 54 871M 99 99


At higher taxes, <strong>MMTP</strong> works exactly as UDP protocol, as it was expected.However, with lower taxes <strong>MMTP</strong> shows better performance. It is still necessary to saythat this test was d<strong>on</strong>e without any kind of traffic, which would decrease drastically thenumber of delivered packets by UDP.We now are improving a test bed with a sub-network working with trafficgenerator for the next tests. Another work is to create the same applicati<strong>on</strong> using theRTP (Real Time Protocol) [6] instead of the <strong>MMTP</strong>. A related work was d<strong>on</strong>e in agraduati<strong>on</strong> work [15] with better results for the <strong>MMTP</strong>, when comparing both protocols.However, they transmitted <strong>on</strong>ly assorted data (not video frames with priority levels) andwithout any traffic generator.A free video streaming applicati<strong>on</strong> has many interesting uses. <strong>MMTP</strong> is wellsuited as the transport protocol for such applicati<strong>on</strong>, even when used in a differentenvir<strong>on</strong>ment that it was designed to work. By creating a tool to generate formal protocoldefiniti<strong>on</strong>s, we expect to make future changes to existing protocols easier, and be able todesign protocols for specific applicati<strong>on</strong>s, without having to make the applicati<strong>on</strong> fit theexisting protocols.5. References[1] RODRIGUES, L. M., ANTONACCI, M. J., RODRIGUES, Rogério Ferreira,MUCHALUAT-SAADE, D. C., SOARES, Luiz Fernando Gomes “Improving SMIL with NCMFacilities. Multimedia Tools And <str<strong>on</strong>g>Applicati<strong>on</strong></str<strong>on</strong>g>s”. Amsterdam, Holanda: , v.16, n.1, p.29 - 54,2002.[2] L. Magalhaes and R. Kravets, “<strong>MMTP</strong>: Multimedia Multiplexing Transport Protocol” TheFirst Workshop <strong>on</strong> Data Communicati<strong>on</strong>s in Latin America and the Caribbean SIGCOMM-LA2001), 2001.[3] SANCHEZ, M. L. D., BASTOS, Silvino, “Modelling Real Time Systems From ObjectOriented Models” In: SBRC - Workshop de Sistemas de Tempo-Real, 2002, Buzios. SBRC -Workshop de Sistemas de Tempo-Real. , 2002. v.1. p.1 - 8[4] MPEG4IP: http://mpeg4ip.sourceforge.net[5] <str<strong>on</strong>g>Video</str<strong>on</strong>g>LAN: http://www.videolan.org[6] RTP: RFC 3550 'RTP: A Transport Protocol for Real-Time <str<strong>on</strong>g>Applicati<strong>on</strong></str<strong>on</strong>g>s '[7] RTCP: RFC 3605 Real Time C<strong>on</strong>trol Protocol (RTCP) attribute in Sessi<strong>on</strong> Descripti<strong>on</strong>Protocol (SDP).[8] L. Magalhaes and R. Kravets, “Transport Level Mechanisms for Bandwidth Aggregati<strong>on</strong> <strong>on</strong>Mobile Hosts” The 9th Internati<strong>on</strong>al C<strong>on</strong>ference <strong>on</strong> Network Protocols (ICNP 2001), 2001.[9] L. Magalhaes and R. Kravets, “End-to-End Inverse Multiplexing for Mobile Hosts”, The19th Brazilian Symposium <strong>on</strong> Computer Networks, Florianopolis, Brazil, 2001[10] “Berkley MPEG tools”, site: < http://bmrc.berkeley.edu/frame/research/mpeg/>. Feb 2004.[11] Site: MPEG - Moving Picture Experts Group: , Feb 2004.[12] HALSALL, Fred. Multimedia Communicati<strong>on</strong>s (<str<strong>on</strong>g>Applicati<strong>on</strong></str<strong>on</strong>g>s, Networks, Protocols andStandards).Addis<strong>on</strong> – Wesley, 1 st editi<strong>on</strong>.[13] T. SIKORA, “MPEG-1 and MPEG-2 digital video coding standards.” Site:http://wwwam.hhi.de/mpeg-video/papers/sikora/mpeg1_2/mpeg1_2.htm, Dec 2003.[14] STEVENS, W.Richard. Unix Network Programming: Interprocess Communicati<strong>on</strong>s withAdvanced Programming in the UNIX Envir<strong>on</strong>ment. Editora: Prentice Hall PTR.[15] Peres and Leite, Francisco de Assis Campos and Julio Cesar Costa. Análise do protocolo detransporte RTP e comparação com o <strong>MMTP</strong>. 2º semester, 2004. Final Graduati<strong>on</strong> Work as partof the c<strong>on</strong>clusi<strong>on</strong> of Telecommunicati<strong>on</strong>s Engineering Course, Universidade FederalFluminense, RJ - Brasil.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!