[sip-comm-dev] This Summer with GSoC and SIP Communicator


#1

Hi all...

I thought of writing this mail to recap what I was doing for SC as a
GSoC student in this summer. (Infact, here in SriLanka this is not
really the Summer). But, anyway it was nice hot three months with Java
and Sound Level indicators...

Initial Stage

In the community bonding period, I worked very closely with my mentor
( Sébastien Mazy ), to figure out and understand the requirements of
the project. Our first problem with the sound level indicator was to
how it should be looked like after the implementation.
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6163
We had several alternatives and we finally decided to go with a one
dimensional amplitude meter. Special thanks goes to both Sebastien and
Emil for helping me in coming to the final decision.

Initial Implementation

So, after all the initial concerns are cleared out, I began
implementing the Sound Level Indicator. First I retrieved all the data
sources I needed and then wrote a simple class to calculate the RMS
value of the sound. I was able to show the calculated values in a
simple UI as well. It was when I submitted my first progress report to
the dev mailing list as I was asked to do so by Sebastien.
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6442

Oops.. A major Design Problem

Thank god. It was very good that I posted to the dev ML as early as
possible about my implementation. Because after doing that Lubomir
found a very critical issue in my approach of calculating sound
levels.
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6446
He pointed out that I was stealing data for my calculation that others
need. So, I had to change the whole design. In fact this change helped
me a lot to get rid of many questions easily, that came in the latter
part of implementation. Thank you so much Lubomir for your great
help..

Sound Level Calculating Algorithm

With the new design ( I created a JMF Effect to calculate the sound
level), the process of calculating sound level became much more simple
and extendable and also reusable. Sebastien helped me a lot to fine
tune the calculating algorithm. So a big thanks goes to Sebastien for
helping me in the most hardest part in the requirements list.

The Event Chain

This was initially proposed by Lubomir in a mail to the dev ML.
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6454
This was how to propagate the sound level details which was found in
the Media bundle, to the GUI through the Protocol bundle. I
implemented this mostly by following the guidelines provided by
Lubomir.

Sound Level Indicator UI

The final step of creating the sound level indicator was to create the
UI. I asked for suggestions before finalizing it from the dev ML.
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6563
With the comments I got from there, I was able to finish the UI and
add it to the exisitng call dialog box. A special thanks goes to Yana
for giving some nice comments and direction for me to implement the UI
successfully.

Completion

So by following the steps that I mentioned earlier I was able to
completely implement the Sound Level Indicator for a 1 to 1 call
successfully. I have created a patch of this work and eagerly waiting
to add that to the trunk.
Please see the attachment

Rough Time

So, after the completion of Sound Level Indicator for a 1 to 1 call,
as per my requirements list, the next task was to extend that feature
for a conference call. But, because the conference itself was not
implemented at that time I was asked to switch to an alternative task.
I was given two options. I decided to get the task of creating a new
UI for conference calls.

New Conference UI

So, I worked on it and came up with a new UI design for the conference
which I introduced to the dev ML with the following mail.
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6755
I got some nice comments and suggestions from Yana about the new
design.You can find the New Conference UI code in here.
https://sip-communicator.dev.java.net/svn/sip-communicator/branches/gsoc09/sli

Sending Data Over RTP

This is the last task I had to do under GSoC 2009. I needed to send
sound level details over RTP packets using it's header extension. I
started this by posting to the dev ML and asking for help because this
was something that have not been done anywhere else before.
https://sip-communicator.dev.java.net/servlets/ReadMsg?list=dev&msgNo=6851
Unfortunately I was not able to completely implement this function yet
as accessing RTP Header by using JMF is proven to be a very difficult
task.
But I'm continuously working on it and I'm hoping to come up with a
proper solution for it very soon.

So, this is what I was doing in the last three months with SIP
Communicator. Hope you enjoyed this rather lengthy mail in the same
way I enjoyed the last summer.

But I cannot finish this without mentioning about the one who was
right behind me helping me out in the entire summer. Ya.. Sebastien
Mazy.. It was you.. I still remember hours you spent with me through
IM to help me out in difficult situations, clarifying my doubts and
always encouraging me to do my best. And also I should thank specially
for not getting very angry with me when I wasn't working up to the
level you expected. Without your help I won't be able to come this
far. So, once again thank you so much for invaluable help. You really
was a great mentor.

When I started GSoC I really wasn't a good programmer. I was just an
average student. But working with SIP Communicator helped me a lot to
improve my skills while giving something back to the SC. So thank you
all for giving me this opportunity. It was a nice experience with a
great community and I will be continuing...

Cheers
Dilshan...

SoundLevelIndicator.rar (14.8 KB)