Skip to content
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

Set WebRTC video codec H.264 profile-level-id to 42e01f to be compatible with Firefox clients #109

Merged
merged 1 commit into from
Dec 5, 2021

Conversation

mooons
Copy link
Contributor

@mooons mooons commented Dec 5, 2021

Problem

With NEKO_VP8: 'false', NEKO_VP9: 'false' and NEKO_H264: 'true' under docker-compose.yaml's environment tag, the video stream would be encoded in H.264 for WebRTC.

But in server/internal/webrtc/webrtc.go, with the current profile-level-id=42001f, Firefox 94.0.2 (on the client-side) won't accept the WebRTC video stream:

https://github.com/m1k1o/neko/blame/c97b1fc4541caabf6b00331d081b02d2f9c58751/server/internal/webrtc/webrtc.go#L318

The symptom is that Firefox client displays a "Disconnected - connection timeout" message (after waiting for 15s) on the top left corner when logging in (despite entering the correct password). (Chrome works just fine btw.)

timeout

In the mean time, the following is found in the container log:

neko_1  | 2021-12-05 10:04:09,952 DEBG 'neko' stdout output:
neko_1  | 10:04AM ERR message handler has failed error="signal/answer failed: unable to start track, codec is not supported by remote" module=websocket
neko_1  | 
neko_1  | 2021-12-05 10:04:24,715 DEBG 'neko' stdout output:
neko_1  | 10:04AM WRN read message error error="websocket: close 1005 (no status)" module=websocket

Also in Firefox about:webrtc, it shows only the audio track is accepted (recvonly) but the video track is not (inactive). This should further indicate the video (codec) provided by the server is not accepted:

Local SDP (Answer)

...
m=video 0 UDP/TLS/RTP/SAVPF 120
c=IN IP4 0.0.0.0
a=inactive
a=mid:0
a=rtpmap:120 VP8/90000
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=recvonly
a=fmtp:111 maxplaybackrate=48000;stereo=1;useinbandfec=1

For reference, in Remote SDP (Offer), we can see that H.264 profile-level-id=42001f is offered by the neko server in this case (but not accepted by the Firefox client):

Remote SDP (Offer)

...
m=video 9 UDP/TLS/RTP/SAVPF 102
c=IN IP4 0.0.0.0
a=candidate:821511142 1 udp 2130706431 173.230.155.236 52095 typ host
a=sendrecv
a=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=fmtp:102 profile-level-id=42001f;level-asymmetry-allowed=1;packetization-mode=1
a=ice-pwd:qkAMOCulBlUBpsYWAHyjHvmOrjNkEKEF
a=ice-ufrag:jOGnbfDDElFSztKI
a=mid:0
a=msid:stream video
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=rtcp-fb:102 transport-cc
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:102 H264/90000
a=setup:actpass
a=ssrc:1539325104 cname:stream
a=ssrc:1539325104 msid:stream video
a=ssrc:1539325104 mslabel:stream
a=ssrc:1539325104 label:video
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=sendrecv
a=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=ice-pwd:qkAMOCulBlUBpsYWAHyjHvmOrjNkEKEF
a=ice-ufrag:jOGnbfDDElFSztKI
a=mid:1
a=msid:stream audio
a=rtcp-fb:111 transport-cc
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:111 opus/48000/2
a=setup:actpass
a=ssrc:814939082 cname:stream
a=ssrc:814939082 msid:stream audio
a=ssrc:814939082 mslabel:stream
a=ssrc:814939082 label:audio
m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
a=sendrecv

The Fix

I simply changed the profile-level-id from 42001f to 42e01f. Now it works flawlessly in both Firefox and Chrome.

(Tested with ./build then ./build firefox under .docker. Reployed the neko container with docker-compose up.)

Now Firefox client's about:webrtc shows that both video and audio tracks are accepted:

Local SDP (Answer)

