nandi/jolt-nativepublic Fork 0
5acc801872977305e0f29a8dc4aca4ddca240f98
Commits
Clone
git clone https://git.rickub.com/nandi/jolt-native.git
git clone ssh://git@rickub.com/nandi/jolt-native.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Let the media plane cross to the phone, camera and all fd0e21a · on 5acc801872977305e0f29a8dc4aca4ddca240f98 · nandi · 18d ago
BUCK · 53 lines · 2.2 KBPython Blame HistoryRaw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# The AV media plane behind a C ABI: libjoltmoq.so.
#
# It cross-compiles now. What moves on the device is the capture end and only
# the capture end: the camera is Camera2 over JNI rather than V4L2, and the
# microphone is cpal's AAudio host rather than PipeWire. MoQ, QUIC, Opus and
# H.264 are the same code on both. The selects below mirror the target sections
# in Cargo.toml — when one changes, the other has to.
rust_library(
    name = "jolt-moq",
    srcs = glob(["src/**/*.rs"]),
    crate = "joltmoq",
    crate_root = "src/lib.rs",
    edition = "2021",
    preferred_linkage = "shared",
    soname = "libjoltmoq.so",
    visibility = ["PUBLIC"],
    # jni is renamed in third-party/rust/Cargo.toml — cpal wants 0.21 on the
    # same platform and two crates cannot share one alias — so the source's
    # `jni` has to be spelled out here. Same as jolt-vidya does.
    named_deps = select({
        "DEFAULT": {},
        "prelude//os:android": {"jni": "//third-party/rust:jni-0-22"},
    }),
    deps = [
        "//crates/jolt-abi:jolt-abi",
        "//third-party/rust:anyhow",
        "//third-party/rust:env_logger",
        "//third-party/rust:image",
        "//third-party/rust:iroh-live",
        "//third-party/rust:libc",
        "//third-party/rust:log",
        "//third-party/rust:moq-lite",
        "//third-party/rust:moq-native",
        "//third-party/rust:n0-future",
        "//third-party/rust:rand",
        "//third-party/rust:rustls",
        "//third-party/rust:tokio",
        "//third-party/rust:url",
        "//third-party/rust:urlencoding",
    ] + select({
        # The desktop capture stack. cpal is here for the same reason Cargo.toml
        # names it — nothing in this crate calls it; moq-media does — and v4l2r
        # is the loopback-safe capture path. Neither has anything to say to a
        # phone, whose camera is `src/android_camera.rs`.
        "DEFAULT": [
            "//third-party/rust/cpal:cpal",
            "//third-party/rust:v4l2r",
        ],
        # ndk-context is cpal's route to the JavaVM, not this crate's; see the
        # note in Cargo.toml.
        "prelude//os:android": ["//third-party/rust:ndk-context"],
    }),
)