View difference between Paste ID: f7627ef8a and
SHOW:
|
|
- or go back to the newest paste.
1 | - | |
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 (If there's still more time) : | |
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, AC3 are already supported by rockbox, they are just mentioned here as they 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-2 weeks. | |
200 | ||
201 | - Porting to rockbox : | |
202 | ||
203 | expected time required : 1-2 weeks. | |
204 | goal : (this relates to the previous milestone too), to have a cook in .rm sample play on at least one player. | |
205 | ||
206 | 1 week = 1 full-time week (~8 hours/day). | |
207 | ||
208 | 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 | |
209 | ||
210 | estimates, but please try to make them accurate as possible. " | |
211 | 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 | |
212 | at the end of the coding period, the more codecs I can add. | |
213 | ||
214 | 2.2.3.1 Do you expect that your project will need more work or maintenance after the GSoC period ends? | |
215 | ||
216 | I believe the project might need a lot of work after GSoC ends. that's because : | |
217 | - According to Michael Giacomelli (saratoga on IRC)-who made a wma decoder as a GSoC'07 project- getting some files to play is one goal, | |
218 | getting the rest of the files, where bugs show up, is a whole different story. He mentioned that after 2 years of debugging he could still | |
219 | find some files that wouldn't play. I expect something similar to that to happen with RM files. | |
220 | ||
221 | - After cook decoder is mature enough, I'd start to add more codecs. | |
222 | ||
223 | What do you think are the chances of you sticking around and helping out with that and perhaps other projects? | |
224 | ||
225 | Really high :). I was already there (idle most of the time however) when I didn't know anything about the code base, so it's very likely | |
226 | to expect me to be helping as much as I can after GSoC ends. | |
227 | ||
228 | ||
229 | ||
230 | 2.3 You and the Community | |
231 | ||
232 | ||
233 | 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? | |
234 | ||
235 | For questions and problems : | |
236 | 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 | |
237 | for more replies and more thorough answers. | |
238 | ||
239 | For reporting : | |
240 | 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. | |
241 | the progress report would contain : | |
242 | - work done during the week. | |
243 | - problems encoutered and their solutions. | |
244 | - next week's work. | |
245 | - an estimate of how far I've gone through the project and how much is remaining. | |
246 | ||
247 | 2.3.2 What expectations do you have of your mentor(s) as well as the community itself? | |
248 | ||
249 | The mentor(s) : | |
250 | 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, | |
251 | so I need to feel comfortable to do so, I don't want to be afraid to ask for any reason. | |
252 | I'd expect them also to be available via the IRC channel and e-mail. | |
253 | The e-mail address doesn't have to be personal, it could just remain on the mailing list. | |
254 | ||
255 | The community : | |
256 | I expect the community to welcome a discussion, and also answer a question if they can. | |
257 | ||
258 | I wrote those expectations only as an answer to the question, it does not mean that the community it unhelpful whatsoever. I really enjoy | |
259 | spending time on the channel, even just to 'watch' a discussion. | |
260 | ||
261 | ||
262 | ||
263 | 2.4 MISC | |
264 | ||
265 | ||
266 | 2.4.1 Is there anything else that we should know that might make us like you or your project more? | |
267 | ||
268 | - I'm not a quitter. So it's very unlikely that I'd abandon the project. | |
269 | - 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 | |
270 | when I'm good enough. | |
271 | - 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. |