Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

MT

By: a guest on Mar 18th, 2009  |  syntax: None  |  size: 13.23 KB  |  views: 132  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. 1. ABOUT ME
  2.  
  3.  
  4.  
  5. 1.1 What other names or aliases do you go by/we should be expecting to see you as in IRC/forums/mailing lists?
  6.  
  7. mtarek16 : is the username I register with in any website.
  8. MT : My name on IRC (Was : MTee).
  9. Mohamed Tarek : is my real name and my name on the lists.
  10.  
  11. 1.2 Which school/college/university are you currently attending? What year are you in and what is your current major/focus?
  12.  
  13. University : Ain Shams (in Cairo,Egypt)
  14. Faculty : Engineering
  15. The system in my faculty goes like this : first a preparatory year, then the student selects one of the following departments
  16. (Electrical, Mechanical, Civil or Architectural). after two more years, the student selects a major from his department.
  17. As for me;
  18. Department : Electrical
  19. Major : I'll still select my major the next academic year but it will be Computer and Systems Engineering.
  20.  
  21. 1.3 Do you currently own a DAP? Have you owned any in the past?
  22.  
  23. Yes; I own a Sansa e250 and I have had it now for about 2+ years.
  24.  
  25. 1.4 Have you previously been involved in Rockbox? If so, how?
  26.  
  27. Once I bought my DAP, I found rockbox and installed it. But it took me a while to actually get involved.
  28. What I've done so far is basically language-related :
  29.  - Added the Arabic glyphs to (helvR12) font with the help of Marcoen Hirschberg.
  30.  - Initiated the Arabic lang file, again, with the help of Marcoen, and translated about 125 more strings
  31.    for the next release.
  32.  
  33. 1.5 Why do you want to work on Rockbox?
  34.  
  35. Briefly : I LOVE it! Using rockbox for such a long period made me very enthusiastic about it. I almost never met some friend, who
  36. owns a DAP without talking to him about rockbox. Besides, it's a kind of an embedded system ; working on rockbox, besides being
  37. very much fun, is actually relevant to my future major and career.
  38. Also, I would rather contribute to a proect that has proven to be of much benefit to me than to a random software I barely use.
  39.  
  40. 1.6 Where are you located, and what between which hours do you anticipate being active and available to work on your project?
  41.  
  42. I live in Cairo,Egypt.
  43. Timezone : GMT+2 (DST in summer : GMT+3).
  44. My final exams will start around the 20th of May, and last for about a month or slightly more.
  45. So, Before the start of my vacation I'd be able to work on evenings from sunday to wednesday. The rest of the week, I'd be able to work during the morning.
  46. When the vacation starts, my work will be mainly during the morning.
  47.  
  48. 1.7 How many hours per week do you have planned/scheduled for your gsoc work, should it get accepted? Are there any vacations, events, or other time-
  49.  
  50. consuming unrelated stuff going on? (nothing here will reject your application, however we just do not want to be surprised)
  51.  
  52. Before the exams I may be able to work an average of 3-4 hours/day which sums up to 21-28 hours/week.
  53. During the exams I can't promise more than 2 hours/day (~14hours/week). I maybe able to do more than that, which would be good. However, I don't want to
  54. say I'm going to be able to work for X hours/day and find out later that I can't.
  55. I conceive this project as a summer job so, once the vacation starts, I plan to work for 8-9 hours/day,
  56. but I'll take friday off so this will be 48-54 hours/week.
  57.  
  58. 1.8 Have you built Rockbox yourself from source before? If not, you will want to go ahead and set up an development environment and build Rockbox at least
  59.  
  60. once as your qualification task will involve this basic task. See the "For Developers" section on DocsIndex for help (and don't be afraid to use the IRC
  61.  
  62. channel if there are other issues).
  63.  
  64. Yes I have built it from the source more than once, during the testing of the font and the lang file.
  65. As I said I have a sansa e200 so I was building for a arm based target.
  66.  
  67. 1.9 What programming experience do you have, and in which languages? If those don't include C, please tell us how you intend to deal with this lack. If
  68.  
  69. possible, please point us to a code sample that you wrote that you feel demonstrates that you know what you are doing.
  70.  
  71. I can code in BASIC, C, C# and a little PHP. C is my strength though. I spend some of my time writing code for PIC uC's (using C).
  72. But I haven't written "large" programs for a microcontroller yet. Most of them were simple.
  73. I have also written a sudoku solver, and it was actually able to solve basic boards. More functions still had to be added to solve the intermediate
  74. and hard boards, but I lost interest in it and abadoned it.
  75. Another program I wrote was a logic minimizer using Quine-McCluskey algorithm
  76. (about 1000 lines of code, link to the code : http://pastebin.com/f2c119d1c ); it's very similar to espresso in the way it works, because I wrote for
  77. the sake of learning not for innovation.
  78.  
  79. I have some comments on the code I sent, though. I know it's not perfect, and needs a lot of tweaking but I don't have much free time to
  80. do that. If I were to write this logic minimizer again I would do the following :
  81.  - Design an ADT based on a linked list instead of using a dynamic array of structs.
  82.  - Take the function declarations to 2 separate header files : one for I/O functions one for the algorithm-related functions,
  83.    main() would probably only loop thorugh three functions : TakeInput(); ProcessInput(); ProduceOutput();
  84.  - Add more comments.
  85.  - break down large functions into small ones. I appreciate the paradigm of building a big project out of smaller building blocks.
  86.    This program, however doesn't convey this appreciation :).
  87.  
  88. My skillset may be not that impressive, but I hope this project would hone them and teach me more skills.
  89.  
  90. 1.10 Do you have any previous open source experience that you can point to?
  91.  
  92. I believe by experience you mean being active with the community, so based on that I would say no, only rockbox. But if you mean being involved
  93. by any means in an OSS, even just using them, then yes, ffmpeg, vlc and linux.
  94. I had to go through the source of ffmpeg and vlc to be able to work on the project, and I'm a linux user.
  95.  
  96.  
  97.  
  98. 2. ABOUT THE PROJECT
  99.  
  100.  
  101.  
  102. 2.1 ABSTRACT
  103.  
  104.  
  105. Rockbox already supports a wide range of codecs, it still, however, does not have support for RM. The main aim of the project, thus, is to add
  106. support for RM format, and to have enough fixed-point decoders to handle the commonly available RM files.
  107.  
  108.  
  109.  
  110. 2.2 DETAILED DESCRIPTION
  111.  
  112.  
  113. 2.2.1 TASK DESCRIPTION AND SUBDIVISION
  114.  
  115.  
  116. I expect the project to go as follows :
  117.  
  118.  - have a complete, working demuxer :
  119.  
  120.        The demuxer was already started by Dave Chapman (linuxstb on IRC). He sent it to me and I continued working on it. Thus far
  121.        the available demuxer can parse a RM file and write the raw audio data to an output file.
  122.        More work will need to be done to make the demuxer do the following :
  123.        1. Identify the correct decoder and send audio buffers to it.
  124.        2. produce output files as needed with the decoded audio.
  125.  
  126.  - have a fixed point Cook decoder :
  127.  
  128.        libffmpeg already has good decoders, so the plan will be to extract a decoder, write a proof-of-concept application that that
  129.        would produce a decoded output from a cook-encoded input then start converting all the calculations to use fixed point arithmetic.
  130.  
  131.  - have a standalone rm-wav converter :
  132.  
  133.        At this point it should be fairly easy to have a standalone converter application that would take in a RM file and produce an output
  134.        WAV file. This was implied in the previous point but I wanted to make it clear. Once this program is done, I should start porting it
  135.        to rockbox.
  136.  
  137.  - Porting to rockbox :
  138.  
  139.        Both the demuxer and the fixed-point codec will then have to be ported to rockbox. This would require me to tidy-up the code to be sure
  140.        it follows the coding style and make sure that the codec is using the memory wisely.
  141.  
  142.  - Adding more decoders :
  143.  
  144.        As time allows, more decoders should be added, starting with the next most common ones. Adding a decoder will then go through the previous
  145.        cycle.
  146.        RM can contain one of the following codecs :    
  147.        - RealAudio 1.0 (VSELP)
  148.        - RealAudio 2.0 (LD-CELP)
  149.        - AC3
  150.        - Sipro
  151.        - Cook
  152.        - ATRAC
  153.        - RealAudio Lossless Format
  154.        - LC-AAC
  155.        - HE-AAC
  156.        - MP3
  157.        Of which the following have open-source decoders available as part of libffmpeg :
  158.        - RealAudio 1.0 (VSELP)
  159.        - RealAudio 2.0 (LD-CELP)
  160.        - AC3
  161.        - Cook
  162.        - ATRAC
  163.        - MP3
  164.        MP3 is already supported by rockbox, it's just mentioned here as it could be found in a rm container.
  165.        If cook, AC3, RA1 and RA2 are implemented, rockbox will be able to play almost any RM file.       
  166.  
  167.  
  168.  
  169. 2.2.2 BENEFIT TO THE ROCKBOX PROJECT
  170.  
  171.  
  172. I have asked on the developers list and in the IRC channel about continuing this idea as a rockbox project. The replies that I got clearly indicated
  173. that such an idea would be of great use, one of the replies were, and I quote, " .. more codec support is always welcomed.. ".
  174. I know that not many audio files out there are in RM, but still, there are enough files that RM support would be a significant addition
  175. to rockbox.
  176. I for one would be really pleased to have rockbox play RM files because :
  177. 1. Occasionally, I find myself in a situation where I need to convert a RM file to be able to play it.
  178. 2. This would give rockbox another edge over the current proprietary firmwares.As far as I know, a really small number of them support RM playback.
  179.  
  180.  
  181.  
  182. 2.2.3 MILESTONES AND PROJECT PLAN
  183.  
  184.  
  185. Almost the same as section 2.2.1
  186.  
  187.  - Working demuxer :
  188.  
  189.        expected time required : 2 weeks.
  190.        goal : to have a fully working demuxer that could identify the available codecs.
  191.  
  192.  - Standalone rm-wav converter :
  193.  
  194.        expected time required : 2 weeks.
  195.        goal : to have a standalone application that would take in a RM file and produce an output wav file.
  196.  
  197.  - Converting the decoder to fixed point :
  198.  
  199.        expected time required : 1 week.
  200.  
  201.  - Porting to rockbox :
  202.    
  203.        expected time required : 2 weeks.
  204.  
  205.  1 week = 1 full-time week (~8 hours/day).
  206.  
  207. I was encouraged to write out a basic time plan when I read this : "We know and understand that there will inevitably be deviations from these time
  208.  
  209. estimates, but please try to make them accurate as possible. "
  210. I'm giving myself enough time to be able to understand what I am doing, but I'll my best to take less time than stated, because the more time I have
  211. at the end of the coding period, the more codecs I can add.
  212.  
  213. 2.2.3.1 Do you expect that your project will need more work or maintenance after the GSoC period ends?
  214.  
  215.          I believe the project might need more work after GSoC ends. that's because I'm not sure how many codecs I could cover during the GSoC.
  216.  
  217.          What do you think are the chances of you sticking around and helping out with that and perhaps other projects?
  218.  
  219.          Really high :). I was already there (idle most of the time however) when I didn't know anything about the codebase, so it's very likely
  220.          to expect me to be helping as much as I can after GSoC ends.
  221.  
  222.  
  223.  
  224. 2.3 You and the Community
  225.  
  226.  
  227. 2.3.1 How do you propose you will be keeping everyone informed of your progress, problems, and any questions you might have over the course of the project?
  228.  
  229.       For questions and problems :
  230.       IRC first, better for a quick, live reply. If by any means I find that the IRC didn't really answer my question I'll head-on to the mailing list
  231.       for more replies and more thorough answers.
  232.      
  233.       For reporting :
  234.       I'll send a weekly update of my progress to the mailing list and to the private e-mail address of the mentor if it's ok with him/her.
  235.       the progress report would contain :
  236.       - work done during the week.
  237.       - problems encoutered and their solutions.
  238.       - next week's work.
  239.       - an estimate of how far I've gone through the project and how much is remaining.
  240.  
  241. 2.3.2 What expectations do you have of your mentor(s) as well as the community itself?
  242.      
  243.       The mentor(s) :
  244.       The main expectation is them being really patient, eager to teach/help me with the things I'll need but yet don't know about; I might ask a lot,
  245.       so I need to feel comfortable to do so, I don't want to be afraid to ask for any reason.
  246.       I'd expect them also to be available via the IRC channel and e-mail.
  247.       The e-mail address doesn't have to be personal, it could just remain on the mailing list.
  248.  
  249.       The community :
  250.       I expect the community to welcome a discussion, and also answer a question if they can.  
  251.      
  252.       I wrote those expectations only as an answer to the question, it does not mean that the community it unhelpful whatsoever. I really enjoy
  253.       spending time on the channel, even just to 'watch' a discussion.
  254.  
  255.  
  256.      
  257. 2.4 MISC
  258.  
  259.  
  260. 2.4.1 Is there anything else that we should know that might make us like you or your project more?
  261.  
  262.    - I'm not a quitter. So it's very unlikely that I'd abandon the project.
  263.    - You wouldn't worry about how to keep me involved after the program ends. I already want that, and I'd be more than happy to be a committer
  264.      when I'm good enough.
  265.    - I still have more ideas for rockbox, and, as I stated, it's relevant to my future career, so I would do my best to help enhance it.