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.