From 01f283ed7a9c24c6375dc3f7ef00cb09e67eb3b3 Mon Sep 17 00:00:00 2001 From: Alex Andres Date: Fri, 16 Oct 2026 01:21:24 +0200 Subject: [PATCH] docs: add icons and links to the home page features --- docs/.vitepress/theme/style.css | 28 +++++++++++ docs/index.md | 89 +++++++++++++++++++++++---------- 2 files changed, 90 insertions(+), 27 deletions(-) diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css index 329e989e2..0851fe3e3 100644 --- a/docs/.vitepress/theme/style.css +++ b/docs/.vitepress/theme/style.css @@ -118,6 +118,34 @@ } } +/** + * Component: Home features + * -------------------------------------------------------------------------- */ + +.VPFeature .icon { + color: var(--vp-c-brand-1); + background-color: var(--vp-c-brand-soft); +} + +.VPFeature .icon svg { + width: 24px; + height: 24px; +} + +.VPFeature.link { + transition: border-color 0.25s, transform 0.25s; +} + +.VPFeature.link:hover { + transform: translateY(-2px); +} + +@media (prefers-reduced-motion: reduce) { + .VPFeature.link:hover { + transform: none; + } +} + /** * Component: Custom Block * -------------------------------------------------------------------------- */ diff --git a/docs/index.md b/docs/index.md index 68740180c..168fdb07c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -19,32 +19,67 @@ hero: src: /logo.png alt: webrtc-java +# Icons from Lucide (https://lucide.dev, ISC license). Keep the number of features a multiple +# of three, so that the default theme lays them out in full rows of three. features: - - title: Cross-platform - details: Use the same Java API across Windows, macOS, and Linux with prebuilt native bindings. Ideal for desktop apps and server‑side media services. - - title: Native performance - details: Thin JNI layer with minimal overhead, delivering near-native performance with minimal context switching between Java and native code. - - title: Audio and video streaming - details: Audio and video capture from cameras and microphones devices, with support for custom media sources for flexible streaming solutions. - - title: Media File Playback - details: Send video and audio files over a peer connection. The optional media module decodes with FFmpeg in native code and paces playback in real time, keeping audio and video in sync. - - title: Call Recording - details: Record what a peer connection sends or receives into MKV, WebM or MP4 files. Encoded frames go into the file as they are, without re-encoding, so recording costs next to no CPU and keeps the exact quality of the call. - - title: End-to-End Encryption - details: Encoded transforms let Java code read, change or drop every encoded frame between encoder and network, like insertable streams in the browser; the building block for end-to-end encryption, frame metadata and stream analysis. - - title: Send Pre-encoded Media - details: Encoded frame injectors take the place of a sender's track and send frames that are already encoded, such as an IP camera's H.264 stream or a recording, with no encoding in WebRTC. - - title: Hardware Video Codecs - details: Encode and decode H.264, H.265, VP9 and AV1 on the GPU through NVENC and NVDEC, Media Foundation, VA-API and VideoToolbox. A stream the hardware cannot take falls back to software without dropping the call. - - title: Custom Video Codecs - details: Plug video encoders and decoders written in Java into WebRTC, next to the built-in VP8, VP9, AV1 and H.264, to bring in a codec of your own or a hardware encoder from another library. - - title: Screen Sharing - details: Share application windows or the full desktop with minimal setup; integrate screen capture streams like any other media stream. - - title: Video Processing - details: Put a video processor between a camera or desktop source and its tracks to change, replace or drop each frame before it is sent, for background blur, overlays, mirroring or hiding part of the screen. - - title: Data Channels - details: Reliable and unordered/ordered SCTP data channels for arbitrary messaging, file transfer, and app signaling. - - title: Statistics API for monitoring - details: Access WebRTC stats (bitrate, packet loss, jitter, RTT, frame rate, CPU) to monitor and optimize media quality. + - icon: + title: Cross-platform, Native Speed + details: One Java API on Windows, macOS and Linux, with prebuilt native libraries. A thin JNI layer keeps the overhead between Java and native code minimal. + link: /guide/introduction + linkText: Introduction + - icon: + title: Audio and Video Streaming + details: Capture audio and video from microphones and cameras, or feed your own media sources into a call. + link: /guide/media/media-devices + linkText: Media devices + - icon: + title: Screen Sharing + details: Share application windows or the full desktop with minimal setup, and send them like any other video stream. + link: /guide/video/desktop-capture + linkText: Desktop capture + - icon: + title: Data Channels + details: Reliable or unreliable, ordered or unordered SCTP data channels for messaging, file transfer and app signaling. + link: /guide/data/data-channels + linkText: Data channels + - icon: + title: Hardware Video Codecs + details: Encode and decode H.264, H.265, VP9 and AV1 on the GPU through NVENC and NVDEC, Media Foundation, VA-API and VideoToolbox, with fallback to software. + link: /guide/advanced/video-codecs#hardware-encoding + linkText: Hardware codecs + - icon: + title: Custom Video Codecs + details: Plug video encoders and decoders written in Java into WebRTC, to bring in a codec of your own or a hardware encoder from another library. + link: /guide/advanced/video-codecs#adding-a-codec + linkText: Video codecs + - icon: + title: Video Processing + details: Change, replace or drop each camera or desktop frame before it is sent, for background blur, overlays, mirroring or hiding part of the screen. + link: /guide/video/camera-capture#changing-frames-before-they-are-sent + linkText: Processing frames + - icon: + title: End-to-End Encryption + details: Encoded transforms let Java code read, change or drop every encoded frame, like insertable streams in the browser, for encryption, metadata and analysis. + link: /guide/advanced/encoded-transforms + linkText: Encoded transforms + - icon: + title: Send Pre-encoded Media + details: Send frames that are already encoded, such as an IP camera's H.264 stream or a recording, without encoding them again in WebRTC. + link: /guide/advanced/encoded-transforms#injecting-encoded-frames + linkText: Injecting frames + - icon: + title: Media File Playback + details: Play video and audio files or RTSP streams into a peer connection. The optional media module decodes with FFmpeg and keeps audio and video in sync. + link: /guide/media/media-files + linkText: Media files + - icon: + title: Call Recording + details: Record what a peer connection sends or receives into MKV, WebM or MP4 files, without re-encoding, at next to no CPU cost and in the exact quality of the call. + link: /guide/media/media-recording + linkText: Recording + - icon: + title: Statistics and Monitoring + details: Read WebRTC stats such as bitrate, packet loss, jitter, round-trip time and frame rate to monitor and tune media quality. + link: /guide/monitoring/rtc-stats + linkText: Statistics --- -