...
m=video 9 UDP/TLS/RTP/SAVPF 102
c=IN IP4 0.0.0.0
a=candidate:0 1 UDP 2122252543 88cfb9cf-5f54-7e4b-8c60-b79347c1e99a.local 52106 typ host
a=candidate:1 1 UDP 2122187007 c1e576e0-ece0-b948-a729-f2bbfc0e9aa1.local 55440 typ host
a=candidate:2 1 TCP 2105524479 88cfb9cf-5f54-7e4b-8c60-b79347c1e99a.local 9 typ host tcptype active
a=candidate:3 1 TCP 2105458943 c1e576e0-ece0-b948-a729-f2bbfc0e9aa1.local 9 typ host tcptype active
a=recvonly
a=end-of-candidates
a=extmap:1 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=fmtp:102 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1
a=ice-pwd:65345237c33e8c43e85504904fcc628a
a=ice-ufrag:f6ed818c
a=mid:0
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=rtcp-fb:102 transport-cc
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:102 H264/90000
a=setup:active
a=ssrc:718473048 cname:{c34aa897-7975-544c-b53a-54d3c8439e6f}
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=recvonly

Note that Chrome (96.0.4664.55)'s WebRTC implementation would accept H.264 stream with either profile-level-id=42e01f or profile-level-id=42001f without a problem. Maybe Chrome works with both profiles, or it just doesn't care about such (constraint flag) difference in profile-level-id.

What's the catch (of changing profile-level-id in this case)?

tl;dr: It should be fine. If any compatibility issues (with the decoder) are discovered on some other devices down the road, we could just explicit set the encoder profile to Constrained Baseline on the server side.

profile-level-id=42001f indicates a Baseline profile, while 42e01f indicates a Constrained Baseline profile. (See the section below for how this is deducted.)

According to Wikipedia:

[Baseline Profile] includes all features that are supported in the Constrained Baseline Profile.

42e01f working but 42001f not working for the Firefox client should indicate that the Firefox WebRTC implementation only supports Constrained Baseline Profile (for whatever reason). (But the video decoder it eventually uses may well support both Constrained Baseline Profile and Baseline Profile, or even Main, Extended and High, which I haven't looked deep into.)

On the encoder (server) side, as far as I have looked into the code base, neko uses x264enc when openh264 plugin is not installed. And indeed it uses x264enc in my testing. From the container log again:

neko_1  | 2021-12-05 07:16:39,719 DEBG 'neko' stdout output:
neko_1  | 7:16AM INF Pipelines starting... audio_codec=Opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=196000 ! appsink name=appsink" module=remote screen_resolution=1920x1080@60 video_codec=H264 video_display=:99.0 video_pipeline_src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=25/1 ! videoconvert ! queue ! video/x-raw,format=NV12 ! x264enc threads=4 bitrate=3072 key-int-max=60 vbv-buf-capacity=3072 byte-stream=true tune=zerolatency speed-preset=veryfast ! video/x-h264,stream-format=byte-stream ! appsink name=appsink"

The profile isn't explicitly specified in the command line. I would guess either Baseline or Constrained. I tried to determine the actual profile the encoder uses. But no luck so far. (Skimmed the x264enc doc, tried chrome://media-internals/, WireShark capture RTP stream).

Bonus: What does profile-level-id=42e01f even mean?

According to RFC 6184: RTP Payload Format for H.264 Video

   OPTIONAL parameters:

      profile-level-id:
         A base16 [7] (hexadecimal) representation of the following
         three bytes in the sequence parameter set NAL unit is specified
         in [1]: 1) profile_idc, 2) a byte herein referred to as
         profile-iop, composed of the values of constraint_set0_flag,
         constraint_set1_flag, constraint_set2_flag,
         constraint_set3_flag, constraint_set4_flag,
         constraint_set5_flag, and reserved_zero_2bits in bit-
         significance order, starting from the most-significant bit, and
         3) level_idc.  Note that reserved_zero_2bits is required to be
         equal to 0 in [1], but other values for it may be specified in
         the future by ITU-T or ISO/IEC.

So profile-level-id=42e01f would translate into:

