Skip to content
Merged
Show file tree
Hide file tree
Changes from 72 commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
f87d0f6
feat: VA-API support for linux.
cloudwebrtc May 13, 2025
e19ec1f
more changes.
cloudwebrtc May 15, 2025
b3fea3f
update.
cloudwebrtc May 19, 2025
9f19f2e
wip.
cloudwebrtc May 19, 2025
f8f6f8f
wip.
cloudwebrtc May 19, 2025
41ab010
update.
cloudwebrtc May 20, 2025
7781ae0
vaapi encoder factory.
cloudwebrtc May 21, 2025
abcd9f7
update.
cloudwebrtc May 22, 2025
ba0ce7c
update.
cloudwebrtc May 22, 2025
f1ee2a3
wip.
cloudwebrtc May 22, 2025
bfe5d46
First working commit.
cloudwebrtc May 22, 2025
e1fe6d3
add support vaapi detection for factory.
cloudwebrtc May 26, 2025
6ebdd60
Fix reset encoder for dynamic resolution.
cloudwebrtc May 26, 2025
fd25877
update
cloudwebrtc May 26, 2025
2a9db3f
fix rc mode.
cloudwebrtc May 27, 2025
461ebd5
support profile parse.
cloudwebrtc May 27, 2025
4dcd3db
update.
cloudwebrtc May 27, 2025
cd9af0f
rename.
cloudwebrtc May 29, 2025
c54d3d7
auto detect h264 support.
cloudwebrtc May 29, 2025
4040e0b
cargo fmt.
cloudwebrtc May 29, 2025
879f9de
rename display name.
cloudwebrtc Jun 4, 2025
177489b
Merge branch 'main' into duan/vaapi-hw-codec
cloudwebrtc Jun 4, 2025
6b048df
Update tests.yml
cloudwebrtc Jun 4, 2025
fece2a4
Change rate mode to CBR.
cloudwebrtc Jun 5, 2025
ec9c2a7
feat: NVIDIA HW Codec.
cloudwebrtc Jun 9, 2025
d6fdad6
more.
cloudwebrtc Jun 12, 2025
beb76fe
more changes.
cloudwebrtc Jun 14, 2025
942fe2a
add nv h264 decoder impl.
cloudwebrtc Jun 14, 2025
2bb82c3
Merge branch 'main' into duan/nvidia-hw-codec
cloudwebrtc Jun 16, 2025
fc03a07
Add CudaContext.
cloudwebrtc Jun 16, 2025
7207b47
update.
cloudwebrtc Jun 16, 2025
6969022
feat: win32 support.
cloudwebrtc Jun 17, 2025
a0a8521
support win32 build.
cloudwebrtc Jun 17, 2025
3ea0308
Merge branch 'main' into duan/vaapi-hw-codec
cloudwebrtc Jun 17, 2025
100e779
Update tests.yml
cloudwebrtc Jun 18, 2025
e7a8953
cargo fmt.
cloudwebrtc Jun 18, 2025
fe81b1f
Temporarily disable win32 compilation.
cloudwebrtc Jun 18, 2025
d75a792
Update tests.yml
cloudwebrtc Jun 18, 2025
d789d1b
fix.
cloudwebrtc Jun 18, 2025
163583b
Use Implib.so to lazy load cuda/nvcuvid so.
cloudwebrtc Jul 7, 2025
9275fe4
Use Implib.so to lazy load libva/liva-drm so.
cloudwebrtc Jul 7, 2025
4a0e45c
Update tests.yml
cloudwebrtc Jul 7, 2025
d3e98e5
Update tests.yml
cloudwebrtc Jul 7, 2025
8809248
Update tests.yml
cloudwebrtc Jul 7, 2025
00c5117
Update tests.yml
cloudwebrtc Jul 7, 2025
daaf2f8
fix.
cloudwebrtc Jul 14, 2025
b84354c
benchmark for h264 sw/hw encode.
cloudwebrtc Jul 14, 2025
e8b7336
add cpu info.
cloudwebrtc Jul 15, 2025
5ed57a7
update.
cloudwebrtc Jul 15, 2025
31bee33
update.
cloudwebrtc Jul 15, 2025
3c30351
update.
cloudwebrtc Jul 15, 2025
5ab5d38
update.
cloudwebrtc Jul 15, 2025
6af3950
update.
cloudwebrtc Jul 15, 2025
9deff93
Update ffi-builds.yml
cloudwebrtc Aug 6, 2025
2dad966
Update ffi-builds.yml
cloudwebrtc Aug 6, 2025
3f67742
fix compile for arm64.
cloudwebrtc Aug 7, 2025
ba6f09a
Update ffi-builds.yml
cloudwebrtc Aug 7, 2025
03e7d6a
cargo fmt.
cloudwebrtc Aug 7, 2025
e290eaf
Add log printing for vaapi support.
cloudwebrtc Aug 19, 2025
aaa7b76
revert changes.
cloudwebrtc Aug 19, 2025
203f1e1
Update ffi-builds.yml
cloudwebrtc Aug 21, 2025
288b9cd
Update ffi-builds.yml
cloudwebrtc Aug 21, 2025
ef76a86
Merge branch 'duan/nvidia-hw-codec' into duan/vaapi-hw-codec
cloudwebrtc Aug 21, 2025
9b22bfd
fix.
cloudwebrtc Aug 21, 2025
bb0812c
Merge remote-tracking branch 'refs/remotes/origin/duan/vaapi-hw-codec…
cloudwebrtc Aug 21, 2025
37d8113
Update ffi-builds.yml
cloudwebrtc Aug 21, 2025
6c1eb5d
add cuda include path.
cloudwebrtc Aug 21, 2025
d262f2e
Update ffi-builds.yml
cloudwebrtc Aug 21, 2025
2fec778
revert changes.
cloudwebrtc Aug 21, 2025
d9c0003
add more logs print for hw codec init.
cloudwebrtc Aug 21, 2025
3c26808
update.
cloudwebrtc Aug 21, 2025
b31c0cc
update.
cloudwebrtc Aug 21, 2025
bd98e53
Update build_linux.sh
cloudwebrtc Aug 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ffi-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
buildargs: --no-default-features --features "rustls-tls-webpki-roots"
- os: ubuntu-latest
platform: linux
build_image: quay.io/pypa/manylinux_2_28_x86_64
build_image: sameli/manylinux_2_28_x86_64_cuda_12.3
dylib: liblivekit_ffi.so
target: x86_64-unknown-linux-gnu
name: ffi-linux-x86_64
Expand Down Expand Up @@ -148,7 +148,7 @@ jobs:
yum install clang -y; \
yum groupinstall 'Development Tools' -y; \
clang --version; \
yum install openssl-devel libX11-devel mesa-libGL-devel libXext-devel -y; \
yum install openssl-devel libX11-devel mesa-libGL-devel libXext-devel libva-devel libdrm-devel -y; \
curl --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y; \
cd livekit-ffi && cargo build --release --target ${{ matrix.target }} ${{ matrix.buildargs }}"

