Private:almohammadi

From NMSL
Revision as of 10:55, 1 June 2010 by Balmoham (talk | contribs)

Summary of accomplishments by Bassam Almohammadi.

31 May 2010

  • Tried implementing streaming clients using different libraries mentioned below.
  • The most advance and used library is LIVE555, and I was able to write a program that receives a unicast stream from the server and saves the payload in a buffer. My only concern about this library is complexity of debugging for any future reason.
  • The RTSP session was created easily but faced some problems with firewall blocking UDP packets flow. I think this issue can be ignored for now. I tested the program successfully on a local machine and between two remote machines.
  • In case of RTP only, I implemented a client that uses ccRTP GNU library to download RTP packets from the server. ccRTP is a solid implementation and very easy to use. However, it depends on many other GNU libraries and therefore it requires long installation procedures in case those libraries were absent or obsolete. On the other hand, it provides reliability and high performance.
  • Looked up how to perform multiple streaming instances of the RTPreader through multithreading.
  • Now I am revising our initial MTV code in order to understand how to handle the arguments and deal with the buffer.
  • after a quick review, I think we don't have to implement RTSP over RTP at this level, based on the current implementation of MTV, which takes the whole IP packet including UDP and RTP headers. However, there is a comment left in the Burst class saying that eventually we shall store only the media data in the buffer (i.e. RTP payload) as I understand.
  • TODO: Test multiple streams and multithreading. Test the compliance of the buffer to BurstReader class processing requirement.

24 May 2010

  • Found many libraries for RTP (RFC 3550) / RTSP (RFC 2326):
    • LIVE555 Streaming Media -- C++, RTP/RTCP, RTSP, SIP. [1].
    • oRTP -- C, RTP/RTCP. [2].
    • RTPlib -- C, RTP/RTCP. [3].
    • ccRTP -- C++, RTP/RTCP. [4].
    • JRTPLIB -- C++, RTP, RTCP. [5].

in addition to some other libraries, but those were the most commonly used in other projects. After exploring each library's code and documentation, I found that JRTPLIB is the best candidate due to its good documentation and simplicity of reuse.

  • Finished the draft implementation of a client program based on JRTPLIB documentation, still facing some problems in building the code in order to test it.

17 May 2010

  • Practicing C++ native on Eclipse CDT for Ubuntu.
  • Reading about QuickTime Streaming Server and Darwin Streaming Server. [6] [7] [8]
  • Reading about RTP and RTSP protocols. [9] [10]
  • Install and configure Darwin Streaming Server and explore the source code.
  • Test streaming successfully with some clients (QuickTime and VLC).
  • Looking at some open source streaming clients and trying to understand how they function. [11]