GithubHelp home page GithubHelp logo

fossrit / open-video-chat Goto Github PK

View Code? Open in Web Editor NEW
17.0 19.0 10.0 5.43 MB

An open source video conferencing tool for the XO laptop

Home Page: https://fossrit.github.io/projects/open-video-chat

License: GNU General Public License v3.0

Python 96.59% Shell 3.41%
python gnome3 gtk3 gtk3-interface sugar xo-laptop gnome gtk sugar-activity deaf-communications

open-video-chat's Introduction

Open Video Chat

Open Video Chat is an open source video conferencing activity for the XO laptop. This project was originally started in March 2010 with funding from the National Technical Institute for the Deaf in Rochester NY, and continues with RIT HFOSS course and Google Summer of Code in 2013.

Focus

The original focus was to use GStreamer to provide acceptable frame rates for sign language communication (estimated somewhere between 20 and 30).

Current GSoC 2013 objectives are to get it running again on Sugar and porting a pure Gtk3 implementation for cross-platform compatibility.

Current Features & Status

  • Sugar3/Gtk3 Interface
  • Gtk3 Cross-Platform Interface
  • Multi-Channel TelepathyGLib Text Chat

Planned Features

  • Farstream Video & Audio / RTP
  • Sugar "Buddy" Contact-ID Conversion
  • Higher Resolution/Scaling
  • Performance Improvements

IRC

The contributors of Open Video Chat frequent #rit-foss on freenode

Mailing-List

Fedora Hosted OVC Mailing List

Copyright

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Linux Cross Platform Instructions

Execution

The application can be launched from command line via the launcher script:

chmod +x launcher
./launcher

Alternatively you can run the launcher through python:

python launcher

Installation

Simply download the repository files or unpackage the distributable copy to a folder of your choosing.

An example of proper setup (requires privileged access):

sudo mv OpenVideoChat.activity /usr/local/ovc
sudo ln -s /usr/local/ovc/launcher /usr/bin/ovc-launcher

Then you can access OpenVideoChat from anywhere while in command line via ovc-launcher.

Adding it to Gnome3

To add OpenVideoChat to the Gnome3 graphical environment, you will want to create an ovc.desktop file with contents similar to:

[Desktop Entry]
Name=Open Video Chat
Comment=FOSS Video Communication Tool
TryExec=ovc-launcher
Exec=ovc-launcher
Icon=/usr/local/ovc/activity/activity-video_chat.svg
Type=Application
Categories=GNOME;GTK;AudioVideo;Video;

Place this file in /usr/share/applications/ and it will now be accessible from Gnome3 either searching its name or its icon.

Local Installation

You will not be able to install a symlink to command line without privielges.

However you can still execute it, and add an ovc.desktop file to ~/.local/share/applications/ to make it accessible to only your user. The path for TryExec and Exec will need to be changed according to its locally installed location since you have no short-hand command.

open-video-chat's People

Contributors

cdelorme avatar decause avatar franrogers avatar jenneh avatar jlew avatar lmacken avatar tjr1351 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-video-chat's Issues

Sugar datastore multi-user

Currently we open a TextBuffer per contact established, which will retain a chat log for each user.

To support retaining this information we need to better understand and implement the sugar datastore, and a cross-platform alternative (maybe just writing to a file?).

Select Active Account

Currently the UI for account management displays accounts but does not allow the user to select which one is activated, nor does it indicate the active account.

Currently it uses the first available, but the logic to select the active account, and an indicator of some sort as to which account is active should be added.

Refactor Sugar GTK3 Interface

Using the wireframes and previous experience with Gtk3 revise the Sugar interface to better match the cross-platform design and to reduce loaded components where able.

Build Video Stream

Build a video stream and get it working over the network, using the test data for 1.0 to 0.10.

Incoming Chat Indicators (Aesthetic)

Like the active account, it would be nice to have indicators for any Contact's who've send us (unread) messages. Perhaps even adding a filter to display only Contacts with a TextBuffer.

Multi-User Support

Using the local user state objects allow multiple user support with user selection menu for video.

Track User State

Add objects to track connected users and their state individually.

Identify Jabber Methods

Identify cross platform methods with Telepathy of searching and listing jabber users, and any other forms of communication that can be used.

Network Stack Dynamic Account Retreival

Along with an eventual account management interface for cross-platform, the ability to select from available valid accounts should be implemented.

The current implementation only allows the first to be used.

Populate User List (Current Actions)

TelepathyGLib uses a listen-for and establish-with connection system.

Therefore we have to start with user selection from inside the application for cross-platform compatibility (unless we want to deviate the designs completely).

Chat Message Sent Confirmation

The method to send a message accepts a callback method for when the server has received it. This would allow an aesthetic modification, such as grey to black text, to indicate a message was processed and not dropped.

Telepathy Processes

Support for multiple channels, user identification, registration, and investigation of tubes for things such as dbus commands and streams.

Document Required Components

Clearly identify all required classes, objects, components, and requirements based on the activity diagrams for development.

View Password Icon

Add to account_manager.py for the GtkEntry used for the password. Icons can be added to either side with tooltip text and click functionality, this should be used to create a way to show the password.

Multi User Management (Current Actions)

Since we need to use a list of users for establishing channels, we should begin the ground work now for multi-user communication management.

Ideally we want a text buffer per "established" connection, which would allow us to retain chat history per conversation.

The problem becomes handling channels.

Method one is to have a single set of three channels in the network_stack that are "shared", which means when switching contacts we close the channel to open it with another user. This also means switching users with active video chat would have to close the video chat (or display a dialog to confirm?).

Method two is to create a contact class, which carries its own channels, allowing us to keep them open and continue to accept and manage conversations.

Research Private Channels

How to create a private shared channel between two users.

Currently running tests to figure this out.

Add RTP/RTSP Protocol

RTP could be used to encode and further improve upon latency. May not be possible in 0.10 GStreamer connections.

Create Wireframes

For a consistent cross platform UI, using the Sugar original create an outline of the OVC GUI.

Handling for TpAccount `status-changed`

This is a new/planned feature.

By connecting to the signal status-changed on both the users account(s) and the contacts we can handle various situations such as lost connection for the user, and status indicators for contacts in the list.

Account Management (Current Actions)

We need to implement a new toolbar button for account management, and an account management grid.

This menu will swap with our Gui GtkGrid.

It will be used to register or select from available accounts when running the application.

By default the application assumes the first account only, which is a problem.

Active Account Indicator (Aesthetic)

Non-Functional enhancement add an indicator field with an icon to depict which account is currently active, OR find a way to select the active account in the list from code without triggering the callback recursively.

Integrate Graceful Exit

When a user exits the system does not receive notification and keeps channels open, we want to fix this by throwing in handling for graceful exit.

Repository Planning

Find the best approach to separating alternative platform code in the same repository with the least amount of redundancy.

Chat Decorator

A system to keep track of the iterator positions in the TextBuffer's and allow for decoration via tags to add boldness, colors, and font sizes would be very useful to make the system more aesthetically pleasing and capable.

Complete GStreamer Reading

GStreamer has several chapters of organized documentation that should be read and fully understood to make the rest of the project easier.

Log Category Cleanup

Bad habits led to all log output being marked as debug, which ideally should be marked according to importance.

Go back through all output and adjust according to whether it is info, debug (verbose info), error and warning messages.

Account Creation & Deletion

The cross-platform release requires an account management system.

This should be able to create and delete accounts, but time did not allow integration.

Connect Toggle Buttons

Allow the user to switch incoming and outgoing video and audio on or off, allowing for just one at a time to be in use, to reduce bandwidth consumption and CPU cycles or for other reasons.

Loading Icons

Icons in menu bar with related toggles, or on video display for preview and incoming video when loading such as booting webcam or waiting to connect the network stream.

Telepathy Stream Communication

See if Telepathy supports inspecific methods for UDP communication such as with streams, without needing an IP Address, otherwise find a method to grab the IP Address and distribute it for communication.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.