-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
H.264 decoder support #1194
H.264 decoder support #1194
Conversation
See detailed description: #1187 (comment) |
Nice. :) I think it is best if we nail down the behaviour of this encoding before we start getting in to the details of the code though. So could you get a first draft going for @rfbproto? Once we've nailed the details of how this should behave, we can start looking at if the code actually follows that behaviour. :) |
I'll take care of it immediately ;) |
The story: - TigerVNC/tigervnc#1187 The reference implementation: - TigerVNC/tigervnc#1194
@CendioOssman here the draft: rfbproto/rfbproto#39 |
About package building: Deb-based systems have libav* and ffmpeg in their repos but rpm-based systems don't. I don't have any experiense with building packages under rpm-based systems. Also I have no macOS nearby to debug building proccess there too. It would be great if anyone could help me with these systems! |
Red Hat derived things do not include ffmpeg and such because of patent threats. They have some form of OpenH264 though. Red Hat users generally use rpmfusion to get things that Red Hat refuses to package. |
Yes, I know that, but how can I reference this repo as a dependency? Is there some right way to do so? |
arghhh.. I found some issues with versions of ffmpeg. older versions have a different API and older systems won't work. It is time to do more |
If you're talking about our Travis builds, then you probably shouldn't. Those builds should target a standard Red Hat. So this feature will have to be disabled there. |
travis is useless....
Can we restart a single job instead of queueing a full rebuild again? |
Yes, at least I can. But it might be because I'm an admin of the project. I've poked Travis support about this. We'll see what they say about getting those caches working properly. |
@xornet-sl got past the cmake, got 3 errors on make (mac os x 10.15.7)
|
|
Ooops. My fault, wrong merge, sorry. Fixed |
@xornet-sl thank you sir got another error elsewhere |
fixed |
@xornet-sl make and make dmg passed woohoo thank you. now i need to figure out how to include dependencies in the dmg. |
Thank you very much for helping us! |
Absolutely, thank you for the quick responses. can you point me in the right direction on the dependencies being included in the dmg? |
Unfortunately I have no experience with OSX at all :( |
ok no worries no changes - specifically - I had to brew install i'm in mac os x 10.15.7 i dont know if other things i have installed were used in this build. |
I think ffmpeg/libav should be just enough because this PR adds includes only for ffmpeg/libav header files. I just have no mac to build it by my own hands :) So I think we just need somehow to add ffmpeg/libav deps and it should be nice. |
i edited a couple more, jpeg was def stuck on cmake and it got past with it. |
All these deps should be already at their place. They have no relation to this particular PR |
understood, i didn't want to leave any info behind. |
@CendioOssman Hi, I see that travis has gone somewhere. Something went wrong with CI? |
Rebased and squashed everything on top of current master. @CendioOssman please check it |
@zhangyoufu Thanks. fixed. |
24dfd2e
to
539e0cc
Compare
Linux implementation using ffmpeg
@CendioOssman All checks have passed! So, could we merge it now? |
Looks good. Thanks for all the hard work! :) |
It's not over. I'm starting to work on server-side implementation |
Hooray! Thank you! |
I get the following errors on the windows builds now:
[ 38%] Building CXX object common/rfb/CMakeFiles/rfb.dir/H264Decoder.cxx.obj
In file included from
/home/bphinz/workspace/win32-binaries/tigervnc-1.12.80-20220125git0eab3508/common/rfb/H264Decoder.cxx:31:0:
/home/bphinz/workspace/win32-binaries/tigervnc-1.12.80-20220125git0eab3508/common/rfb/H264DecoderContext.h:45:26:
warning: non-static data member initializers only available with
-std=c++11 or -std=gnu++11
bool initialized = false;
^
/home/bphinz/workspace/win32-binaries/tigervnc-1.12.80-20220125git0eab3508/common/rfb/H264Decoder.cxx:
In member function 'virtual void rfb::H264Decoder::decodeRect(const
rfb::Rect&, const void*, size_t, const rfb::ServerParams&,
rfb::ModifiablePixelBuffer*)':
/home/bphinz/workspace/win32-binaries/tigervnc-1.12.80-20220125git0eab3508/common/rfb/H264Decoder.cxx:118:7:
warning: 'auto' changes meaning in C++11; please remove it
[-Wc++0x-compat]
auto excecc_ctx = contexts.front();
^
/home/bphinz/workspace/win32-binaries/tigervnc-1.12.80-20220125git0eab3508/common/rfb/H264Decoder.cxx:118:12:
error: 'excecc_ctx' does not name a type
auto excecc_ctx = contexts.front();
^
/home/bphinz/workspace/win32-binaries/tigervnc-1.12.80-20220125git0eab3508/common/rfb/H264Decoder.cxx:119:14:
error: 'excecc_ctx' was not declared in this scope
delete excecc_ctx;
^
make[2]: *** [common/rfb/CMakeFiles/rfb.dir/H264Decoder.cxx.obj] Error 1
make[1]: *** [common/rfb/CMakeFiles/rfb.dir/all] Error 2
make: *** [all] Error 2
Build step 'Execute shell' marked build as failure
Archiving artifacts
Finished: FAILURE
…On Fri, Jan 21, 2022 at 10:46 AM Vladimir Sukhonosov < ***@***.***> wrote:
Hooray! Thank you!
—
Reply to this email directly, view it on GitHub
<#1194 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB45M3JZ26ECMFPPGK65TFDUXF5WTANCNFSM4XCAN4KQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you commented.Message ID:
***@***.***>
|
I guess you also have a rather old version of gcc? :) Normally we avoid C+11 since stuff like RHEL 7 doesn't support that fully. I didn't notice it here since we don't build these parts for RHEL, and once I did I hoped other platforms would have more updated gcc. |
I guess you also have a rather old version of gcc? :)
MXE's current version (5.5.0)
… Message ID: ***@***.***>
|
@bphinz @CendioOssman |
@CendioOssman could you please answer to me via e-mail? I wrote on e-mail that is in your commits a few days ago. I have some questions to brainstorm with you about Encoder support. please answer me to [email protected] if you have some time |
yes, that works
…On Tue, Jan 25, 2022 at 2:19 PM Vladimir Sukhonosov < ***@***.***> wrote:
@bphinz <https://github.com/bphinz> @CendioOssman
<https://github.com/CendioOssman>
Opened #1419 <#1419> to fix this
@bphinz <https://github.com/bphinz> you can try to compile this branch to
test if everything is ok now
—
Reply to this email directly, view it on GitHub
<#1194 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB45M3OLVOBBRGTTA4BZWTDUX3ZUNANCNFSM4XCAN4KQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
I sent you a reply the other day. gmail has been acting up lately though, so check if it ended up in a spam folder or such. |
This decoder supports H264 ustreamer from pikvm.org project.
I think we shoud also change rfb standard and add h264 there. Also I will work on server-side implementation in tigervnc.
H.264 streaming allows reduce network utilization, sometimes dramatically. So I beleive it should be useful.
This PR contains ffmpeg libav implementation for linux and media foundation for windows.
I added a cmake option
ENABLE_H264
, so it can be built without H.264 support if any problems occursAny comments are welcome!