Showing posts with label Open Video Chat. Show all posts
Showing posts with label Open Video Chat. Show all posts

Thursday, May 3, 2012

Catching up

Wow, I haven't posted in a long time. Shortly after my last post I had the flu for a week, then I had a job opportunity come up and I spent half a week flying around for interviews. For two weeks after that I was writing docs and doing more research for OVC and I forgot to blog...

So I have some docs up for OVC now explaining how the code works (. I also added to the readme and made additional comments in the code. Hopefully my additions will help the next team that can pick up OVC.

This week and next I hope to add some unit tests to OVC. I'd like to be able to test to make sure the gstreamer interface is working correctly and that the network connection is working. First thing I need to do is figure out how to launch a sugar activity through a unit testing environment. From there it should be easy enough to mock another activity and have it send fake connections.

Update:

I had a conversation with Cerlyn from OLPC about unit testing. It seems like this will be more difficult than I thought...

<trose> can anyone point me to a good reference or example for unit testing sugar activities? specifically testing video and network interfaces?
<Cerlyn> trose: As far as Sugar goes, there is no activity specific testing framework I am aware of; I've been begging for one to be made.
<Cerlyn> Sascha Silbe has been working on unit tests for the core Sugar environment on occasion, but as far as I know progress on that front has been going slow
<trose> I'd like for just some way to start up an activity and then send it fake signals like another activity is trying to connect. Then I could make sure the activity responds correctly
<Cerlyn> many tests Silbe's been working on require user involvement to report pass/fail as well :/
<trose> Cerlyn, well that is frustrating...
<trose> how exactly does sugar start up an activity? is there a way to emulate that?
<trose> or is there a way to say like sugar.startActivity() and get a pointer back?
<Cerlyn> You can start an activity within sugar by running "sugar-launch {fully qualified name of activity here; like org.person.trose.myActivity}"
<trose> Cerlyn, okay
<Cerlyn> That probably wraps a DBUS interface to do it
<trose> but that's cmd right? can i get a handle to inspect the activity?
<Cerlyn> Historically having one activity directly launch another is something that hasn't been done; I do not recall the reasons offhand (not a developer; rather QA)
<trose> Cerlyn, hmm
<trose> i could see how that would cause problems
<trose> this would be a training script though
<trose> *testing
<Cerlyn> trose: In theory, being GTK3 based, GTK-supporting test frameworks should work
<Cerlyn> but graphical testing is obviously not unit level

So there isn't a good way to start up a sugar activity and maintain a handle on it. I may be able to hack around this somehow though. Stay tuned...

Thursday, March 29, 2012

Measure Twice Cut Once

More research today. I've been mucking around with some of Collabora's code. They are releasing Farstream on Fedora 17 soon. I also found out that there will be a version of Sugar on F17 released in July. Farstream comes with python bindings by default and supports a lot of useful things by default including, RTP and ICE. ICE will be useful as it allows the program to navigate around firewalls and NATs. This should be a valid approach so long as I can get a hold of the development build of Sugar. I don't think I'll have any problems with that though.

If that isn't possible I should be able to continue with current Sugar builds by using telepathy-farsight. This should be very similar to farstream except I'll need to manually pull in the ICE library and perhaps a few other things.

Overall I feel like I'm getting a firm grasp of what needs to happen to get everything working properly. Next week I'm going to start hacking on the OVC code to figure out how I can integrate these new libraries.

Tuesday, March 27, 2012

OVC Research

I dove into the pyGst docs today to try and wrap my head around what exactly is going on. I found the docs to be really confusing at first. Luckily there was an accompanying tutorial that explained things very nicely.

Unfortunately, the tutorial only outlined how to do local streaming. I searched around a little more and discovered that OLPC has a page about gstreamer on the XO's specifically. This page has a lot of information on it. According to that, I need to use a udpsink with an IP to send video to another XO.

At this point I started picking through the code to figure out where the problems might be. I know that somewhere along the way the connection isn't being set up correctly. Either the XO's are failing to get each other's IP's or the video connection isn't establishing.

The part of the code in tube_speak.py that deals with IP's is as such:
@signal(dbus_interface=IFACE, signature='s')
def announce_ip(self, ip):
    self.ip = ip

def announce_ip_cb(self, ip, sender=None):
    if sender != self.tube.get_unique_name():
        self.cb('ip', ip)
This is most likely where the problem is occurring. Basically, the XO's are just spitting out their IP and hoping the other one gets it. If this is the root of the problem, I should be able to solve it with a home spun TCP-like interface where it listens for a return signal.

The other part of the code I've been looking at is here in gst_stack.py:

        # Add udpsink
        udp_sink = gst.element_factory_make("udpsink")
        udp_sink.set_property("host", ip)
        self._out_pipeline.add(udp_sink)
        video_enc.link(udp_sink)

It may be the case that I need to find an alternative to udpsink. Maybe there is something like rtpsink? I'm not sure at this point. Next I think I will start picking at the code to try and determine exactly where it's failing to make the connection.

Sunday, March 25, 2012

Migrating OVC

Well I haven't talked about Open Video Chat lately. The project has been pretty stagnant for a while. I'm picking it up again this quarter as part of an independent study. Expect weekly updates about the project.

The first order of business is to migrate the project to github. Fedora Hosted was nice but it simply doesn't compare to github for community involvement and collaboration tools. The new repo can be found here: https://github.com/OpenVideoChat/Open-Video-chat.

This quarter I would like to get OVC working with RTP. The current system uses UDP steaming 100% of the time. This means that more often than not the connection packets are dropped since the XO's have horrible connection reliability. RTP fixes this by using a hybrid of TCP and UDP. It uses TCP to ensure the connection is made, then UDP for fast media streaming.

After I complete the RTP conversion I want to focus on getting some more documentation and unit tests for OVC. Right now there is absolutely nothing. When I graduate in May there will no longer be any of the original collaborators at RIT. Providing docs and unit tests will make it easier for other students to pick this up when I'm gone.

Wednesday, August 10, 2011

POSSE Hackfest '11

I'm currently hanging out with the Foss Box and some professors from various local schools. We're trying to teach them about all things open source. I've been playing with Open Video Chat again to see if it works on the newest Sugar build. Sugar 0.92.2 is now running on Fedora 14. Hopefully this means it either has the version of Telepathy we need or we can install it. I was able to get OVC running on two XO's and connected them. When it tried to connect the pipes I got an error though. Seems to be a break at a file open :/ I'll have to look at this more.

Side Note: The XO's automagically start an adhoc network and connect to eachother again! WOOOOO!

Monday, April 12, 2010

Rewind

Woah time flies! It's been a week since my last post. Busy busy week. We went to Interlock twice and the No Voice Zone Wednesday night. We've still been trying to figure out these darn telepathy and gstreamer libraries that have no documentation for python. Hopefully we can get something working by the end of this week because we're headed to BOSTON!!!!! We're headed to a hack fest where there should be guys that work on these other projects we rely on. If we can't figure this out ourselves I sure hope we can figure it out with telepathy, gstreamer, AND sugar/XO guys all in the same room. I'm headed home for a rock climbing competition friday night but the rest of the guys are staying for BarCamp Boston on Saturday. They're going to present our project, hopefully all roided out from the previous day's hack fest.

So No Voice Zone was a blast on Wednesday. NVZ is a weekly event hosted by the NTID (National Technical Institute for the Deaf) department here at RIT. We went there to practice our skills with ASL. I'm not sure about the other member of the team but I am really enjoying the ASL aspect of our project. I ran into a guy named Justin from my High School that I haven't seen in a couple years. I had only ever been able to talk to him through an interpreter or pen and paper before. This time I was able to have a decent, although slow, conversation with him. We just talked about majors and school and he asked me about how my rock climbing has been going. It was a really cool experience and I look forward to learning more so I can talk to him even more.

Monday, March 29, 2010

I can has Video Chat?

Today we got Video chat working. It's a hack but it works and it's decent frame rate and you know what? It works! The rest of this week is going to be testing different flags and settings to optimize our frame rate and video quality.

Friday, March 26, 2010

Help from the Community

No blog post yesterday :( I forgot....sorry

Yesterday I polished our chat software a bit. We had an interesting day. Apparently there was some sort of art show fund raiser thing scheduled in the main room of the CSI. Unfortunately we also WORK in that room. It was quite interesting when I walked out to go to the bathroom and I come back and a woman is trying to tell me I'm not allowed back to my "office". We ended up clearing it up with the help of Remy and Professor Jacobs. It was really nice programming half the day with live music playing.

Today I pinged the community to try to find some advice about video streaming on the XO's. Surprisingly I got a lot of feedback. In the past I have gotten some sarcastic RTFM replies. Full transcript can be found here https://fedorahosted.org/pipermail/ovc/2010-March/000003.html. It turns out Collabora made the original Video Chat Activity. It also turns out it was mostly just a proof of concept. These guys seem really willing to help us out. They gave us a lot of good links and advice. I'm psyched to run this by Jlew and Fran and see what they make of it since I'm not very strong at network programming.

Well it's Friday. I'm off to do some rock climbing. Peace.

Wednesday, March 24, 2010

Biting into the Code

Today I finally got to sink my teeth into the code. I went wrote the code for displaying the chat dialog between the two users. That's 1 for 2 of our goals done this week. Hopefully now we can get the video streaming. Jlew is all over that figuring it out. Maybe we'll get some input at InterLockRoc tomorrow.

Tuesday, March 23, 2010

New Hardware!

Today we got some sick new hardware from 5Linx. They gave us twelve of their video phones. Remy and I had a fun adventure going to pick up the video phones. We got halfway there and Remy realized that he forgot what industrial park 5Linx was in. Luckily we found it eventually after exploring the labyrinth of parking lots and grey buildings. So we're going to play with this hardware and see if we can get our software working on it. This could be a very cool application of open source developing. I'm excited to see where this goes.

Monday, March 22, 2010

Coding Day 1

Today we started to dive into the code. First thing for the day: get the video working again on the 1.5's. When we updated the firmware on Thursday it changed how Sugar communicated with the webcam. Jlew got that working pretty fast. Then he started working on getting two xo's to communicate. I did some more work on foss.rit.edu since this was fairly over my head. Once we get these things communicating we can actually flesh out how we're going to design this whole program.

On a personal note... Over the weekend I went to New Jersey for a rock climbing competition with RIT's Rock Climbing Club. It was a ton of fun. I ended up placing 3rd and the team placed 2nd overall. Here's a video of me climbing at the comp.

Wednesday, March 17, 2010

Smoke testing this XO's

Today we smoke tested the XO's to make sure everything is running smooth. This included things like checking the webcam, mic, and mesh networking. Everything works without issue. The only thing we haven't tested yet is connecting to RIT's network. We've been in contact with ITS but they are proposing a non-ideal solution to connecting these to the net. They want us to use a console-level solution that requires us to keep our RIT screen name and password in a plain text file on the XO. The XO's are very insecure and no one on the development team is willing to put their login info on the computer. Today we also welcomed a new member to our team, Fran. He was originally working on the blocku team but decided to switch to our project.

Many of you might be wondering, "Taylor what happened to yesterday?". Okay so probably no one is wondering that :P. Yesterday I had a really awful stomach flu so I called in sick. After that I ended up working half a day anyways. We went and got our payroll stuff fixed. Hopefully I'll receive a paycheck eventually... We also had our first ASL class. That was a ton of fun. We learned the alphabet and how to count. We also started on some basic conversational stuff like greetings and farewells.

Fun stuff so far, hopefully we'll start diving into the foo soon.

New XOs:

Monday, March 15, 2010

Getting this Project on Trac

Today we added a ton of content to our Trac. We're adding all sorts of "non-programming" things so that the Trac not only shows our progress on the code but also shows the story behind the code.

Later, me and Jlew played with Ohloh.net. This website is DOPE. We added our projects including OVC and now it'll track our repo pushes.

If you're trying to follow us check out openinnovationrit on youtube. This is where all the foss videos are posted. Our weekly interviews will be going up on this account too.

Thursday, March 11, 2010

Death to Windows

Another exciting day in the Innovation Center. The first thing we did today was do a bit of physical hacking of our room. We have already dragged some extra tables into the room. Today we commandeered some of the I2I's sitting at the other end of the Innovation Center. These chairs are sexy. Here's a linky. My booty is very comfy on it's $1249.99 throne. Hopefully in the future we'll further pimp out our hacker lair. We need to get some banners to put over the windows to help deal with screen glare.

So we did some more work polishing the website today. It's getting nice and shiny. Hopefully Professor Jacobs will give us some more feedback soon to help us make it even better.

Today marked the death of my Windows career. It's been quite an abusive relationship. I've moved onto Ubuntu. I don't know why I've waited so long. It's the most (super) user friendly system I've used so far. Cheers.

Wednesday, March 10, 2010

Foss@RIT++

Today was quite productive. After the issues from yesterday we decided to just disable SELinux long enough to install Drupal. Once we had that going it was smooth sailing. We spent the whole day copying over the content from the old html site to the new Drupal powered one. By the end of the day we had foss.rit.edu up and running pretty.

A really cool thing we worked on was a time line widget that could pull rss feeds from our various data producing mediums. The site puts all of these into a news feed as well as putting them in order on an interactive time line. This posts from our Git repos, youtube channel, and various blogs ;)

So we almost have this project completely bootstrapped so we can start programming in an open environment. We've got our website going. We've got our repos. We've got our data feeds. This story is ready to be told. The only thing left to do is make a story.

Tuesday, March 9, 2010

Bootstrapping Day 2

So it's the end of my second day here at the CSI. Our major task today was to try and get Drupal working on foss.rit.edu. This proved to be a difficult task. All sorts of permission issues because of SELinux. In the process I learned a lot more about commands in unix including the program Screen. While messing around with our server we pulled up multiple Screens so we could all follow along and work in the same window. What's even cooler is we got Luke Macken to log in and help us out. So we were able to talk to him through IRC while we were all looking at and interacting with the same console window. We were also sending Remy's screen to the 50 inch monitor on the wall of our conference room. This was simply the coolest thing I've ever seen as far as collaboration.

By the end of the day we ended up writing all the website edits in html just to get it done. Tomorrow we're going to disable SELinux so we can install Drupal. At the end of the day we went to InterLockRoc for their Lightning Talks. It was real cool. I learned some cool stuff from the talks. One guy actually talked about using screens and we'd just been using screens earlier today.

All in all it was a pretty cool day. I've been learning a lot more about unix commands and such. I'm finally starting to feel like a hacker.

Monday, March 8, 2010

OVC Early Experiences

My name is Taylor Rose. I am a third year computer science major at Rochester Institute of Technology. This Spring I'm going to be working on a project to improve the Video Chat Activity on the XO Laptop. Our major goal is to improve the frame rate of the program to a point where deaf and hard of hearing students can communicate easily using American Sign Language. This project is partly about the programming and partly about the story and the journey. Like all great journeys this one started off with a bumpy start; at least for me.

My first assignment last week was to make a live usb "Sugar on a Stick". Okay, so I look up sugar on a stick and download the LiveUSB Creator which allows you to install several different OS's onto a usb memory stick. I run the software and have myself a nice bootable usb drive with Sugar on a Stick 2.0 Blueberry. I reboot my machine and select the usb drive to boot from. "NTLDR is missing". I couldn't find anything online describing my specific issue. That error means that you're trying to boot from something that isn't bootable.

I hopped on IRC and sent out a message seeing if anyone could help me out. I get a response from Luke Macken. Turns out he's a developer for LiveUSB. Luke helped me try some things to fix the problem. We finally found that the problem was between the keyboard and the chair. I had forgotten that my large external hard drive was still plugged in. My system was trying to boot from the external HD instead of the memory stick. After we figured this out I was able to get the OS running no problem.

Although a little bit of a rocky start for me, this became a huge learning opportunity for me. This was a crash course in the open source way. I had a problem and I tried to find a solution through my own resources. Then I looked for help through the community. I was able to find help pretty much immediately. I see this as a good sign that this project is going to go smoothly as we begin to dive in.