 Good morning. We are the NG I2I group. Our project is real-time communication with WebRTC. I am Yash Trivedi. He is Rishabh Verma and that is Omkar. Now, what is the motivation behind this? We wanted to enable plug-in-free real-time audio and video communication. Now, as already introduced, Panorama is a video conferencing app already developed at CDEEP. It uses RTMP and Flash. Nowadays, the usage of Flash is being discouraged. Some of the reasons are it requires a plug-in, it is being given limited support by web browsers and devices by the vendors, and it has a long history of security flaws, malware and bugs. Now, WebRTC. That is the core technology behind our project. It stands for Web Real-Time Communications. What it does is it enables audio and video streaming and data sharing between browser clients without requiring any intermediary. It does not require the user to install any plug-in or any other third-party software. It has three main components. First is get user media. It allows you to access the user's camera and microphone. Second is RTC peer connection that sets up the audio and video calls. Last is RTC data channel that allows you to share data via peer-to-peer. Now, this is the basic diagram. So, this is client one, client two. Client one wants to talk to client two. So, it sets up an offer and sends it through the server. Client two processes the offer. It sends an answer and he processes the answer. Now, all the data that will be sent will be from peer-to-peer. No need for the server. So, peer-to-peer, video, audio or data. Now, let's talk about the solution that we developed. We have three different access control levels. First is the administrator. He is the head of the meeting. He is a necessary entity. He can grant controller permissions. What exactly are those permissions? I'll be coming to that. Thirdly, he can mute or unmute any meeting participant, any user. Now, controller. Controller can draw on the canvas. So, we have a whiteboard where the controller can draw. Then, he can share his presentation, a pptx file and he can stream local videos. And then, we have a general user. To elaborate on the features, Omkar. So, now, I will be talking about the features of our application. The main feature is, of course, the video conferencing part. We have implemented a room concept. So, whenever a user will login into a room, he will see the list of all the participants in the room. Next, if there is any bandwidth limitation, then a user can disable the video and enable only the audio. Then, we have the chatting feature. We have the public room chat as well as the private user chat. Then, we have presentation and video sharing. So, a user can upload a local file, a presentation of a video file and he can show it to all the other participants. And the presentation controls will be with the controller only. Only he can change the slides. Next, we have whiteboard sharing. In whiteboard sharing, we have used canvas. We have canvas. So, in the toolbar, the options which we have are freehand drawing. Then, we have shapes, line, rectangle, circle, triangle. We can insert an image from a local image and we can also add text. We can edit the shapes. We can resize them, change color. We can change the layering. Then, we can save the image on the client as well as the server side as a PNG file. Then, whenever, if a conference is going on and a user joins late, then the current state of the canvas will be transmitted to him and he can continue with the conference. So, our application is accessible across various devices like mobile phones, tablets, and of course, PCs. The key technologies which we have used are... This is our panel. Here, Yash has joined our room. Room name is demo. As you can see, the first participant joining the room will be the admin as well as the controller because admin is a necessary entity for a meeting. Now, Omkar will also join the same room and we have two participants in our meeting. It is displayed on the left top corner, number of meeting participants. We also have the time showing the time since beginning and the date of the meeting. We have several modes as we discussed in our presentation and we are now at videos mode. As you can see, their username and room name is displayed. On the right side, we have all the participant list presently present in our room. Here, this is the screen and it's shown that Omkar is present. This icon is for private set and this is for get audio. This set is only transmitted to Omkar. As you can see, Omkar received the message. Omkar will reply it. What am I seeing? Yes, sir. Am I seeing one machine or am I seeing two machines? Sir, you are seeing two machines. This one is displayed on there and this one is there. These are two different machines. Both of them are connected. Two different machines want to talk to each other. Yes, sir. When I do Skype, my machine should be smaller, no? The smaller? The video size. Correct. And other fellow should be big. Sir, yes. We have also an option for making our video large. We just click on the video. It will be shown. The other fellow is gone. No, sir. It's below. That is gone. Sir, it should be something called PIP, picture in picture. Standard Skype. Why you are going away from standard Skype and giving me 100 screens? Only the difference, just let me intervene. Only the difference between the thing is Skype, what we generally see is the peer to peer, one-on-one. This is a multi-party conferencing. That is why this is one-two. Even they attach three, four, five. All the windows will come together. And the person he wants to listen, he can make bigger. So, suppose who is talking, right now I am talking, it will be bigger one, rest of that will be smaller one. So, say you have one more participant, his video will be over here. One more, his video will be over here. So, these are like, I have two participants right now. See, I have four. One, two, three, four. It's just a grid of all the participants and their videos. What is the bandwidth requirement? Per stream, it is 75 kilobytes. Per stream. And this thing, this whatever compression etc. is done by WebRTC, who is doing it? It is done by WebRTC. We have done the private chat. This is a room chat. All the messages sent to this room chat will be broadcasted to all the user present in the room. Now, if a user wants only to hear the audio of another user, he will just click that button present over right. Now, Yash is receiving audio of Omkar. And, but Omkar doesn't has any effect on his screen. He's receiving the video of Yash. Now, we will switch back to video for Omkar. Now, we will switch to presentation mode because Yash is the controller. If we navigate to presentation mode, all the users are forced to navigate to the presentation mode. Because Yash is the controller, he can only see the uploading form. Presentation has been uploaded. And now, we can start with the presentation. Here, you can see, yes, at Omkar screen, we can also see the presentation. It is broadcasted to all the users present in the room. Now, controller have the controls for navigating through the presentation. And while navigating, all the users will be on same slide. We can go on first slide. We can go on last slide. We can switch between the slides. And here is the slide number for the reference of controller. Now, here is the presenter video who is currently presenting this presentation. Now, we will switch to video stream mode. Likewise, we have shown you the presentation. We can also upload any video. It will also broadcast it to all the users present in the room. As you can see, the video has been transmitted to all the users. What was the first mode? This one. What is this one? So, this is video mode. There, you will see all the videos. Correct. And we have shown you presentation and video stream mode. Now, as Yash is the admin, Yash will make the Omkar the controller to control Canvas presentation and video. As you can see, Omkar had requested through the room chat that I want to become the controller. Now, Omkar is the current controller. On the screen, we can see that he is the controller. Now, Omkar has switched to Canvas mode and Yash is also brought to the Canvas mode. We have a whiteboard shown to all the users and the toolbar which is accessible only to the controller. Now, on the toolbar, we have several options. Omkar is now typing the text. Now, Omkar is drawing a line which is transmitted in real time to all the user present. We are drawing a circle. We can draw any shapes, square, triangle. Now, we have also an option to upload an image to a Canvas. Now, this image is uploaded to the Canvas and it is transmitted to Yash also. Now, we can resize our eraser size through this brush width. Now, we will switch to edit scene. In the toolbar, we have two modes. One is draw mode for drawing the shapes, freehand drawing and another is edit the scene. In edit the scene, we can resize. We can change the color of any figure and we can rotate it. We can do whatever we want and it will be transmitted to each and every user. We can bring our object in the front. We can send it back also and we can undo, draw a figure Omkar. We can undo. This figure will be, this figure is gone and we will redo. This figure is up on the screen. Now, Yash will be joining with one more client to the same room. Yes, Yash has joined with one more client and as you can see on the second client, our current Canvas state is saved and our meeting participant increases to three and time since beginning is also saved. Here it is showing eight minutes and here also it is showing eight minutes and public room chat is also saved. And here is the presenter video. Currently, Omkar is the presenter. Now, leave this, log out. Now, this person has left and this video is also not shown. Now, I will be joining with you. A couple of other things. This thing here, I am the admin. So, you are just seeing my screen. I am the admin. This button here allows me to mute a user. See, I click on this button. Omkar will be muted for all the participants. So, his audio will not be transmitted to any participant. This small icon here lets all the other participants know that Omkar is the current controller. If I take back the control, so this indicates that I want to make Yash the current controller. Now, I am the controller. That sign is gone. I can see that I am the controller. Now, let's say I mute Omkar. So, he can know that he's muted. If I unmute him, that is gone. He can request control and we'll just try to do something using a mobile phone. We're just waiting for Rishab to log in. Okay. So, Rishab just joined. You can see his video here. He's using his mobile phone. Now, I'll make him the controller. So, now Rishab is the current controller. So, the canvas just got cleared. He is the controller. Whatever he's been drawing is transmitted here and there. And one more thing is, I am the current admin. If I log out, the meeting closes. Say, I log out. So, it's notified that the admin is left. Your meeting is now closed and it's done. That's it. I have got a problem. Okay. You have got too many tabs. I have two problems. Okay. One is, why is the controller required? We do not want to put the restriction that only the admin can draw on the canvas or present a presentation file. No, that's fine. Okay. But why I need in a conference, somebody with superpowers? Because I think, okay, let me continue. That is one basic problem. Meaning, you should have a flexibility to have a conference without a complete peer-to-peer conference. Okay. That is my one thing. Because you are always saying that this fellow, this fellow, this fellow. Okay. When early video conferencing thing, okay, early ones. Okay. There were so many video conferences going on. The moment somebody speaks, the control goes automatically. Okay. Right. It was always there. So, his screen will come because there were only two pictures. The one who is transmitting and the listener's picture. So, if I make a noise, okay, then I become visible to everywhere. That was early video conferencing which we used in TCS. Early. One of first video conferencing tools in India was installed in TCS in Nautil. Okay. Just to try the customers thing. Okay. So, it was always without any controller. Okay. So, you have to look at a solution for that. The second problem I have is with so many tabs. Okay. Why are you restricting it to a presentation or a canvas or anything? Why can't I use any tool? Okay. Maybe he is a concept tutor. Why that cannot be transmitted? So, basically my thing is if I look at it, why don't I have a screen-to-screen mode? Whatever is available on my screen comes on other people's screen. Okay. You are talking about a camera. Now, you put something, only if a canvas, my build canvas is there on the screen, that will be visible. Okay. Why not screen-to-screen? May I just go into video mode or I go into a screen mode? Then that will become very simple. I can run whatever tool I want. I can play a game. Commando game, it is visible everywhere. Okay. So, why this restriction? That was my second comment. Simple. I think what you have done is good, but I think we need to start from the basics. The moral of the question is that do you have screen-sharing feature? That's all. No, we do not have screen-sharing feature. One rationale behind that. In sharing feature, then can I get rid of all your presentation, etc.? One single feature, will it replace all kinds of software you have? Yes, but that will add a bandwidth cost because screen-sharing is again video. Right now, what the canvas is doing is just JSON objects. So, using bandwidth for a video and instead of using that just to send JSON objects, there's a big difference in the bandwidth that is being consumed. What are you sharing when you share a canvas? You're sharing objects. Say, I draw a line. The main thing I'm sending is top left, bottom right or top left length of the line. That is all is being sent. But that was freehand drawing I saw. Freehand drawing is one where you have to send all the things. For any shape that you send, anything that can be defined, let's say from the top left is 00. Anything that I can say x1, y1, x2, y2 will be sent as x1, y1, x2, y2. It will not be sent as a stream of points. It will be sent as a single object which will have a length. It will have starting coordinates and coordinates. So, I'm not streaming the entire screen. I'm not sending it point by point. Point by point is sent only once when we do something called real-time drawing. So, if you have noticed what is happening is, if I'm drawing a line, say I start a line from here, I drag it all the way here. Only after I release my mouse, will it be transmitted over there? It is not transmitted real-time. I have to mouse down, drag, mouse up, it is transmitted. What real-time drawing does is it sends a stream of points. So, if I'm moving like this, all the points are being sent at the same time to the client. That is an additional bandwidth cost as well. Real-time drawing has more bandwidth cost than a line. That is why we are sending objects. Initially, what did you show? Videos. So, that means when I start the conference, video bandwidth is established. So, when I go from the video mode to the screen mode, am I going to utilize more bandwidth? Because yes, you will be, because you are sending your screen video as well as the other videos are still being received. Why? Because that is up to you. If I want to transmit my screen, I should be allowed to make faces. I say transmit my screen and keep dancing. Why should you send that I am dancing? What is the point? Why are you treating the two bandwidths as separate? It is either the video, either the camera is sending or the screen is sending. If I go into that mode, can I get rid of everything? It will take time to establish connections after that. Already established connection. Yes. Videos are going on. Correct. Now one person, any person decides I don't want to send video. I want to send my screen. So, is there any impact? Yes, there is. That requires a re-establishment of connections because that is how WebRTC works. That is why it is peer-to-peer. You haven't heard me. Say, no. Say, I don't care. Okay. My people have always heard me. I don't care about what is this WebRTC. I go from the functional viewpoint. Functional viewpoint is if I am sending a video, I require a certain bandwidth. If I am sending a screen, I probably require lesser bandwidth than a video, I think. Agreed. Probably, most probably. I don't care what is WebRTC. I want to have a functionality where there are 100 users. 99 are sharing their video. One is sharing screen. That's all. What I do on the screen is my business. Then, does the system become more general? Does the software load reduce? Can I do anything not restricted to only I can draw and somebody has not allowed me to draw Beijing curve. So, I can't do it. By presentation also, I can do. So, what is it that I cannot do if I do with only these two elements? One is video and one is screen. These are only two things I transmit. Third thing, sound if it is separate. Sound comes along with video with screen whether screen sound will not be there or screen plus sound. Sir, we want more interaction. What is the difference if I implement a system like this over yours? Sir, we thought over that, but we need more interaction between the presenter and all the participants. If I draw on the canvas, the presenter can show by his hand movements or any other objects present over his own chair which can be shown on the presenter's video. That is why we are using the canvas and the presenter's video. So, if you just stream his screen, you won't make that video. If you just stream his webcam video, you won't make the screen video. That is why we have two different streams coming. We don't have two different streams. That is why the original streams are not disconnected. That is why they remain established even when you go to the canvas board. Very simple. So, what you are telling me is that if again I care a hoot about your software, if I want to also do something other than the screen, I should be allowed to. Yes, sir. Correct. So, that means I can transmit my thing by saying please make me one fourth. It's still okay. What I am saying, the flexibility I have if I transmit a screen versus all the various things you have developed, that benefit is much more than anything I can see or not. Because then I don't have to wait. Some new feature comes in, some new technology comes in. I don't care because screen is going to be there. Screen is permanent. Picture is permanent. I don't have to reinvent anything. I don't have to write any other software except whatever I have done and whatever I think. Okay. So, you are only thinking in terms of bits and pieces. I will allow you to draw a line. Okay. Bye. We do play. Again, this is one application means one tab. If you have 10 applications, then the whole screen tab will be filled. Okay. Instead of that, the simplest thing is screen and this according to me. Actually the screen sharing and desktop sharing are the two features in a row. The reason actually we required an all standard video conferencing software has got the presentation video, such kind of feature because they give a lot of dedicated quality and flexibility for the user. Once you upload your presentation, it is available in a box. You are on the move also. You just start it from anywhere. Suppose you are a sales guy on your box which is available in the login. You just upload the presentation. All the gallery is available. You just start it, present it. So, every time sharing, if you are using mobile or tablet and other thing. So, every time it is not possible that your content is with you. So, that is why all video conferencing software, if you say the Skype, Hangover, Blu-Blu Button or WebEx, whatever, they all have got this standard feature. So, this is the standard suit of feature that all standard software have. We have to match up with their own feature list also. But yes, desktop sharing and the screen sharing. These are two features, eight to be developed. They are also in a row. Once you do that, all the other features are not required. No, the quality you did not get in a screen sharing. Screen sharing is not a, this is the solution of poverty. What do you mean? I see what I see on my screen, you get, no. Sir, see what we wanted. Interactive, we cannot have it. I mean, in the canvas, you could see that I can edit and then change the control and then he can edit. That is not possible. My dear guy, when I transmit both, I can say that my entire screen will occupy half the screen at the target. What is the big problem I am talking about? But he can't get the same objects. He can't get the same canvas. He will. It is on my screen. But he can't edit it. He can't just see it. So, sir, either. I can't edit it. No. So, this is on your screen, right? This is on your screen. You want us to transmit this much desktop share. What we wanted to do was send that also. Send that video also. Send that also. All of the screen. No. He has said, if I send a screen, okay, that is not editable. That also I can get rid of, but that's okay. I'll accept that as a thing. I'm not convinced at all. Sir, either you stream two videos. I'm here. I can discard all your current solutions and come up with a solution which is very elegant, very easy to use because why should people talk only about presentations? It's my screen. I can draw anything on it. Sir. So, okay. What I am saying is, if you wanted to do this, either according, if you wanted to do this using WebRTC, you would have to send two video streams. You can take my words. No. I'm just sending JSON objects and one video stream. This is not a video. This is just JSON objects. It is not taking the bandwidth of a video. If I send a series of images on a screen, I can take care to send only images after they change. No. I'm not sending images. That is what I'm telling you. If I give a screen sharing, I need to share the screen only after the screen changes, correct? So, it's the same as a video compression. I'm not sending a video stream all the time. I can actually compress. Okay. And the memory changes only I have to change. That is still an image. You agree that image bandwidth is higher than text I don't have to send the full image. It's like video sending only, only after the image changes I send. Okay. So, either you are sending a video Only the pixels that have changed, meaning exactly. Actually, I'm implementing your canvas only. Okay. When I do free hand on the canvas, you are only sending what has changed, right? That's all I'm changing. Okay. You know, this is junk. Okay. A new solution which does only these two things. Okay. We'll come and kill everything because what you are thinking about is video conferencing. What I'm thinking about is group sharing. Okay. I don't care about your video conferencing. The bandwidth is going to be cheaper. Okay. The devices are going to be stronger. Okay. I should be able to connect some group of 10, 15 people together and do some activity on the fly. That is why I say, I don't need a controller. That is the solution we need. So, if you do not need a controller, whose screen are you going to share? Whose screen? Okay. The controller is the one who's drawing on the canvas. So, you have no controller. You are going to share 10 different screens. I'm sending 10 videos. I'm just saying there's no controller. So, if there is no controller, everybody can edit the screen. Can decide. Why? Okay. Another fundamental thing. Okay. I hate authority. Okay. So, it is for the group to decide. I'm talking about all peer-to-peer groups. I'm talking about small groups. There's no solution right now for small groups to share using something called video conferencing. They don't want to share presentations here. So, why can't 10 people talk to each other or have a video call with each other? Okay. And share whatever they want to do. There are only two things. One is video. This idiot has got a camera. Okay. And he has got a screen. That is there in all instruments. All I need is technology to connect. Okay. I'm not talking about video conferencing. Video conferencing is for business. I'm talking about for simple people. Okay. A solution is required. If your web artist is there, you should build a solution. So, sir, if you want to talk and share videos, this is where you do it. What is the problem here? Talk and share. Okay. Don't use it. Don't use it. Use these videos more if you want to do or you want to talk. I want to share my back, whatever you call it. What do you call it there? Okay. So, it is what you are restricting. I'm an ordinary user. I've got a device, okay, which has got a camera and a screen. You are not allowing me to share my screen with 10 people. Why can't you? When the technology is there and when bandwidth is there. I'm assuming bandwidth is not an issue. Bandwidth will no longer be an issue. Okay. So, that is one assumption that we were working with because I think that is still far-fetched. I think what you are saying that bandwidth is not an issue is far-fetched. Two years bandwidth is not an issue. It's not far-fetched. Two years. We have got 4G coming in now. Okay. Sir, 4G is something that you and I can afford, not everybody in a remote place can afford. Now 4G, everybody will be able to afford in two years. Okay. We have, we have seen this mobile starting in 1996 with rupees 16. Okay. 1999, around 2000. Okay. Now everybody in a uncle has got mobile. Okay. And in the world, change is very rapid. It is becoming rapider. In two years bandwidth is not an issue. And if you are, and if you are building something, you don't ever build anything for current technology. If you want to build something, build for the future. Okay. Otherwise you are not ever going to be successful in life because current is dead in two years. Okay. So, if you are seeing bandwidth is becoming cheaper, you project it. It is going to become more cheaper. Sir, right now 3G is 250 rupees a GB, right? I don't think people in villages, I am an old technology guy. I don't know it's that way as much. I think video streaming is going to be a problem in bandwidth. If you do not, 2G, you cannot stream a video. Okay. Okay. Let me, let me summarize. See what they have, what, what they have developed is the based on our requirement. Let me take the responsibility now. This is based on our requirement and our requirement is not our requirement. It is the normalization of features available in top class, all video conferencing solutions available. I already mentioned that, what the Cisco WebEx is giving, what Skype is giving, what Hangout is giving, what Big Blue Button is giving, even what ABU is giving or what actually Panorama is giving, what that is our solution. So, the requirement has been given and based on requirement, they have developed. But yes, you say that there should be some solution wherein there should be a sharing of the things. Yes, those two points are on the wish list that we should share a desktop and we should share the screen also. So, once this feature are developed, I think that it will be a suit of features out of which whatever somebody want they can use. So, they will give the more flexibility to use for the audience whatever they want having an entire umbrella of the picture. Only difference is you are saying as we go along, I have got 1, 2, 3, 4, 5, I will add another 10. All I am saying is remove all the nodes. Okay. That is the basic difference. You are doing incremental addition. I am saying for the future, okay. None of this is required. Possibly. No, possibly not 100 percent. There is no possibly about it, okay. Because you are now catering to a requirement of what he says. The people who can spend 250 rupees or whatever, you are looking at business people doing video conferencing. What I am looking at is the people need a solution, the ordinary folks need a solution, the ordinary folks who can share a bandwidth need a solution. They are not going to use this. Currently, this is only for people who can afford, okay. Now, you are trying to build a solution, a cheap solution of people who can afford, okay. That is incorrect. All the people who can do business conferencing may as well pay lakhs of rupees. I do not care about them, okay. When technology is available, when bandwidth will be available, what will ordinary person use it for is where I am coming from, okay. You give the answer, you have got audio conferencing. Yes, I have got audio conferencing, but I need video conferencing plus screen sharing. Audio is currently what I can afford. Video is what I will afford in two years. Certainly. Okay. That is one aspect. Okay, okay. Time out. We are... Hello, thanks.