Expand All @@ -161,7 +161,7 @@ jobs:
cd livekit-ffi/
ln -sf $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/lib/${{ matrix.ndk_arch }}/{libunwind.so,libc++abi.a} $ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/lib/
cargo install cargo-ndk
cargo ndk --bindgen --target ${{ matrix.target }} build --release ${{ matrix.buildargs }}
cargo ndk --target ${{ matrix.target }} build --release ${{ matrix.buildargs }}

- name: Copy/Build licenses
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt update -y
sudo apt install -y libssl-dev libx11-dev libgl1-mesa-dev libxext-dev
sudo apt install -y libssl-dev libx11-dev libgl1-mesa-dev libxext-dev libva-dev libdrm-dev libnvidia-decode-570 libnvidia-compute-570 nvidia-cuda-dev

- uses: actions/checkout@v3
with:
Expand Down
3 changes: 2 additions & 1 deletion examples/wgpu_room/src/logo_track.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ impl LogoTrack {
LocalTrack::Video(track.clone()),
TrackPublishOptions {
source: TrackSource::Camera,
//simulcast: false,
simulcast: false,
video_codec: VideoCodec::H264,
..Default::default()
},
)
Expand Down
52 changes: 51 additions & 1 deletion webrtc-sys/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ fn main() {
println!("cargo:rustc-link-lib=static=webrtc");

let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap();
let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap();
match target_os.as_str() {
"windows" => {
println!("cargo:rustc-link-lib=dylib=msdmo");
Expand All @@ -128,14 +129,63 @@ fn main() {
println!("cargo:rustc-link-lib=dylib=dwmapi");
println!("cargo:rustc-link-lib=dylib=shcore");

builder.flag("/std:c++20").flag("/EHsc");
//let path = env::current_dir().unwrap();
//println!("cargo:rustc-link-search=native={}/vaapi-windows/x64/lib", path.display());
//println!("cargo:rustc-link-lib=dylib=va");
//println!("cargo:rustc-link-lib=dylib=va_win32");

builder
//.include("./vaapi-windows/DirectX-Headers-1.0/include")
//.include(path::PathBuf::from("./vaapi-windows/x64/include"))
//.file("vaapi-windows/DirectX-Headers-1.0/src/dxguids.cpp")
//.file("src/vaapi/vaapi_display_win32.cpp")
//.file("src/vaapi/vaapi_h264_encoder_wrapper.cpp")
//.file("src/vaapi/vaapi_encoder_factory.cpp")
//.file("src/vaapi/h264_encoder_impl.cpp")
.flag("/std:c++20")
//.flag("/wd4819")
//.flag("/wd4068")
.flag("/EHsc");
}
"linux" => {
println!("cargo:rustc-link-lib=dylib=rt");
println!("cargo:rustc-link-lib=dylib=dl");
println!("cargo:rustc-link-lib=dylib=pthread");
println!("cargo:rustc-link-lib=dylib=m");

match target_arch.as_str() {
"x86_64" => {
builder
.file("src/vaapi/vaapi_display_drm.cpp")
.file("src/vaapi/vaapi_h264_encoder_wrapper.cpp")
.file("src/vaapi/vaapi_encoder_factory.cpp")
.file("src/vaapi/h264_encoder_impl.cpp")
.file("src/vaapi/implib/libva-drm.so.init.c")
.file("src/vaapi/implib/libva-drm.so.tramp.S")
.file("src/vaapi/implib/libva.so.init.c")
.file("src/vaapi/implib/libva.so.tramp.S");

builder
.flag("-I/usr/local/cuda-12.3/targets/x86_64-linux/include")
.flag("-Isrc/nvidia/NvCodec/include")
.flag("-Isrc/nvidia/NvCodec/NvCodec")
.file("src/nvidia/NvCodec/NvCodec/NvDecoder/NvDecoder.cpp")
.file("src/nvidia/NvCodec/NvCodec/NvEncoder/NvEncoder.cpp")
.file("src/nvidia/NvCodec/NvCodec/NvEncoder/NvEncoderCuda.cpp")
.file("src/nvidia/h264_encoder_impl.cpp")
.file("src/nvidia/h264_decoder_impl.cpp")
.file("src/nvidia/nvidia_decoder_factory.cpp")
.file("src/nvidia/nvidia_encoder_factory.cpp")
.file("src/nvidia/cuda_context.cpp")
.file("src/nvidia/implib/libcuda.so.init.c")
.file("src/nvidia/implib/libcuda.so.tramp.S")
.file("src/nvidia/implib/libnvcuvid.so.init.c")
.file("src/nvidia/implib/libnvcuvid.so.tramp.S")
.flag("-Wno-deprecated-declarations");
}
_ => {}
}

builder.flag("-std=c++2a");
}
"macos" => {
Expand Down
6 changes: 3 additions & 3 deletions webrtc-sys/libwebrtc/build_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,9 @@ args="is_debug=$debug \
use_rtti=true \
rtc_use_x11=false"

if [ "$debug" = "true" ]; then
args="${args} is_asan=true is_lsan=true";
fi
#if [ "$debug" = "true" ]; then
Comment thread
cloudwebrtc marked this conversation as resolved.
Outdated
# args="${args} is_asan=true is_lsan=true";
#fi

# generate ninja files
gn gen "$OUTPUT_DIR" --root="src" --args="${args}"
Expand Down
Loading
Loading