profile_idc=0x42 -> decimal 66
level_idc=0x1f   -> decimal 31
profile-iop=0xe0 -> binary 11100000
constraint_set0_flag=1 -> indicates that the coded video sequence obeys all constraints specified in clause A.2.1 [2].

constraint_set1_flag=1 -> indicates that the coded video sequence obeys all constraints specified in clause A.2.2 [2]. This flag=1 and profile_idc=0x42 matches CB (Constrained Baseline profile) in Table 5.

constraint_set2_flag=1 -> indicates that the coded video sequence obeys all constraints specified in clause A.2.3 [2].

constraint_set3_flag=0 -> ignored by decoder when profile_idc=66 and level_idc!=11 [2]

Table 5 [2]:

              Profile     profile_idc        profile-iop
                          (hexadecimal)      (binary)

              CB          42 (B)             x1xx0000
                 same as: 4D (M)             1xxx0000
                 same as: 58 (E)             11xx0000
              B           42 (B)             x0xx0000
                 same as: 58 (E)             10xx0000
              M           4D (M)             0x0x0000
...

References

  1. https://stackoverflow.com/q/22960928

  2. Section 7.4.2.1.1 "Sequence parameter set data semantics" in https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-H.264-201602-S!!PDF-E&type=items

Please kindly review. Thanks :)

@m1k1o
Copy link
Owner

m1k1o commented Dec 5, 2021

Thank you for helping out with this and your detailed analysis on this topic. I was not aware, where the incompatibility for H264 in Firefox comes from.

I agree that profile and level should be explicitly set in the encoding pipeline so that it matches payload format in WebRTC.

@m1k1o m1k1o merged commit 3a61d3a into m1k1o:master Dec 5, 2021
@m1k1o m1k1o mentioned this pull request Dec 5, 2021
m1k1o added a commit that referenced this pull request Mar 31, 2023
GoldenLumia added a commit to GoldenLumia/neko that referenced this pull request Oct 12, 2024
commit ca800884540226c140ba362efb95756cbf683258
Merge: b6d74a8 2cd4957
Author: Gold <9741510+GoldenLumia@users.noreply.github.com>
Date:   Sat Oct 12 03:46:18 2024 -0400

    Merge branch 'master' of https://github.com/m1k1o/neko into m1k1o-master

