GSoC - H264 NetCodec

H264 NetCodec (Decoding H.264 encoded media streaming from Internet)


 * Proposed by student: Tomren
 * Proposed primary mentor: Vulkanr
 * Proposed backup mentor:

= GSoC proposal for 2008 = This is a discussion about a proposal for XBMC's Google Summer of Code 2008

Name
Tomren (IRC & XBMC.org username: Tomren)

E-Mail
username@gmail.com

Project Title
H264 NetCodec', decoding H.264 encoded media streaming from Internet.

Abstract
XBMC is the leading user application in the convergence between music, video, the internet and home entertainment. Starting out on the Xbox platform, XBMC has since been ported to the Linux, Mac OSX and Windows platforms.

As we know, H.264 is a high efficient encode method, which is much better than MPEG2. Its rate is relative low which can be lower than several hundred Kbps. So H.264 is specially suitable for streaming media transporting in Peer-to-Peer method over the Internet, which always has relative low bandwidth for multimedia transfering.

In my development of a Multimedia live broadcast system over the Internet, I choose to use FFMPEG to be my decoder to decode H.264 multimedia streaming at client side. But I found that FFMPEG can't work properly to decode H.264 network streaming, while it can decode local multimedia file encoded in H.264 way.

So I guess there may be some different between H.264 local file and H.264 Network streaming.The differnces may be the encode format or file header,or something others.In my GSoc,I will try my best to improve FFMPEG H.264 model to make it support for Network streaming media,which is called H264 NetCodec.Also I will provide APIs for further development.More detailed information will be discussed in Detailed Description.

Project Goals
Make streaming media encoded in H.264 format could be decoded by FFMPEG in Client side.

How does my project benefit XBMC and community
My project will help XBMC enlarge its function for the capacity of decode H.264 Video transported throught Internet.Since P2P network live streaming media playback is popular nowadays, we can shift XBMC to network streaming media domain, by which I think can enhance the popularity of XBMC.

Project Tasks and Deliverables
To being about H.264 network streaming being able to be decoded features in XBMC requires three general tasks: 1.Research H.264 standard to see whether there are some difference in Format between H.264 Local file and Network streaming,Since local H.264 file can be play back normally while H.264 network streaming can't. 2.Look through code of FFMPEG H.264 Model and change the necessary code to relize the future. 3.Provide APIs for future users to enhance the function of H.264 decoding.

Project Timetable
This is an aproximate roadmap of the tasks to do.
 * 1) Publish my goals to the XBMC community and try to get some feedback and suggestions on my plans. I will get familiar with the specific XBMC internals that I require for my work. (until mid of June)
 * 2) Implement features in the order they are specified above. That means that I will begin with the survey of H.264 and then begin changing code of FFMPEG to implement the function I mentioned above.(until beginning or mid of August)
 * 3) Testing of all features with the help of the XBMC community. This will begin as soon as one component is finished and should be completed by the end of August.

Candidate Details
I am a Ph.D candidate in China Academy of Science and my major is signal and information processing. Now I live in BeiJing. I've a strong affinity for XBMC and open source software in general, a proud advocate for the movement and it's values. I see myself having more and more of an involvement in the open source/free software community as my programming ability grows. I also hope to become permanently involved in the development of XBMC, partly to satisfy my own wants from a home entertainment system and also as I value the work done already and wish to contribute to the project's legacy. I'm committed, hard-working and would relish the opportunity to work with and learn from professional programmers. Outside of computers, I have hobbies that I like to turn to now and again: cycling and playing basket ball.