 in v bistvu, da ta snatch všeč naspejšimo, zelo da je glasba, do vodenih ne zelo, zelo dohrit. Enja bilo. To je klišan obožaj, škrat. Klišan je, klišan, klišan je program, njič v te tam počnelj. vsočenj na skuputku, in je začnil da je dalje izgleda sremotnje system. Spajsčak, kjer sljutenje, spajsčak reprezentuje vsočenje in vsočenje in nekaj predpravil vsočenje, kjer nekaj predpravil začnili vsočenje in ki z vsočenje zapazovati spajsčak reprezentuje spajsčak Namazne vse vse zvajemo čenlje. Nelaj je tudi začetilje, da je vse izgledal jezira. Zato je, da imamo čenlje in tudi jezira. Maslje in kljanje, kursor, ki je, ki bo hodilo, šebe in pozisy v remote. Res tukaj čanelsi There are sound channels for audio input and output. Usb channels, as I mentioned earlier, to allow us, they allow us to use our local usb devices like webcams, mouse, flash drives on the remote system. V tem sebe vseh, zelo se vsezajem na diskupacijenu. V diskupacijenu je tudi, da se zvoriši data, imač data, od spasnega servera do spasnega klijenja. Ale, kaj je server vsezaj? Vsezaj, tudi in aplikacija, ko je vsezaj na remu del, vsezaj, da se zvoriši. zelo površim, kako sem površim te vrši. In površim, video driver odvrši te imečne data na spali server, vstaj bo se površim. Povoje, ko server začel te data, površim je to, ko kliče. Vse, da je spali foro optimizacije. If a sealer does them, for instance, it can compress the images to save the bandwidth. Another optimization to save the bandwidth is to not send any data twice. For instance, here you can see that we are transferring much more than the image itself, we are transferring also the background, and this kind of stuff. kako Spice izgleda vse, in zelo vse imače. Tako tako. Počutno. Kako je to počutno. Preparamo štočnje demo. Ok. Zato videlem, da je počutno s Spice klientem, tudi s remodijem Vero, do vrdu 7. V red je imega, ki se vse pravimo, da se vedimo, da smo počutili, kako se prišli, da se prišli, da se prišli, da se prišli, da se prišli, da se prišli. Vse, da se prišli, da se prišli. Kako se počeš, kako sem tukaj pravila videa? Tukaj, tukaj, to je vse izgleda in izgleda. In z tukaj počeš, da sem tukaj počeš, kako se počeš, kako se počeš. Čakaj? Tako, tako, kako se počeš, kako se počeš, kako se počeš, kako se počeš. Society not phone. This is not good. Yes, so, as Parva was showing, what happens when you play a video in the ogloss, is that you get too many updates in a region, in that display area, so it makes sense to convert this image all these updates to a stream. For several reasons, it's simply not just for saving, bandwidth, but you can smooth out the connection, interface for the user is much better. So in Spice we do have support for MJPEG stream for quite a few years already. But recently we got support for also VPE8, H264, video codex formats with J-streamer integration thanks to Francois Gougier, I think from his name. So but what is J-streamer? So J-streamer is a framework for multimedia applications. Basically an application like Spice can use it to handle video streams, audio streams and other stuff if necessary. So if you think about J-streamer you have to think about two things, you have to keep it in mind, is that this pipeline based. If you are not familiar with the term pipeline is like building blocks. So at first you do some row of blocks, you construct something and then after that you can play with it, remove a block, add a block and you get everything, something different from it. So that means that is very flexible. Also is very extensible as well because to add something, to include new features you just need to play with these blocks. So that's what it means. There is a small example that I put there. J-streamer interacting with three different elements. The first element for instance, it gives this color bar input. It's like a video beam input. Also that is null from TV, you know, you get when you don't have signal. The second element is auto video convert. It should do what is necessary to present that seamlessly in the application. So let's say scale it or change the bit format, stuff like that. And auto video sync is what gives you this GTK widget and updates the display for you. Yes. So how we do use it in SPICE. We get several updates like that YouTube video and that second image there is our pipeline, our blocks, our building blocks in our SPICE server. This app source is the element that we put all our images into and the second element that goes, after you put in all that image, it will go to the second element. What we will do, it will try to encode it in some video format. So for us to get a MJPEG, VPA or H264 stream, we just need to play with that block. All the other stuff is almost untouched after you got the streamer integration. So that's pretty cool. After that, we get the stream and we can send it to the client using SPICE protocol. So basically that's it about the streamer integration and how it works internally. But who benefits from it, why it's so nice. So basically all the other clients because mobile clients, thin clients, like Raspberry Pi or small hardware, HTML clients as well because all of those clients, they usually try to lower resources from CPU memory and so on. So if you can do hardware decoding from these streams, manage these resources much better and usually from H264 in VP8, VP9, they are being handled in the new hardware. And we do have a demo about it. Pavel will be connecting to my machine, my actual machine, using a tool called X11 SPICE which was developed by Jeremy White. So the whole desktop will be streamed and Pavel will play a little bit with it. So you can see there that somewhere there, I can... Oh, it's up. So this is like what I'm calling here. It's like our server side in the desktop. I'm saying, hey, you can connect to my machine in this port. I allow you to control my machine as well. And that's basically it. It's our server side in the desktop. Okay, and I will show you that we can even use SPICE for streaming and play some games. Let's see how good he is. Yeah, if it's bad, it's not because of SPICE, it's because of me. So in general, you might see some delay. It's really less than a second, of course. But this delay is mostly because of software and software encoding, software decoding that we are doing. So it's not so light for us. Thank you Pavel. And of course we hope to do much better with hardware encoding, hardware decoding. It's actually really near future. So that, again, yes. So that brings us to future. This is like something that we want to do in the next few months. Upstream, handling better, hardware decoding, hardware encoding with Jstreamer VAPI, which got integrated in Jstreamer 110. I know that the decoding side is quite okay. The encoding side, not so much, but let's see. Of course there are some other applications that might want to handle the streaming differently. So let's say you are connected to some desktop, some remote desktop that you are actually in a call there or something is happening there. But your network flow, something is happening and the bandwidth is lowering. So we might want to do dynamic changes on the flow. And we do have a way to do that, but it needs improvement. So basically that's the main goals for the near future. And yeah, basically that's the whole thing about Jstreamer with spice integration. Any questions? Yeah, for Wayland desktop. So for Wayland desktop, we do have, for streaming side, these two will not work, it works for X11 only. We need a Wayland compositor for ourselves for that. So there are some work progress that I know of, but yeah, this is exactly the thing, we would not work on Wayland. Our major concerns on Wayland is like clipboard interaction or other features that we did not mention in this talk, like multi monitor. We have several features that Wayland, we need to integrate better. But with virtual machines it works fine, because we get driver. Ah, yes. The streaming itself works, just this tool that will not work, that we showed the game playing. Any more questions? So yeah, minimal requirements. It depends on what do you want to do. For this, so if you are just playing a video like that, we don't have numbers, but the requirements are quite low with basic CPU. You could have a good interaction with the remote desktop, yes. But if you are doing heavy handling, might have too many updates, like you saw it, we try to be smart on the updates on the display. But with streaming itself it can become very heavy. It enables you to have three displays. So let's say you are trying to do streaming on three displays, it can become very heavy. So it depends on your usage. But for a single monitor, it could be very low requirements. Like a Raspberry Pi, I saw it working quite well for. Specific parts, yeah. Well, it's something that we can change, but it's like 5900 is the basic and from there to 6000. It's up to user to choose the part. In this demo I think we use it 5,5,5,5. If you can choose. And other questions. In this case we are doing software encoding and decoding, and it's a bit heavy for a 3D game like Tux. So we got, I think, half second delay from encoding and decoding. Even you see the resolution is not that big as well. So the impact is a bit. It was software, not a network problem. If we do hardware encoding, decoding should be much better, much faster. No, it basically asks the X server for the frame buffer, so you will stream the lock screen. I'm not a very good. The question was if we plan to do unlocking stuff in the future. This is purely upstream project from external contributors, so we are not involved in it, but I'm not aware of any plans for this locking. Okay. So I guess we are running, or it's still fine? Yeah, so any other questions? No? Yeah? No, it was. For the Tux stuff we used the last from master in his github from Jeremy White from CodeWeavers. I can give you links for that if you want. Just run it and connect it to some spice client. It could be remote viewer, for instance, it just works. We didn't do anything special for make it work. We did that. Yeah, that's true. But also because, you know, the resolution here is 4x3. Okay, yes? As bigger the resolution? The question was if there are limits with higher resolutions. Yes, there are, because it's a lot of data. So it can affect, I don't know if on LAN network it's possible, like on ordinary LAN network, let's say 100 megabits. Hard to say. I haven't tried. If you have good network and a lot of CPU and you do harder decoding and you are able to transmit all the data it should work. Okay, so we will be around the whole conference. We will be glad to explain you anything related to spice. Okay? Yeah, thank you. Yeah, 20 minutes, so in 5 minutes questions. Continue for 5 minutes. Yesterday we had 5 FPS and then it was like smooth. Yeah, it's a great thing. Because of the resolution. I thought you might have changed the accuracy. We tried. We're still using the spice product. MJ, thank you. Streaming packets? Good job. Thank you. Raz, raz. 123, okay. 123, 123. Maybe a little bit. Test, test, test. 3, 2, 1.