All pastes #956753 Raw Edit

praveer_cool

public text v1 · immutable
#956753 ·published 2008-03-25 15:24 UTC
rendered paste body
 Abstract
When you plug in a blank external hard drive (say, by USB), nothing happens. The device gets created (e.g. /dev/sdb), but if the drive has no partitions, nothing else happens.

The system should detect this situation, and offer you some options. For example:

You have plugged a blank hard drive. Would you like to:

  (o) Back up your system
  ( ) Prepare the drive to store Linux-only files
  ( ) Prepare the drive to share files between Linux and other systems
  ( ) Ignore this messag

Detailed Description
The drive would be partitioned / formatted as appropriate. If we find a backup solution, we could use it then.

HAL needs to be extended to provide interfaces to partition and format drives. Authorization for these need to go through PolicyKit. The user-visible work needs to be done for GNOME and/or KDE.

My experiences
C/C++ programming (+boost, libicu)
Asm x86 programming
Gtk, Qt
Webdesign and development (HTML, PHP, MySQL, CSS, cakePHP)
Linux device drivers programming
and many others just ask for info

Link to Further Information:

=================================================================
=================================================================

 Abstract
The problem

Using raw v4l API is difficult and time consuming, there is the need to implement image format conversion which varies according the video device driver, there is little to no support for multiple applications accessing the same device.

Proposal

Implement a client/server API which should help the developer to enumerate the devices, capture frame data and do simple manipulations to the image.

The implementation should support concurrent access of the same device and should have an acceptable performance.

Performance optimizations are not to be in the scope of this project deliverables, but it is something that will be done, either after the gsoc or as part of it if time permits.

Detailed Description
The problem

Using raw v4l API is difficult and time consuming, there is the need to implement image format conversion which varies according the video device driver, little to no support for multiple applications accessing the same device.

Proposal

Implement a client/server API which should help the developer to enumerate the devices, capture frame data and do simple manipulations to the image.

The implementation should support concurrent access of the same device and should have an acceptable performance.

Performance optimizations are not to be in the scope of this project deliverables, but it is something that will be done, either after the gsoc or as part of it if time permits.

Methodology

Implement the client/server API as a library with a set of functions grouped:
    * Hardware enumeration and querying.
    * Video capture
    * Manipulations and transforms.

Additionally the following functions could be done in separated libraries as an extra, should not be counted as deliverables but I would like to work on them after the GSOC.
    * External library support (SDL, Cairo, etc)
    * Bindings (C++, Python, etc)

Concurrent access implementation could be done either in user-space or in kernel, while the last is the most correct option, user-space is significantly easier to debug.

Development should be done using a version control system, I would prefer Git, but I can also use Subversion, CVS, Mercurial and Bzr.

Details

 - API
The library should have simple functions to enumerate video devices, video capturing should be done in one simple function which should convert the frame data to requested format, there would also be functions to convert frame date (which will be used by the capture function) in case the developer may need them along with the manipulation functions (such as rotate, scale, etc).

 - Kernel
Concurrent access implementation via kernel will need reviewing of the driver v4l code and see if there any support, if its lacking we need to see if there is already a mechanism in kernel that I can use to update the driver code, preferably this would be done a layer down in order to don't affect the driver code.

 - User-Space
The user-space implementation could be done with a daemon which would access the device and manage the frame data locking and sending the data to the client processes via shared memory or another appropriate IPC mechanism. This implementation will only manage frame data access, manipulation should be done by the application with the library.

Taking in count that the frame date is usually read-only we could optimize the locking code to take advantage of this and have the library manage this aspect by ensuring that the client application will only read and copy the data for manipulation in its own memory space.

 - Extras
Support for other libraries should be a good thing, for example capturing directly to an SDL surface, or a Cairo surface.

Bindings for other languages is a big plus, I could very well implement them for C++, Python and C#.

These features could be implemented later outside of the GSOC, as I plan to maintain the code and keep working on it.

Bio

I'm a second year student at the medicine faculty of the "Universidad de Sonora" in Mexico, I have always loved computers and related technology, I studied computer systems on collage, but I'm mostly self trained with books and practice.

I have been using Linux as my main system for almost 9 years now,
I have developed many applications ranging from simple administration scripts to small inventory systems, I have released few open source projects myself:

 * http://odkit.sourceforge.net/
 * http://repo.or.cz/w/fmail.git

I have ample experience with C and C++, I use a good deal of python too, I have already worked on a project that uses V4L to capture video, which was a vigilance project. I have already submitted a few cleanup patches to some v4l driver projects, namely qc-usb and sqcam:

 * http://cdrv.centralnogales.com/?p=52

I make use of available open source development tools such as versioning systems (Git, subversion, cvs, mercurial or bazaar), IDEs and editors such as vim, eclipse or anjuta.

Schedule

My time zone is GTM-7:00, generally I spend all the summer at home, but I plan to have a pair of offline weeks for any eventuality.

I can start working on it by April, by reviewing design and doing prototype code, this would be usually in afternoons.

I prefer to use e-mail for communicating, I generally log into IRC too and have a personal blog where I could also add information about the state and advancements of the project.

Link to Further Information:

===================================================================================================================
===================================================================================================================

 Abstract
One of the biggest reasons that keeps people from using Linux in colleges/universities is the availability of great games such as CounterStrike and 'Age of Empires' on Windows. Avid gamers never switch to Linux fearing that they may miss a game on the lan.

The game-server-status-alerter scans the lan/network/web for online game servers, and alerts the user via a popup message in the task bar. The popup informations includes information such as the map currently being played, number of players online, IP address of the server etc. This should run as a daemon. It scans the network after every n seconds, where n is input by the user. The user may also explicitly force the daemon to scan the lan at any time. The daemon will be gui configurable. There will be an option to connect to the game chat server so that a gamer may inform his buddies that he will be a little late to join.

Detailed Description
One of the biggest reasons that keeps people from using Linux in colleges/universities is the availability of great games such as CounterStrike and 'Age of Empires' on Windows. Avid gamers never switch to Linux fearing that they may miss a game on the lan. This problem has a few solutions:

1) Port the games to Linux -: Not all games can be ported to Linux due to copyright terms. Also installing games on Linux is much more difficult than doing the same on Windows, so given an option people will use Windows by default.

2) Develop Wine/Cedega to perfection -: It will take time :-)

3) This is my proposal. The game-server-status-alerter scans the lan/network/web for online game servers, and alerts the user via a popup message in the task bar. The popup informations includes information such as the map currently being played, number of players online, IP address of the server etc. This should run as a daemon. It scans the network after every n seconds, where n is input by the user. The user may also explicitly force the daemon to scan the lan at any time. The daemon will be gui configurable. There will be an option to connect to the game chat server so that a gamer may inform his buddies that he will be a little late to join. I used it in my college. It is surprising how such a simple thing brought so many users to Linux!!

I suggested this idea on the opensuse mailing list
http://lists.opensuse.org/opensuse/2008-03/threads7.html
and received a mixed response.

I got one encouraging response from http://lists.opensuse.org/opensuse-project/2008-03/msg00238.html

Anyways, here is how the program works.

Every game client broadcasts a specific packet to the network in hope of a specific reply by the corresponding game server. I used CounterStrike digital zone for experimentation. I used a packet sniffer to read the contents of this packet. I also read the contents of the packet sent by the server in reply and noted its size. Now i wrote a simple C sockets program that broadcasts the same packet sent by the client and then waits for a reply. If the reply is of the same size as earlier captured, we read the contents (which contains information such as map currently being played, number of players online, IP address of the server etc) and then print it out on the terminal. This was relatively easy. Then i redirected the output to a ticker application's data file and made it pop up any information that is written in the file. This is what i have done till now.
I envisage adding support for as many games as possible. Separate scanner threads/processes will be spawned for each game. I know Gtk+ so i plan to make a Gtk+ gui to configure the daemon and also to incorporate a chat application that can connect with the game servers chat application. It might also be possible to connect to the audio server.
The application should allow updates very easily. The application hosting website will come out with new packet capture strings and we will keep adding them for new games. The user will have an option to select which games he wants to scan for. Adding ping/delay data will also be easy.
Currently i have only thought of implementing this on a lan. Perhaps adding internet scanning functionality will be a little more challenging. I am not sure about how to do it, but i did use libsoup once for an application.
It is being worked on by us (http://groups.google.com/group/lugsdu) currently. Just as a starter project.
To develop the full application and to test it should not take more than 2 months.

Thats all for now... thank you for reading.


Link to Further Information: