Git Product home page Git Product logo

Comments (8)

jrsnen avatar jrsnen commented on June 19, 2024 1

Ok, thanks for your extensive response.

Take it with a grain of salt. I'm still learning these things and I would not be surprised if I didn't know something crucial.

Hmm, ok. That might be a problem for me. Because HEVC is even more resource-intensive than h.264 and VP8; no hardware acceleration will be a probably a problem for resolutions >= FullHD? Especially for passive cpus. But I don't know how far it can go with fast coder preset.

You are right. At this point it will probably be difficult to run high resolutions on low-end CPU with Kvazzup. Kvazzup is capable of 4K calls, but it needs decent CPU to do it. This should get better with time both in terms of how efficient Kvazzup and Kvazaar are and how fast CPUs are. As this is a research project, the focus is on the future. Of course hardware encoder is not unlimited source of quality calls either. Hardware has specific restrictions that one cannot cross where as software performance is mostly only CPU bound. I'm not an expert on this, but hardware usually has a much higher bit rate.

I wouldn't be surprised if some day Kvazzup would also support hardware HEVC encoding, but at the moment it is not the most important task for me.

__

It's interesting what you're telling. I would have thought it would be quite easy to make some peer to peer video call app, but that is probably very naive (like get an library for camera and one for media and codecs and one for internet transfer, even maybe all things by qt, stuck them together and voila, but that probably not so easy).

I don't think you are wrong. I was just speculating what could be the reasons for not having p2p calling. The problem for me has been that the existing libraries have not been very good and we have had to implement them ourselves. Especially lack of good modest size SIP implementation has taken a lot of my time.

But what about browsers? Browsers give good api for camera, mic and also for hardware acceleration and one could use WebRTC? (I think they use it e.g. on https://obs.ninja/ , probably also on talky but i think the last one is not open source).

The reason why I didn't choose WebRTC was that browsers don't support HEVC. I can't say much more on that.

Also found movim using jingle ( https://prosody.im/doc/jingle ). But never tested that. (jitsi, not jitsi meet, does not support fullhd).

Although XMPP(Jingle) can be used with SIP, there is much overlap and I probably don't need both at this point. Also prosody doesn't seem to support windows which is kind of a deal-breaker.

I must thank you for bringing me all this information. It is of course sad to hear that you are having problems finding software up to you standards, but for me this means there is a need for Kvazzup.

from kvazzup.

jrsnen avatar jrsnen commented on June 19, 2024

Hello and thank you for your interest in Kvazzup.

Depends on what you mean by production ready. Kvazzup still has few key features (SIP NAT traversal, TLS, automatic encoding parameter adjustment) that are missing and I also haven't yet setup a system for creating SIP accounts to use with Kvazzup (although it is possible to setup your own SIP server). I try my best to fix all the bugs in Kvazzup, but there is still more testing needed to make this happen. I'm hoping to fix all bugs and get the basic features done this year making Kvazzup into a high quality video call program supporting HEVC.

This particular bug seems to be Qt related and is probably somehow specific to Surface Pro and Qt. There is probably a need to submit a bug report to Qt. Linux Kvazzup has this same issue.

This is what it looks for me on Windows 10:
image

Only existing software I know that supports HEVC (through hardware support) is Jami, but I haven't tested it and cannot say anything about its quality.

from kvazzup.

jrsnen avatar jrsnen commented on June 19, 2024

Now that I think about it, I don't know how Qt interacts on Surface Pro. It is also possible that Kvazzup needs to be specifically compiled for that platform to have the correct Qt libraries to get these parameters

from kvazzup.

jrsnen avatar jrsnen commented on June 19, 2024

I found these instruction: https://doc.qt.io/qt-5/winrt-support.html

If the build was built using those instructions, the camera might work better.

All in all, I have to say Kvazzup releases probably don't support Windows Surface Pro/UWP at the moment. At some point later I might include the UWP builds with the release. Current build you are using is probably not compatible with UWP.

from kvazzup.

DoS007 avatar DoS007 commented on June 19, 2024

Hi, yeah, thanks for you developing such software.

I already tested quite a bit of software and the best i got so far is trueconf with VP8/H.264 with 10 Mbit/s which works with good hardware acceleration and has a good connection. So at the moment I'm searching for a program which alllows HEVC or VP9 with > 5 Mbit/s or a program with VP8/H.264 and >10Mbit/s.

I already tested Jami (and also qtox, but that was really bad). But that didn't work so stable and hardware acceleration didn't seem to work. And comparing e.g. skype: that has on good quality only 1,5 Mbit/s.

I really don't understand why there seems to be almost no software for peer to peer (without server) which supports a good codec (VP9 and H.265, with hardware acceleration) and custom set bitrates. Especially in this "corona time" i want to connect to people via video call, and that beeing as good as it gets. And there is so little software. Most software just offers mediocre Quality, that you can think you view the other person, but not truely HD. I really don't get it why this is so. I mean for 1 to 1 call there doesn't even need to be server there (so there is no cost argument).

Program someting like this: Just set Upload speed (minus some buffer) as upload bitrate and download speed (minus some buffer) as download bitrate and video software and get super high quality with VP9 and H.265 (which many plattforms now support with hardware acceleraton).

You use hevc hardware acceleration in this software, do you (or the libraries you use do)?

Some info about surface pro: It's just like a normal laptop with normal Windows (only you can do some things like removing keyboard and have a touch screen and pen), there is nothing special, so I don't know what you mean by UWP. You can use UWP Apps like on any Windows 10 but you can also you "normal" programs.

from kvazzup.

jrsnen avatar jrsnen commented on June 19, 2024

For the lack of stability, I would guess the reason is that many of the existing open-source software are very old. They have massive code bases and it may be hard to keep things stable. That may also be the reason why they are not very enthusiastic to adopt new technologies such as HEVC, because existing code base makes it difficult. A more cynical person might say their code base is bad for business reasons, so they get more consultation requests, but it's probably better not to go that far...

The companies on the other hand are probably more incentivized to have total control of the users data so that is why they are not peer-to-peer.

From a purely technical perspective, I'm not exactly sure why peer-to-peer is not more popular. It is probably because there are some advantages in conferencing to have a media server (mostly reduced upload bandwidth requirement for user). Another reason is probably just the simplicity of not having another kind of connection system in place and conferences are actually easier to implement using a separate server since the server handles distribution of media. Currently Kvazzup media is purely peer-to-peer and I will at least try to make the conferencing also work in a peer-to-peer fashion so it is easy for the user.

The signalling (SIP) is more difficult to operate peer-to-peer, but it is possible and I think Jami tries to support this in some fashion. Kvazzup still needs a central SIP server to start the call so it can pass firewalls easily.

Actually nothing in Kvazzup uses hardware acceleration for HEVC. The downside of this approach is the higher CPU usage, but the upside is better quality and lower bit rate compared to hardware acceleration. Kvazzup should be able to compete with (and hopefully beat) Skype in terms of quality and bit rate.

We are a research group and the original idea of Kvazzup was to serve as a practical application using our HEVC software encoder Kvazaar and we have also develop our own RTP library called uvgRTP. The original reason why I created Kvazzup was because the existing solutions seemed like non-function behemoths of complicated code and it did not want me to start modifying them.

Currently Kvazzup gives user the possibility to control everything because I haven't had the time to implement a proper system for controlling those parameters ^^'. There is no download speed though, but the rate controls of the encoders works for upload.

BareSIP also support HEVC, but it is command line based. I remember that Linphone had some kind of bandwidth settings, but my experiences with Linphone have not been very good. Maybe they have improved.

Not sure what is the issue here. For some reason Qt is not providing those camera parameters. Compiling on the specific platform might help, but I'm not sure. Maybe Qt multimedia just doesn't support Surface pro? This doesn't seem to directly be a Kvazzup issue, but I would of course like Kvazzup to work everywhere. Maybe at some point I will have time to use some other camera API that Qt.

from kvazzup.

DoS007 avatar DoS007 commented on June 19, 2024

Ok, thanks for your extensive response.

Actually nothing in Kvazzup uses hardware acceleration for HEVC. The downside of this approach is the higher CPU usage, but the upside is better quality and lower bit rate compared to hardware acceleration. Kvazzup should be able to compete with (and hopefully beat) Skype in terms of quality and bit rate.

Hmm, ok. That might be a problem for me. Because HEVC is even more resource-intensive than h.264 and VP8; no hardware acceleration will be a probably a problem for resolutions >= FullHD? Especially for passive cpus. But I don't know how far it can go with fast coder preset.

__

It's interesting what you're telling. I would have thought it would be quite easy to make some peer to peer video call app, but that is probably very naive (like get an library for camera and one for media and codecs and one for internet transfer, even maybe all things by qt, stuck them together and voila, but that probably not so easy).

But what about browsers? Browsers give good api for camera, mic and also for hardware acceleration and one could use WebRTC? (I think they use it e.g. on https://obs.ninja/ , probably also on talky but i think the last one is not open source).

Also found movim using jingle ( https://prosody.im/doc/jingle ). But never tested that. (jitsi, not jitsi meet, does not support fullhd).

from kvazzup.

jrsnen avatar jrsnen commented on June 19, 2024

I've upgraded Kvazzup to Qt6 and added support for various input formats that were not supported before. I'm relatively confident that v0.13.0 fixes this issue. If there are still issues regarding video format settings, a new issue can be created.

Best Regards,
Joni Räsänen

from kvazzup.

Related Issues (20)

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.