 I am representing my team of video chat application, myself Ruchit Gandhi from VNID Nagpur. The title of our application is video chat application over Wi-Fi. These are our group members. The main contents which I am going to brief you about in today's presentation are aim and objective of our presentation of our application, advantages, the list of features which we have embedded in our application, the process flow, the application features a short glance of all the features, the challenges faced in our code writing and all, the take away from this two month project, the practical applications of our application and the future announcements which can be done. The main objective of our application was to develop various types of communication between peers over different Wi-Fi access points but over the same network. The main advantage of this software is that the application is that it is involved with a negligible communication cost, so there is no cost involved in it. The list of features which we have put in the application are first of all file transfer one to one, multi user text chat and file share, sharing between a group of people, audio call one to one, audio conferencing between a group of people and a video call. The process flow, basic process flow between the client and the server is, the client is using UDP communication with the server to log in and all and basically between the two clients, there is majorly TCP protocol being used. First of all features file share one to one, it basically makes use of TCP sockets. The main file to be shared is taken from the internal storage of the device which is sharing and it is broken into chunks of bytes and it is sent to the other device and there it is automatically stored in its internal storage from where the user can see it. The next feature is multi user chat, it involves mainly the group chat option, a group of people can talk to each other simultaneously and there is also a file share application embedded with it which helps to share files with a group of people. The main mechanism going behind this is a listening thread is always going on each device to listen to the threads, to listen to the request which are being received from other users and messages in the chat are being sent as string objects to the other users and on the other hand they are received. Audio call and conference, this makes use of TCP as well as UDP sockets. The TCP sockets is basically used for the communication for the message sending and between two clients and the UDP is the main feature for sharing audio, the audio packets. We are, what we are doing is we are breaking the audio into byte buffers and sending it through UDP packets and it is received on the other side and played. Separate threads are being working on each device, one for playing the audio which is being received from the other devices and other separate thread is for recording and sending my own voice from one device. Next is the video call application, it also makes use of TCP and UDP in the same way as audio. In video call the video and audio are being sent hand in hand like in one packet video frames are sent and accordingly audio buffers are sent together in one UDP packet on the other side on the receiving side it has been decoded by the frame length and the audio length which is being provided. The challenges faced in our project development and the solutions for the most important was noise. It was solved by using external headphones we had issues with the AKAS tablet speakers. So we used extra and the mics which we were listening. So we used external headphones. Data loss which was also one of the issues which had to be tackled which was used by reducing the buffer size since we were sending the audio and video in buffers. So it was critical to handle this issue. Network problems that was solved few days back by using dedicated Wi-Fi access point. So the traffic is less on that access point so we get a good network. The delay issue we do not want delays to be involved in file share and group chat things so we used multi-threading so that simultaneously work is going on with each user. The take away from our two month project basically we got to learn these things Android of course Java socket programming on the whole Linux programming and multi-threading concept in detail. The practical application as I can think of about these project is that our project our application works over across Wi-Fi networks in the same network across different Wi-Fis over the same network. So it can be used in institutes for delivering video lectures like a professor is in one Wi-Fi across one Wi-Fi and he can send videos video lectures to people on the same network but across different Wi-Fi access points. It can also be used as a sharing notes and all study matter because of the group file share option we have for study sharing study matter. Future announcements which can be made to our application is video conferencing we have made a one-to-one video call so it can be extended to video conferencing between a group of people. Improving the functionality of order conferencing by this I mean that we currently have that two three people are added at the same time. It can be improved with the mechanism that already two three people are there and they can now add one more user in the application and leave one more user while the call is going on multi-tasking we have currently designed that if a currently audio conferencing or group chat is going on the other application will not work like video call will not work so that can be improved like multi-tasking we can do group chat also side by side and the audio call is also going on side by side that can be improved. One more in a group chat we have designed that only one client can be involved only one of the group chats he cannot activate two group chats simultaneously so this can be done improved. Encrypting algorithm which should be used for basically the main server authentication issues issues which we have not used and further enhancements can be based on testing we have actually not tested this application for long video lectures like one hour or two hours audio calling for our two three hours so that can be checked and enhanced. Now I would like to call my friend Sumantra to explain the server. Thank you Ruchit good evening all myself Sumantra Chattopadhyay from National Institute of Technology Agartala and I am here to give a demonstration on how our video chat server works well first when the Java application is run for the first time it shall ask for the administrator password since I have already set the administrative password when I ran the Java application for the first time so here I am entering my administrator password and clicking the submit button. Now this is our main interface the server interface it consists of three tabs the server status and clients the server tab consists of the server log and three buttons start server set up server save and clear log. Now the administrator must before starting the server the administrator must set up the server first we have used MySQL server and this server consists of a database which has which has the authentication details of the clients as well as the IP address. For this for the connection through JDBC we have to fill fill in these details the host name the database name user and password simultaneously the admin can create the database right now I have already created the database so the error error message came into the log that can create the database because it already exists similarly it would happen same for the table. Now let me save and clear the log this log is maintained as a text file outside now coming on to the status this status tab consists of two portions the upper portion would say the status of the registered clients whether he is online or offline right now no one is no one has logged into our servers so that is why it is showing that no one is either online or offline. Let me start the server first here you can see that all the registered clients are right now offline no one has logged into the server that is why everyone is offline. Now going to the last tab that is clients this is this tab is responsible for registration and registration of the user we have encoded this portion that the registration would be from the server side not from the client side. So on giving a username and a password on clicking the register button the user would be registered similarly giving only the username of a already registered client and clicking on the unregister button it would unregister the client this the view database button gives the admin the current state of the database the database consists of the fields username IP address MAC address password and busy username and password are set by the server side but a client can change his password through the module in our application IP address and MAC addresses are updated right before right after the login happens from the client side. The busy field would show the availability of a client to accept a call well that is all from server side now I would like to call upon stage Nishant and Sankal to give the demonstration on our android application. Thank you Sumant myself Nishant Chowbhai I am from triple item golly I am going to demonstrate our video chat application when we first starts our application or login page opens up the first thing that user has to do to enter the preferences like server IP and the frequency if application is running first time on the tablet there is some default IP and this frequency is used for audio call right now my server IP is 10.57.1.183 so I need not to set this IP and now user can login to his account by entering username and password registered on server before login make sure that your Wi-Fi is on if your Wi-Fi is not working it will turn on your Wi-Fi now username I have provided my correct username and password so I am logged into server this is our home screen on home screen there are two buttons on left and right upper corner on right upper corner there is a button to add any new contact user can add any contact by provide UIDN name UIDN name of any contact like I am entering I added as a to my contact list but that is already present on in my contact list so it shows the tools that he is already in my contact list. I can on the left side this button is for getting all the options you can navigate to any of the skins like home skins contacts the skins if he presses the contacts he gets all the contacts saved on his device on the each contact there are two buttons on right most position first button is to get the options he can pick any option like file setting audio call or video call and like I am I am selecting file setting this Sankalp Sankalp is getting a call from me he accepts the call and my call status is changed to corrected now I can browse any file from my internal or external stories like I am sending this file this listen column .flv 19 Ambi file it takes hardly 10 to 15 seconds to transfer and in this process this has been transferred successfully in this when I select the file transfer request to Sankalp it sends a message to server that Nissan wants to transfer a file to Sankalp server of hatches the Sankalp IP from its database and send give it to me and then I make a TCP connection to Sankalp and through this TCP connection file is transferred to Sankalp and the next second button on each contacts is to delete that particular contact when I click on this button confirmation works opens up with the two options do you really want to delete that contact from your contact list nor yes if I confirm that contact is deleted from my contact list through this module user can change his password on the server like I am using Sumatra Sumatra's account his current password is Sumatra if I have provided the correct old password and my new password and confirm password matches then that password is changed on the server password has changed now I call Sesh to explain the group chat feature of our application myself Suresh Pankaj from National Institute of Technology Jamshedpur I will explain the group chat ok we have an option here of group chat in our menu just you have to click on the group chat and it will show your contacts so I am selecting suppose all contacts to start a chat now when I press the start chat button what it do what it do is that it contacts the server which is the IP address and stores so we have an IP address of all the peers who are online now we can start a peer to peer communication so when I press the start button it fetches the IP and starts the chat I am having the IP address of Ruchit and Sumanth and I am sending those IP address to Ruchit and Sumanth there is my IP and those both people's online IP so they will get a notification here they both are online and they are available in the chat room now if I send a high message they are received to all the peoples in the group actually so if I want to share a file from my SD card suppose a file a file is you just have to press the send file button and the file is sent to all the users which are online in the group so we are using multi threading here to simultaneously sending all the files to all the people see the file received is successful on Sumanth so this is how a chat will work now we will call Manisha to explain the audio call feature. Good morning everyone I am Manisha Varunwal from Jadavpur University and I am here to demonstrate the audio call I know you all are very much impatient by now please have some patience we have some interesting features to show when you have your login screen you are on the home screen of your app when you want to make an audio call to someone you can click on the contacts contacts in the left side of your app and if you want to make an audio call just click on the name and there is an option on the right side and you can call that person by clicking on the audio call in that option and if that person is online then it receives your audio call and if not then it will not receive your audio call as here I am trying to call my friend Richard which gets the ringing tone which is via TCP connection and if he accepts the call then the call is established when the call is established all the audio packets are sent through the UDP streaming the handshaking is done by the TCP socket connection and when the caller rejects the call via the red button the call is stopped behind the scene we have two threads the play audio thread and the record send thread the record send thread records the audio packets and sends it via UDP and the play audio receives the audio packets and play it via the audio track the record send uses the class audio record to record the audio packets and the handshaking is done by the TCP connections thank you now would like Ajay to proceed with audio conferencing. I am Chena Jain I am from VNID Nagpur we are here to show you video call feature in our video chat application here as you can see we have contacts and when I try to video call he gets the request from me and I got the request from her for the video call I am going to accept it and now we are connected now we can start the video call as you can see you can see her feed on that large one large picture now you can see and the audio is also clear there so the mechanism behind this is what we are doing is we are when I send a request to my friend he gets a the server gets a TCP request and he sends me the server sends me IP address of my other friend who I am going to video call for as soon as I get the IP address I establish a connection with him he gets the request to accept or reject the video call when he accepts it I start to send packets to him the how we are making the packets are we are taking we frames from camera as in the form of images and that we as during the time you get one frame from the camera in that time we are recording the audio as well and this we are saving in a packet and along with it we are sending the frame number the frame length the audio length and sending it to the to my friends port and on the receiving end he is getting the packet extracting it in two different buffers the video in the different buffer and the audio in a different buffer and these two I will send to a different thread the two threads are run simultaneously so that the synchronization issue is resolved and also there is no lag between audio and video and that is how the audio and video are run simultaneously we can increase this range like we are side by side only but we can increase we have tested that we have tested like one was in Akash lab and one was here so it can cover the whole IITB network for the video call we have tested that thing but we are not able to because show you because there is no one in Akash lab now the problem now I am talking going to talk about the problems we faced and what we can do to make it better like in video call we face like Android media framework does not records in the mp4 and 3gb format and that formats are not streamable so we found a solution for that like we took the camera feed and recorded the audio simultaneously and then we packed them and send mp4 and 3gb formats are not streamable cause their header that is move which contains the video information is at the last and we have tried other solutions to like WebRTC but we found that it has browser dependency like and then other solution was media server we could have used media server but that also equal flash player dependency in the browser so we found this solution and this is the pretty raw mechanism for the video call we can improve it by like we can use image compression at the sending end to decrease the package size and that will increase the communication speed and second thing is we are using UDP streaming so we can shift over to the other protocols like RTSP, RTMP and we tried that RTSP, RTMP and we tried RTMP thing but we did not found the open source libraries for that so we are doing raw socket programming and you are using UDP streaming. After you establish the TCP IP connection do you really need a Wi-Fi access node or is it direct direct. So it is a peer to peer communication so if I remove the Wi-Fi access node is still ok. No sir you can remove the server Wi-Fi access is required. Now what are the limitations how many video chats I can do with a Wi-Fi server. Sir we have tested 3 simultaneously. 3 simultaneous on a Wi-Fi server. It can be extended sir. You did not test till you failed. No sir we did not test. You had some group things no. Group chats. Yes sir. What are limitations in the group chat. Sir the limitations are we are having a group chat with only one group at a time. We are not having a person involved in 2 to 3 groups like if he is involved in a particular group he is not able to join. That I saw how many what is the limitation of Wi-Fi access point. Sir we have tested for 10 to 12 peoples in a group and they can chat simultaneously they can share files a file. If one person sends a file all the others are receiving a file but simultaneously you can send a file you can receive a file but the limitation is you can only receive 3 files at a time because we are not enhancing that key. We have 10 persons are sending 10 files simultaneously and you receive 10 files simultaneously because the tablet has a less bandwidth actually. Ok. Thank you Thank you sir. You have that actually.