commit 2cd4957
Author: Emmanuel Ortiz <eos175@gmail.com>
Date:   Sun Aug 18 14:27:49 2024 -0600

    add generic ArrayIn function with minimal type casting (m1k1o#411)

commit d56c19b
Author: RisedSky <risedsky@gmail.com>
Date:   Fri Aug 16 09:14:06 2024 +0200

    chore(docs): Add haproxy in the reverse-proxy section (m1k1o#409)

commit 6486db6
Author: Lukas Bachschwell <lukas@lbsfilm.at>
Date:   Sun Aug 11 20:02:40 2024 +0200

    Add missing libgstreamer-plugins-base1.0-dev to compile dependency docs (m1k1o#407)

commit 1b84c7e
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Jul 20 14:48:54 2024 +0200

    fix invalid errors.

commit 21a4b2b
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Tue Jun 18 23:35:22 2024 +0200

    autostart broadcast only if url is set.

commit 5e96bca
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Jun 17 23:20:42 2024 +0200

    update readme.

commit c78d797
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Jun 17 23:16:48 2024 +0200

    fix typo.

commit 5759631
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Jun 17 23:14:12 2024 +0200

    broadcast_autostart as config option, m1k1o#398.

commit 0d7887e
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jun 16 22:55:13 2024 +0200

    workaround for firefox read clipboard, m1k1o#373.

    Firefox 122+ incorrectly reports that it can read the clipboard but it can't instead it hangs when reading clipboard, until user clicks on the page and the click itself is not handled by the page at all, also the clipboard reads always fail with "Clipboard read operation is not allowed."

commit 978fd89
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jun 16 22:28:32 2024 +0200

    google does not archive chrome 111 anymore.

commit 4ab5901
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jun 16 22:27:46 2024 +0200

    sync clipboard only if in focus m1k1o#373.

commit 11a862f
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun May 19 23:17:17 2024 +0200

    update docs.

commit b938a4e
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun May 19 17:07:52 2024 +0200

    update docs.

commit e26e4d2
Author: Peter Dave Hello <hsu@peterdavehello.org>
Date:   Wed Apr 17 21:49:57 2024 +0800

    Add zh_TW Traditional Chinese locale (m1k1o#388)

commit 5f69833
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Apr 4 23:55:13 2024 +0200

    hide controls on mobile when locked. m1k1o#381

commit f32fc98
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Apr 4 23:48:59 2024 +0200

    overlay: no pointer events when not hosting. m1k1o#381

commit d1f1be4
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Mar 28 23:54:26 2024 +0100

    add to docs faq:  Run neko without docker on host m1k1o#314.

commit e754e66
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Mar 28 23:47:20 2024 +0100

    added Frequently Asked Questions to docs.

commit 26af1dc
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Mar 28 23:31:22 2024 +0100

    add Nat Hairpinning deployment to docs m1k1o#378.

commit 0c9055e
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Mar 28 23:30:34 2024 +0100

    update docs, nvidia docker is replaced by NVIDIA Container Toolkit.

commit c200326
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Mar 28 22:57:54 2024 +0100

    update changelog.

commit b1ce755
Author: tt2468 <tt2468@gmail.com>
Date:   Wed Mar 27 13:35:04 2024 -0700

    Add glib main loop to capture manager (m1k1o#383)

    The gstreamer documentation is not particularly amazing on whether or
    not this is necessary, but it's clear that some gstreamer events will
    not be delivered to their handlers without a running glib loop. This
    runs one loop for all pipelines, which should be more than enough.

    Disclaimer: This may conflict in demodesk/neko with the dragdrop
    feature. Anyone backporting this bug fix to that repo should
    investigate whether the loop created by `gtk_main()` will conflict with
    this one before blindly porting.

    Fixes m1k1o#380
    Fixes m1k1o#284

commit 2b13220
Author: tt2468 <tt2468@gmail.com>
Date:   Wed Mar 27 13:32:47 2024 -0700

    Fix buffer overflow in Gstreamer log function (m1k1o#382)

    vsprintf() is dangerous, and can overflow easily, especially with small
    buffers like the 100 byte one that was being used. This changes the
    buffer size to a more sane 4KiB, and uses vsnprintf() to automatically
    concatenate a large log message instead of overflowing and crashing.

commit db6f9c9
Author: FapFapDragon <48346054+FapFapDragon@users.noreply.github.com>
Date:   Sun Mar 10 08:43:30 2024 -0400

    add check for volume parameter in URL before setting volume (m1k1o#372)

commit 798bf57
Author: rare1k <hi@rare1k.dev>
Date:   Fri Feb 9 17:49:11 2024 -0500

    fix typo (m1k1o#367)

commit 2f99645
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Jan 6 17:33:39 2024 +0100

    use 1 instead of true for consistency.

commit b8881b3
Author: mbattista <m0battista@gmail.com>
Date:   Sat Jan 6 15:05:20 2024 +0100

    added doc

commit 355c0ea
Author: mbattista <m0battista@gmail.com>
Date:   Sat Jan 6 15:02:13 2024 +0100

    add parameter for chat mute and show side

commit 4d023df
Author: Mohan_J <57227290+PMohanJ@users.noreply.github.com>
Date:   Thu Jan 4 21:48:36 2024 +0530

    update docs to explicitly differentiate between letter O and zero (m1k1o#354)

commit 792b1ac
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Tue Dec 26 15:49:16 2023 +0100

    remove any temporary files associated with a Form, fixes m1k1o#347.

commit a03b29b
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Tue Dec 26 15:43:50 2023 +0100

    add version sort to get the latest version, fixes m1k1o#348.

commit 683b750
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Nov 19 14:50:23 2023 +0100

    move proxy option to server.

commit 3c4d7b9
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Oct 15 13:18:43 2023 +0200

    upgrade go-chi to v5.

commit 7a9b337
Author: guangwu <guoguangwu@magic-shield.com>
Date:   Thu Aug 31 19:32:16 2023 +0800

    chore: remove refs to deprecated io/ioutil (m1k1o#329)

commit 052a961
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Aug 26 21:13:20 2023 +0100

    fix docs m1k1o#327,

commit 8ef9c1a
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Jun 26 17:39:34 2023 +0200

    add firefox nvidia image to docs.

commit 6ed3493
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu May 11 00:42:12 2023 +0200

    update LICENCE.

commit 5959d05
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Apr 29 18:35:11 2023 +0200

    Fix arm build (m1k1o#302)

    * WIP.

    * WIP.

    * WIP.

commit 92ad202
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Apr 29 00:12:56 2023 +0200

    Add version to docker build (m1k1o#301)

    * add version to build.

    * update docs.

commit cd4acb5
Author: mbattista <m0battista@gmail.com>
Date:   Sat Apr 22 01:24:23 2023 +0200

    lang url parameter (m1k1o#296)

    * lang url parameter

    * add ?lang to readme.

    ---------

    Co-authored-by: Miroslav Šedivý <sedivy.miro@gmail.com>

commit a32be0b
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Apr 16 00:31:05 2023 +0200

    Update Dockerfile.nvidia for google-chrome

commit b208064
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Apr 10 13:05:56 2023 +0200

    add docs fixes m1k1o#275.

commit 851c38b
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Apr 10 13:01:00 2023 +0200

    update docs.

commit e2336be
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Apr 9 15:45:14 2023 +0200

    update changelog.

commit e417ec5
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Apr 9 15:42:33 2023 +0200

    add XDG_RUNTIME_DIR to env.

commit ad7e1f2
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Apr 9 15:24:16 2023 +0200

    allow using supervisorctl.

commit 91e1a8b
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Apr 9 15:22:44 2023 +0200

    add firefox nvidia.

commit 9bdf9c8
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Apr 7 20:20:05 2023 +0200

    fix nvidia google chrome version, m1k1o#229.

commit c1360d3
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Apr 6 00:00:59 2023 +0200

    ensure that paths are writable by neko user, m1k1o#277.

commit 950095d
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Apr 3 20:06:52 2023 +0200

    update Dockerfile.nvidia, m1k1o#274.

commit 009bc20
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Apr 2 12:35:06 2023 +0200

    update docs, m1k1o#273.

commit 395db0f
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Apr 1 23:01:10 2023 +0200

    version 2.8.0.

commit 13fa86d
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Apr 1 22:58:39 2023 +0200

    update changelog.

commit 8308c13
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Apr 1 22:58:32 2023 +0200

    update nvenc pipeline.

commit ec17590
Author: mbattista <m0battista@gmail.com>
Date:   Sat Apr 1 21:32:51 2023 +0200

    improve quality a little bit

commit d2f51fa
Author: mbattista <m0battista@gmail.com>
Date:   Sat Apr 1 21:09:18 2023 +0200

    add h264parse to nvidia pipeline

commit 70325e0
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 31 22:17:46 2023 +0200

    add nvenc pipeline.

commit bdff084
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 31 22:15:59 2023 +0200

    add nvenc support for gstreamer.

commit 3c17dbe
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 31 21:43:20 2023 +0200

    h264 encoding profile constrained-baseline, m1k1o#109.

commit 887413d
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Mar 27 21:55:52 2023 +0200

    update changelog.

commit f9228e6
Merge: 2130daa df634be
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Mar 27 21:47:49 2023 +0200

    Merge branch 'pu/touch'

commit df634be
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Mar 27 21:47:41 2023 +0200

    lint.

commit 2130daa
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Mon Mar 27 18:22:31 2023 +0200

    add volume to docs.

commit aee7650
Author: Pawel Urbanek <pawel.urbanek@medvc.eu>
Date:   Fri Mar 24 15:33:46 2023 +0100

    add  touch events on touch monitor

commit 98ba32c
Author: Pawel Urbanek <pawel.urbanek@medvc.eu>
Date:   Mon Mar 27 12:53:39 2023 +0200

    add url param for  audio volume.

commit d08d3ec
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Mar 26 20:13:35 2023 +0200

    configure pulseaudio from ENV, m1k1o#267.

commit 0dd9597
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Mar 26 18:59:10 2023 +0200

    create pulseaudio sink, fixes m1k1o#267.

commit 334fcef
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 25 22:21:00 2023 +0100

    update changelog.

commit e868ad4
Merge: b62fa6a b41d0bf
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 25 22:19:43 2023 +0100

    Merge branch 'pu/autoplay'

commit b41d0bf
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 25 22:19:01 2023 +0100

    lint fix.

commit b62fa6a
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 25 22:09:17 2023 +0100

    kde disable autolock, fixes m1k1o#266.

commit 8dba9cf
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 25 21:53:17 2023 +0100

    revert extra controls usecase.

commit 217cc45
Author: Pawel Urbanek <pawel.urbanek@medvc.eu>
Date:   Fri Mar 24 16:17:05 2023 +0100

    add autoplay audio if possible

commit 1f81bd3
Author: Pawel Urbanek <pawel.urbanek@medvc.eu>
Date:   Fri Mar 24 15:24:20 2023 +0100

    hide buttons in cast mode

commit 50e5483
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Mar 19 19:13:11 2023 +0100

    turn on vaapi hwenc in intel images by default.

commit d2765c3
Author: Bad <87938689+yesBad@users.noreply.github.com>
Date:   Sun Mar 19 19:09:41 2023 +0200

    readd -> read

commit 76fc892
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 18 13:31:40 2023 +0100

    fix video state sync, fixes  m1k1o#250.

commit ea99ce7
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 18 13:11:42 2023 +0100

    fix log.

commit 646eace
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 18 13:11:02 2023 +0100

    fix candidate error.

commit 9104953
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 18 12:59:44 2023 +0100

    upgrade node version in serve script.

commit c402436
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 18 12:58:19 2023 +0100

    improved chinese and korean characters support, fixes m1k1o#252.

commit 8059002
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 18 12:48:18 2023 +0100

    forgotten mobile styles for cast, fixes m1k1o#254.

commit 9daf83c
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Mar 18 00:49:25 2023 +0100

    fix webrtc client gathering, m1k1o#259.

commit 0cebe46
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 17 20:47:53 2023 +0100

    fix build.

commit d9403d9
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 17 19:04:57 2023 +0100

    add gpu acceleration to docs.

commit 8604a30
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 17 18:28:13 2023 +0100

    add gpu flag to start server.

commit 957e893
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 17 18:27:34 2023 +0100

    fix nvidia chromium.

commit 55005a6
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Fri Mar 17 01:12:35 2023 +0100

    Add nvidia docker gpu acceleration (m1k1o#238)

    * add nvidia dockerfile.

    * add nvidia docker to build.

    * remove vaapi.

    * add google chrome and brave.

    * upgrade to virtualgl 3.1.

    * add disable-seccomp-filter-sandbox to chrome.

    * use vgl display in vglrun.

    * Revert "use vgl display in vglrun."

    This reverts commit 0cd556b.

    * update chrome params.

    * update changelog.

    * update brave.

    * update CI.

commit bc7aae0
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Wed Mar 8 17:49:31 2023 +0100

    add kde image.

commit addb6b6
Author: Bad <badfcadot@gmail.com>
Date:   Thu Mar 2 20:35:51 2023 +0200

    docs - fix typos

commit d2ddae8
Author: Bad <87938689+yesBad@users.noreply.github.com>
Date:   Thu Mar 2 19:59:21 2023 +0200

    docs typo fixes

commit 724f5fe
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Feb 23 18:43:00 2023 +0100

    show some controls for cast m1k1o#254.

commit b0e3e29
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Feb 23 18:23:34 2023 +0100

    upgrade & change to go 1.20.

commit 373dcb4
Author: Robert Scheck <robert-scheck@users.noreply.github.com>
Date:   Fri Feb 3 00:18:16 2023 +0100

    Fix typo in README.md

commit 72c0070
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 20:30:32 2023 +0100

    update changelog.

commit 009cedd
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 19:59:54 2023 +0100

    gst: move sample channel to AttachAppsink.

commit fdf17cf
Author: mbattista <m0battista@gmail.com>
Date:   Sun Jan 29 19:39:19 2023 +0100

    channel should not close on destroy

commit 628c6a1
Author: mbattista <m0battista@gmail.com>
Date:   Sun Jan 29 18:49:40 2023 +0100

    remove wait timer from goroutine

commit 79a1c41
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 18:34:58 2023 +0100

    ensure fps is not 0.

commit 64b79f4
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 18:24:49 2023 +0100

    update.

commit 8d0468e
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 18:22:48 2023 +0100

    codec is video & audio.

commit 89737dd
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 18:21:34 2023 +0100

    codec is video & audio.

commit 2649594
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 18:18:37 2023 +0100

    strongly typed session events channel.

commit f308071
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 18:00:56 2023 +0100

    join GetScreenSizeChangeChannel.

commit 6e62b79
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 17:51:39 2023 +0100

    remove unused channels.

commit 4094639
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 29 17:40:07 2023 +0100

    adaptive fps moved to pipeline creation.

commit c45a315
Author: mbattista <m0battista@gmail.com>
Date:   Sun Jan 29 13:28:03 2023 +0100

    removed adaptive framerate tag and react to closed channels

commit ee13e40
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Jan 28 22:08:36 2023 +0100

    go fmt.

commit dfe8b8b
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Jan 28 21:54:26 2023 +0100

    npm lint.

commit 1262386
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Jan 28 21:42:22 2023 +0100

    disableHostCheck -> allowedHosts.

commit 161d121
Author: mbattista <m0battista@gmail.com>
Date:   Wed Jan 25 01:11:42 2023 +0100

    channel direct from the pipeline

commit 5690a84
Author: mbattista <m0battista@gmail.com>
Date:   Sat Jan 21 23:43:04 2023 +0100

    remove go-events

commit cfc6bd4
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 15 22:21:44 2023 +0100

    Update README.md

commit 32472a7
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 15 20:38:29 2023 +0100

    Fix docker build (m1k1o#237)

    * include package-lock.

    * extract intel gpu support from dockerfile.

    * update arm support.

    * new workflows.

    * build intel images.

    * add to docs.

commit cd9ac70
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sun Jan 15 16:23:48 2023 +0100

    update XkbAddKeyKeysym.

commit a02f47f
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Jan 14 21:15:52 2023 +0100

    update xorg bindings.

commit ccc1df9
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Jan 12 20:53:36 2023 +0100

    fix stereo for chormium browsers.

commit 1509521
Merge: 1c228a7 10e2fbd
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Sat Jan 7 11:58:36 2023 +0100

    Merge pull request m1k1o#232 from Dishwasha/master

    Use Keyboard API to lock screen for supported browsers

commit 10e2fbd
Author: Ethan Waldo <ewaldo@healthetechs.com>
Date:   Wed Jan 4 23:33:00 2023 -0500

    Use Keyboard API to lock screen for supported browsers

    When using fullscreen mode, hitting the escape key will exit out of
    fullscreen mode.  To stay in fullscreen mode but pass the escape
    key through, we can use the Keyboard API to require the escape key
    be held down https://wicg.github.io/keyboard-lock/#escape-key.

    Tested in Chrome which supports Keyboard API and Firefox which does
    not https://caniuse.com/?search=navigator.keyboard with no errors
    in either case.

commit 1c228a7
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Wed Jan 4 23:16:17 2023 +0100

    update troubleshooting docs.

commit e63e9d5
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Thu Dec 22 21:40:31 2022 +0100

    update readme.

commit 4789b77
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Tue Dec 13 23:53:50 2022 +0100

    fix tor browser folder name.

commit bd73dfa
Author: Miroslav Šedivý <sedivy.miro@gmail.com>
Date:   Tue Dec 13 23:40:22 2022 +0100

    Fix WebRTC mux issues.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants