[INFO] cloning repository https://github.com/lizhiyong2000/vcp-media-server [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lizhiyong2000/vcp-media-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 538aacdf76b562b4bb38962ed2df438484fa5fed [INFO] checking lizhiyong2000/vcp-media-server against try#24e1a22664233bce1f9b5dc6eee7c1f74327e28c for pr-159343 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flizhiyong2000%2Fvcp-media-server" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/lizhiyong2000/vcp-media-server [INFO] finished tweaking git repo https://github.com/lizhiyong2000/vcp-media-server [INFO] tweaked toml for git repo https://github.com/lizhiyong2000/vcp-media-server written to /workspace/builds/worker-5-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/lizhiyong2000/vcp-media-server on toolchain 24e1a22664233bce1f9b5dc6eee7c1f74327e28c [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/lizhiyong2000/vcp-media-server already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 41f81f3fc51408f3e5170cc4145e8c3cf6da6b8835020b7c86ca2b8c538b1779 [INFO] running `Command { std: "docker" "start" "41f81f3fc51408f3e5170cc4145e8c3cf6da6b8835020b7c86ca2b8c538b1779", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "41f81f3fc51408f3e5170cc4145e8c3cf6da6b8835020b7c86ca2b8c538b1779", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "41f81f3fc51408f3e5170cc4145e8c3cf6da6b8835020b7c86ca2b8c538b1779" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "41f81f3fc51408f3e5170cc4145e8c3cf6da6b8835020b7c86ca2b8c538b1779", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "41f81f3fc51408f3e5170cc4145e8c3cf6da6b8835020b7c86ca2b8c538b1779" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.46 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling libc v0.2.186 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling autocfg v1.5.1 [INFO] [stderr] Checking typenum v1.20.1 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking memchr v2.8.2 [INFO] [stderr] Checking smallvec v1.15.2 [INFO] [stderr] Checking pin-project-lite v0.2.17 [INFO] [stderr] Checking bytes v1.12.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling zerocopy v0.8.52 [INFO] [stderr] Checking lock_api v0.4.14 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling shlex v2.0.1 [INFO] [stderr] Checking log v0.4.33 [INFO] [stderr] Checking stable_deref_trait v1.2.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Compiling cc v1.2.65 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking ipnet v2.12.0 [INFO] [stderr] Checking futures-core v0.3.32 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Checking cpufeatures v0.2.17 [INFO] [stderr] Checking futures-sink v0.3.32 [INFO] [stderr] Checking writeable v0.6.3 [INFO] [stderr] Checking litemap v0.8.2 [INFO] [stderr] Checking itoa v1.0.18 [INFO] [stderr] Checking futures-channel v0.3.32 [INFO] [stderr] Compiling memoffset v0.7.1 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Checking once_cell v1.21.4 [INFO] [stderr] Checking futures-task v0.3.32 [INFO] [stderr] Checking futures-io v0.3.32 [INFO] [stderr] Compiling num-conv v0.2.2 [INFO] [stderr] Checking slab v0.4.12 [INFO] [stderr] Checking percent-encoding v2.3.2 [INFO] [stderr] Compiling time-core v0.1.9 [INFO] [stderr] Checking base64ct v1.8.3 [INFO] [stderr] Checking num_threads v0.1.7 [INFO] [stderr] Checking deranged v0.5.8 [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Checking form_urlencoded v1.2.2 [INFO] [stderr] Checking http v1.4.2 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Checking regex-syntax v0.8.11 [INFO] [stderr] Checking pem-rfc7468 v0.7.0 [INFO] [stderr] Compiling syn v2.0.118 [INFO] [stderr] Compiling time-macros v0.2.31 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Checking atomic-waker v1.1.2 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling clang-sys v1.8.1 [INFO] [stderr] Compiling libloading v0.8.9 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Compiling either v1.16.0 [INFO] [stderr] Compiling semver v1.0.28 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling rustls v0.23.41 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Checking crc-catalog v2.5.0 [INFO] [stderr] Compiling bindgen v0.72.1 [INFO] [stderr] Checking opaque-debug v0.3.1 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Checking crc v3.4.0 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking mio v1.2.1 [INFO] [stderr] Checking socket2 v0.6.4 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking nix v0.26.4 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking time v0.3.52 [INFO] [stderr] Checking ff v0.13.1 [INFO] [stderr] Checking group v0.13.0 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking rusticata-macros v4.1.0 [INFO] [stderr] Compiling getrandom v0.4.3 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking data-encoding v2.11.0 [INFO] [stderr] Compiling oid-registry v0.7.1 [INFO] [stderr] Compiling rustc-hash v2.1.3 [INFO] [stderr] Compiling bitflags v2.13.0 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Checking tower-service v0.3.3 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling pkg-config v0.3.33 [INFO] [stderr] Compiling substring v1.4.5 [INFO] [stderr] Checking arc-swap v1.9.2 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking waitgroup v0.1.2 [INFO] [stderr] Checking pem v3.0.6 [INFO] [stderr] Compiling cexpr v0.6.0 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Checking equivalent v1.0.2 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Checking hashbrown v0.17.1 [INFO] [stderr] Checking tower-layer v0.3.3 [INFO] [stderr] Compiling anyhow v1.0.103 [INFO] [stderr] Checking uuid v1.23.4 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Compiling ffmpeg-next v8.1.0 [INFO] [stderr] Checking winnow v0.7.15 [INFO] [stderr] Checking toml_write v0.1.2 [INFO] [stderr] Checking ryu v1.0.23 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking termios v0.2.2 [INFO] [stderr] Checking yasna v0.5.2 [INFO] [stderr] Checking serial-core v0.4.0 [INFO] [stderr] Checking indexmap v2.14.0 [INFO] [stderr] Checking ioctl-rs v0.1.6 [INFO] [stderr] Checking symlink v0.1.0 [INFO] [stderr] Checking regex v1.12.4 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Checking predicates-core v1.0.10 [INFO] [stderr] Checking serial-unix v0.4.0 [INFO] [stderr] Checking float-cmp v0.10.0 [INFO] [stderr] Checking anstyle v1.0.14 [INFO] [stderr] Checking termtree v0.5.1 [INFO] [stderr] Checking difflib v0.4.0 [INFO] [stderr] Checking normalize-line-endings v0.3.0 [INFO] [stderr] Compiling assert_cmd v2.2.2 [INFO] [stderr] Checking linux-raw-sys v0.12.1 [INFO] [stderr] Checking serial v0.4.0 [INFO] [stderr] Checking predicates-tree v1.0.13 [INFO] [stderr] Checking nix v0.25.1 [INFO] [stderr] Checking predicates v3.1.4 [INFO] [stderr] Checking bstr v1.12.3 [INFO] [stderr] Checking wait-timeout v0.2.1 [INFO] [stderr] Checking downcast-rs v1.2.1 [INFO] [stderr] Checking fastrand v2.4.1 [INFO] [stderr] Checking shell-words v1.1.1 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Checking rand v0.8.6 [INFO] [stderr] Compiling zeroize_derive v1.5.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling displaydoc v0.2.6 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling asn1-rs-derive v0.5.1 [INFO] [stderr] Compiling asn1-rs-impl v0.2.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Checking tokio v1.52.3 [INFO] [stderr] Checking zeroize v1.9.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Checking der v0.7.10 [INFO] [stderr] Checking futures-util v0.3.32 [INFO] [stderr] Checking rustls-pki-types v1.15.0 [INFO] [stderr] Checking tempfile v3.27.0 [INFO] [stderr] Checking zerofrom v0.1.8 [INFO] [stderr] Checking asn1-rs v0.6.2 [INFO] [stderr] Checking filedescriptor v0.8.3 [INFO] [stderr] Checking yoke v0.8.3 [INFO] [stderr] Checking rustls-webpki v0.103.13 [INFO] [stderr] Checking webpki-roots v1.0.8 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking crypto-common v0.1.7 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking zerovec v0.11.6 [INFO] [stderr] Checking zerotrie v0.2.4 [INFO] [stderr] Checking block-padding v0.3.3 [INFO] [stderr] Checking universal-hash v0.5.1 [INFO] [stderr] Checking crypto-bigint v0.5.5 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking aead v0.5.2 [INFO] [stderr] Checking polyval v0.6.2 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking spki v0.7.3 [INFO] [stderr] Checking ghash v0.5.1 [INFO] [stderr] Checking signature v2.2.0 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking md-5 v0.10.6 [INFO] [stderr] Checking hkdf v0.12.4 [INFO] [stderr] Checking tinystr v0.8.3 [INFO] [stderr] Checking potential_utf v0.1.5 [INFO] [stderr] Checking pkcs8 v0.10.2 [INFO] [stderr] Checking rfc6979 v0.4.0 [INFO] [stderr] Checking tungstenite v0.24.0 [INFO] [stderr] Checking tracing-subscriber v0.3.23 [INFO] [stderr] Checking ctr v0.9.2 [INFO] [stderr] Checking icu_collections v2.2.0 [INFO] [stderr] Checking sec1 v0.7.3 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Checking icu_locale_core v2.2.0 [INFO] [stderr] Checking ccm v0.5.0 [INFO] [stderr] Checking x25519-dalek v2.0.1 [INFO] [stderr] Checking cbc v0.1.2 [INFO] [stderr] Checking portable-pty v0.8.1 [INFO] [stderr] Checking der-parser v9.0.0 [INFO] [stderr] Checking aes-gcm v0.10.3 [INFO] [stderr] Checking elliptic-curve v0.13.8 [INFO] [stderr] Checking icu_provider v2.2.0 [INFO] [stderr] Checking x509-parser v0.16.0 [INFO] [stderr] Checking primeorder v0.13.6 [INFO] [stderr] Checking ecdsa v0.16.9 [INFO] [stderr] Checking icu_properties v2.2.0 [INFO] [stderr] Checking icu_normalizer v2.2.0 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking smol_str v0.2.2 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking p256 v0.13.2 [INFO] [stderr] Checking p384 v0.13.1 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking tracing-appender v0.2.5 [INFO] [stderr] Checking futures-executor v0.3.32 [INFO] [stderr] Checking futures v0.3.32 [INFO] [stderr] Checking rcgen v0.13.2 [INFO] [stderr] Checking idna_adapter v1.2.2 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking sdp v0.7.0 [INFO] [stderr] Compiling ffmpeg-sys-next v8.1.0 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking webrtc-util v0.10.0 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking hyper v1.10.1 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Checking tokio-tungstenite v0.24.0 [INFO] [stderr] Checking hyper-util v0.1.20 [INFO] [stderr] Checking tower-http v0.6.11 [INFO] [stderr] Checking rtp v0.12.0 [INFO] [stderr] Checking rtcp v0.12.0 [INFO] [stderr] Checking stun v0.7.0 [INFO] [stderr] Checking webrtc-sctp v0.11.0 [INFO] [stderr] Checking webrtc-mdns v0.8.0 [INFO] [stderr] Checking webrtc-dtls v0.11.0 [INFO] [stderr] Checking hyper-rustls v0.27.9 [INFO] [stderr] Checking webrtc-media v0.9.0 [INFO] [stderr] Checking webrtc-srtp v0.14.0 [INFO] [stderr] Checking reqwest v0.12.28 [INFO] [stderr] Checking turn v0.9.0 [INFO] [stderr] Checking interceptor v0.13.0 [INFO] [stderr] Checking webrtc-data v0.10.0 [INFO] [stderr] Checking webrtc-ice v0.12.0 [INFO] [stderr] Checking webrtc v0.12.0 [INFO] [stderr] Checking vcp-media-server v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `is_video_keyframe` [INFO] [stdout] --> src/core/dispatch.rs:8:44 [INFO] [stdout] | [INFO] [stdout] 8 | use super::frame_ring::{is_playable_video, is_video_keyframe, SnapMode}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `last_playable_idr_seq` [INFO] [stdout] --> src/core/live_play.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use super::dispatch::{last_playable_idr_seq, DispatchError, DispatchReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OnceLock` [INFO] [stdout] --> src/core/metrics.rs:5:22 [INFO] [stdout] | [INFO] [stdout] 5 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_API` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | HTTP_API, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpApi` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/mod.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/hls/m3u8.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, SystemTime, UNIX_EPOCH}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MILLISECOND_CLOCK_RATE` and `VIDEO_RTP_CLOCK_RATE` [INFO] [stdout] --> src/server/hls/timing.rs:6:42 [INFO] [stdout] | [INFO] [stdout] 6 | media_timestamp_delta_ms_with_clock, MILLISECOND_CLOCK_RATE, VIDEO_RTP_CLOCK_RATE, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/hls/ts_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_keyframe_annex_b` [INFO] [stdout] --> src/server/hls/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | is_keyframe_annex_b, prepend_annex_b_config_if_needed, CodecType, DispatchPolicy, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `annex_b_with_config` [INFO] [stdout] --> src/server/hls/mod.rs:26:29 [INFO] [stdout] | [INFO] [stdout] 26 | use crate::server::webrtc::{annex_b_with_config, request_publisher_keyframe}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt` [INFO] [stdout] --> src/server/http_flv/puller.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::io::AsyncReadExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/server/http_flv/puller.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/http_flv/mod.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut`, and `Bytes` [INFO] [stdout] --> src/server/http_flv/mod.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use bytes::{BufMut, Bytes, BytesMut}; [INFO] [stdout] | ^^^^^^ ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::RwLock` [INFO] [stdout] --> src/server/http_flv/mod.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use parking_lot::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, `info`, and `warn` [INFO] [stdout] --> src/server/http_flv/mod.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufMut` [INFO] [stdout] --> src/server/rtmp/chunk.rs:3:18 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `info`, `trace`, and `warn` [INFO] [stdout] --> src/server/rtmp/chunk.rs:5:29 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, error, info, trace, warn}; [INFO] [stdout] | ^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtmp/pusher.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtmp/pusher.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChunkAssembler`, `ChunkHeader`, and `RtmpMessage` [INFO] [stdout] --> src/server/rtmp/pusher.rs:12:26 [INFO] [stdout] | [INFO] [stdout] 12 | use super::chunk::{self, ChunkAssembler, ChunkHeader, RtmpMessage}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtmpUrl` [INFO] [stdout] --> src/server/rtmp/pusher.rs:14:37 [INFO] [stdout] | [INFO] [stdout] 14 | use super::puller::{parse_rtmp_url, RtmpUrl}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/rtmp/session.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Level` [INFO] [stdout] --> src/server/rtmp/session.rs:5:28 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, info, Level}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType`, `StreamProtocol`, and `StreamSourceMode` [INFO] [stdout] --> src/server/rtmp/session.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::core::{CodecType, MediaFrame, StreamProtocol, StreamSourceMode}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::server::webrtc::h264_util::is_keyframe_annex_b` [INFO] [stdout] --> src/server/rtmp/session.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::server::webrtc::h264_util::is_keyframe_annex_b; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/rtmp/mod.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtsp/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtsp/mod.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TcpStream` [INFO] [stdout] --> src/server/rtsp/mod.rs:6:31 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::net::{TcpListener, TcpStream}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::Duration` [INFO] [stdout] --> src/server/rtsp/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/mod.rs:11:30 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::core::{CodecType, MediaFrame, StreamManager, StreamProtocol, StreamSourceMode, Track}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn` [INFO] [stdout] --> src/server/rtsp/client_session.rs:8:15 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType` and `MediaFrame` [INFO] [stdout] --> src/server/rtsp/client_session.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::core::{CodecType, MediaFrame, StreamManager, Track}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/rtsp/play_egress.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::net::TcpStream` [INFO] [stdout] --> src/server/rtsp/pusher.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/pusher.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | CodecType, MediaFrame, MediaTransport, PusherId, StreamManager, StreamProtocol, StreamPusher, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `channel` [INFO] [stdout] --> src/server/rtsp/server_session.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtspRequest` [INFO] [stdout] --> src/server/rtsp/server_session.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | InterleavedChannel, RtspRequest, RtspResponse, RtspServer, RtspSessionState, TransportMode, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::hevc_sprop_from_nals` [INFO] [stdout] --> src/server/rtsp/server_session.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use crate::core::hevc_sprop_from_nals; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SocketReader` and `spawn_write_loop` [INFO] [stdout] --> src/server/rtsp/server_session.rs:25:39 [INFO] [stdout] | [INFO] [stdout] 25 | use crate::server::socket_transport::{spawn_write_loop, ChannelSocketWriter, SocketReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel` [INFO] [stdout] --> src/server/socket_transport.rs:5:25 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/server/socket_transport.rs:7:29 [INFO] [stdout] | [INFO] [stdout] 7 | use tracing::{debug, error, info}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/transport/adapters.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/server/transport/adapters.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamManager` and `TransportStatus` [INFO] [stdout] --> src/server/transport/adapters.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `webrtc::track::track_local::TrackLocalWriter` [INFO] [stdout] --> src/server/webrtc/outbound_h264.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use webrtc::track::track_local::TrackLocalWriter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `contains_idr_nalu` [INFO] [stdout] --> src/server/webrtc/player.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | contains_idr_nalu, contains_sps_or_pps_nalu, describe_annex_b, duration_from_rtp_timestamps, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_video_keyframe` [INFO] [stdout] --> src/core/dispatch.rs:8:44 [INFO] [stdout] | [INFO] [stdout] 8 | use super::frame_ring::{is_playable_video, is_video_keyframe, SnapMode}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `last_playable_idr_seq` [INFO] [stdout] --> src/core/live_play.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use super::dispatch::{last_playable_idr_seq, DispatchError, DispatchReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OnceLock` [INFO] [stdout] --> src/core/metrics.rs:5:22 [INFO] [stdout] | [INFO] [stdout] 5 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_API` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | HTTP_API, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpApi` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/core/tester.rs:647:13 [INFO] [stdout] | [INFO] [stdout] 647 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/mod.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/hls/m3u8.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, SystemTime, UNIX_EPOCH}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/hls/ts_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_keyframe_annex_b` [INFO] [stdout] --> src/server/hls/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | is_keyframe_annex_b, prepend_annex_b_config_if_needed, CodecType, DispatchPolicy, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `annex_b_with_config` [INFO] [stdout] --> src/server/hls/mod.rs:26:29 [INFO] [stdout] | [INFO] [stdout] 26 | use crate::server::webrtc::{annex_b_with_config, request_publisher_keyframe}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt` [INFO] [stdout] --> src/server/http_flv/puller.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::io::AsyncReadExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/server/http_flv/puller.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/http_flv/mod.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut`, and `Bytes` [INFO] [stdout] --> src/server/http_flv/mod.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use bytes::{BufMut, Bytes, BytesMut}; [INFO] [stdout] | ^^^^^^ ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::RwLock` [INFO] [stdout] --> src/server/http_flv/mod.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use parking_lot::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, `info`, and `warn` [INFO] [stdout] --> src/server/http_flv/mod.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufMut` [INFO] [stdout] --> src/server/rtmp/chunk.rs:3:18 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `info`, `trace`, and `warn` [INFO] [stdout] --> src/server/rtmp/chunk.rs:5:29 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, error, info, trace, warn}; [INFO] [stdout] | ^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtmp/pusher.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtmp/pusher.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChunkAssembler`, `ChunkHeader`, and `RtmpMessage` [INFO] [stdout] --> src/server/rtmp/pusher.rs:12:26 [INFO] [stdout] | [INFO] [stdout] 12 | use super::chunk::{self, ChunkAssembler, ChunkHeader, RtmpMessage}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtmpUrl` [INFO] [stdout] --> src/server/rtmp/pusher.rs:14:37 [INFO] [stdout] | [INFO] [stdout] 14 | use super::puller::{parse_rtmp_url, RtmpUrl}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/rtmp/session.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Level` [INFO] [stdout] --> src/server/rtmp/session.rs:5:28 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, info, Level}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType`, `StreamProtocol`, and `StreamSourceMode` [INFO] [stdout] --> src/server/rtmp/session.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::core::{CodecType, MediaFrame, StreamProtocol, StreamSourceMode}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::server::webrtc::h264_util::is_keyframe_annex_b` [INFO] [stdout] --> src/server/rtmp/session.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::server::webrtc::h264_util::is_keyframe_annex_b; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/rtmp/mod.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtsp/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtsp/mod.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TcpStream` [INFO] [stdout] --> src/server/rtsp/mod.rs:6:31 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::net::{TcpListener, TcpStream}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::Duration` [INFO] [stdout] --> src/server/rtsp/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/mod.rs:11:30 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::core::{CodecType, MediaFrame, StreamManager, StreamProtocol, StreamSourceMode, Track}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn` [INFO] [stdout] --> src/server/rtsp/client_session.rs:8:15 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType` and `MediaFrame` [INFO] [stdout] --> src/server/rtsp/client_session.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::core::{CodecType, MediaFrame, StreamManager, Track}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::net::TcpStream` [INFO] [stdout] --> src/server/rtsp/pusher.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/pusher.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | CodecType, MediaFrame, MediaTransport, PusherId, StreamManager, StreamProtocol, StreamPusher, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `channel` [INFO] [stdout] --> src/server/rtsp/server_session.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtspRequest` [INFO] [stdout] --> src/server/rtsp/server_session.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | InterleavedChannel, RtspRequest, RtspResponse, RtspServer, RtspSessionState, TransportMode, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::hevc_sprop_from_nals` [INFO] [stdout] --> src/server/rtsp/server_session.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use crate::core::hevc_sprop_from_nals; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SocketReader` and `spawn_write_loop` [INFO] [stdout] --> src/server/rtsp/server_session.rs:25:39 [INFO] [stdout] | [INFO] [stdout] 25 | use crate::server::socket_transport::{spawn_write_loop, ChannelSocketWriter, SocketReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel` [INFO] [stdout] --> src/server/socket_transport.rs:5:25 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/server/socket_transport.rs:7:29 [INFO] [stdout] | [INFO] [stdout] 7 | use tracing::{debug, error, info}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/transport/adapters.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/server/transport/adapters.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamManager` and `TransportStatus` [INFO] [stdout] --> src/server/transport/adapters.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `webrtc::track::track_local::TrackLocalWriter` [INFO] [stdout] --> src/server/webrtc/outbound_h264.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use webrtc::track::track_local::TrackLocalWriter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `contains_idr_nalu` [INFO] [stdout] --> src/server/webrtc/player.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | contains_idr_nalu, contains_sps_or_pps_nalu, describe_annex_b, duration_from_rtp_timestamps, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/server/rtmp/pusher.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 126 | Err(crate::core::dispatch::DispatchError::Closed) => break, [INFO] [stdout] | ------------------------------------------------- matches all the relevant values [INFO] [stdout] 127 | Err(e) => { [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:247:13 [INFO] [stdout] | [INFO] [stdout] 247 | let mut reader = SocketReader::new(reader); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:833:21 [INFO] [stdout] | [INFO] [stdout] 833 | let mut result_values = vec![ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/server/rtsp/puller.rs:441:9 [INFO] [stdout] | [INFO] [stdout] 438 | / loop { [INFO] [stdout] 439 | | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] 440 | | } [INFO] [stdout] | |_________- any code following this expression is unreachable [INFO] [stdout] 441 | info!("[RTSP Puller] [Keepalive] Keepalive loop ended"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] = note: this warning originates in the macro `$crate::event` which comes from the expansion of the macro `info` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/server/rtmp/pusher.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 126 | Err(crate::core::dispatch::DispatchError::Closed) => break, [INFO] [stdout] | ------------------------------------------------- matches all the relevant values [INFO] [stdout] 127 | Err(e) => { [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:247:13 [INFO] [stdout] | [INFO] [stdout] 247 | let mut reader = SocketReader::new(reader); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/socket_transport.rs:65:21 [INFO] [stdout] | [INFO] [stdout] 65 | let mut final_result = result[..pos + delimiter.len()].to_vec(); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:833:21 [INFO] [stdout] | [INFO] [stdout] 833 | let mut result_values = vec![ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/server/rtsp/puller.rs:441:9 [INFO] [stdout] | [INFO] [stdout] 438 | / loop { [INFO] [stdout] 439 | | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] 440 | | } [INFO] [stdout] | |_________- any code following this expression is unreachable [INFO] [stdout] 441 | info!("[RTSP Puller] [Keepalive] Keepalive loop ended"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] = note: this warning originates in the macro `$crate::event` which comes from the expansion of the macro `info` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/socket_transport.rs:65:21 [INFO] [stdout] | [INFO] [stdout] 65 | let mut final_result = result[..pos + delimiter.len()].to_vec(); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaTransport` [INFO] [stdout] --> src/server/transport/adapters.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/metrics.rs:383:13 [INFO] [stdout] | [INFO] [stdout] 383 | mut hls, [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:86:17 [INFO] [stdout] | [INFO] [stdout] 86 | let tracks = vec![ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_segments` [INFO] [stdout] --> src/server/hls/m3u8.rs:199:41 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn slot_filename(sequence: u64, max_segments: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_segments` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `playlist_body` is never read [INFO] [stdout] --> src/server/hls/puller.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | playlist_body = body.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `best_bandwidth` [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_bandwidth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_bandwidth` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | let mut current_bandwidth = 0u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_bandwidth` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_bandwidth` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | current_bandwidth = bw_str.parse().unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/puller.rs:310:9 [INFO] [stdout] | [INFO] [stdout] 310 | let has_audio = es_map.contains_key(&all_audio_pid.unwrap_or(0xFFFF)); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pps_found` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:329:13 [INFO] [stdout] | [INFO] [stdout] 329 | let mut pps_found = false; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_pps_found` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_bytes` [INFO] [stdout] --> src/server/http_flv/puller.rs:377:25 [INFO] [stdout] | [INFO] [stdout] 377 | let pps_bytes = nal_unit[4..].to_vec(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_bytes` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:368:21 [INFO] [stdout] | [INFO] [stdout] 368 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ---------------- `pps_found` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:379:21 [INFO] [stdout] | [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `sps_sent` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:516:9 [INFO] [stdout] | [INFO] [stdout] 516 | let mut sps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_sps_sent` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_sent` [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_sent` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `prev_tag_size` [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_tag_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_tag_offset` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:522:9 [INFO] [stdout] | [INFO] [stdout] 522 | let mut current_tag_offset = 0usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_tag_offset` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:606:45 [INFO] [stdout] | [INFO] [stdout] 606 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | --------------- `sps_sent` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:661:49 [INFO] [stdout] | [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_tag_offset` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:557:13 [INFO] [stdout] | [INFO] [stdout] 557 | current_tag_offset = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_video` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:43 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_video` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:60 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/puller.rs:114:41 [INFO] [stdout] | [INFO] [stdout] 114 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 140 | / server_stream_id = wait_for_create_stream( [INFO] [stdout] 141 | | &mut read_half, [INFO] [stdout] 142 | | &mut buf, [INFO] [stdout] 143 | | &mut chunk_states, [INFO] [stdout] ... | [INFO] [stdout] 148 | | .await? as u32; [INFO] [stdout] | |______________________- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/pusher.rs:478:41 [INFO] [stdout] | [INFO] [stdout] 478 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 492 | server_stream_id = wait_for_create_stream(&mut conn, tx_id).await? as u32; [INFO] [stdout] | ------------------------------------------------------------------------- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `initial_buf_len` [INFO] [stdout] --> src/server/rtmp/mod.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | let initial_buf_len = buf.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_buf_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaTransport` [INFO] [stdout] --> src/server/transport/adapters.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1522:21 [INFO] [stdout] | [INFO] [stdout] 1522 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1526:21 [INFO] [stdout] | [INFO] [stdout] 1526 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `response_buffer` [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `request` [INFO] [stdout] --> src/server/rtsp/client_session.rs:453:21 [INFO] [stdout] | [INFO] [stdout] 453 | let request = RtspRequest::new("GET_PARAMETER", &remote_url) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:844:17 [INFO] [stdout] | [INFO] [stdout] 844 | let mut rtp = Self::build_rtp_packet(96, seq, timestamp, ssrc, false, sps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:850:17 [INFO] [stdout] | [INFO] [stdout] 850 | let mut rtp = Self::build_rtp_packet(96, seq + 1, timestamp, ssrc, false, pps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_url` [INFO] [stdout] --> src/server/rtsp/puller.rs:436:29 [INFO] [stdout] | [INFO] [stdout] 436 | async fn send_keepalive(remote_url: String) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_url` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/sdp_builder.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut session = SessionDescription { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:994:13 [INFO] [stdout] | [INFO] [stdout] 994 | let sps_cache = Arc::clone(&self.sps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:995:13 [INFO] [stdout] | [INFO] [stdout] 995 | let pps_cache = Arc::clone(&self.pps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/metrics.rs:383:13 [INFO] [stdout] | [INFO] [stdout] 383 | mut hls, [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:489:13 [INFO] [stdout] | [INFO] [stdout] 489 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq).header( [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:497:13 [INFO] [stdout] | [INFO] [stdout] 497 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:520:13 [INFO] [stdout] | [INFO] [stdout] 520 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:542:13 [INFO] [stdout] | [INFO] [stdout] 542 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:563:13 [INFO] [stdout] | [INFO] [stdout] 563 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:568:13 [INFO] [stdout] | [INFO] [stdout] 568 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:573:13 [INFO] [stdout] | [INFO] [stdout] 573 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:578:13 [INFO] [stdout] | [INFO] [stdout] 578 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:585:13 [INFO] [stdout] | [INFO] [stdout] 585 | let mut response = RtspResponse::new(status_code, reason).header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:86:17 [INFO] [stdout] | [INFO] [stdout] 86 | let tracks = vec![ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/core/tester.rs:217:13 [INFO] [stdout] | [INFO] [stdout] 217 | let stream = manager.create_stream( [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:255:13 [INFO] [stdout] | [INFO] [stdout] 255 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:279:13 [INFO] [stdout] | [INFO] [stdout] 279 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:308:13 [INFO] [stdout] | [INFO] [stdout] 308 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/core/tester.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | let buf = vec![ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/core/tester.rs:718:13 [INFO] [stdout] | [INFO] [stdout] 718 | let stream = manager.create_stream( [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:736:13 [INFO] [stdout] | [INFO] [stdout] 736 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_manager` is never read [INFO] [stdout] --> src/process/transcode/mod.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct TranscodeManager { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 67 | sessions: Arc>>, [INFO] [stdout] 68 | stream_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TranscodeManager` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `segment_wall_secs` and `output_dir` are never used [INFO] [stdout] --> src/server/hls/mod.rs:199:8 [INFO] [stdout] | [INFO] [stdout] 119 | impl HlsSession { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 199 | fn segment_wall_secs(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 553 | pub fn output_dir(&self) -> &Path { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `download_segment` is never used [INFO] [stdout] --> src/server/hls/puller.rs:811:10 [INFO] [stdout] | [INFO] [stdout] 811 | async fn download_segment( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_ts_segment_hls` is never used [INFO] [stdout] --> src/server/hls/puller.rs:1186:10 [INFO] [stdout] | [INFO] [stdout] 1186 | async fn process_ts_segment_hls( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TS_PACKET_SIZE` is never used [INFO] [stdout] --> src/server/hls/puller.rs:1231:7 [INFO] [stdout] | [INFO] [stdout] 1231 | const TS_PACKET_SIZE: usize = 188; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prepare_h264_au_for_ts` is never used [INFO] [stdout] --> src/server/hls/ts_muxer.rs:277:4 [INFO] [stdout] | [INFO] [stdout] 277 | fn prepare_h264_au_for_ts(data: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `starts_with_aud` is never used [INFO] [stdout] --> src/server/hls/ts_muxer.rs:290:4 [INFO] [stdout] | [INFO] [stdout] 290 | fn starts_with_aud(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_paused` is never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 38 | impl RtmpPusher { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 75 | fn is_paused(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `build_setup_udp_response` is never used [INFO] [stdout] --> src/server/rtsp/mod.rs:527:8 [INFO] [stdout] | [INFO] [stdout] 42 | impl RtspServer { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 527 | fn build_setup_udp_response( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_manager` is never read [INFO] [stdout] --> src/server/rtsp/client_session.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RtspClientSession { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | stream_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtcp_socket` and `server_rtcp_addr` are never read [INFO] [stdout] --> src/server/rtsp/client_session.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 28 | struct TrackUdpTransport { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 29 | rtp_socket: Arc, [INFO] [stdout] 30 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 31 | server_rtp_addr: SocketAddr, [INFO] [stdout] 32 | server_rtcp_addr: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `vps_cache` is never read [INFO] [stdout] --> src/server/rtsp/pusher.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct RtspPusher { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 27 | vps_cache: Arc>>>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_paused` is never used [INFO] [stdout] --> src/server/rtsp/pusher.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 33 | impl RtspPusher { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 70 | fn is_paused(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sdp_generated` is never read [INFO] [stdout] --> src/server/rtsp/server_session.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct RtspServerSession { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 43 | sdp_generated: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtcp_socket` and `client_rtcp_addr` are never read [INFO] [stdout] --> src/server/rtsp/server_session.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 47 | struct UdpTrackTransport { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 48 | rtp_socket: Arc, [INFO] [stdout] 49 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 50 | client_rtp_addr: SocketAddr, [INFO] [stdout] 51 | client_rtcp_addr: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UdpTrackTransport` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `send_rtp_over_udp_track`, `extract_h264_sps_pps_from_payload`, and `is_h264_keyframe` are never used [INFO] [stdout] --> src/server/rtsp/server_session.rs:256:14 [INFO] [stdout] | [INFO] [stdout] 54 | impl RtspServerSession { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 256 | async fn send_rtp_over_udp_track(&self, data: &[u8], track_id: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 374 | fn extract_h264_sps_pps_from_payload(payload: &[u8]) -> (Option>, Option>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 697 | fn is_h264_keyframe(payload: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_rtp_stale_in_gop` is never used [INFO] [stdout] --> src/server/webrtc/h264_util.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn is_rtp_stale_in_gop(curr: u64, prev: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `h264_payload_type_from_sdp` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h264.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn h264_payload_type_from_sdp(sdp: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_video_media_description` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h264.rs:54:4 [INFO] [stdout] | [INFO] [stdout] 54 | fn find_video_media_description(sdp: &SessionDescription) -> Option<&MediaDescription> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `h265_payload_type_from_sdp` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h265.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn h265_payload_type_from_sdp(sdp: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_video_media_description` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h265.rs:40:4 [INFO] [stdout] | [INFO] [stdout] 40 | fn find_video_media_description(sdp: &SessionDescription) -> Option<&MediaDescription> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Lagged` is never constructed [INFO] [stdout] --> src/server/webrtc/player.rs:785:5 [INFO] [stdout] | [INFO] [stdout] 783 | enum RecvCoalesced { [INFO] [stdout] | ------------- variant in this enum [INFO] [stdout] 784 | Frame(MediaFrame, u64), [INFO] [stdout] 785 | Lagged(u64), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/server/rtmp/pusher.rs:189:25 [INFO] [stdout] | [INFO] [stdout] 189 | / Self::send_rtmp_message( [INFO] [stdout] 190 | | &mut writer, [INFO] [stdout] 191 | | 0x08, [INFO] [stdout] 192 | | msg_stream_id, [INFO] [stdout] ... | [INFO] [stdout] 198 | | .await; [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 189 | let _ = Self::send_rtmp_message( [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_segments` [INFO] [stdout] --> src/server/hls/m3u8.rs:199:41 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn slot_filename(sequence: u64, max_segments: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_segments` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `playlist_body` is never read [INFO] [stdout] --> src/server/hls/puller.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | playlist_body = body.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> tests/transcode_tests.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> tests/common/process_manager.rs:393:5 [INFO] [stdout] | [INFO] [stdout] 393 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::TestCodec` [INFO] [stdout] --> tests/common/rtmp_helper.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use super::TestCodec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> tests/common/process_manager.rs:393:5 [INFO] [stdout] | [INFO] [stdout] 393 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::TestCodec` [INFO] [stdout] --> tests/common/rtmp_helper.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use super::TestCodec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Track` [INFO] [stdout] --> tests/manager_tests.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | Track, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtspTestHelper` and `rtmp_helper::RtmpTestHelper` [INFO] [stdout] --> tests/manager_tests.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | rtmp_helper::RtmpTestHelper, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | rtsp_helper::{create_rtsp_announce_sdp, RtspTestHelper}, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> tests/common/process_manager.rs:393:5 [INFO] [stdout] | [INFO] [stdout] 393 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::TestCodec` [INFO] [stdout] --> tests/common/rtmp_helper.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use super::TestCodec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType`, `DispatchPolicy`, `MediaFrame`, `StreamManager`, `StreamProtocol`, `StreamSourceMode`, and `Track` [INFO] [stdout] --> tests/play_tests.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | CodecType, DispatchPolicy, MediaFrame, StreamManager, StreamProtocol, StreamSourceMode, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | Track, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtspTestHelper`, `TestConfig`, `cleanup_test_streams`, `create_rtsp_announce_sdp`, `generate_h264_idr_frame`, `generate_h264_sps_pps`, `generate_h265_idr_frame`, `generate_h265_vps_sps_pps`, `hls_helper::HlsTestHelper`, `http_flv_helper::HttpFlvTestHelper`, `publish_and_decode_check`, `rtmp_helper::RtmpTestHelper`, and `setup_test_stream` [INFO] [stdout] --> tests/play_tests.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | generate_h264_idr_frame, generate_h264_sps_pps, generate_h265_idr_frame, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 29 | generate_h265_vps_sps_pps, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 30 | }, [INFO] [stdout] 31 | hls_helper::HlsTestHelper, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | http_flv_helper::HttpFlvTestHelper, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | publish_and_decode_check, publish_and_hls_playback, publish_and_playback, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | rtmp_helper::RtmpTestHelper, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 46 | rtsp_helper::{create_rtsp_announce_sdp, RtspTestHelper}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] 47 | stream_helper::{cleanup_test_streams, setup_test_stream}, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 48 | verify::verify_stream_server_side, [INFO] [stdout] 49 | TestCodec, TestConfig, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/common/verify.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | let mut child = Command::new("ffmpeg") [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `best_bandwidth` [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_bandwidth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_bandwidth` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | let mut current_bandwidth = 0u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_bandwidth` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_bandwidth` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | current_bandwidth = bw_str.parse().unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/puller.rs:310:9 [INFO] [stdout] | [INFO] [stdout] 310 | let has_audio = es_map.contains_key(&all_audio_pid.unwrap_or(0xFFFF)); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pps_found` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:329:13 [INFO] [stdout] | [INFO] [stdout] 329 | let mut pps_found = false; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_pps_found` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_bytes` [INFO] [stdout] --> src/server/http_flv/puller.rs:377:25 [INFO] [stdout] | [INFO] [stdout] 377 | let pps_bytes = nal_unit[4..].to_vec(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_bytes` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:368:21 [INFO] [stdout] | [INFO] [stdout] 368 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ---------------- `pps_found` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:379:21 [INFO] [stdout] | [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `sps_sent` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:516:9 [INFO] [stdout] | [INFO] [stdout] 516 | let mut sps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_sps_sent` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_sent` [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_sent` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `prev_tag_size` [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_tag_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_tag_offset` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:522:9 [INFO] [stdout] | [INFO] [stdout] 522 | let mut current_tag_offset = 0usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_tag_offset` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:606:45 [INFO] [stdout] | [INFO] [stdout] 606 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | --------------- `sps_sent` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:661:49 [INFO] [stdout] | [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_tag_offset` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:557:13 [INFO] [stdout] | [INFO] [stdout] 557 | current_tag_offset = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/common/verify.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | let mut child = Command::new("ffmpeg") [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_video` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:43 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_video` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:60 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> tests/common/verify.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | let mut child = Command::new("ffmpeg") [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> tests/common/process_manager.rs:670:12 [INFO] [stdout] | [INFO] [stdout] 670 | Ok(s) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `app` [INFO] [stdout] --> tests/common/rtmp_helper.rs:62:54 [INFO] [stdout] | [INFO] [stdout] 62 | pub fn create_rtmp_publish_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_app` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `app` [INFO] [stdout] --> tests/common/rtmp_helper.rs:67:51 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn create_rtmp_play_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_app` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> tests/common/stream_helper.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | if let Some(stream) = manager.get_stream(&stream_id.to_string()) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> tests/common/process_manager.rs:670:12 [INFO] [stdout] | [INFO] [stdout] 670 | Ok(s) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `app` [INFO] [stdout] --> tests/common/rtmp_helper.rs:62:54 [INFO] [stdout] | [INFO] [stdout] 62 | pub fn create_rtmp_publish_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_app` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `app` [INFO] [stdout] --> tests/common/rtmp_helper.rs:67:51 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn create_rtmp_play_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_app` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> tests/common/stream_helper.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | if let Some(stream) = manager.get_stream(&stream_id.to_string()) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/puller.rs:114:41 [INFO] [stdout] | [INFO] [stdout] 114 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 140 | / server_stream_id = wait_for_create_stream( [INFO] [stdout] 141 | | &mut read_half, [INFO] [stdout] 142 | | &mut buf, [INFO] [stdout] 143 | | &mut chunk_states, [INFO] [stdout] ... | [INFO] [stdout] 148 | | .await? as u32; [INFO] [stdout] | |______________________- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `last_body` is never read [INFO] [stdout] --> tests/transcode_tests.rs:536:29 [INFO] [stdout] | [INFO] [stdout] 536 | let mut last_body = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 539 | last_body = resp.body.clone(); [INFO] [stdout] | --------- `last_body` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestConfig` is never constructed [INFO] [stdout] --> tests/common/mod.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct TestConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `with_duration` are never used [INFO] [stdout] --> tests/common/mod.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl TestConfig { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 28 | pub fn new(stream_id: &str, codec: TestCodec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn with_duration(mut self, duration: u64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_str` and `payload_type` are never used [INFO] [stdout] --> tests/common/mod.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl TestCodec { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 50 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn payload_type(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `video_bitrate` and `audio_bitrate` are never read [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct FfmpegTestConfig { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 19 | pub video_bitrate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 20 | /// Audio bitrate in kbps. [INFO] [stdout] 21 | pub audio_bitrate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FfmpegTestConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pixel_format` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 37 | impl FfmpegTestConfig { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn pixel_format(&self, codec: TestCodec) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_simple_rtmp_publish_command` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn create_simple_rtmp_publish_command( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_hls_play_command` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:263:8 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn create_hls_play_command(m3u8_url: &str, duration_secs: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_h265_vps_sps_pps` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:74:8 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn generate_h265_vps_sps_pps() -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_h265_p_frame` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:126:8 [INFO] [stdout] | [INFO] [stdout] 126 | pub fn generate_h265_p_frame(frame_num: u32) -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_aac_frame` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:145:8 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn generate_aac_frame(frame_num: u32) -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `h264_nal_type` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:191:8 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn h264_nal_type(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `output_dir` is never read [INFO] [stdout] --> tests/common/hls_helper.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct HlsTestHelper { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 10 | stream_id: String, [INFO] [stdout] 11 | output_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HlsTestHelper` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> tests/common/hls_helper.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl HlsTestHelper { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn output_dir(&self) -> &PathBuf { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn master_playlist_url(&self, host: &str, port: u16) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn playlist_url(&self, host: &str, port: u16, variant: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn segment_url(&self, host: &str, port: u16, variant: &str, segment: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub fn master_playlist_path(&self) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn playlist_path(&self, variant: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn segment_path(&self, variant: &str, segment: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_playable` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:140:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl M3u8Info { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn is_playable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_SEGMENT_DURATION` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:158:11 [INFO] [stdout] | [INFO] [stdout] 158 | pub const DEFAULT_SEGMENT_DURATION: u32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MAX_SEGMENTS` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:161:11 [INFO] [stdout] | [INFO] [stdout] 161 | pub const DEFAULT_MAX_SEGMENTS: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_media_playlist` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:181:8 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn generate_media_playlist( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_http_ok` is never used [INFO] [stdout] --> tests/common/http_client.rs:88:14 [INFO] [stdout] | [INFO] [stdout] 88 | pub async fn wait_for_http_ok( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `port`, `get_request`, and `get_request_with_params` are never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl HttpFlvTestHelper { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn port(&self) -> u16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn get_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn get_request_with_params(&self, params: &[(&str, &str)]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_success_response` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | pub fn is_success_response(response: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_content_type` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn parse_content_type(response: &str) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_flv_tag_header` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:162:8 [INFO] [stdout] | [INFO] [stdout] 162 | pub fn parse_flv_tag_header(data: &[u8]) -> Option<(u8, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:125:15 [INFO] [stdout] | [INFO] [stdout] 125 | pub const AUDIO: u8 = 0x08; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:128:15 [INFO] [stdout] | [INFO] [stdout] 128 | pub const VIDEO: u8 = 0x09; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SCRIPT` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:131:15 [INFO] [stdout] | [INFO] [stdout] 131 | pub const SCRIPT: u8 = 0x12; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INTER_FRAME` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:139:19 [INFO] [stdout] | [INFO] [stdout] 139 | pub const INTER_FRAME: u8 = 0x27; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INFO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:142:19 [INFO] [stdout] | [INFO] [stdout] 142 | pub const INFO: u8 = 0x20; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AAC` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:148:19 [INFO] [stdout] | [INFO] [stdout] 148 | pub const AAC: u8 = 0xA0; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MP3` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:151:19 [INFO] [stdout] | [INFO] [stdout] 151 | pub const MP3: u8 = 0x80; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> tests/common/media_server_runner.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 67 | impl MediaServer { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 68 | /// Start the media server on default ports (requires ports to be free). [INFO] [stdout] 69 | pub fn start() -> std::io::Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn start_isolated_for_stream(stream_id: &str) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn start_with_ports(ports: ServerPorts) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn rtsp_url(&self, stream_id: &str) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn http_flv_url(&self, stream_id: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn hls_url(&self, stream_id: &str) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub async fn api_rtmp_pull( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub async fn api_rtsp_pull( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub async fn trigger_hls(&self, stream_id: &str) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProcessManager` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct ProcessManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> tests/common/process_manager.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ProcessManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 40 | /// Create a new process manager. [INFO] [stdout] 41 | pub fn new(stream_manager: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn spawn_ffmpeg_publish(&self, args: &[String]) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn spawn_ffplay(&self, args: &[String]) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn is_stream_active(&self, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub async fn wait_for_stream_active(&self, stream_id: &str, timeout_secs: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_stream_stats(&self, stream_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn cleanup(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_ffmpeg_for_stream` is never used [INFO] [stdout] --> tests/common/process_manager.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn spawn_ffmpeg_for_stream(stream_id: &str, args: &[String]) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamStats` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:171:12 [INFO] [stdout] | [INFO] [stdout] 171 | pub struct StreamStats { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `H265` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:196:5 [INFO] [stdout] | [INFO] [stdout] 194 | pub enum PublishCodec { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] 195 | H264, [INFO] [stdout] 196 | H265, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PublishCodec` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `rtsp`, `continuous`, `rtmp_enhanced_hevc`, `rtsp_transport_tcp`, and `rtsp_transport_udp` are never used [INFO] [stdout] --> tests/common/process_manager.rs:225:12 [INFO] [stdout] | [INFO] [stdout] 215 | impl PublishConfig { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn rtsp(host: &str, port: u16, stream_id: &str) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn continuous(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn rtmp_enhanced_hevc(mut self, enabled: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn rtsp_transport_tcp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn rtsp_transport_udp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Tcp` and `Udp` are never constructed [INFO] [stdout] --> tests/common/process_manager.rs:385:5 [INFO] [stdout] | [INFO] [stdout] 384 | pub enum RtspTransport { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 385 | Tcp, [INFO] [stdout] | ^^^ [INFO] [stdout] 386 | Udp, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtspTransport` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `RTSP`, `HTTP_FLV`, and `HLS` are never constructed [INFO] [stdout] --> tests/common/process_manager.rs:392:5 [INFO] [stdout] | [INFO] [stdout] 390 | pub enum PlayProtocol { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 391 | RTMP, [INFO] [stdout] 392 | RTSP, [INFO] [stdout] | ^^^^ [INFO] [stdout] 393 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 394 | HLS, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PlayProtocol` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `rtsp`, `http_flv`, `hls`, `rtsp_transport_tcp`, and `rtsp_transport_udp` are never used [INFO] [stdout] --> tests/common/process_manager.rs:408:12 [INFO] [stdout] | [INFO] [stdout] 397 | impl PlayConfig { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 408 | pub fn rtsp(url: &str) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | pub fn http_flv(url: &str) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub fn hls(url: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn rtsp_transport_tcp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn rtsp_transport_udp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_and_hls_playback` is never used [INFO] [stdout] --> tests/common/process_manager.rs:535:14 [INFO] [stdout] | [INFO] [stdout] 535 | pub async fn publish_and_hls_playback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_api_pull_and_play` is never used [INFO] [stdout] --> tests/common/process_manager.rs:560:14 [INFO] [stdout] | [INFO] [stdout] 560 | pub async fn publish_api_pull_and_play( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_and_playback` is never used [INFO] [stdout] --> tests/common/process_manager.rs:596:14 [INFO] [stdout] | [INFO] [stdout] 596 | pub async fn publish_and_playback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_with_api_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:620:14 [INFO] [stdout] | [INFO] [stdout] 620 | pub async fn run_ffmpeg_decode_with_api_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_without_api_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:649:14 [INFO] [stdout] | [INFO] [stdout] 649 | pub async fn run_ffmpeg_decode_without_api_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_and_decode_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:773:14 [INFO] [stdout] | [INFO] [stdout] 773 | pub async fn publish_and_decode_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_http_flv_stream` is never used [INFO] [stdout] --> tests/common/process_manager.rs:817:14 [INFO] [stdout] | [INFO] [stdout] 817 | pub async fn verify_http_flv_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_hls_playlist` is never used [INFO] [stdout] --> tests/common/process_manager.rs:838:14 [INFO] [stdout] | [INFO] [stdout] 838 | pub async fn verify_hls_playlist( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_MAGIC` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MARKER_MAGIC: u16 = 0x5A3C; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_BYTES` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | const MARKER_BYTES: usize = 14; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_BITS` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MARKER_BITS: usize = MARKER_BYTES * 8; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_COLS` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:24:7 [INFO] [stdout] | [INFO] [stdout] 24 | const MARKER_COLS: usize = 16; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_BLOCK` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const MARKER_BLOCK: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_X` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | const MARKER_X: usize = 8; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_Y` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:27:7 [INFO] [stdout] | [INFO] [stdout] 27 | const MARKER_Y: usize = 8; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RealtimeProbeConfig` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 30 | pub struct RealtimeProbeConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RealtimeStats` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct RealtimeStats { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TimestampVideoPublisher` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 70 | pub struct TimestampVideoPublisher { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TimestampPublisherConfig` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 77 | pub struct TimestampPublisherConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `start` and `stop` are never used [INFO] [stdout] --> tests/common/realtime_probe.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 84 | impl TimestampVideoPublisher { [INFO] [stdout] | ---------------------------- associated items in this implementation [INFO] [stdout] 85 | pub fn start( [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn stop(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `measure_realtime_playback` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:130:14 [INFO] [stdout] | [INFO] [stdout] 130 | pub async fn measure_realtime_playback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_realtime_stats` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:292:8 [INFO] [stdout] | [INFO] [stdout] 292 | pub fn assert_realtime_stats( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FrameMarker` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:348:8 [INFO] [stdout] | [INFO] [stdout] 348 | struct FrameMarker { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_args` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:353:4 [INFO] [stdout] | [INFO] [stdout] 353 | fn publish_args(publisher: &TimestampPublisherConfig, config: &RealtimeProbeConfig) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_frame_writer` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn spawn_frame_writer( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_timestamp_frame` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:474:4 [INFO] [stdout] | [INFO] [stdout] 474 | fn generate_timestamp_frame(config: &RealtimeProbeConfig, marker: FrameMarker) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `paint_marker_block` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:500:4 [INFO] [stdout] | [INFO] [stdout] 500 | fn paint_marker_block(frame: &mut [u8], width: usize, bit_index: usize, bit: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decode_marker` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:517:4 [INFO] [stdout] | [INFO] [stdout] 517 | fn decode_marker(frame: &[u8], width: usize, height: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `percentile` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:550:4 [INFO] [stdout] | [INFO] [stdout] 550 | fn percentile(sorted: &[u64], percentile: usize) -> u64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `now_ms` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:562:4 [INFO] [stdout] | [INFO] [stdout] 562 | fn now_ms() -> u64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `app` and `host` are never read [INFO] [stdout] --> tests/common/rtmp_helper.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct RtmpTestHelper { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 11 | stream_id: String, [INFO] [stdout] 12 | app: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 13 | host: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtmpTestHelper` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `host`, `publish_command`, `play_command`, and `rtmp_url` are never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl RtmpTestHelper { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn host(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn publish_command(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn play_command(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn rtmp_url(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_rtmp_publish_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:62:8 [INFO] [stdout] | [INFO] [stdout] 62 | pub fn create_rtmp_publish_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_rtmp_play_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn create_rtmp_play_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_create_stream_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn build_rtmp_create_stream_command() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_release_stream_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:105:8 [INFO] [stdout] | [INFO] [stdout] 105 | pub fn build_rtmp_release_stream_command(stream_key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_fcpublish_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | pub fn build_rtmp_fcpublish_command(stream_key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `chunk_header_size` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:152:8 [INFO] [stdout] | [INFO] [stdout] 152 | pub fn chunk_header_size(chunk_stream_id: u8) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_h264_video_header` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:163:8 [INFO] [stdout] | [INFO] [stdout] 163 | pub fn build_rtmp_h264_video_header(is_keyframe: bool, codec_id: u8) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl RtspTestHelper { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn options_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn describe_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn setup_video_request(&self, transport: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn setup_audio_request(&self, transport: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn play_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn pause_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn teardown_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn next_cseq(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_rtsp_announce_sdp` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:141:8 [INFO] [stdout] | [INFO] [stdout] 141 | pub fn create_rtsp_announce_sdp(codec: TestCodec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_cseq` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn parse_cseq(response: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTP_AVP_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:247:15 [INFO] [stdout] | [INFO] [stdout] 247 | pub const RTP_AVP_TCP: &str = "RTP/AVP/TCP;interleaved=0-1"; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTP_AVP_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:250:15 [INFO] [stdout] | [INFO] [stdout] 250 | pub const RTP_AVP_UDP: &str = "RTP/AVP;unicast;client_port=5000-5001"; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:253:15 [INFO] [stdout] | [INFO] [stdout] 253 | pub const VIDEO_TCP: &str = "RTP/AVP/TCP;unicast;interleaved=0-1"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:256:15 [INFO] [stdout] | [INFO] [stdout] 256 | pub const AUDIO_TCP: &str = "RTP/AVP/TCP;unicast;interleaved=2-3"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:259:15 [INFO] [stdout] | [INFO] [stdout] 259 | pub const VIDEO_UDP: &str = "RTP/AVP;unicast;client_port=5000-5001;server_port=6000-6001"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:262:15 [INFO] [stdout] | [INFO] [stdout] 262 | pub const AUDIO_UDP: &str = "RTP/AVP;unicast;client_port=5002-5003;server_port=6002-6003"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestRtmpServer` is never constructed [INFO] [stdout] --> tests/common/server_helper.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct TestRtmpServer { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `start`, `port`, `manager`, and `publish_url` are never used [INFO] [stdout] --> tests/common/server_helper.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 22 | impl TestRtmpServer { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 23 | pub async fn start() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn port(&self) -> u16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn manager(&self) -> Arc { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn publish_url(&self, app: &str, stream_key: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_tcp` is never used [INFO] [stdout] --> tests/common/server_helper.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | async fn wait_for_tcp(host: &str, port: u16, timeout: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `setup_test_stream` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn setup_test_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cleanup_test_streams` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:39:8 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn cleanup_test_streams(manager: &Arc, stream_ids: &[&str]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unique_stream_id` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn unique_stream_id(prefix: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_stream_active` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn is_stream_active(manager: &Arc, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_stream_active` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | pub async fn wait_for_stream_active( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_test_port` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:87:8 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn get_test_port() -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_command` is never used [INFO] [stdout] --> tests/common/verify.rs:20:4 [INFO] [stdout] | [INFO] [stdout] 20 | fn format_command(program: &str, args: &[String]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamInfo` is never constructed [INFO] [stdout] --> tests/common/verify.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct StreamInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FlvStats` is never constructed [INFO] [stdout] --> tests/common/verify.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct FlvStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HlsStats` is never constructed [INFO] [stdout] --> tests/common/verify.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct HlsStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HlsSegmentInfo` is never constructed [INFO] [stdout] --> tests/common/verify.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct HlsSegmentInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_check` is never used [INFO] [stdout] --> tests/common/verify.rs:105:14 [INFO] [stdout] | [INFO] [stdout] 105 | pub async fn run_ffmpeg_decode_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_check_for_stream` is never used [INFO] [stdout] --> tests/common/verify.rs:123:14 [INFO] [stdout] | [INFO] [stdout] 123 | pub async fn run_ffmpeg_decode_check_for_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_check_inner` is never used [INFO] [stdout] --> tests/common/verify.rs:142:10 [INFO] [stdout] | [INFO] [stdout] 142 | async fn run_ffmpeg_decode_check_inner( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_stream_server_side` is never used [INFO] [stdout] --> tests/common/verify.rs:365:14 [INFO] [stdout] | [INFO] [stdout] 365 | pub async fn verify_stream_server_side( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_stream_min_frames` is never used [INFO] [stdout] --> tests/common/verify.rs:415:14 [INFO] [stdout] | [INFO] [stdout] 415 | pub async fn assert_stream_min_frames( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probe_stream_info` is never used [INFO] [stdout] --> tests/common/verify.rs:454:8 [INFO] [stdout] | [INFO] [stdout] 454 | pub fn probe_stream_info(url: &str, timeout_secs: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probe_stream_info_for_stream` is never used [INFO] [stdout] --> tests/common/verify.rs:458:8 [INFO] [stdout] | [INFO] [stdout] 458 | pub fn probe_stream_info_for_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probe_stream_info_inner` is never used [INFO] [stdout] --> tests/common/verify.rs:466:4 [INFO] [stdout] | [INFO] [stdout] 466 | fn probe_stream_info_inner( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_http_flv_stream` is never used [INFO] [stdout] --> tests/common/verify.rs:564:14 [INFO] [stdout] | [INFO] [stdout] 564 | pub async fn verify_http_flv_stream(url: &str, duration_secs: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get_raw` is never used [INFO] [stdout] --> tests/common/verify.rs:577:10 [INFO] [stdout] | [INFO] [stdout] 577 | async fn http_get_raw(url: &str, max_duration: Duration) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_flv_data` is never used [INFO] [stdout] --> tests/common/verify.rs:645:4 [INFO] [stdout] | [INFO] [stdout] 645 | fn parse_flv_data(data: &[u8], expected_duration_secs: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_hls_playlist` is never used [INFO] [stdout] --> tests/common/verify.rs:733:14 [INFO] [stdout] | [INFO] [stdout] 733 | pub async fn verify_hls_playlist( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get_string` is never used [INFO] [stdout] --> tests/common/verify.rs:874:10 [INFO] [stdout] | [INFO] [stdout] 874 | async fn http_get_string(host: &str, port: u16, path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get_raw_segment` is never used [INFO] [stdout] --> tests/common/verify.rs:888:10 [INFO] [stdout] | [INFO] [stdout] 888 | async fn http_get_raw_segment(host: &str, port: u16, path: &str) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_stream_all_layers` is never used [INFO] [stdout] --> tests/common/verify.rs:940:14 [INFO] [stdout] | [INFO] [stdout] 940 | pub async fn verify_stream_all_layers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VeificationReport` is never constructed [INFO] [stdout] --> tests/common/verify.rs:1012:12 [INFO] [stdout] | [INFO] [stdout] 1012 | pub struct VeificationReport { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_http_url` is never used [INFO] [stdout] --> tests/common/verify.rs:1023:4 [INFO] [stdout] | [INFO] [stdout] 1023 | fn parse_http_url(url: &str) -> Result<(String, u16, String), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dechunk_body` is never used [INFO] [stdout] --> tests/common/verify.rs:1040:4 [INFO] [stdout] | [INFO] [stdout] 1040 | fn dechunk_body(data: &[u8]) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_http_body_start` is never used [INFO] [stdout] --> tests/common/verify.rs:1089:4 [INFO] [stdout] | [INFO] [stdout] 1089 | fn find_http_body_start(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_base_url` is never used [INFO] [stdout] --> tests/common/verify.rs:1095:4 [INFO] [stdout] | [INFO] [stdout] 1095 | fn extract_base_url(m3u8_url: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_m3u8_segments` is never used [INFO] [stdout] --> tests/common/verify.rs:1102:4 [INFO] [stdout] | [INFO] [stdout] 1102 | fn parse_m3u8_segments(body: &str, _base_url: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTMP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:67:15 [INFO] [stdout] | [INFO] [stdout] 67 | pub const RTMP_PORT: u16 = 1935; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTSP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:68:15 [INFO] [stdout] | [INFO] [stdout] 68 | pub const RTSP_PORT: u16 = 554; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HTTP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:69:15 [INFO] [stdout] | [INFO] [stdout] 69 | pub const HTTP_PORT: u16 = 8081; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WEBRTC_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:70:15 [INFO] [stdout] | [INFO] [stdout] 70 | pub const WEBRTC_PORT: u16 = 9080; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `random_test_port` is never used [INFO] [stdout] --> tests/common/mod.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub fn random_test_port() -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FRAME_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:87:15 [INFO] [stdout] | [INFO] [stdout] 87 | pub const FRAME_WAIT: Duration = Duration::from_millis(100); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `STREAM_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:88:15 [INFO] [stdout] | [INFO] [stdout] 88 | pub const STREAM_WAIT: Duration = Duration::from_millis(500); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLEANUP_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:90:15 [INFO] [stdout] | [INFO] [stdout] 90 | pub const CLEANUP_WAIT: Duration = Duration::from_millis(100); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_video_keyframe` [INFO] [stdout] --> src/core/dispatch.rs:8:44 [INFO] [stdout] | [INFO] [stdout] 8 | use super::frame_ring::{is_playable_video, is_video_keyframe, SnapMode}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `last_playable_idr_seq` [INFO] [stdout] --> src/core/live_play.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use super::dispatch::{last_playable_idr_seq, DispatchError, DispatchReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OnceLock` [INFO] [stdout] --> src/core/metrics.rs:5:22 [INFO] [stdout] | [INFO] [stdout] 5 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_API` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | HTTP_API, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpApi` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/core/tester.rs:647:13 [INFO] [stdout] | [INFO] [stdout] 647 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `coalesce_flv_batch` [INFO] [stdout] --> src/core/mod.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | pub use dispatch::{coalesce_flv_batch, DispatchError, DispatchPolicy, DispatchReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SnapMode` and `is_playable_video` [INFO] [stdout] --> src/core/mod.rs:16:22 [INFO] [stdout] | [INFO] [stdout] 16 | pub use frame_ring::{is_playable_video, is_video_keyframe, FrameRing, SnapMode}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamEventReceiver` and `StreamEvent` [INFO] [stdout] --> src/core/mod.rs:18:45 [INFO] [stdout] | [INFO] [stdout] 18 | pub use stream_manager::{PullSessionHandle, StreamEvent, StreamEventReceiver, StreamManager}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AnalysisConfig`, `DEFAULT_HLS_OUTPUT_DIR`, `DEFAULT_RECORD_OUTPUT_DIR`, `DEFAULT_SNAPSHOT_OUTPUT_DIR`, `DEFAULT_STORAGE_BASE_DIR`, `HttpConfig`, `RecordConfig`, `RtmpConfig`, `RtspConfig`, `ServerConfig`, `SnapshotConfig`, `StorageConfig`, and `WebrtcConfig` [INFO] [stdout] --> src/core/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | AnalysisConfig, Config, HttpConfig, RecordConfig, RtmpConfig, RtspConfig, ServerConfig, [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] 25 | SnapshotConfig, StorageConfig, TranscodeConfig, WebrtcConfig, DEFAULT_HLS_DIR, [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] 26 | DEFAULT_HLS_OUTPUT_DIR, DEFAULT_RECORD_DIR, DEFAULT_RECORD_OUTPUT_DIR, DEFAULT_SNAPSHOT_DIR, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | DEFAULT_SNAPSHOT_OUTPUT_DIR, DEFAULT_STORAGE_BASE_DIR, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `codec` and `duration_secs` are never read [INFO] [stdout] --> tests/common/mod.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct TestConfig { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 22 | pub stream_id: String, [INFO] [stdout] 23 | pub codec: TestCodec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 24 | pub duration_secs: u64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TestConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `with_duration` is never used [INFO] [stdout] --> tests/common/mod.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl TestConfig { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn with_duration(mut self, duration: u64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_playable_video_frame` [INFO] [stdout] --> src/core/mod.rs:30:19 [INFO] [stdout] | [INFO] [stdout] 30 | is_idr_frame, is_playable_video_frame, prepend_video_config, prime_live_play, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_str` and `payload_type` are never used [INFO] [stdout] --> tests/common/mod.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl TestCodec { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 50 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn payload_type(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `video_bitrate` and `audio_bitrate` are never read [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct FfmpegTestConfig { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 19 | pub video_bitrate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 20 | /// Audio bitrate in kbps. [INFO] [stdout] 21 | pub audio_bitrate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FfmpegTestConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FirstFrameStats`, `PlayerCounts`, `RingStats`, and `StreamMetricsSnapshot` [INFO] [stdout] --> src/core/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | FirstFrameStats, HlsMetricsSnapshot, MetricsRegistry, MetricsSnapshot, PlaybackProtocol, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 35 | PlayerCounts, RingStats, StreamMetricsSnapshot, [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pixel_format` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 37 | impl FfmpegTestConfig { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn pixel_format(&self, codec: TestCodec) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_simple_rtmp_publish_command` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 131 | pub fn create_simple_rtmp_publish_command( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ProtocolInfo`, `ProtocolRegistry`, `ProtocolType`, and `StreamSink` [INFO] [stdout] --> src/core/mod.rs:37:20 [INFO] [stdout] | [INFO] [stdout] 37 | pub use protocol::{ProtocolInfo, ProtocolRegistry, ProtocolType, StreamSink}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pusher::*` [INFO] [stdout] --> src/core/mod.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub use pusher::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tester::StreamTester` [INFO] [stdout] --> src/core/mod.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | pub use tester::StreamTester; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `flv_timestamp_ms` and `media_timestamp_delta_ms` [INFO] [stdout] --> src/core/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | flv_timestamp_ms, media_frame_timestamp_delta_ms, media_timestamp_delta_ms, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FLV_FRAME_INTER`, `H265_NAL_PPS`, `H265_NAL_SPS`, `H265_NAL_VPS`, `contains_h264_idr`, `extract_h264_sps_pps`, and `is_enhanced_rtmp_video` [INFO] [stdout] --> src/core/mod.rs:48:36 [INFO] [stdout] | [INFO] [stdout] 48 | build_rtmp_video_from_annex_b, contains_h264_idr, contains_hevc_idr, ensure_annex_b, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 49 | extract_h264_sps_pps, extract_hevc_param_sets, hevc_sprop_from_nals, hvcc_payload_to_annex_b, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 50 | is_enhanced_rtmp_video, is_keyframe_annex_b, is_parameter_set_only, iter_annex_b_nal_ranges, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | HevcFuReassembler, FLV_FRAME_INTER, FLV_FRAME_KEY, FLV_IS_EX_HEADER, H265_NAL_PPS, [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] 55 | H265_NAL_SPS, H265_NAL_VPS, HEVC_FOURCC, RTMP_PKT_CODED_FRAMES, RTMP_PKT_CODED_FRAMES_X, [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/mod.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_hls_play_command` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:263:8 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn create_hls_play_command(m3u8_url: &str, duration_secs: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_h265_p_frame` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:126:8 [INFO] [stdout] | [INFO] [stdout] 126 | pub fn generate_h265_p_frame(frame_num: u32) -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_aac_frame` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:145:8 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn generate_aac_frame(frame_num: u32) -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `h264_nal_type` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:191:8 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn h264_nal_type(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `output_dir` is never read [INFO] [stdout] --> tests/common/hls_helper.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct HlsTestHelper { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 10 | stream_id: String, [INFO] [stdout] 11 | output_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HlsTestHelper` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/hls/m3u8.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, SystemTime, UNIX_EPOCH}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> tests/common/hls_helper.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl HlsTestHelper { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn output_dir(&self) -> &PathBuf { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn master_playlist_url(&self, host: &str, port: u16) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn playlist_url(&self, host: &str, port: u16, variant: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn segment_url(&self, host: &str, port: u16, variant: &str, segment: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub fn master_playlist_path(&self) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn playlist_path(&self, variant: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn segment_path(&self, variant: &str, segment: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_playable` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:140:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl M3u8Info { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn is_playable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_SEGMENT_DURATION` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:158:11 [INFO] [stdout] | [INFO] [stdout] 158 | pub const DEFAULT_SEGMENT_DURATION: u32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MAX_SEGMENTS` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:161:11 [INFO] [stdout] | [INFO] [stdout] 161 | pub const DEFAULT_MAX_SEGMENTS: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_media_playlist` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:181:8 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn generate_media_playlist( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HttpResponse` is never constructed [INFO] [stdout] --> tests/common/http_client.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct HttpResponse { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get` is never used [INFO] [stdout] --> tests/common/http_client.rs:16:14 [INFO] [stdout] | [INFO] [stdout] 16 | pub async fn http_get(host: &str, port: u16, path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get_inner` is never used [INFO] [stdout] --> tests/common/http_client.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 22 | async fn http_get_inner(host: &str, port: u16, path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_post_json` is never used [INFO] [stdout] --> tests/common/http_client.rs:44:14 [INFO] [stdout] | [INFO] [stdout] 44 | pub async fn http_post_json( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_post_json_inner` is never used [INFO] [stdout] --> tests/common/http_client.rs:58:10 [INFO] [stdout] | [INFO] [stdout] 58 | async fn http_post_json_inner( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_http_ok` is never used [INFO] [stdout] --> tests/common/http_client.rs:88:14 [INFO] [stdout] | [INFO] [stdout] 88 | pub async fn wait_for_http_ok( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_http_response` is never used [INFO] [stdout] --> tests/common/http_client.rs:113:4 [INFO] [stdout] | [INFO] [stdout] 113 | fn parse_http_response(raw: &[u8]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_request` and `get_request_with_params` are never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl HttpFlvTestHelper { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn get_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn get_request_with_params(&self, params: &[(&str, &str)]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_success_response` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | pub fn is_success_response(response: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_content_type` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn parse_content_type(response: &str) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_flv_tag_header` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:162:8 [INFO] [stdout] | [INFO] [stdout] 162 | pub fn parse_flv_tag_header(data: &[u8]) -> Option<(u8, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:125:15 [INFO] [stdout] | [INFO] [stdout] 125 | pub const AUDIO: u8 = 0x08; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:128:15 [INFO] [stdout] | [INFO] [stdout] 128 | pub const VIDEO: u8 = 0x09; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SCRIPT` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:131:15 [INFO] [stdout] | [INFO] [stdout] 131 | pub const SCRIPT: u8 = 0x12; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INTER_FRAME` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:139:19 [INFO] [stdout] | [INFO] [stdout] 139 | pub const INTER_FRAME: u8 = 0x27; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/hls/ts_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_keyframe_annex_b` [INFO] [stdout] --> src/server/hls/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | is_keyframe_annex_b, prepend_annex_b_config_if_needed, CodecType, DispatchPolicy, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `annex_b_with_config` [INFO] [stdout] --> src/server/hls/mod.rs:26:29 [INFO] [stdout] | [INFO] [stdout] 26 | use crate::server::webrtc::{annex_b_with_config, request_publisher_keyframe}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INFO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:142:19 [INFO] [stdout] | [INFO] [stdout] 142 | pub const INFO: u8 = 0x20; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AAC` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:148:19 [INFO] [stdout] | [INFO] [stdout] 148 | pub const AAC: u8 = 0xA0; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MP3` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:151:19 [INFO] [stdout] | [INFO] [stdout] 151 | pub const MP3: u8 = 0x80; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ServerPorts` is never constructed [INFO] [stdout] --> tests/common/media_server_runner.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct ServerPorts { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `available` is never used [INFO] [stdout] --> tests/common/media_server_runner.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ServerPorts { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 40 | /// Ask the OS for currently available listener ports for parallel tests. [INFO] [stdout] 41 | pub fn available() -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MediaServer` is never constructed [INFO] [stdout] --> tests/common/media_server_runner.rs:60:12 [INFO] [stdout] | [INFO] [stdout] 60 | pub struct MediaServer { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt` [INFO] [stdout] --> src/server/http_flv/puller.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::io::AsyncReadExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/server/http_flv/puller.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> tests/common/media_server_runner.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 67 | impl MediaServer { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 68 | /// Start the media server on default ports (requires ports to be free). [INFO] [stdout] 69 | pub fn start() -> std::io::Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub fn start_isolated() -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn start_isolated_for_stream(stream_id: &str) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn start_with_ports(ports: ServerPorts) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | fn start_with_ports_inner( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub async fn wait_ready(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn rtmp_url(&self, app: &str, stream_key: &str) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn rtsp_url(&self, stream_id: &str) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn http_flv_url(&self, stream_id: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn hls_url(&self, stream_id: &str) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn http_host(&self) -> &'static str { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub fn http_port(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub async fn post_json(&self, path: &str, json_body: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub async fn get(&self, path: &str) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub async fn api_transcode_start(&self, json_body: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub async fn api_transcode_stop(&self, json_body: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub async fn api_rtmp_pull( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub async fn api_rtsp_pull( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub async fn trigger_hls(&self, stream_id: &str) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | pub fn ports(&self) -> &ServerPorts { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | pub fn stop(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_prefix` is never used [INFO] [stdout] --> tests/common/media_server_runner.rs:250:4 [INFO] [stdout] | [INFO] [stdout] 250 | fn log_prefix(log_label: Option<&str>) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_port` is never used [INFO] [stdout] --> tests/common/media_server_runner.rs:256:10 [INFO] [stdout] | [INFO] [stdout] 256 | async fn wait_for_port(host: &str, port: u16, deadline: tokio::time::Instant) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `bind_available_port` is never used [INFO] [stdout] --> tests/common/media_server_runner.rs:268:4 [INFO] [stdout] | [INFO] [stdout] 268 | fn bind_available_port() -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_test_config` is never used [INFO] [stdout] --> tests/common/media_server_runner.rs:272:4 [INFO] [stdout] | [INFO] [stdout] 272 | fn create_test_config(ports: &ServerPorts) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_server_executable` is never used [INFO] [stdout] --> tests/common/media_server_runner.rs:332:4 [INFO] [stdout] | [INFO] [stdout] 332 | fn find_server_executable() -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_command` is never used [INFO] [stdout] --> tests/common/process_manager.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn format_command(program: &str, args: &[String]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProcessManager` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct ProcessManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> tests/common/process_manager.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ProcessManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 40 | /// Create a new process manager. [INFO] [stdout] 41 | pub fn new(stream_manager: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn spawn_ffmpeg_publish(&self, args: &[String]) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn spawn_ffplay(&self, args: &[String]) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn is_stream_active(&self, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub async fn wait_for_stream_active(&self, stream_id: &str, timeout_secs: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_stream_stats(&self, stream_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn cleanup(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/http_flv/mod.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut`, and `Bytes` [INFO] [stdout] --> src/server/http_flv/mod.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use bytes::{BufMut, Bytes, BytesMut}; [INFO] [stdout] | ^^^^^^ ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_ffmpeg` is never used [INFO] [stdout] --> tests/common/process_manager.rs:114:8 [INFO] [stdout] | [INFO] [stdout] 114 | pub fn spawn_ffmpeg(args: &[String]) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_ffmpeg_for_stream` is never used [INFO] [stdout] --> tests/common/process_manager.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn spawn_ffmpeg_for_stream(stream_id: &str, args: &[String]) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_ffmpeg_inner` is never used [INFO] [stdout] --> tests/common/process_manager.rs:123:4 [INFO] [stdout] | [INFO] [stdout] 123 | fn spawn_ffmpeg_inner(stream_id: Option<&str>, args: &[String]) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_ffplay` is never used [INFO] [stdout] --> tests/common/process_manager.rs:141:8 [INFO] [stdout] | [INFO] [stdout] 141 | pub fn spawn_ffplay(args: &[String]) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `stop_child` is never used [INFO] [stdout] --> tests/common/process_manager.rs:152:8 [INFO] [stdout] | [INFO] [stdout] 152 | pub fn stop_child(child: &mut Child) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamStats` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:171:12 [INFO] [stdout] | [INFO] [stdout] 171 | pub struct StreamStats { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PublishConfig` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:177:12 [INFO] [stdout] | [INFO] [stdout] 177 | pub struct PublishConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PublishCodec` is never used [INFO] [stdout] --> tests/common/process_manager.rs:194:10 [INFO] [stdout] | [INFO] [stdout] 194 | pub enum PublishCodec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> tests/common/process_manager.rs:217:12 [INFO] [stdout] | [INFO] [stdout] 215 | impl PublishConfig { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 216 | /// Create RTMP publish config. [INFO] [stdout] 217 | pub fn rtmp(host: &str, port: u16, app: &str, stream_key: &str) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn rtsp(host: &str, port: u16, stream_id: &str) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn resolution(mut self, width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 240 | pub fn framerate(mut self, fps: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn duration(mut self, secs: u32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | pub fn continuous(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn codec(mut self, codec: PublishCodec) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn rtmp_enhanced_hevc(mut self, enabled: bool) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn rtsp_transport_tcp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn rtsp_transport_udp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 283 | pub fn ffmpeg_args(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::RwLock` [INFO] [stdout] --> src/server/http_flv/mod.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use parking_lot::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PlayConfig` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:373:12 [INFO] [stdout] | [INFO] [stdout] 373 | pub struct PlayConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, `info`, and `warn` [INFO] [stdout] --> src/server/http_flv/mod.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RtspTransport` is never used [INFO] [stdout] --> tests/common/process_manager.rs:384:10 [INFO] [stdout] | [INFO] [stdout] 384 | pub enum RtspTransport { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PlayProtocol` is never used [INFO] [stdout] --> tests/common/process_manager.rs:390:10 [INFO] [stdout] | [INFO] [stdout] 390 | pub enum PlayProtocol { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> tests/common/process_manager.rs:398:12 [INFO] [stdout] | [INFO] [stdout] 397 | impl PlayConfig { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 398 | pub fn rtmp(url: &str) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | pub fn rtsp(url: &str) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | pub fn http_flv(url: &str) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub fn hls(url: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 438 | pub fn duration(mut self, secs: u32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 443 | pub fn enhanced_rtmp_hevc(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn rtsp_transport_tcp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn rtsp_transport_udp(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub fn ffplay_args(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_ffmpeg_publishing` is never used [INFO] [stdout] --> tests/common/process_manager.rs:495:14 [INFO] [stdout] | [INFO] [stdout] 495 | pub async fn assert_ffmpeg_publishing(ffmpeg: &mut Child, warm_up: Duration) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffplay_playback` is never used [INFO] [stdout] --> tests/common/process_manager.rs:504:14 [INFO] [stdout] | [INFO] [stdout] 504 | pub async fn run_ffplay_playback(play: &PlayConfig) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufMut` [INFO] [stdout] --> src/server/rtmp/chunk.rs:3:18 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_and_hls_playback` is never used [INFO] [stdout] --> tests/common/process_manager.rs:535:14 [INFO] [stdout] | [INFO] [stdout] 535 | pub async fn publish_and_hls_playback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `info`, `trace`, and `warn` [INFO] [stdout] --> src/server/rtmp/chunk.rs:5:29 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, error, info, trace, warn}; [INFO] [stdout] | ^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_api_pull_and_play` is never used [INFO] [stdout] --> tests/common/process_manager.rs:560:14 [INFO] [stdout] | [INFO] [stdout] 560 | pub async fn publish_api_pull_and_play( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_and_playback` is never used [INFO] [stdout] --> tests/common/process_manager.rs:596:14 [INFO] [stdout] | [INFO] [stdout] 596 | pub async fn publish_and_playback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_with_api_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:620:14 [INFO] [stdout] | [INFO] [stdout] 620 | pub async fn run_ffmpeg_decode_with_api_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_without_api_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:649:14 [INFO] [stdout] | [INFO] [stdout] 649 | pub async fn run_ffmpeg_decode_without_api_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_and_decode_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:773:14 [INFO] [stdout] | [INFO] [stdout] 773 | pub async fn publish_and_decode_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_http_flv_stream` is never used [INFO] [stdout] --> tests/common/process_manager.rs:817:14 [INFO] [stdout] | [INFO] [stdout] 817 | pub async fn verify_http_flv_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_hls_playlist` is never used [INFO] [stdout] --> tests/common/process_manager.rs:838:14 [INFO] [stdout] | [INFO] [stdout] 838 | pub async fn verify_hls_playlist( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_ffmpeg_available` is never used [INFO] [stdout] --> tests/common/process_manager.rs:850:8 [INFO] [stdout] | [INFO] [stdout] 850 | pub fn is_ffmpeg_available() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_ffplay_available` is never used [INFO] [stdout] --> tests/common/process_manager.rs:860:8 [INFO] [stdout] | [INFO] [stdout] 860 | pub fn is_ffplay_available() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_MAGIC` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const MARKER_MAGIC: u16 = 0x5A3C; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_BYTES` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | const MARKER_BYTES: usize = 14; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_BITS` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const MARKER_BITS: usize = MARKER_BYTES * 8; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtmp/pusher.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_COLS` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:24:7 [INFO] [stdout] | [INFO] [stdout] 24 | const MARKER_COLS: usize = 16; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_BLOCK` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const MARKER_BLOCK: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_X` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | const MARKER_X: usize = 8; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MARKER_Y` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:27:7 [INFO] [stdout] | [INFO] [stdout] 27 | const MARKER_Y: usize = 8; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RealtimeProbeConfig` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 30 | pub struct RealtimeProbeConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtmp/pusher.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RealtimeStats` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct RealtimeStats { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TimestampVideoPublisher` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 70 | pub struct TimestampVideoPublisher { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TimestampPublisherConfig` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 77 | pub struct TimestampPublisherConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `start` and `stop` are never used [INFO] [stdout] --> tests/common/realtime_probe.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 84 | impl TimestampVideoPublisher { [INFO] [stdout] | ---------------------------- associated items in this implementation [INFO] [stdout] 85 | pub fn start( [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn stop(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `measure_realtime_playback` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:130:14 [INFO] [stdout] | [INFO] [stdout] 130 | pub async fn measure_realtime_playback( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChunkAssembler`, `ChunkHeader`, and `RtmpMessage` [INFO] [stdout] --> src/server/rtmp/pusher.rs:12:26 [INFO] [stdout] | [INFO] [stdout] 12 | use super::chunk::{self, ChunkAssembler, ChunkHeader, RtmpMessage}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_realtime_stats` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:292:8 [INFO] [stdout] | [INFO] [stdout] 292 | pub fn assert_realtime_stats( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FrameMarker` is never constructed [INFO] [stdout] --> tests/common/realtime_probe.rs:348:8 [INFO] [stdout] | [INFO] [stdout] 348 | struct FrameMarker { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtmpUrl` [INFO] [stdout] --> src/server/rtmp/pusher.rs:14:37 [INFO] [stdout] | [INFO] [stdout] 14 | use super::puller::{parse_rtmp_url, RtmpUrl}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_args` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:353:4 [INFO] [stdout] | [INFO] [stdout] 353 | fn publish_args(publisher: &TimestampPublisherConfig, config: &RealtimeProbeConfig) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_frame_writer` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:443:4 [INFO] [stdout] | [INFO] [stdout] 443 | fn spawn_frame_writer( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_timestamp_frame` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:474:4 [INFO] [stdout] | [INFO] [stdout] 474 | fn generate_timestamp_frame(config: &RealtimeProbeConfig, marker: FrameMarker) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `paint_marker_block` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:500:4 [INFO] [stdout] | [INFO] [stdout] 500 | fn paint_marker_block(frame: &mut [u8], width: usize, bit_index: usize, bit: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `decode_marker` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:517:4 [INFO] [stdout] | [INFO] [stdout] 517 | fn decode_marker(frame: &[u8], width: usize, height: usize) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `percentile` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:550:4 [INFO] [stdout] | [INFO] [stdout] 550 | fn percentile(sorted: &[u64], percentile: usize) -> u64 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/rtmp/session.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `now_ms` is never used [INFO] [stdout] --> tests/common/realtime_probe.rs:562:4 [INFO] [stdout] | [INFO] [stdout] 562 | fn now_ms() -> u64 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Level` [INFO] [stdout] --> src/server/rtmp/session.rs:5:28 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, info, Level}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType`, `StreamProtocol`, and `StreamSourceMode` [INFO] [stdout] --> src/server/rtmp/session.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::core::{CodecType, MediaFrame, StreamProtocol, StreamSourceMode}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::server::webrtc::h264_util::is_keyframe_annex_b` [INFO] [stdout] --> src/server/rtmp/session.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::server::webrtc::h264_util::is_keyframe_annex_b; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtmpConnection` and `RtmpHandshake` [INFO] [stdout] --> src/server/rtmp/mod.rs:8:22 [INFO] [stdout] | [INFO] [stdout] 8 | pub use connection::{RtmpConnection, RtmpHandshake}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `puller::RtmpPuller` [INFO] [stdout] --> src/server/rtmp/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use puller::RtmpPuller; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pusher::RtmpPusher` [INFO] [stdout] --> src/server/rtmp/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use pusher::RtmpPusher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/rtmp/mod.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtsp/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtsp/mod.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TcpStream` [INFO] [stdout] --> src/server/rtsp/mod.rs:6:31 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::net::{TcpListener, TcpStream}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::Duration` [INFO] [stdout] --> src/server/rtsp/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/mod.rs:11:30 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::core::{CodecType, MediaFrame, StreamManager, StreamProtocol, StreamSourceMode, Track}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn` [INFO] [stdout] --> src/server/rtsp/client_session.rs:8:15 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType` and `MediaFrame` [INFO] [stdout] --> src/server/rtsp/client_session.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::core::{CodecType, MediaFrame, StreamManager, Track}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::recv_coalesced_play_frame` [INFO] [stdout] --> src/server/rtsp/play_egress.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | pub use crate::core::recv_coalesced_play_frame; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `app` and `host` are never read [INFO] [stdout] --> tests/common/rtmp_helper.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct RtmpTestHelper { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 11 | stream_id: String, [INFO] [stdout] 12 | app: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 13 | host: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtmpTestHelper` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::net::TcpStream` [INFO] [stdout] --> src/server/rtsp/pusher.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/pusher.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | CodecType, MediaFrame, MediaTransport, PusherId, StreamManager, StreamProtocol, StreamPusher, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `host`, `publish_command`, `play_command`, and `rtmp_url` are never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl RtmpTestHelper { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn host(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn publish_command(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn play_command(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn rtmp_url(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `channel` [INFO] [stdout] --> src/server/rtsp/server_session.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_rtmp_play_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn create_rtmp_play_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtspRequest` [INFO] [stdout] --> src/server/rtsp/server_session.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | InterleavedChannel, RtspRequest, RtspResponse, RtspServer, RtspSessionState, TransportMode, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_create_stream_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn build_rtmp_create_stream_command() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_release_stream_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:105:8 [INFO] [stdout] | [INFO] [stdout] 105 | pub fn build_rtmp_release_stream_command(stream_key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::hevc_sprop_from_nals` [INFO] [stdout] --> src/server/rtsp/server_session.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use crate::core::hevc_sprop_from_nals; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_fcpublish_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | pub fn build_rtmp_fcpublish_command(stream_key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `chunk_header_size` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:152:8 [INFO] [stdout] | [INFO] [stdout] 152 | pub fn chunk_header_size(chunk_stream_id: u8) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_h264_video_header` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:163:8 [INFO] [stdout] | [INFO] [stdout] 163 | pub fn build_rtmp_h264_video_header(is_keyframe: bool, codec_id: u8) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SocketReader` and `spawn_write_loop` [INFO] [stdout] --> src/server/rtsp/server_session.rs:25:39 [INFO] [stdout] | [INFO] [stdout] 25 | use crate::server::socket_transport::{spawn_write_loop, ChannelSocketWriter, SocketReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `client_session::RtspClientSession` [INFO] [stdout] --> src/server/rtsp/mod.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub use client_session::RtspClientSession; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `is_udp_transport`, `parse_transport_server_ports`, and `url_prefers_udp` [INFO] [stdout] --> src/server/rtsp/mod.rs:26:61 [INFO] [stdout] | [INFO] [stdout] 26 | extract_stream_id, extract_track_id, extract_transport, is_udp_transport, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | parse_transport_server_ports, url_prefers_udp, TransportInfo, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl RtspTestHelper { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn options_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn describe_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn setup_video_request(&self, transport: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn setup_audio_request(&self, transport: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn play_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn pause_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn teardown_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn next_cseq(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_cseq` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn parse_cseq(response: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTP_AVP_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:247:15 [INFO] [stdout] | [INFO] [stdout] 247 | pub const RTP_AVP_TCP: &str = "RTP/AVP/TCP;interleaved=0-1"; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtpHeader` and `UdpTransport` [INFO] [stdout] --> src/server/rtsp/mod.rs:30:18 [INFO] [stdout] | [INFO] [stdout] 30 | pub use common::{RtpHeader, RtspCommon, UdpTransport}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTP_AVP_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:250:15 [INFO] [stdout] | [INFO] [stdout] 250 | pub const RTP_AVP_UDP: &str = "RTP/AVP;unicast;client_port=5000-5001"; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:253:15 [INFO] [stdout] | [INFO] [stdout] 253 | pub const VIDEO_TCP: &str = "RTP/AVP/TCP;unicast;interleaved=0-1"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel` [INFO] [stdout] --> src/server/socket_transport.rs:5:25 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:256:15 [INFO] [stdout] | [INFO] [stdout] 256 | pub const AUDIO_TCP: &str = "RTP/AVP/TCP;unicast;interleaved=2-3"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:259:15 [INFO] [stdout] | [INFO] [stdout] 259 | pub const VIDEO_UDP: &str = "RTP/AVP;unicast;client_port=5000-5001;server_port=6000-6001"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/server/socket_transport.rs:7:29 [INFO] [stdout] | [INFO] [stdout] 7 | use tracing::{debug, error, info}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:262:15 [INFO] [stdout] | [INFO] [stdout] 262 | pub const AUDIO_UDP: &str = "RTP/AVP;unicast;client_port=5002-5003;server_port=6002-6003"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestRtmpServer` is never constructed [INFO] [stdout] --> tests/common/server_helper.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct TestRtmpServer { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/transport/adapters.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `start`, `port`, `manager`, and `publish_url` are never used [INFO] [stdout] --> tests/common/server_helper.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 22 | impl TestRtmpServer { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 23 | pub async fn start() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn port(&self) -> u16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn manager(&self) -> Arc { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn publish_url(&self, app: &str, stream_key: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_tcp` is never used [INFO] [stdout] --> tests/common/server_helper.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | async fn wait_for_tcp(host: &str, port: u16, timeout: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unique_stream_id` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn unique_stream_id(prefix: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_stream_active` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn is_stream_active(manager: &Arc, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_stream_active` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | pub async fn wait_for_stream_active( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_test_port` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:87:8 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn get_test_port() -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_command` is never used [INFO] [stdout] --> tests/common/verify.rs:20:4 [INFO] [stdout] | [INFO] [stdout] 20 | fn format_command(program: &str, args: &[String]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamInfo` is never constructed [INFO] [stdout] --> tests/common/verify.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct StreamInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FlvStats` is never constructed [INFO] [stdout] --> tests/common/verify.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct FlvStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HlsStats` is never constructed [INFO] [stdout] --> tests/common/verify.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct HlsStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HlsSegmentInfo` is never constructed [INFO] [stdout] --> tests/common/verify.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct HlsSegmentInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_check` is never used [INFO] [stdout] --> tests/common/verify.rs:105:14 [INFO] [stdout] | [INFO] [stdout] 105 | pub async fn run_ffmpeg_decode_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_check_for_stream` is never used [INFO] [stdout] --> tests/common/verify.rs:123:14 [INFO] [stdout] | [INFO] [stdout] 123 | pub async fn run_ffmpeg_decode_check_for_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_check_inner` is never used [INFO] [stdout] --> tests/common/verify.rs:142:10 [INFO] [stdout] | [INFO] [stdout] 142 | async fn run_ffmpeg_decode_check_inner( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_stream_server_side` is never used [INFO] [stdout] --> tests/common/verify.rs:365:14 [INFO] [stdout] | [INFO] [stdout] 365 | pub async fn verify_stream_server_side( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_stream_min_frames` is never used [INFO] [stdout] --> tests/common/verify.rs:415:14 [INFO] [stdout] | [INFO] [stdout] 415 | pub async fn assert_stream_min_frames( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probe_stream_info` is never used [INFO] [stdout] --> tests/common/verify.rs:454:8 [INFO] [stdout] | [INFO] [stdout] 454 | pub fn probe_stream_info(url: &str, timeout_secs: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probe_stream_info_for_stream` is never used [INFO] [stdout] --> tests/common/verify.rs:458:8 [INFO] [stdout] | [INFO] [stdout] 458 | pub fn probe_stream_info_for_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probe_stream_info_inner` is never used [INFO] [stdout] --> tests/common/verify.rs:466:4 [INFO] [stdout] | [INFO] [stdout] 466 | fn probe_stream_info_inner( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_http_flv_stream` is never used [INFO] [stdout] --> tests/common/verify.rs:564:14 [INFO] [stdout] | [INFO] [stdout] 564 | pub async fn verify_http_flv_stream(url: &str, duration_secs: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get_raw` is never used [INFO] [stdout] --> tests/common/verify.rs:577:10 [INFO] [stdout] | [INFO] [stdout] 577 | async fn http_get_raw(url: &str, max_duration: Duration) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_flv_data` is never used [INFO] [stdout] --> tests/common/verify.rs:645:4 [INFO] [stdout] | [INFO] [stdout] 645 | fn parse_flv_data(data: &[u8], expected_duration_secs: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_hls_playlist` is never used [INFO] [stdout] --> tests/common/verify.rs:733:14 [INFO] [stdout] | [INFO] [stdout] 733 | pub async fn verify_hls_playlist( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get_string` is never used [INFO] [stdout] --> tests/common/verify.rs:874:10 [INFO] [stdout] | [INFO] [stdout] 874 | async fn http_get_string(host: &str, port: u16, path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `http_get_raw_segment` is never used [INFO] [stdout] --> tests/common/verify.rs:888:10 [INFO] [stdout] | [INFO] [stdout] 888 | async fn http_get_raw_segment(host: &str, port: u16, path: &str) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_stream_all_layers` is never used [INFO] [stdout] --> tests/common/verify.rs:940:14 [INFO] [stdout] | [INFO] [stdout] 940 | pub async fn verify_stream_all_layers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VeificationReport` is never constructed [INFO] [stdout] --> tests/common/verify.rs:1012:12 [INFO] [stdout] | [INFO] [stdout] 1012 | pub struct VeificationReport { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_http_url` is never used [INFO] [stdout] --> tests/common/verify.rs:1023:4 [INFO] [stdout] | [INFO] [stdout] 1023 | fn parse_http_url(url: &str) -> Result<(String, u16, String), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dechunk_body` is never used [INFO] [stdout] --> tests/common/verify.rs:1040:4 [INFO] [stdout] | [INFO] [stdout] 1040 | fn dechunk_body(data: &[u8]) -> Result, String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_http_body_start` is never used [INFO] [stdout] --> tests/common/verify.rs:1089:4 [INFO] [stdout] | [INFO] [stdout] 1089 | fn find_http_body_start(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_base_url` is never used [INFO] [stdout] --> tests/common/verify.rs:1095:4 [INFO] [stdout] | [INFO] [stdout] 1095 | fn extract_base_url(m3u8_url: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_m3u8_segments` is never used [INFO] [stdout] --> tests/common/verify.rs:1102:4 [INFO] [stdout] | [INFO] [stdout] 1102 | fn parse_m3u8_segments(body: &str, _base_url: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTMP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:67:15 [INFO] [stdout] | [INFO] [stdout] 67 | pub const RTMP_PORT: u16 = 1935; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTSP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:68:15 [INFO] [stdout] | [INFO] [stdout] 68 | pub const RTSP_PORT: u16 = 554; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HTTP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:69:15 [INFO] [stdout] | [INFO] [stdout] 69 | pub const HTTP_PORT: u16 = 8081; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WEBRTC_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:70:15 [INFO] [stdout] | [INFO] [stdout] 70 | pub const WEBRTC_PORT: u16 = 9080; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `random_test_port` is never used [INFO] [stdout] --> tests/common/mod.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub fn random_test_port() -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FRAME_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:87:15 [INFO] [stdout] | [INFO] [stdout] 87 | pub const FRAME_WAIT: Duration = Duration::from_millis(100); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `STREAM_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:88:15 [INFO] [stdout] | [INFO] [stdout] 88 | pub const STREAM_WAIT: Duration = Duration::from_millis(500); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SERVER_START` is never used [INFO] [stdout] --> tests/common/mod.rs:89:15 [INFO] [stdout] | [INFO] [stdout] 89 | pub const SERVER_START: Duration = Duration::from_secs(5); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLEANUP_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:90:15 [INFO] [stdout] | [INFO] [stdout] 90 | pub const CLEANUP_WAIT: Duration = Duration::from_millis(100); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/server/transport/adapters.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamManager` and `TransportStatus` [INFO] [stdout] --> src/server/transport/adapters.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `webrtc::track::track_local::TrackLocalWriter` [INFO] [stdout] --> src/server/webrtc/outbound_h264.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use webrtc::track::track_local::TrackLocalWriter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `contains_idr_nalu` [INFO] [stdout] --> src/server/webrtc/player.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | contains_idr_nalu, contains_sps_or_pps_nalu, describe_annex_b, duration_from_rtp_timestamps, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> tests/common/process_manager.rs:670:12 [INFO] [stdout] | [INFO] [stdout] 670 | Ok(s) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `app` [INFO] [stdout] --> tests/common/rtmp_helper.rs:62:54 [INFO] [stdout] | [INFO] [stdout] 62 | pub fn create_rtmp_publish_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_app` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `app` [INFO] [stdout] --> tests/common/rtmp_helper.rs:67:51 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn create_rtmp_play_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_app` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> tests/common/stream_helper.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | if let Some(stream) = manager.get_stream(&stream_id.to_string()) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `last_error` is never read [INFO] [stdout] --> tests/play_tests.rs:1085:34 [INFO] [stdout] | [INFO] [stdout] 1085 | let mut last_error = "no readiness check result".to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1090 | Err(e) => last_error = e, [INFO] [stdout] | ---------- `last_error` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/pusher.rs:478:41 [INFO] [stdout] | [INFO] [stdout] 478 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 492 | server_stream_id = wait_for_create_stream(&mut conn, tx_id).await? as u32; [INFO] [stdout] | ------------------------------------------------------------------------- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestConfig` is never constructed [INFO] [stdout] --> tests/common/mod.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct TestConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `with_duration` are never used [INFO] [stdout] --> tests/common/mod.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl TestConfig { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 28 | pub fn new(stream_id: &str, codec: TestCodec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn with_duration(mut self, duration: u64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_str` and `payload_type` are never used [INFO] [stdout] --> tests/common/mod.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl TestCodec { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 50 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn payload_type(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `video_bitrate` and `audio_bitrate` are never read [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct FfmpegTestConfig { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 19 | pub video_bitrate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 20 | /// Audio bitrate in kbps. [INFO] [stdout] 21 | pub audio_bitrate: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FfmpegTestConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `pixel_format` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 37 | impl FfmpegTestConfig { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn pixel_format(&self, codec: TestCodec) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_hls_play_command` is never used [INFO] [stdout] --> tests/common/ffmpeg_helper.rs:263:8 [INFO] [stdout] | [INFO] [stdout] 263 | pub fn create_hls_play_command(m3u8_url: &str, duration_secs: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_h265_vps_sps_pps` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:74:8 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn generate_h265_vps_sps_pps() -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_h265_p_frame` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:126:8 [INFO] [stdout] | [INFO] [stdout] 126 | pub fn generate_h265_p_frame(frame_num: u32) -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_aac_frame` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:145:8 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn generate_aac_frame(frame_num: u32) -> Bytes { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `h264_nal_type` is never used [INFO] [stdout] --> tests/common/frame_generators.rs:191:8 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn h264_nal_type(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `output_dir` is never read [INFO] [stdout] --> tests/common/hls_helper.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct HlsTestHelper { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 10 | stream_id: String, [INFO] [stdout] 11 | output_dir: PathBuf, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HlsTestHelper` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> tests/common/hls_helper.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl HlsTestHelper { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn output_dir(&self) -> &PathBuf { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn master_playlist_url(&self, host: &str, port: u16) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn playlist_url(&self, host: &str, port: u16, variant: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn segment_url(&self, host: &str, port: u16, variant: &str, segment: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub fn master_playlist_path(&self) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn playlist_path(&self, variant: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn segment_path(&self, variant: &str, segment: &str) -> PathBuf { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_playable` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:140:12 [INFO] [stdout] | [INFO] [stdout] 128 | impl M3u8Info { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn is_playable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_SEGMENT_DURATION` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:158:11 [INFO] [stdout] | [INFO] [stdout] 158 | pub const DEFAULT_SEGMENT_DURATION: u32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_MAX_SEGMENTS` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:161:11 [INFO] [stdout] | [INFO] [stdout] 161 | pub const DEFAULT_MAX_SEGMENTS: usize = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_media_playlist` is never used [INFO] [stdout] --> tests/common/hls_helper.rs:181:8 [INFO] [stdout] | [INFO] [stdout] 181 | pub fn generate_media_playlist( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_http_ok` is never used [INFO] [stdout] --> tests/common/http_client.rs:88:14 [INFO] [stdout] | [INFO] [stdout] 88 | pub async fn wait_for_http_ok( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `port`, `get_request`, and `get_request_with_params` are never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl HttpFlvTestHelper { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn port(&self) -> u16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | pub fn get_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn get_request_with_params(&self, params: &[(&str, &str)]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_success_response` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | pub fn is_success_response(response: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_content_type` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn parse_content_type(response: &str) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_flv_tag_header` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:162:8 [INFO] [stdout] | [INFO] [stdout] 162 | pub fn parse_flv_tag_header(data: &[u8]) -> Option<(u8, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:125:15 [INFO] [stdout] | [INFO] [stdout] 125 | pub const AUDIO: u8 = 0x08; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:128:15 [INFO] [stdout] | [INFO] [stdout] 128 | pub const VIDEO: u8 = 0x09; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SCRIPT` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:131:15 [INFO] [stdout] | [INFO] [stdout] 131 | pub const SCRIPT: u8 = 0x12; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INTER_FRAME` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:139:19 [INFO] [stdout] | [INFO] [stdout] 139 | pub const INTER_FRAME: u8 = 0x27; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INFO` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:142:19 [INFO] [stdout] | [INFO] [stdout] 142 | pub const INFO: u8 = 0x20; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AAC` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:148:19 [INFO] [stdout] | [INFO] [stdout] 148 | pub const AAC: u8 = 0xA0; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MP3` is never used [INFO] [stdout] --> tests/common/http_flv_helper.rs:151:19 [INFO] [stdout] | [INFO] [stdout] 151 | pub const MP3: u8 = 0x80; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `start`, `start_with_ports`, `api_transcode_start`, and `api_transcode_stop` are never used [INFO] [stdout] --> tests/common/media_server_runner.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 67 | impl MediaServer { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 68 | /// Start the media server on default ports (requires ports to be free). [INFO] [stdout] 69 | pub fn start() -> std::io::Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn start_with_ports(ports: ServerPorts) -> std::io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 189 | pub async fn api_transcode_start(&self, json_body: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub async fn api_transcode_stop(&self, json_body: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProcessManager` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | pub struct ProcessManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> tests/common/process_manager.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ProcessManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 40 | /// Create a new process manager. [INFO] [stdout] 41 | pub fn new(stream_manager: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn spawn_ffmpeg_publish(&self, args: &[String]) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn spawn_ffplay(&self, args: &[String]) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn is_stream_active(&self, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub async fn wait_for_stream_active(&self, stream_id: &str, timeout_secs: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_stream_stats(&self, stream_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn cleanup(&self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StreamStats` is never constructed [INFO] [stdout] --> tests/common/process_manager.rs:171:12 [INFO] [stdout] | [INFO] [stdout] 171 | pub struct StreamStats { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_with_api_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:620:14 [INFO] [stdout] | [INFO] [stdout] 620 | pub async fn run_ffmpeg_decode_with_api_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish_and_decode_check` is never used [INFO] [stdout] --> tests/common/process_manager.rs:773:14 [INFO] [stdout] | [INFO] [stdout] 773 | pub async fn publish_and_decode_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `app` and `host` are never read [INFO] [stdout] --> tests/common/rtmp_helper.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct RtmpTestHelper { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 11 | stream_id: String, [INFO] [stdout] 12 | app: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 13 | host: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RtmpTestHelper` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `host`, `publish_command`, `play_command`, and `rtmp_url` are never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl RtmpTestHelper { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn host(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn publish_command(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn play_command(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn rtmp_url(&self) -> String { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_rtmp_publish_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:62:8 [INFO] [stdout] | [INFO] [stdout] 62 | pub fn create_rtmp_publish_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_rtmp_play_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn create_rtmp_play_command(stream_key: &str, app: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_create_stream_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:92:8 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn build_rtmp_create_stream_command() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_release_stream_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:105:8 [INFO] [stdout] | [INFO] [stdout] 105 | pub fn build_rtmp_release_stream_command(stream_key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_fcpublish_command` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | pub fn build_rtmp_fcpublish_command(stream_key: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `chunk_header_size` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:152:8 [INFO] [stdout] | [INFO] [stdout] 152 | pub fn chunk_header_size(chunk_stream_id: u8) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_rtmp_h264_video_header` is never used [INFO] [stdout] --> tests/common/rtmp_helper.rs:163:8 [INFO] [stdout] | [INFO] [stdout] 163 | pub fn build_rtmp_h264_video_header(is_keyframe: bool, codec_id: u8) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl RtspTestHelper { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn options_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn describe_request(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn setup_video_request(&self, transport: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn setup_audio_request(&self, transport: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn play_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn pause_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn teardown_request(&self, session: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn next_cseq(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_rtsp_announce_sdp` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:141:8 [INFO] [stdout] | [INFO] [stdout] 141 | pub fn create_rtsp_announce_sdp(codec: TestCodec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_cseq` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn parse_cseq(response: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTP_AVP_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:247:15 [INFO] [stdout] | [INFO] [stdout] 247 | pub const RTP_AVP_TCP: &str = "RTP/AVP/TCP;interleaved=0-1"; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTP_AVP_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:250:15 [INFO] [stdout] | [INFO] [stdout] 250 | pub const RTP_AVP_UDP: &str = "RTP/AVP;unicast;client_port=5000-5001"; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:253:15 [INFO] [stdout] | [INFO] [stdout] 253 | pub const VIDEO_TCP: &str = "RTP/AVP/TCP;unicast;interleaved=0-1"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_TCP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:256:15 [INFO] [stdout] | [INFO] [stdout] 256 | pub const AUDIO_TCP: &str = "RTP/AVP/TCP;unicast;interleaved=2-3"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIDEO_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:259:15 [INFO] [stdout] | [INFO] [stdout] 259 | pub const VIDEO_UDP: &str = "RTP/AVP;unicast;client_port=5000-5001;server_port=6000-6001"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_UDP` is never used [INFO] [stdout] --> tests/common/rtsp_helper.rs:262:15 [INFO] [stdout] | [INFO] [stdout] 262 | pub const AUDIO_UDP: &str = "RTP/AVP;unicast;client_port=5002-5003;server_port=6002-6003"; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestRtmpServer` is never constructed [INFO] [stdout] --> tests/common/server_helper.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct TestRtmpServer { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `start`, `port`, `manager`, and `publish_url` are never used [INFO] [stdout] --> tests/common/server_helper.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 22 | impl TestRtmpServer { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 23 | pub async fn start() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn port(&self) -> u16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn manager(&self) -> Arc { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn publish_url(&self, app: &str, stream_key: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_tcp` is never used [INFO] [stdout] --> tests/common/server_helper.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | async fn wait_for_tcp(host: &str, port: u16, timeout: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `setup_test_stream` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn setup_test_stream( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cleanup_test_streams` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:39:8 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn cleanup_test_streams(manager: &Arc, stream_ids: &[&str]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unique_stream_id` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | pub fn unique_stream_id(prefix: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_stream_active` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn is_stream_active(manager: &Arc, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_stream_active` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | pub async fn wait_for_stream_active( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_test_port` is never used [INFO] [stdout] --> tests/common/stream_helper.rs:87:8 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn get_test_port() -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `errors` is never read [INFO] [stdout] --> tests/common/verify.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct StreamInfo { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 59 | pub errors: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `metadata_tags` and `duration_ms` are never read [INFO] [stdout] --> tests/common/verify.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct FlvStats { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 67 | pub metadata_tags: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 68 | pub total_bytes: usize, [INFO] [stdout] 69 | pub duration_ms: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FlvStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `segments`, `target_duration`, and `errors` are never read [INFO] [stdout] --> tests/common/verify.rs:77:9 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct HlsStats { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 77 | pub segments: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 78 | pub target_duration: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 79 | pub errors: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HlsStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `url`, `duration`, and `bytes` are never read [INFO] [stdout] --> tests/common/verify.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct HlsSegmentInfo { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 84 | pub url: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 85 | pub duration: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 86 | pub bytes: usize, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HlsSegmentInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_ffmpeg_decode_check` is never used [INFO] [stdout] --> tests/common/verify.rs:105:14 [INFO] [stdout] | [INFO] [stdout] 105 | pub async fn run_ffmpeg_decode_check( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_stream_min_frames` is never used [INFO] [stdout] --> tests/common/verify.rs:415:14 [INFO] [stdout] | [INFO] [stdout] 415 | pub async fn assert_stream_min_frames( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `probe_stream_info` is never used [INFO] [stdout] --> tests/common/verify.rs:454:8 [INFO] [stdout] | [INFO] [stdout] 454 | pub fn probe_stream_info(url: &str, timeout_secs: u64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `verify_stream_all_layers` is never used [INFO] [stdout] --> tests/common/verify.rs:940:14 [INFO] [stdout] | [INFO] [stdout] 940 | pub async fn verify_stream_all_layers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VeificationReport` is never constructed [INFO] [stdout] --> tests/common/verify.rs:1012:12 [INFO] [stdout] | [INFO] [stdout] 1012 | pub struct VeificationReport { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTMP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:67:15 [INFO] [stdout] | [INFO] [stdout] 67 | pub const RTMP_PORT: u16 = 1935; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RTSP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:68:15 [INFO] [stdout] | [INFO] [stdout] 68 | pub const RTSP_PORT: u16 = 554; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HTTP_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:69:15 [INFO] [stdout] | [INFO] [stdout] 69 | pub const HTTP_PORT: u16 = 8081; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WEBRTC_PORT` is never used [INFO] [stdout] --> tests/common/mod.rs:70:15 [INFO] [stdout] | [INFO] [stdout] 70 | pub const WEBRTC_PORT: u16 = 9080; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `random_test_port` is never used [INFO] [stdout] --> tests/common/mod.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub fn random_test_port() -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FRAME_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:87:15 [INFO] [stdout] | [INFO] [stdout] 87 | pub const FRAME_WAIT: Duration = Duration::from_millis(100); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `STREAM_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:88:15 [INFO] [stdout] | [INFO] [stdout] 88 | pub const STREAM_WAIT: Duration = Duration::from_millis(500); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLEANUP_WAIT` is never used [INFO] [stdout] --> tests/common/mod.rs:90:15 [INFO] [stdout] | [INFO] [stdout] 90 | pub const CLEANUP_WAIT: Duration = Duration::from_millis(100); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `time::format_description::parse`: use `parse_borrowed` with the appropriate version for clarity [INFO] [stdout] --> src/main.rs:117:44 [INFO] [stdout] | [INFO] [stdout] 117 | let format = time::format_description::parse( [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `initial_buf_len` [INFO] [stdout] --> src/server/rtmp/mod.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | let initial_buf_len = buf.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_buf_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1522:21 [INFO] [stdout] | [INFO] [stdout] 1522 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1526:21 [INFO] [stdout] | [INFO] [stdout] 1526 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `response_buffer` [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `request` [INFO] [stdout] --> src/server/rtsp/client_session.rs:453:21 [INFO] [stdout] | [INFO] [stdout] 453 | let request = RtspRequest::new("GET_PARAMETER", &remote_url) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_video_keyframe` [INFO] [stdout] --> src/core/dispatch.rs:8:44 [INFO] [stdout] | [INFO] [stdout] 8 | use super::frame_ring::{is_playable_video, is_video_keyframe, SnapMode}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `last_playable_idr_seq` [INFO] [stdout] --> src/core/live_play.rs:7:23 [INFO] [stdout] | [INFO] [stdout] 7 | use super::dispatch::{last_playable_idr_seq, DispatchError, DispatchReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OnceLock` [INFO] [stdout] --> src/core/metrics.rs:5:22 [INFO] [stdout] | [INFO] [stdout] 5 | use std::sync::{Arc, OnceLock}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_API` should have an upper camel case name [INFO] [stdout] --> src/core/protocol.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | HTTP_API, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpApi` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `coalesce_flv_batch` [INFO] [stdout] --> src/core/mod.rs:15:20 [INFO] [stdout] | [INFO] [stdout] 15 | pub use dispatch::{coalesce_flv_batch, DispatchError, DispatchPolicy, DispatchReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FrameRing`, `SnapMode`, and `is_playable_video` [INFO] [stdout] --> src/core/mod.rs:16:22 [INFO] [stdout] | [INFO] [stdout] 16 | pub use frame_ring::{is_playable_video, is_video_keyframe, FrameRing, SnapMode}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamEventReceiver` and `StreamEvent` [INFO] [stdout] --> src/core/mod.rs:18:45 [INFO] [stdout] | [INFO] [stdout] 18 | pub use stream_manager::{PullSessionHandle, StreamEvent, StreamEventReceiver, StreamManager}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AnalysisConfig`, `DEFAULT_HLS_OUTPUT_DIR`, `DEFAULT_RECORD_OUTPUT_DIR`, `DEFAULT_SNAPSHOT_OUTPUT_DIR`, `DEFAULT_STORAGE_BASE_DIR`, `HttpConfig`, `RecordConfig`, `RtmpConfig`, `RtspConfig`, `ServerConfig`, `SnapshotConfig`, `StorageConfig`, and `WebrtcConfig` [INFO] [stdout] --> src/core/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | AnalysisConfig, Config, HttpConfig, RecordConfig, RtmpConfig, RtspConfig, ServerConfig, [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] 25 | SnapshotConfig, StorageConfig, TranscodeConfig, WebrtcConfig, DEFAULT_HLS_DIR, [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] 26 | DEFAULT_HLS_OUTPUT_DIR, DEFAULT_RECORD_DIR, DEFAULT_RECORD_OUTPUT_DIR, DEFAULT_SNAPSHOT_DIR, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | DEFAULT_SNAPSHOT_OUTPUT_DIR, DEFAULT_STORAGE_BASE_DIR, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_playable_video_frame` [INFO] [stdout] --> src/core/mod.rs:30:19 [INFO] [stdout] | [INFO] [stdout] 30 | is_idr_frame, is_playable_video_frame, prepend_video_config, prime_live_play, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FirstFrameStats`, `PlayerCounts`, `RingStats`, and `StreamMetricsSnapshot` [INFO] [stdout] --> src/core/mod.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | FirstFrameStats, HlsMetricsSnapshot, MetricsRegistry, MetricsSnapshot, PlaybackProtocol, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 35 | PlayerCounts, RingStats, StreamMetricsSnapshot, [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ProtocolInfo`, `ProtocolRegistry`, `ProtocolType`, and `StreamSink` [INFO] [stdout] --> src/core/mod.rs:37:20 [INFO] [stdout] | [INFO] [stdout] 37 | pub use protocol::{ProtocolInfo, ProtocolRegistry, ProtocolType, StreamSink}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pusher::*` [INFO] [stdout] --> src/core/mod.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | pub use pusher::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tester::StreamTester` [INFO] [stdout] --> src/core/mod.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | pub use tester::StreamTester; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `flv_timestamp_ms` and `media_timestamp_delta_ms` [INFO] [stdout] --> src/core/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | flv_timestamp_ms, media_frame_timestamp_delta_ms, media_timestamp_delta_ms, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FLV_FRAME_INTER`, `FLV_FRAME_KEY`, `FLV_IS_EX_HEADER`, `H265_NAL_PPS`, `H265_NAL_SPS`, `H265_NAL_VPS`, `HEVC_FOURCC`, `contains_h264_idr`, `extract_h264_sps_pps`, and `is_enhanced_rtmp_video` [INFO] [stdout] --> src/core/mod.rs:48:36 [INFO] [stdout] | [INFO] [stdout] 48 | build_rtmp_video_from_annex_b, contains_h264_idr, contains_hevc_idr, ensure_annex_b, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 49 | extract_h264_sps_pps, extract_hevc_param_sets, hevc_sprop_from_nals, hvcc_payload_to_annex_b, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 50 | is_enhanced_rtmp_video, is_keyframe_annex_b, is_parameter_set_only, iter_annex_b_nal_ranges, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | HevcFuReassembler, FLV_FRAME_INTER, FLV_FRAME_KEY, FLV_IS_EX_HEADER, H265_NAL_PPS, [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] 55 | H265_NAL_SPS, H265_NAL_VPS, HEVC_FOURCC, RTMP_PKT_CODED_FRAMES, RTMP_PKT_CODED_FRAMES_X, [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `HTTP_FLV` should have an upper camel case name [INFO] [stdout] --> src/core/mod.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | HTTP_FLV, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case: `HttpFlv` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:844:17 [INFO] [stdout] | [INFO] [stdout] 844 | let mut rtp = Self::build_rtp_packet(96, seq, timestamp, ssrc, false, sps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:850:17 [INFO] [stdout] | [INFO] [stdout] 850 | let mut rtp = Self::build_rtp_packet(96, seq + 1, timestamp, ssrc, false, pps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/hls/m3u8.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, SystemTime, UNIX_EPOCH}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MILLISECOND_CLOCK_RATE` and `VIDEO_RTP_CLOCK_RATE` [INFO] [stdout] --> src/server/hls/timing.rs:6:42 [INFO] [stdout] | [INFO] [stdout] 6 | media_timestamp_delta_ms_with_clock, MILLISECOND_CLOCK_RATE, VIDEO_RTP_CLOCK_RATE, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/hls/ts_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `is_keyframe_annex_b` [INFO] [stdout] --> src/server/hls/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | is_keyframe_annex_b, prepend_annex_b_config_if_needed, CodecType, DispatchPolicy, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `annex_b_with_config` [INFO] [stdout] --> src/server/hls/mod.rs:26:29 [INFO] [stdout] | [INFO] [stdout] 26 | use crate::server::webrtc::{annex_b_with_config, request_publisher_keyframe}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::io::AsyncReadExt` [INFO] [stdout] --> src/server/http_flv/puller.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::io::AsyncReadExt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/server/http_flv/puller.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/http_flv/mod.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufMut`, `BytesMut`, and `Bytes` [INFO] [stdout] --> src/server/http_flv/mod.rs:4:13 [INFO] [stdout] | [INFO] [stdout] 4 | use bytes::{BufMut, Bytes, BytesMut}; [INFO] [stdout] | ^^^^^^ ^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::RwLock` [INFO] [stdout] --> src/server/http_flv/mod.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use parking_lot::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, `info`, and `warn` [INFO] [stdout] --> src/server/http_flv/mod.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BufMut` [INFO] [stdout] --> src/server/rtmp/chunk.rs:3:18 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::{Buf, BufMut, BytesMut}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `info`, `trace`, and `warn` [INFO] [stdout] --> src/server/rtmp/chunk.rs:5:29 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, error, info, trace, warn}; [INFO] [stdout] | ^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtmp/pusher.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtmp/pusher.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChunkAssembler`, `ChunkHeader`, and `RtmpMessage` [INFO] [stdout] --> src/server/rtmp/pusher.rs:12:26 [INFO] [stdout] | [INFO] [stdout] 12 | use super::chunk::{self, ChunkAssembler, ChunkHeader, RtmpMessage}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtmpUrl` [INFO] [stdout] --> src/server/rtmp/pusher.rs:14:37 [INFO] [stdout] | [INFO] [stdout] 14 | use super::puller::{parse_rtmp_url, RtmpUrl}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::Bytes` [INFO] [stdout] --> src/server/rtmp/session.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use bytes::Bytes; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Level` [INFO] [stdout] --> src/server/rtmp/session.rs:5:28 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing::{debug, info, Level}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType`, `StreamProtocol`, and `StreamSourceMode` [INFO] [stdout] --> src/server/rtmp/session.rs:8:19 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::core::{CodecType, MediaFrame, StreamProtocol, StreamSourceMode}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::server::webrtc::h264_util::is_keyframe_annex_b` [INFO] [stdout] --> src/server/rtmp/session.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::server::webrtc::h264_util::is_keyframe_annex_b; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtmpConnection` and `RtmpHandshake` [INFO] [stdout] --> src/server/rtmp/mod.rs:8:22 [INFO] [stdout] | [INFO] [stdout] 8 | pub use connection::{RtmpConnection, RtmpHandshake}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `puller::RtmpPuller` [INFO] [stdout] --> src/server/rtmp/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use puller::RtmpPuller; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `pusher::RtmpPusher` [INFO] [stdout] --> src/server/rtmp/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use pusher::RtmpPusher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/rtmp/mod.rs:16:17 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bytes::BytesMut` [INFO] [stdout] --> src/server/rtsp/mod.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use bytes::BytesMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/server/rtsp/mod.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TcpStream` [INFO] [stdout] --> src/server/rtsp/mod.rs:6:31 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::net::{TcpListener, TcpStream}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::Duration` [INFO] [stdout] --> src/server/rtsp/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/mod.rs:11:30 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::core::{CodecType, MediaFrame, StreamManager, StreamProtocol, StreamSourceMode, Track}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn` [INFO] [stdout] --> src/server/rtsp/client_session.rs:8:15 [INFO] [stdout] | [INFO] [stdout] 8 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CodecType` and `MediaFrame` [INFO] [stdout] --> src/server/rtsp/client_session.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::core::{CodecType, MediaFrame, StreamManager, Track}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/server/rtsp/play_egress.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::recv_coalesced_play_frame` [INFO] [stdout] --> src/server/rtsp/play_egress.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | pub use crate::core::recv_coalesced_play_frame; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::net::TcpStream` [INFO] [stdout] --> src/server/rtsp/pusher.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaFrame` [INFO] [stdout] --> src/server/rtsp/pusher.rs:15:16 [INFO] [stdout] | [INFO] [stdout] 15 | CodecType, MediaFrame, MediaTransport, PusherId, StreamManager, StreamProtocol, StreamPusher, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `channel` [INFO] [stdout] --> src/server/rtsp/server_session.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RtspRequest` [INFO] [stdout] --> src/server/rtsp/server_session.rs:17:25 [INFO] [stdout] | [INFO] [stdout] 17 | InterleavedChannel, RtspRequest, RtspResponse, RtspServer, RtspSessionState, TransportMode, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::hevc_sprop_from_nals` [INFO] [stdout] --> src/server/rtsp/server_session.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use crate::core::hevc_sprop_from_nals; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SocketReader` and `spawn_write_loop` [INFO] [stdout] --> src/server/rtsp/server_session.rs:25:39 [INFO] [stdout] | [INFO] [stdout] 25 | use crate::server::socket_transport::{spawn_write_loop, ChannelSocketWriter, SocketReader}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `client_session::RtspClientSession` [INFO] [stdout] --> src/server/rtsp/mod.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub use client_session::RtspClientSession; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `is_udp_transport`, `parse_transport_server_ports`, and `url_prefers_udp` [INFO] [stdout] --> src/server/rtsp/mod.rs:26:61 [INFO] [stdout] | [INFO] [stdout] 26 | extract_stream_id, extract_track_id, extract_transport, is_udp_transport, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 27 | parse_transport_server_ports, url_prefers_udp, TransportInfo, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RtpHeader` and `UdpTransport` [INFO] [stdout] --> src/server/rtsp/mod.rs:30:18 [INFO] [stdout] | [INFO] [stdout] 30 | pub use common::{RtpHeader, RtspCommon, UdpTransport}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel` [INFO] [stdout] --> src/server/socket_transport.rs:5:25 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> src/server/socket_transport.rs:7:29 [INFO] [stdout] | [INFO] [stdout] 7 | use tracing::{debug, error, info}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `anyhow::Result` [INFO] [stdout] --> src/server/transport/adapters.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use anyhow::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/server/transport/adapters.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `StreamManager` and `TransportStatus` [INFO] [stdout] --> src/server/transport/adapters.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `webrtc::track::track_local::TrackLocalWriter` [INFO] [stdout] --> src/server/webrtc/outbound_h264.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use webrtc::track::track_local::TrackLocalWriter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `contains_idr_nalu` [INFO] [stdout] --> src/server/webrtc/player.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | contains_idr_nalu, contains_sps_or_pps_nalu, describe_annex_b, duration_from_rtp_timestamps, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_url` [INFO] [stdout] --> src/server/rtsp/puller.rs:436:29 [INFO] [stdout] | [INFO] [stdout] 436 | async fn send_keepalive(remote_url: String) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_url` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/sdp_builder.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut session = SessionDescription { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:994:13 [INFO] [stdout] | [INFO] [stdout] 994 | let sps_cache = Arc::clone(&self.sps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:995:13 [INFO] [stdout] | [INFO] [stdout] 995 | let pps_cache = Arc::clone(&self.pps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:489:13 [INFO] [stdout] | [INFO] [stdout] 489 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq).header( [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:497:13 [INFO] [stdout] | [INFO] [stdout] 497 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:520:13 [INFO] [stdout] | [INFO] [stdout] 520 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:542:13 [INFO] [stdout] | [INFO] [stdout] 542 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:563:13 [INFO] [stdout] | [INFO] [stdout] 563 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:568:13 [INFO] [stdout] | [INFO] [stdout] 568 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:573:13 [INFO] [stdout] | [INFO] [stdout] 573 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:578:13 [INFO] [stdout] | [INFO] [stdout] 578 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:585:13 [INFO] [stdout] | [INFO] [stdout] 585 | let mut response = RtspResponse::new(status_code, reason).header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `time::format_description::parse`: use `parse_borrowed` with the appropriate version for clarity [INFO] [stdout] --> src/main.rs:117:44 [INFO] [stdout] | [INFO] [stdout] 117 | let format = time::format_description::parse( [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_manager` is never read [INFO] [stdout] --> src/process/transcode/mod.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct TranscodeManager { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 67 | sessions: Arc>>, [INFO] [stdout] 68 | stream_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TranscodeManager` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `segment_wall_secs` and `output_dir` are never used [INFO] [stdout] --> src/server/hls/mod.rs:199:8 [INFO] [stdout] | [INFO] [stdout] 119 | impl HlsSession { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 199 | fn segment_wall_secs(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 553 | pub fn output_dir(&self) -> &Path { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `download_segment` is never used [INFO] [stdout] --> src/server/hls/puller.rs:811:10 [INFO] [stdout] | [INFO] [stdout] 811 | async fn download_segment( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_ts_segment_hls` is never used [INFO] [stdout] --> src/server/hls/puller.rs:1186:10 [INFO] [stdout] | [INFO] [stdout] 1186 | async fn process_ts_segment_hls( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TS_PACKET_SIZE` is never used [INFO] [stdout] --> src/server/hls/puller.rs:1231:7 [INFO] [stdout] | [INFO] [stdout] 1231 | const TS_PACKET_SIZE: usize = 188; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prepare_h264_au_for_ts` is never used [INFO] [stdout] --> src/server/hls/ts_muxer.rs:277:4 [INFO] [stdout] | [INFO] [stdout] 277 | fn prepare_h264_au_for_ts(data: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `starts_with_aud` is never used [INFO] [stdout] --> src/server/hls/ts_muxer.rs:290:4 [INFO] [stdout] | [INFO] [stdout] 290 | fn starts_with_aud(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_paused` is never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 38 | impl RtmpPusher { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 75 | fn is_paused(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `build_setup_udp_response` is never used [INFO] [stdout] --> src/server/rtsp/mod.rs:527:8 [INFO] [stdout] | [INFO] [stdout] 42 | impl RtspServer { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 527 | fn build_setup_udp_response( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_manager` is never read [INFO] [stdout] --> src/server/rtsp/client_session.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RtspClientSession { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | stream_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtcp_socket` and `server_rtcp_addr` are never read [INFO] [stdout] --> src/server/rtsp/client_session.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 28 | struct TrackUdpTransport { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 29 | rtp_socket: Arc, [INFO] [stdout] 30 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 31 | server_rtp_addr: SocketAddr, [INFO] [stdout] 32 | server_rtcp_addr: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `vps_cache` is never read [INFO] [stdout] --> src/server/rtsp/pusher.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct RtspPusher { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 27 | vps_cache: Arc>>>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_paused` is never used [INFO] [stdout] --> src/server/rtsp/pusher.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 33 | impl RtspPusher { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 70 | fn is_paused(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sdp_generated` is never read [INFO] [stdout] --> src/server/rtsp/server_session.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct RtspServerSession { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 43 | sdp_generated: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtcp_socket` and `client_rtcp_addr` are never read [INFO] [stdout] --> src/server/rtsp/server_session.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 47 | struct UdpTrackTransport { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 48 | rtp_socket: Arc, [INFO] [stdout] 49 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 50 | client_rtp_addr: SocketAddr, [INFO] [stdout] 51 | client_rtcp_addr: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UdpTrackTransport` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `send_rtp_over_udp_track`, `extract_h264_sps_pps_from_payload`, and `is_h264_keyframe` are never used [INFO] [stdout] --> src/server/rtsp/server_session.rs:256:14 [INFO] [stdout] | [INFO] [stdout] 54 | impl RtspServerSession { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 256 | async fn send_rtp_over_udp_track(&self, data: &[u8], track_id: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 374 | fn extract_h264_sps_pps_from_payload(payload: &[u8]) -> (Option>, Option>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 697 | fn is_h264_keyframe(payload: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_rtp_stale_in_gop` is never used [INFO] [stdout] --> src/server/webrtc/h264_util.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn is_rtp_stale_in_gop(curr: u64, prev: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `h264_payload_type_from_sdp` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h264.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn h264_payload_type_from_sdp(sdp: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_video_media_description` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h264.rs:54:4 [INFO] [stdout] | [INFO] [stdout] 54 | fn find_video_media_description(sdp: &SessionDescription) -> Option<&MediaDescription> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_video_media_description` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h265.rs:40:4 [INFO] [stdout] | [INFO] [stdout] 40 | fn find_video_media_description(sdp: &SessionDescription) -> Option<&MediaDescription> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Lagged` is never constructed [INFO] [stdout] --> src/server/webrtc/player.rs:785:5 [INFO] [stdout] | [INFO] [stdout] 783 | enum RecvCoalesced { [INFO] [stdout] | ------------- variant in this enum [INFO] [stdout] 784 | Frame(MediaFrame, u64), [INFO] [stdout] 785 | Lagged(u64), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/server/rtmp/pusher.rs:189:25 [INFO] [stdout] | [INFO] [stdout] 189 | / Self::send_rtmp_message( [INFO] [stdout] 190 | | &mut writer, [INFO] [stdout] 191 | | 0x08, [INFO] [stdout] 192 | | msg_stream_id, [INFO] [stdout] ... | [INFO] [stdout] 198 | | .await; [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 189 | let _ = Self::send_rtmp_message( [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/server/rtmp/pusher.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 126 | Err(crate::core::dispatch::DispatchError::Closed) => break, [INFO] [stdout] | ------------------------------------------------- matches all the relevant values [INFO] [stdout] 127 | Err(e) => { [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:247:13 [INFO] [stdout] | [INFO] [stdout] 247 | let mut reader = SocketReader::new(reader); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:833:21 [INFO] [stdout] | [INFO] [stdout] 833 | let mut result_values = vec![ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/server/rtsp/puller.rs:441:9 [INFO] [stdout] | [INFO] [stdout] 438 | / loop { [INFO] [stdout] 439 | | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] 440 | | } [INFO] [stdout] | |_________- any code following this expression is unreachable [INFO] [stdout] 441 | info!("[RTSP Puller] [Keepalive] Keepalive loop ended"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] = note: this warning originates in the macro `$crate::event` which comes from the expansion of the macro `info` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/socket_transport.rs:65:21 [INFO] [stdout] | [INFO] [stdout] 65 | let mut final_result = result[..pos + delimiter.len()].to_vec(); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/server/rtmp/pusher.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 126 | Err(crate::core::dispatch::DispatchError::Closed) => break, [INFO] [stdout] | ------------------------------------------------- matches all the relevant values [INFO] [stdout] 127 | Err(e) => { [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:247:13 [INFO] [stdout] | [INFO] [stdout] 247 | let mut reader = SocketReader::new(reader); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtmp/mod.rs:833:21 [INFO] [stdout] | [INFO] [stdout] 833 | let mut result_values = vec![ [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/server/rtsp/puller.rs:441:9 [INFO] [stdout] | [INFO] [stdout] 438 | / loop { [INFO] [stdout] 439 | | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] 440 | | } [INFO] [stdout] | |_________- any code following this expression is unreachable [INFO] [stdout] 441 | info!("[RTSP Puller] [Keepalive] Keepalive loop ended"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] = note: this warning originates in the macro `$crate::event` which comes from the expansion of the macro `info` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/socket_transport.rs:65:21 [INFO] [stdout] | [INFO] [stdout] 65 | let mut final_result = result[..pos + delimiter.len()].to_vec(); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaTransport` [INFO] [stdout] --> src/server/transport/adapters.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/metrics.rs:383:13 [INFO] [stdout] | [INFO] [stdout] 383 | mut hls, [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:86:17 [INFO] [stdout] | [INFO] [stdout] 86 | let tracks = vec![ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/core/tester.rs:217:13 [INFO] [stdout] | [INFO] [stdout] 217 | let stream = manager.create_stream( [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:255:13 [INFO] [stdout] | [INFO] [stdout] 255 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:279:13 [INFO] [stdout] | [INFO] [stdout] 279 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:308:13 [INFO] [stdout] | [INFO] [stdout] 308 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buf` [INFO] [stdout] --> src/core/tester.rs:404:13 [INFO] [stdout] | [INFO] [stdout] 404 | let buf = vec![ [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_buf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stream` [INFO] [stdout] --> src/core/tester.rs:718:13 [INFO] [stdout] | [INFO] [stdout] 718 | let stream = manager.create_stream( [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:736:13 [INFO] [stdout] | [INFO] [stdout] 736 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MediaTransport` [INFO] [stdout] --> src/server/transport/adapters.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | MediaTransport, StreamManager, StreamProtocol, StreamPuller, TransportConfig, TransportStatus, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/core/metrics.rs:383:13 [INFO] [stdout] | [INFO] [stdout] 383 | mut hls, [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_segments` [INFO] [stdout] --> src/server/hls/m3u8.rs:199:41 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn slot_filename(sequence: u64, max_segments: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_segments` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `playlist_body` is never read [INFO] [stdout] --> src/server/hls/puller.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | playlist_body = body.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:86:17 [INFO] [stdout] | [INFO] [stdout] 86 | let tracks = vec![ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tracks` [INFO] [stdout] --> src/core/tester.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let tracks = vec![Track { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tracks` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `best_bandwidth` [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_bandwidth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_bandwidth` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | let mut current_bandwidth = 0u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_bandwidth` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_bandwidth` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | current_bandwidth = bw_str.parse().unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/puller.rs:310:9 [INFO] [stdout] | [INFO] [stdout] 310 | let has_audio = es_map.contains_key(&all_audio_pid.unwrap_or(0xFFFF)); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pps_found` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:329:13 [INFO] [stdout] | [INFO] [stdout] 329 | let mut pps_found = false; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_pps_found` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_bytes` [INFO] [stdout] --> src/server/http_flv/puller.rs:377:25 [INFO] [stdout] | [INFO] [stdout] 377 | let pps_bytes = nal_unit[4..].to_vec(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_bytes` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:368:21 [INFO] [stdout] | [INFO] [stdout] 368 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ---------------- `pps_found` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:379:21 [INFO] [stdout] | [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `sps_sent` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:516:9 [INFO] [stdout] | [INFO] [stdout] 516 | let mut sps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_sps_sent` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_sent` [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_sent` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `prev_tag_size` [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_tag_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_tag_offset` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:522:9 [INFO] [stdout] | [INFO] [stdout] 522 | let mut current_tag_offset = 0usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_tag_offset` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:606:45 [INFO] [stdout] | [INFO] [stdout] 606 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | --------------- `sps_sent` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:661:49 [INFO] [stdout] | [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_tag_offset` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:557:13 [INFO] [stdout] | [INFO] [stdout] 557 | current_tag_offset = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_video` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:43 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_video` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:60 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_segments` [INFO] [stdout] --> src/server/hls/m3u8.rs:199:41 [INFO] [stdout] | [INFO] [stdout] 199 | pub fn slot_filename(sequence: u64, max_segments: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_segments` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `playlist_body` is never read [INFO] [stdout] --> src/server/hls/puller.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | playlist_body = body.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/puller.rs:114:41 [INFO] [stdout] | [INFO] [stdout] 114 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 140 | / server_stream_id = wait_for_create_stream( [INFO] [stdout] 141 | | &mut read_half, [INFO] [stdout] 142 | | &mut buf, [INFO] [stdout] 143 | | &mut chunk_states, [INFO] [stdout] ... | [INFO] [stdout] 148 | | .await? as u32; [INFO] [stdout] | |______________________- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `best_bandwidth` [INFO] [stdout] --> src/server/http_flv/puller.rs:32:13 [INFO] [stdout] | [INFO] [stdout] 32 | let mut best_bandwidth = u64::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_bandwidth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_bandwidth` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | let mut current_bandwidth = 0u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_bandwidth` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_bandwidth` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | current_bandwidth = bw_str.parse().unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/puller.rs:310:9 [INFO] [stdout] | [INFO] [stdout] 310 | let has_audio = es_map.contains_key(&all_audio_pid.unwrap_or(0xFFFF)); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pps_found` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:329:13 [INFO] [stdout] | [INFO] [stdout] 329 | let mut pps_found = false; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_pps_found` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_bytes` [INFO] [stdout] --> src/server/http_flv/puller.rs:377:25 [INFO] [stdout] | [INFO] [stdout] 377 | let pps_bytes = nal_unit[4..].to_vec(); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_bytes` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:368:21 [INFO] [stdout] | [INFO] [stdout] 368 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ---------------- `pps_found` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `pps_found` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:379:21 [INFO] [stdout] | [INFO] [stdout] 379 | pps_found = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `sps_sent` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:516:9 [INFO] [stdout] | [INFO] [stdout] 516 | let mut sps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_sps_sent` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_sent` [INFO] [stdout] --> src/server/http_flv/puller.rs:517:9 [INFO] [stdout] | [INFO] [stdout] 517 | let mut pps_sent = false; [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_sent` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `prev_tag_size` [INFO] [stdout] --> src/server/http_flv/puller.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | let mut prev_tag_size: u32 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_tag_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `current_tag_offset` is assigned to, but never used [INFO] [stdout] --> src/server/http_flv/puller.rs:522:9 [INFO] [stdout] | [INFO] [stdout] 522 | let mut current_tag_offset = 0usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_current_tag_offset` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:606:45 [INFO] [stdout] | [INFO] [stdout] 606 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | --------------- `sps_sent` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `sps_sent` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:661:49 [INFO] [stdout] | [INFO] [stdout] 661 | ... sps_sent = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `current_tag_offset` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:557:13 [INFO] [stdout] | [INFO] [stdout] 557 | current_tag_offset = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/pusher.rs:478:41 [INFO] [stdout] | [INFO] [stdout] 478 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 492 | server_stream_id = wait_for_create_stream(&mut conn, tx_id).await? as u32; [INFO] [stdout] | ------------------------------------------------------------------------- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `initial_buf_len` [INFO] [stdout] --> src/server/rtmp/mod.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | let initial_buf_len = buf.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_buf_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_video` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:43 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_video` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `has_audio` [INFO] [stdout] --> src/server/http_flv/mod.rs:150:60 [INFO] [stdout] | [INFO] [stdout] 150 | fn generate_metadata_tag(stream_id: &str, has_video: bool, has_audio: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_audio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1522:21 [INFO] [stdout] | [INFO] [stdout] 1522 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1526:21 [INFO] [stdout] | [INFO] [stdout] 1526 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `response_buffer` [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `request` [INFO] [stdout] --> src/server/rtsp/client_session.rs:453:21 [INFO] [stdout] | [INFO] [stdout] 453 | let request = RtspRequest::new("GET_PARAMETER", &remote_url) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:844:17 [INFO] [stdout] | [INFO] [stdout] 844 | let mut rtp = Self::build_rtp_packet(96, seq, timestamp, ssrc, false, sps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:850:17 [INFO] [stdout] | [INFO] [stdout] 850 | let mut rtp = Self::build_rtp_packet(96, seq + 1, timestamp, ssrc, false, pps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_url` [INFO] [stdout] --> src/server/rtsp/puller.rs:436:29 [INFO] [stdout] | [INFO] [stdout] 436 | async fn send_keepalive(remote_url: String) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_url` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/puller.rs:114:41 [INFO] [stdout] | [INFO] [stdout] 114 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 140 | / server_stream_id = wait_for_create_stream( [INFO] [stdout] 141 | | &mut read_half, [INFO] [stdout] 142 | | &mut buf, [INFO] [stdout] 143 | | &mut chunk_states, [INFO] [stdout] ... | [INFO] [stdout] 148 | | .await? as u32; [INFO] [stdout] | |______________________- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/sdp_builder.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut session = SessionDescription { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `server_stream_id` is never read [INFO] [stdout] --> src/server/rtmp/pusher.rs:478:41 [INFO] [stdout] | [INFO] [stdout] 478 | let mut server_stream_id: u32 = 1; [INFO] [stdout] | ^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 492 | server_stream_id = wait_for_create_stream(&mut conn, tx_id).await? as u32; [INFO] [stdout] | ------------------------------------------------------------------------- `server_stream_id` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:994:13 [INFO] [stdout] | [INFO] [stdout] 994 | let sps_cache = Arc::clone(&self.sps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:995:13 [INFO] [stdout] | [INFO] [stdout] 995 | let pps_cache = Arc::clone(&self.pps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `initial_buf_len` [INFO] [stdout] --> src/server/rtmp/mod.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | let initial_buf_len = buf.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_buf_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:489:13 [INFO] [stdout] | [INFO] [stdout] 489 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq).header( [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:497:13 [INFO] [stdout] | [INFO] [stdout] 497 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:520:13 [INFO] [stdout] | [INFO] [stdout] 520 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:542:13 [INFO] [stdout] | [INFO] [stdout] 542 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:563:13 [INFO] [stdout] | [INFO] [stdout] 563 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:568:13 [INFO] [stdout] | [INFO] [stdout] 568 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:573:13 [INFO] [stdout] | [INFO] [stdout] 573 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:578:13 [INFO] [stdout] | [INFO] [stdout] 578 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:585:13 [INFO] [stdout] | [INFO] [stdout] 585 | let mut response = RtspResponse::new(status_code, reason).header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1522:21 [INFO] [stdout] | [INFO] [stdout] 1522 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `offset` is never read [INFO] [stdout] --> src/server/rtmp/mod.rs:1526:21 [INFO] [stdout] | [INFO] [stdout] 1526 | offset = offset.saturating_add(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `response_buffer` [INFO] [stdout] --> src/server/rtsp/client_session.rs:446:17 [INFO] [stdout] | [INFO] [stdout] 446 | let mut response_buffer = String::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `request` [INFO] [stdout] --> src/server/rtsp/client_session.rs:453:21 [INFO] [stdout] | [INFO] [stdout] 453 | let request = RtspRequest::new("GET_PARAMETER", &remote_url) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_request` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:844:17 [INFO] [stdout] | [INFO] [stdout] 844 | let mut rtp = Self::build_rtp_packet(96, seq, timestamp, ssrc, false, sps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/common.rs:850:17 [INFO] [stdout] | [INFO] [stdout] 850 | let mut rtp = Self::build_rtp_packet(96, seq + 1, timestamp, ssrc, false, pps); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_url` [INFO] [stdout] --> src/server/rtsp/puller.rs:436:29 [INFO] [stdout] | [INFO] [stdout] 436 | async fn send_keepalive(remote_url: String) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_url` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/sdp_builder.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut session = SessionDescription { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:994:13 [INFO] [stdout] | [INFO] [stdout] 994 | let sps_cache = Arc::clone(&self.sps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pps_cache` [INFO] [stdout] --> src/server/rtsp/server_session.rs:995:13 [INFO] [stdout] | [INFO] [stdout] 995 | let pps_cache = Arc::clone(&self.pps_cache); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pps_cache` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:489:13 [INFO] [stdout] | [INFO] [stdout] 489 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq).header( [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:497:13 [INFO] [stdout] | [INFO] [stdout] 497 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:520:13 [INFO] [stdout] | [INFO] [stdout] 520 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:542:13 [INFO] [stdout] | [INFO] [stdout] 542 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:563:13 [INFO] [stdout] | [INFO] [stdout] 563 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:568:13 [INFO] [stdout] | [INFO] [stdout] 568 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:573:13 [INFO] [stdout] | [INFO] [stdout] 573 | let mut response = RtspResponse::new(200, "OK").header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:578:13 [INFO] [stdout] | [INFO] [stdout] 578 | let mut response = RtspResponse::new(200, "OK") [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/server/rtsp/mod.rs:585:13 [INFO] [stdout] | [INFO] [stdout] 585 | let mut response = RtspResponse::new(status_code, reason).header("CSeq", cseq); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_track` is never used [INFO] [stdout] --> src/core/mod.rs:80:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl Stream { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 80 | pub fn add_track(&mut self, track: Track) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_error` and `is_terminated` are never used [INFO] [stdout] --> src/core/mod.rs:122:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl StreamStatus { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn is_error(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn is_terminated(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Paused` is never constructed [INFO] [stdout] --> src/core/mod.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 132 | pub enum PlaybackStatus { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 135 | Paused, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PlaybackStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_playing` is never used [INFO] [stdout] --> src/core/mod.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 138 | impl PlaybackStatus { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn is_playing(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_str` and `description` are never used [INFO] [stdout] --> src/core/mod.rs:185:12 [INFO] [stdout] | [INFO] [stdout] 184 | impl StreamSinkMode { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 185 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn description(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Connecting`, `Error`, and `Stopped` are never constructed [INFO] [stdout] --> src/core/mod.rs:203:5 [INFO] [stdout] | [INFO] [stdout] 201 | pub enum ReceiverStatus { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 202 | Idle, [INFO] [stdout] 203 | Connecting, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 207 | Stopped, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReceiverStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_str` and `description` are never used [INFO] [stdout] --> src/core/mod.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 210 | impl ReceiverStatus { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 211 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub fn description(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `extra_params` is never read [INFO] [stdout] --> src/core/mod.rs:285:9 [INFO] [stdout] | [INFO] [stdout] 280 | pub struct Track { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] ... [INFO] [stdout] 285 | pub extra_params: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Track` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `with_extra_params` is never used [INFO] [stdout] --> src/core/mod.rs:311:12 [INFO] [stdout] | [INFO] [stdout] 300 | impl Track { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | pub fn with_extra_params(mut self, key: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `mime_type` is never used [INFO] [stdout] --> src/core/mod.rs:348:12 [INFO] [stdout] | [INFO] [stdout] 335 | impl CodecType { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 348 | pub fn mime_type(&self) -> &'static str { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RtpPacket` is never constructed [INFO] [stdout] --> src/core/mod.rs:410:12 [INFO] [stdout] | [INFO] [stdout] 410 | pub struct RtpPacket { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `max_size_mb` and `max_files` are never read [INFO] [stdout] --> src/core/config.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 112 | pub struct LogConfig { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 115 | pub max_size_mb: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 116 | pub max_files: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `policy`, `set_cursor`, `advance_cursor`, `cursor_media_lag_ms`, and `recv_live_edge_batch` are never used [INFO] [stdout] --> src/core/dispatch.rs:96:12 [INFO] [stdout] | [INFO] [stdout] 55 | impl DispatchReader { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn policy(&self) -> DispatchPolicy { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn set_cursor(&mut self, cursor: u64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn advance_cursor(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn cursor_media_lag_ms(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 483 | pub async fn recv_live_edge_batch( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `iter_idr_seqs_rev` and `find_frame_rev` are never used [INFO] [stdout] --> src/core/frame_ring.rs:126:12 [INFO] [stdout] | [INFO] [stdout] 55 | impl FrameRing { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn iter_idr_seqs_rev(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn find_frame_rev( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `recv_coalesced_play_frame` is never used [INFO] [stdout] --> src/core/live_play.rs:155:14 [INFO] [stdout] | [INFO] [stdout] 155 | pub async fn recv_coalesced_play_frame( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `update_hls` is never used [INFO] [stdout] --> src/core/metrics.rs:289:12 [INFO] [stdout] | [INFO] [stdout] 181 | impl MetricsRegistry { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn update_hls(stream_id: &str, update: HlsMetricsSnapshot) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StreamSink` is never used [INFO] [stdout] --> src/core/protocol.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait StreamSink: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StreamSource` is never used [INFO] [stdout] --> src/core/protocol.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub trait StreamSource: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ProtocolType` is never used [INFO] [stdout] --> src/core/protocol.rs:29:10 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum ProtocolType { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `as_str` and `from_str` are never used [INFO] [stdout] --> src/core/protocol.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ProtocolType { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 40 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn from_str(s: &str) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProtocolInfo` is never constructed [INFO] [stdout] --> src/core/protocol.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct ProtocolInfo { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProtocolRegistry` is never constructed [INFO] [stdout] --> src/core/protocol.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | pub struct ProtocolRegistry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `register`, `list`, and `is_enabled` are never used [INFO] [stdout] --> src/core/protocol.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 86 | impl ProtocolRegistry { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 87 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn register(&mut self, info: ProtocolInfo) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn list(&self) -> &[ProtocolInfo] { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn is_enabled(&self, protocol: ProtocolType) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `latest_playable_idr_frame` and `find_frame_rev` are never used [INFO] [stdout] --> src/core/stream_hub.rs:165:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl StreamHub { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn latest_playable_idr_frame(&self, mut is_match: F) -> Option [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn find_frame_rev( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_pull_stop_requested`, `set_created`, `set_playback_idle`, and `set_playback_paused` are never used [INFO] [stdout] --> src/core/stream_manager.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 112 | impl StreamManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn is_pull_stop_requested(&self, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | pub fn set_created(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 572 | pub fn set_playback_idle(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 580 | pub fn set_playback_paused(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/tester.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl StreamTester { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 15 | pub fn new(stream_manager: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `flv_timestamp_ms` is never used [INFO] [stdout] --> src/core/timestamp.rs:63:8 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn flv_timestamp_ms(codec: crate::core::CodecType, raw: u64) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Paused` is never constructed [INFO] [stdout] --> src/core/transport.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum TransportStatus { [INFO] [stdout] | --------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 14 | Paused, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TransportStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_active` is never used [INFO] [stdout] --> src/core/transport.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl TransportStatus { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn is_active(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `protocol`, `status`, `peer_addr`, `stream_id`, and `stop` are never used [INFO] [stdout] --> src/core/transport.rs:43:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub trait MediaTransport: Send + Sync + 'static { [INFO] [stdout] | -------------- methods in this trait [INFO] [stdout] 43 | fn protocol(&self) -> StreamProtocol; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 44 | fn status(&self) -> TransportStatus; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 45 | fn peer_addr(&self) -> String; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 46 | fn stream_id(&self) -> String; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | async fn stop(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StreamPusher` is never used [INFO] [stdout] --> src/core/transport.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | pub trait StreamPusher: MediaTransport { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `enabled` is never used [INFO] [stdout] --> src/process/analysis/mod.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 113 | impl AnalysisManager { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_manager` is never read [INFO] [stdout] --> src/process/transcode/mod.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct TranscodeManager { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 67 | sessions: Arc>>, [INFO] [stdout] 68 | stream_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TranscodeManager` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_bitrate` is never used [INFO] [stdout] --> src/process/transcode/mod.rs:446:8 [INFO] [stdout] | [INFO] [stdout] 446 | pub fn parse_bitrate(bitrate: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_resolution` is never used [INFO] [stdout] --> src/process/transcode/mod.rs:466:8 [INFO] [stdout] | [INFO] [stdout] 466 | pub fn parse_resolution(resolution: &str) -> Result<(u32, u32), String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `segment_wall_secs` and `output_dir` are never used [INFO] [stdout] --> src/server/hls/mod.rs:199:8 [INFO] [stdout] | [INFO] [stdout] 119 | impl HlsSession { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 199 | fn segment_wall_secs(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 553 | pub fn output_dir(&self) -> &Path { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `list_streams` and `output_dir` are never used [INFO] [stdout] --> src/server/hls/mod.rs:924:12 [INFO] [stdout] | [INFO] [stdout] 577 | impl HlsServer { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 924 | pub fn list_streams(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 953 | pub fn output_dir(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sequence` is never read [INFO] [stdout] --> src/server/hls/m3u8.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct Segment { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 13 | /// Segment sequence number [INFO] [stdout] 14 | pub sequence: u64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Segment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `set_ended` and `slot_filename` are never used [INFO] [stdout] --> src/server/hls/m3u8.rs:184:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl M3u8Generator { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn set_ended(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn slot_filename(sequence: u64, max_segments: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `peer_addr` is never read [INFO] [stdout] --> src/server/hls/puller.rs:90:5 [INFO] [stdout] | [INFO] [stdout] 86 | pub struct HlsPuller { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 90 | peer_addr: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `download_segment` is never used [INFO] [stdout] --> src/server/hls/puller.rs:811:10 [INFO] [stdout] | [INFO] [stdout] 811 | async fn download_segment( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_ts_segment_hls` is never used [INFO] [stdout] --> src/server/hls/puller.rs:1186:10 [INFO] [stdout] | [INFO] [stdout] 1186 | async fn process_ts_segment_hls( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TS_PACKET_SIZE` is never used [INFO] [stdout] --> src/server/hls/puller.rs:1231:7 [INFO] [stdout] | [INFO] [stdout] 1231 | const TS_PACKET_SIZE: usize = 188; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `hard_reset` is never used [INFO] [stdout] --> src/server/hls/ts_muxer.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl TsMuxer { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn hard_reset(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `prepare_h264_au_for_ts` is never used [INFO] [stdout] --> src/server/hls/ts_muxer.rs:277:4 [INFO] [stdout] | [INFO] [stdout] 277 | fn prepare_h264_au_for_ts(data: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `starts_with_aud` is never used [INFO] [stdout] --> src/server/hls/ts_muxer.rs:290:4 [INFO] [stdout] | [INFO] [stdout] 290 | fn starts_with_aud(data: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `feed` is never used [INFO] [stdout] --> src/server/hls/ts_parser.rs:662:12 [INFO] [stdout] | [INFO] [stdout] 589 | impl TsStreamDecoder { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 662 | pub fn feed(&mut self, chunk: &[u8]) -> Vec<(TsCodec, bool, Vec)> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timeline` is never read [INFO] [stdout] --> src/server/http_flv/mod.rs:216:5 [INFO] [stdout] | [INFO] [stdout] 210 | pub struct HttpFlvSession { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 216 | timeline: FlvPlayTimeline, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `tag_timestamp_ms` and `frame_to_flv_with_timestamp` are never used [INFO] [stdout] --> src/server/http_flv/mod.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 219 | impl HttpFlvSession { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 231 | fn tag_timestamp_ms(&mut self, frame: &MediaFrame) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 298 | pub fn frame_to_flv_with_timestamp(&mut self, frame: &MediaFrame) -> (Vec, u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `has_stream` and `dispatch_subscribe` are never used [INFO] [stdout] --> src/server/http_flv/mod.rs:348:12 [INFO] [stdout] | [INFO] [stdout] 342 | impl HttpFlvServer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 348 | pub fn has_stream(&self, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 367 | pub fn dispatch_subscribe( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `peer_addr` is never read [INFO] [stdout] --> src/server/http_flv/puller.rs:112:5 [INFO] [stdout] | [INFO] [stdout] 108 | pub struct FlvPuller { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 112 | peer_addr: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `peer_addr` is never read [INFO] [stdout] --> src/server/mp4/puller.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct Mp4Puller { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | peer_addr: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Undefined` is never constructed [INFO] [stdout] --> src/server/rtmp/amf0.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum Amf0Value { [INFO] [stdout] | --------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Undefined, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Amf0Value` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_bool` is never used [INFO] [stdout] --> src/server/rtmp/amf0.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Amf0Value { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn as_bool(&self) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `encode_command` is never used [INFO] [stdout] --> src/server/rtmp/amf0.rs:283:8 [INFO] [stdout] | [INFO] [stdout] 283 | pub fn encode_command(name: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_number_prop` is never used [INFO] [stdout] --> src/server/rtmp/amf0.rs:312:8 [INFO] [stdout] | [INFO] [stdout] 312 | pub fn get_number_prop(val: &Amf0Value, key: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RtmpConnection` is never constructed [INFO] [stdout] --> src/server/rtmp/connection.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct RtmpConnection { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/server/rtmp/connection.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl RtmpConnection { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 21 | pub fn new(stream: TcpStream) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub async fn server_handshake(&mut self, peer_addr: std::net::SocketAddr) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | pub async fn client_handshake(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub async fn read(&mut self) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub async fn read_timeout(&mut self, timeout: std::time::Duration) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn parse_chunks(&mut self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub async fn send_message( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub async fn send_message_with_timestamp( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn handle_control_message(&mut self, payload: &[u8], msg_type: u8) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn set_chunk_size(&mut self, size: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn chunk_size(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn buf_len(&self) -> usize { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn into_inner( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn writer_clone(&self) -> tokio::net::tcp::OwnedWriteHalf { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RtmpHandshakeState` is never used [INFO] [stdout] --> src/server/rtmp/connection.rs:197:10 [INFO] [stdout] | [INFO] [stdout] 197 | pub enum RtmpHandshakeState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RtmpHandshake` is never constructed [INFO] [stdout] --> src/server/rtmp/connection.rs:205:12 [INFO] [stdout] | [INFO] [stdout] 205 | pub struct RtmpHandshake { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `server`, `client`, `is_completed`, `server_handle_data`, and `client_perform` are never used [INFO] [stdout] --> src/server/rtmp/connection.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 210 | impl RtmpHandshake { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 211 | pub fn server(peer_addr: std::net::SocketAddr) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn client() -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn is_completed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 229 | pub async fn server_handle_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 283 | pub async fn client_perform(&mut self, stream: &mut TcpStream) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `peer_addr` is never read [INFO] [stdout] --> src/server/rtmp/puller.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 65 | pub struct RtmpPuller { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 69 | peer_addr: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RtmpPusher` is never constructed [INFO] [stdout] --> src/server/rtmp/pusher.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 24 | pub struct RtmpPusher { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl RtmpPusher { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 39 | pub fn new(stream_manager: Arc, remote_url: &str, stream_id: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn set_tracks(&mut self, tracks: Vec) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn set_status(&self, status: TransportStatus) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | fn is_paused(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | fn set_paused(&self, paused: bool) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | async fn rtmp_send_loop( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | async fn send_sequence_headers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 297 | async fn cache_and_send_h264_frame( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | async fn cache_and_send_h265_frame( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 390 | async fn send_rtmp_message( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | async fn client_handshake(conn: &mut RtmpConnection) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_publish_command` is never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:581:4 [INFO] [stdout] | [INFO] [stdout] 581 | fn build_publish_command(tx_id: f64, stream_name: &str, msg_stream_id: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_result` is never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:592:10 [INFO] [stdout] | [INFO] [stdout] 592 | async fn wait_for_result(conn: &mut RtmpConnection, tx_id: f64, command: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_create_stream` is never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:627:10 [INFO] [stdout] | [INFO] [stdout] 627 | async fn wait_for_create_stream(conn: &mut RtmpConnection, tx_id: f64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wait_for_publish_start` is never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:661:10 [INFO] [stdout] | [INFO] [stdout] 661 | async fn wait_for_publish_start(conn: &mut RtmpConnection) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `monitor_connection` is never used [INFO] [stdout] --> src/server/rtmp/pusher.rs:697:10 [INFO] [stdout] | [INFO] [stdout] 697 | async fn monitor_connection(mut reader: tokio::net::tcp::OwnedReadHalf) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `CreateStream` is never constructed [INFO] [stdout] --> src/server/rtmp/session.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum SessionState { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 19 | CreateStream, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SessionState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stream_key`, `client_chunk_size`, `avc_header_sent`, `aac_header_sent`, and `metadata_sent` are never read [INFO] [stdout] --> src/server/rtmp/session.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct RtmpSession { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 39 | pub stream_key: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub client_chunk_size: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub avc_header_sent: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 50 | /// Whether we've sent the AAC sequence header [INFO] [stdout] 51 | pub aac_header_sent: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 52 | /// Whether we've sent onMetaData [INFO] [stdout] 53 | pub metadata_sent: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `handle_set_chunk_size` and `next_transaction_id` are never used [INFO] [stdout] --> src/server/rtmp/session.rs:184:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl RtmpSession { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn handle_set_chunk_size(&mut self, payload: &[u8]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | pub fn next_transaction_id(&mut self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_metadata` is never used [INFO] [stdout] --> src/server/rtmp/session.rs:349:8 [INFO] [stdout] | [INFO] [stdout] 349 | pub fn build_metadata(width: u32, height: u32, stream_name: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `build_rtp_packet`, `wrap_interleaved`, and `build_setup_udp_response` are never used [INFO] [stdout] --> src/server/rtsp/mod.rs:461:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl RtspServer { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 461 | pub fn build_rtp_packet( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 479 | pub fn wrap_interleaved(data: &[u8], channel: u8) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 527 | fn build_setup_udp_response( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_manager` is never read [INFO] [stdout] --> src/server/rtsp/client_session.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RtspClientSession { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | stream_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtcp_socket` and `server_rtcp_addr` are never read [INFO] [stdout] --> src/server/rtsp/client_session.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 28 | struct TrackUdpTransport { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 29 | rtp_socket: Arc, [INFO] [stdout] 30 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 31 | server_rtp_addr: SocketAddr, [INFO] [stdout] 32 | server_rtcp_addr: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/server/rtsp/client_session.rs:107:18 [INFO] [stdout] | [INFO] [stdout] 35 | impl RtspClientSession { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 107 | pub async fn send_rtp_over_udp_track(&self, track_idx: usize, data: &[u8]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn is_udp_configured(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 177 | pub async fn send_request_with_body( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 433 | pub fn remote_url(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 437 | pub fn transport_mode(&self) -> TransportMode { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 441 | pub async fn start_keepalive(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 471 | pub async fn write_all(&mut self, data: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 499 | pub fn wrap_interleaved(data: &[u8], channel: u8) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 503 | pub fn parse_interleaved(data: &[u8]) -> Option<(u8, &[u8])> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/server/rtsp/common.rs:153:18 [INFO] [stdout] | [INFO] [stdout] 152 | impl RtspCommon { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 153 | pub async fn read_response(reader: &mut tokio::net::tcp::OwnedReadHalf) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | pub fn parse_interleaved(data: &[u8]) -> Option<(u8, &[u8])> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn convert_timestamp_to_rtp(frame_timestamp_ms: u64, clock_rate: u32) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn convert_rtp_timestamp_to_ms(rtp_timestamp: u32, clock_rate: u32) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 471 | pub async fn write_request( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 481 | pub async fn write_response( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 490 | pub fn parse_rtp_header(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 553 | pub fn build_rtcp_rr(ssrc: u32, last_seq: u16, jitter: u32, lsr: u32, dlsr: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 570 | pub fn build_rtcp_sr( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 604 | pub const H264_NAL_SPS: u8 = 7; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 605 | pub const H264_NAL_PPS: u8 = 8; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 606 | pub const H264_NAL_IDR: u8 = 5; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 607 | pub const H264_NAL_NON_IDR: u8 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 608 | pub const H264_NAL_SEI: u8 = 6; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 612 | pub fn parse_h264_nal_units(payload: &[u8]) -> (Vec>, bool, bool, bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 824 | pub fn h264_nal_to_rtp_payload(nal_unit: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 833 | pub fn create_h264_keyframe_rtp_packets( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 858 | pub fn h264_nal_units_to_rtp_payload(nal_units: &[Vec]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RtpHeader` is never constructed [INFO] [stdout] --> src/server/rtsp/common.rs:948:12 [INFO] [stdout] | [INFO] [stdout] 948 | pub struct RtpHeader { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `UdpTransport` is never constructed [INFO] [stdout] --> src/server/rtsp/common.rs:961:12 [INFO] [stdout] | [INFO] [stdout] 961 | pub struct UdpTransport { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new_tcp` and `new_udp` are never used [INFO] [stdout] --> src/server/rtsp/common.rs:970:12 [INFO] [stdout] | [INFO] [stdout] 969 | impl UdpTransport { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] 970 | pub fn new_tcp() -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 980 | pub fn new_udp(client_rtp: u16, client_rtcp: u16, server_rtp: u16, server_rtcp: u16) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `read_request`, `send_rtp_packet`, `send_interleaved`, and `close` are never used [INFO] [stdout] --> src/server/rtsp/connection.rs:43:18 [INFO] [stdout] | [INFO] [stdout] 19 | impl RtspConnection { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 43 | pub async fn read_request(&mut self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub async fn send_rtp_packet(&self, data: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub async fn send_interleaved(&self, data: &[u8], channel: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub async fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `parse`, `get_header`, and `cseq` are never used [INFO] [stdout] --> src/server/rtsp/messages.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl RtspRequest { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn parse(input: &str) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn get_header(&self, key: &str) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn cseq(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_header` and `cseq` are never used [INFO] [stdout] --> src/server/rtsp/messages.rs:226:12 [INFO] [stdout] | [INFO] [stdout] 122 | impl RtspResponse { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 226 | pub fn get_header(&self, key: &str) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | pub fn cseq(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `peer_addr` is never read [INFO] [stdout] --> src/server/rtsp/puller.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RtspPuller { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | peer_addr: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id`, `vps_cache`, and `peer_addr` are never read [INFO] [stdout] --> src/server/rtsp/pusher.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct RtspPusher { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 20 | id: PusherId, [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 27 | vps_cache: Arc>>>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | peer_addr: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_paused`, `set_paused`, and `is_running` are never used [INFO] [stdout] --> src/server/rtsp/pusher.rs:70:8 [INFO] [stdout] | [INFO] [stdout] 33 | impl RtspPusher { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 70 | fn is_paused(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | fn set_paused(&self, paused: bool) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_sdp_for_tracks` is never used [INFO] [stdout] --> src/server/rtsp/sdp_builder.rs:230:8 [INFO] [stdout] | [INFO] [stdout] 230 | pub fn build_sdp_for_tracks(tracks: &[Track]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_sdp_with_codec_params` is never used [INFO] [stdout] --> src/server/rtsp/sdp_builder.rs:234:8 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn build_sdp_with_codec_params( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sdp_generated` is never read [INFO] [stdout] --> src/server/rtsp/server_session.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct RtspServerSession { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 43 | sdp_generated: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `rtcp_socket` and `client_rtcp_addr` are never read [INFO] [stdout] --> src/server/rtsp/server_session.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 47 | struct UdpTrackTransport { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 48 | rtp_socket: Arc, [INFO] [stdout] 49 | rtcp_socket: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 50 | client_rtp_addr: SocketAddr, [INFO] [stdout] 51 | client_rtcp_addr: SocketAddr, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UdpTrackTransport` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/server/rtsp/server_session.rs:252:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl RtspServerSession { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 252 | pub fn is_udp_configured(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 256 | async fn send_rtp_over_udp_track(&self, data: &[u8], track_id: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn peer_addr(&self) -> &SocketAddr { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 270 | pub fn session(&self) -> &RtspSessionState { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 274 | pub fn writer(&self) -> &ChannelSocketWriter { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 278 | pub async fn send_response(&mut self, response: &RtspResponse) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 282 | pub async fn send_rtp_packet(&self, data: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 374 | fn extract_h264_sps_pps_from_payload(payload: &[u8]) -> (Option>, Option>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 697 | fn is_h264_keyframe(payload: &[u8]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 714 | fn video_codec_for_track(&self, track_id: u8) -> CodecType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1148 | pub async fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1153 | pub fn get_sps(&self) -> Option> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1157 | pub fn get_pps(&self) -> Option> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1161 | pub fn is_sdp_ready(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1171 | pub fn build_sdp_with_codec_params(&self, stream_id: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `buffer` is never read [INFO] [stdout] --> src/server/socket_transport.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct SocketReader { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 10 | reader: R, [INFO] [stdout] 11 | buffer: BytesMut, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/server/socket_transport.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl SocketReader { [INFO] [stdout] | --------------------------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn with_timeout(mut self, timeout: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub async fn read_buf(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub async fn read_until(&mut self, delimiter: &[u8]) -> Result> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub async fn read_to_string(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn buffer(&self) -> &BytesMut { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn buffer_mut(&mut self) -> &mut BytesMut { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn into_inner(self) -> R { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SocketWriter` is never constructed [INFO] [stdout] --> src/server/socket_transport.rs:103:12 [INFO] [stdout] | [INFO] [stdout] 103 | pub struct SocketWriter { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/server/socket_transport.rs:109:12 [INFO] [stdout] | [INFO] [stdout] 108 | impl SocketWriter { [INFO] [stdout] | ---------------------------------------------- associated items in this implementation [INFO] [stdout] 109 | pub fn new(writer: W) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn with_timeout(mut self, timeout: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub async fn write(&mut self, buf: &[u8]) -> Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub async fn write_all(&mut self, buf: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub async fn flush(&mut self) -> Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub async fn write_and_flush(&mut self, buf: &[u8]) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn into_inner(self) -> W { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SocketTransport` is never constructed [INFO] [stdout] --> src/server/socket_transport.rs:156:12 [INFO] [stdout] | [INFO] [stdout] 156 | pub struct SocketTransport { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `with_timeout`, `reader`, `writer`, and `into_inner` are never used [INFO] [stdout] --> src/server/socket_transport.rs:162:12 [INFO] [stdout] | [INFO] [stdout] 161 | impl SocketTransport { [INFO] [stdout] | ----------------------------------------------------------------------------- associated items in this implementation [INFO] [stdout] 162 | pub fn new(reader: R, writer: W) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn with_timeout(mut self, timeout: Duration) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn reader(&mut self) -> &mut SocketReader { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn writer(&mut self) -> &mut SocketWriter { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn into_inner(self) -> (R, W) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BufferedSocketReader` is never constructed [INFO] [stdout] --> src/server/socket_transport.rs:188:12 [INFO] [stdout] | [INFO] [stdout] 188 | pub struct BufferedSocketReader { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `read_message`, `read_message_string`, and `into_inner` are never used [INFO] [stdout] --> src/server/socket_transport.rs:194:12 [INFO] [stdout] | [INFO] [stdout] 193 | impl BufferedSocketReader { [INFO] [stdout] | ----------------------------------------------------- associated items in this implementation [INFO] [stdout] 194 | pub fn new(reader: R, delimiter: &[u8]) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | pub async fn read_message(&mut self) -> Result>> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub async fn read_message_string(&mut self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | pub fn into_inner(self) -> R { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `into_inner` is never used [INFO] [stdout] --> src/server/socket_transport.rs:243:12 [INFO] [stdout] | [INFO] [stdout] 227 | impl ChannelSocketWriter { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 243 | pub fn into_inner(self) -> Sender> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_rtp_stale_in_gop` is never used [INFO] [stdout] --> src/server/webrtc/h264_util.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn is_rtp_stale_in_gop(curr: u64, prev: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `h264_payload_type_from_sdp` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h264.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn h264_payload_type_from_sdp(sdp: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_video_media_description` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h264.rs:54:4 [INFO] [stdout] | [INFO] [stdout] 54 | fn find_video_media_description(sdp: &SessionDescription) -> Option<&MediaDescription> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_video_media_description` is never used [INFO] [stdout] --> src/server/webrtc/sdp_h265.rs:40:4 [INFO] [stdout] | [INFO] [stdout] 40 | fn find_video_media_description(sdp: &SessionDescription) -> Option<&MediaDescription> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Lagged` is never constructed [INFO] [stdout] --> src/server/webrtc/player.rs:785:5 [INFO] [stdout] | [INFO] [stdout] 783 | enum RecvCoalesced { [INFO] [stdout] | ------------- variant in this enum [INFO] [stdout] 784 | Frame(MediaFrame, u64), [INFO] [stdout] 785 | Lagged(u64), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/server/rtmp/pusher.rs:189:25 [INFO] [stdout] | [INFO] [stdout] 189 | / Self::send_rtmp_message( [INFO] [stdout] 190 | | &mut writer, [INFO] [stdout] 191 | | 0x08, [INFO] [stdout] 192 | | msg_stream_id, [INFO] [stdout] ... | [INFO] [stdout] 198 | | .await; [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 189 | let _ = Self::send_rtmp_message( [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_track` is never used [INFO] [stdout] --> src/core/mod.rs:80:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl Stream { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 80 | pub fn add_track(&mut self, track: Track) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Paused` is never constructed [INFO] [stdout] --> src/core/mod.rs:90:5 [INFO] [stdout] | [INFO] [stdout] 86 | pub enum StreamStatus { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 90 | Paused, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_error` and `is_terminated` are never used [INFO] [stdout] --> src/core/mod.rs:122:12 [INFO] [stdout] | [INFO] [stdout] 95 | impl StreamStatus { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn is_error(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn is_terminated(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Playing` and `Paused` are never constructed [INFO] [stdout] --> src/core/mod.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 132 | pub enum PlaybackStatus { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 133 | Idle, [INFO] [stdout] 134 | Playing, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 135 | Paused, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PlaybackStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_playing` is never used [INFO] [stdout] --> src/core/mod.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 138 | impl PlaybackStatus { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn is_playing(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Pull` and `Push` are never constructed [INFO] [stdout] --> src/core/mod.rs:180:5 [INFO] [stdout] | [INFO] [stdout] 179 | pub enum StreamSinkMode { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 180 | Pull, [INFO] [stdout] | ^^^^ [INFO] [stdout] 181 | Push, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamSinkMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_str` and `description` are never used [INFO] [stdout] --> src/core/mod.rs:185:12 [INFO] [stdout] | [INFO] [stdout] 184 | impl StreamSinkMode { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 185 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn description(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Idle`, `Connecting`, `Playing`, `Paused`, `Error`, and `Stopped` are never constructed [INFO] [stdout] --> src/core/mod.rs:202:5 [INFO] [stdout] | [INFO] [stdout] 201 | pub enum ReceiverStatus { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 202 | Idle, [INFO] [stdout] | ^^^^ [INFO] [stdout] 203 | Connecting, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 204 | Playing, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 205 | Paused, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 206 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 207 | Stopped, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ReceiverStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_str` and `description` are never used [INFO] [stdout] --> src/core/mod.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 210 | impl ReceiverStatus { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 211 | pub fn as_str(&self) -> &str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub fn description(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/core/mod.rs:238:9 [INFO] [stdout] | [INFO] [stdout] 237 | pub struct StreamReceiver { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 238 | pub id: ReceiverId, [INFO] [stdout] | ^^ [INFO] [stdout] 239 | pub stream_id: StreamId, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 240 | pub mode: StreamSinkMode, [INFO] [stdout] | ^^^^ [INFO] [stdout] 241 | pub protocol: StreamProtocol, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 242 | pub client_addr: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 243 | pub status: ReceiverStatus, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 244 | pub push_addr: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamReceiver` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `with_client_addr`, and `with_push_addr` are never used [INFO] [stdout] --> src/core/mod.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 247 | impl StreamReceiver { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 248 | pub fn new(stream_id: &str, mode: StreamSinkMode, protocol: StreamProtocol) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn with_client_addr(mut self, addr: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | pub fn with_push_addr(mut self, addr: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `extra_params` is never read [INFO] [stdout] --> src/core/mod.rs:285:9 [INFO] [stdout] | [INFO] [stdout] 280 | pub struct Track { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] ... [INFO] [stdout] 285 | pub extra_params: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Track` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `with_extra_params` is never used [INFO] [stdout] --> src/core/mod.rs:311:12 [INFO] [stdout] | [INFO] [stdout] 300 | impl Track { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 311 | pub fn with_extra_params(mut self, key: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_pt` and `mime_type` are never used [INFO] [stdout] --> src/core/mod.rs:336:12 [INFO] [stdout] | [INFO] [stdout] 335 | impl CodecType { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 336 | pub fn from_pt(pt: u8) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 348 | pub fn mime_type(&self) -> &'static str { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RtpPacket` is never constructed [INFO] [stdout] --> src/core/mod.rs:410:12 [INFO] [stdout] | [INFO] [stdout] 410 | pub struct RtpPacket { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `max_size_mb` and `max_files` are never read [INFO] [stdout] --> src/core/config.rs:115:9 [INFO] [stdout] | [INFO] [stdout] 112 | pub struct LogConfig { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 115 | pub max_size_mb: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 116 | pub max_files: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LogConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `LiveCoalesce` is never constructed [INFO] [stdout] --> src/core/dispatch.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 26 | pub enum DispatchPolicy { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] 27 | /// RTMP / HTTP-FLV: live edge, coalesce video bursts, audio in order. [INFO] [stdout] 28 | LiveCoalesce, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DispatchPolicy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `policy`, `set_cursor`, `advance_cursor`, `cursor_media_lag_ms`, and `recv_live_edge_batch` are never used [INFO] [stdout] --> src/core/dispatch.rs:96:12 [INFO] [stdout] | [INFO] [stdout] 55 | impl DispatchReader { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn policy(&self) -> DispatchPolicy { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn set_cursor(&mut self, cursor: u64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn advance_cursor(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn cursor_media_lag_ms(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 483 | pub async fn recv_live_edge_batch( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `iter_idr_seqs_rev` and `find_frame_rev` are never used [INFO] [stdout] --> src/core/frame_ring.rs:126:12 [INFO] [stdout] | [INFO] [stdout] 55 | impl FrameRing { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn iter_idr_seqs_rev(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn find_frame_rev( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `recv_coalesced_play_frame` is never used [INFO] [stdout] --> src/core/live_play.rs:155:14 [INFO] [stdout] | [INFO] [stdout] 155 | pub async fn recv_coalesced_play_frame( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `update_hls` is never used [INFO] [stdout] --> src/core/metrics.rs:289:12 [INFO] [stdout] | [INFO] [stdout] 181 | impl MetricsRegistry { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn update_hls(stream_id: &str, update: HlsMetricsSnapshot) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StreamSink` is never used [INFO] [stdout] --> src/core/protocol.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait StreamSink: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StreamSource` is never used [INFO] [stdout] --> src/core/protocol.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub trait StreamSource: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ProtocolType` is never used [INFO] [stdout] --> src/core/protocol.rs:29:10 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum ProtocolType { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `as_str` and `from_str` are never used [INFO] [stdout] --> src/core/protocol.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl ProtocolType { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 40 | pub fn as_str(&self) -> &'static str { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn from_str(s: &str) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProtocolInfo` is never constructed [INFO] [stdout] --> src/core/protocol.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct ProtocolInfo { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProtocolRegistry` is never constructed [INFO] [stdout] --> src/core/protocol.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | pub struct ProtocolRegistry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `register`, `list`, and `is_enabled` are never used [INFO] [stdout] --> src/core/protocol.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 86 | impl ProtocolRegistry { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 87 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn register(&mut self, info: ProtocolInfo) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn list(&self) -> &[ProtocolInfo] { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn is_enabled(&self, protocol: ProtocolType) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `PullerId` is never used [INFO] [stdout] --> src/core/pusher.rs:9:10 [INFO] [stdout] | [INFO] [stdout] 9 | pub type PullerId = String; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PusherInfo` is never constructed [INFO] [stdout] --> src/core/pusher.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct PusherInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PullerInfo` is never constructed [INFO] [stdout] --> src/core/pusher.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct PullerInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PusherConfig` is never constructed [INFO] [stdout] --> src/core/pusher.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct PusherConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/pusher.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 33 | impl PusherConfig { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 34 | pub fn new(stream_id: &str, remote_url: &str, protocol: StreamProtocol) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PullerConfig` is never constructed [INFO] [stdout] --> src/core/pusher.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct PullerConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/pusher.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl PullerConfig { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 50 | pub fn new(stream_id: &str, remote_url: &str, protocol: StreamProtocol) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PusherState` is never constructed [INFO] [stdout] --> src/core/pusher.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct PusherState { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PullerState` is never constructed [INFO] [stdout] --> src/core/pusher.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct PullerState { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PushPullManager` is never constructed [INFO] [stdout] --> src/core/pusher.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | pub struct PushPullManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/pusher.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 80 | impl PushPullManager { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 81 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub async fn register_pusher( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub async fn unregister_pusher(&self, pusher_id: &PusherId) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub async fn update_pusher_status(&self, pusher_id: &PusherId, status: TransportStatus) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub async fn get_pusher_info(&self, pusher_id: &PusherId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub async fn list_pushers(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub async fn register_puller( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 198 | pub async fn unregister_puller(&self, puller_id: &PullerId) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 205 | pub async fn update_puller_status(&self, puller_id: &PullerId, status: TransportStatus) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub async fn get_puller_info(&self, puller_id: &PullerId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | pub async fn list_pullers(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `receivers` is never read [INFO] [stdout] --> src/core/stream_hub.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct StreamHub { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | receivers: RwLock>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/stream_hub.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl StreamHub { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 25 | pub fn new(stream_id: &str) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub(crate) fn add_receiver(&self, receiver: StreamReceiver) -> StreamReceiver { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub(crate) fn remove_receiver(&self, receiver_id: &ReceiverId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 80 | pub(crate) fn get_receiver(&self, receiver_id: &ReceiverId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub(crate) fn list_receiver_ids(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub(crate) fn list_receivers(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub(crate) fn set_receiver_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub(crate) fn current_publisher(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn latest_playable_idr_frame(&self, mut is_match: F) -> Option [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn find_frame_rev( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stream_id`, `source`, `protocol`, and `pull_url` are never read [INFO] [stdout] --> src/core/stream_manager.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 32 | StreamCreated { [INFO] [stdout] | ------------- fields in this variant [INFO] [stdout] 33 | stream_id: StreamId, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 34 | source: StreamSourceMode, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 35 | protocol: StreamProtocol, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 36 | pull_url: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_id` is never read [INFO] [stdout] --> src/core/stream_manager.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 39 | StreamRemoved { [INFO] [stdout] | ------------- field in this variant [INFO] [stdout] 40 | stream_id: StreamId, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stream_id`, `old_status`, and `new_status` are never read [INFO] [stdout] --> src/core/stream_manager.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 43 | StreamStatusChanged { [INFO] [stdout] | ------------------- fields in this variant [INFO] [stdout] 44 | stream_id: StreamId, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 45 | old_status: StreamStatus, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 46 | new_status: StreamStatus, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stream_id` and `publisher_id` are never read [INFO] [stdout] --> src/core/stream_manager.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 49 | PublisherAcquired { [INFO] [stdout] | ----------------- fields in this variant [INFO] [stdout] 50 | stream_id: StreamId, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 51 | publisher_id: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stream_id` and `publisher_id` are never read [INFO] [stdout] --> src/core/stream_manager.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 54 | PublisherReleased { [INFO] [stdout] | ----------------- fields in this variant [INFO] [stdout] 55 | stream_id: StreamId, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 56 | publisher_id: String, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ReceiverCreated`, `ReceiverRemoved`, and `ReceiverStatusChanged` are never constructed [INFO] [stdout] --> src/core/stream_manager.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 30 | pub enum StreamEvent { [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 59 | ReceiverCreated { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | ReceiverRemoved { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | ReceiverStatusChanged { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `StreamEventReceiver` is never used [INFO] [stdout] --> src/core/stream_manager.rs:81:10 [INFO] [stdout] | [INFO] [stdout] 81 | pub type StreamEventReceiver = broadcast::Receiver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new_active` is never used [INFO] [stdout] --> src/core/stream_manager.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 88 | impl PullSessionHandle { [INFO] [stdout] | ---------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn new_active() -> Arc { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/core/stream_manager.rs:150:12 [INFO] [stdout] | [INFO] [stdout] 112 | impl StreamManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn subscribe_events(&self) -> StreamEventReceiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn is_pull_stop_requested(&self, stream_id: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 536 | pub fn set_playback_status(&self, stream_id: &str, status: PlaybackStatus) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | pub fn set_created(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 564 | pub fn set_paused(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 572 | pub fn set_playback_idle(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 576 | pub fn set_playback_playing(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 580 | pub fn set_playback_paused(&self, stream_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 645 | pub fn current_publisher(&self, stream_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 650 | pub fn create_receiver( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 683 | pub fn create_pull_receiver( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 717 | pub fn create_push_receiver( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 751 | pub fn remove_receiver(&self, receiver_id: &ReceiverId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 772 | pub fn get_receiver(&self, receiver_id: &ReceiverId) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 779 | pub fn list_receivers(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 787 | pub fn list_receivers_for_stream(&self, stream_id: &StreamId) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 793 | pub fn set_receiver_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 917 | pub fn update_stream_status(&self, stream_id: &StreamId, status: StreamStatus) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/core/tester.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl StreamTester { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 15 | pub fn new(stream_manager: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `media_timestamp_delta_ms` is never used [INFO] [stdout] --> src/core/timestamp.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn media_timestamp_delta_ms(prev: u64, curr: u64) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `flv_timestamp_ms` is never used [INFO] [stdout] --> src/core/timestamp.rs:63:8 [INFO] [stdout] | [INFO] [stdout] 63 | pub fn flv_timestamp_ms(codec: crate::core::CodecType, raw: u64) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Connected` and `Paused` are never constructed [INFO] [stdout] --> src/core/transport.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum TransportStatus { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 11 | Connected, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | Paused, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TransportStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_active` is never used [INFO] [stdout] --> src/core/transport.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl TransportStatus { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn is_active(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `protocol`, `status`, `peer_addr`, `stream_id`, and `stop` are never used [INFO] [stdout] --> src/core/transport.rs:43:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub trait MediaTransport: Send + Sync + 'static { [INFO] [stdout] | -------------- methods in this trait [INFO] [stdout] 43 | fn protocol(&self) -> StreamProtocol; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 44 | fn status(&self) -> TransportStatus; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 45 | fn peer_addr(&self) -> String; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 46 | fn stream_id(&self) -> String; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | async fn stop(&mut self) -> Result<()>; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StreamPusher` is never used [INFO] [stdout] --> src/core/transport.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | pub trait StreamPusher: MediaTransport { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `hevc_sprop_from_nals` is never used [INFO] [stdout] --> src/core/video_codec.rs:536:8 [INFO] [stdout] | [INFO] [stdout] 536 | pub fn hevc_sprop_from_nals(vps: &[u8], sps: &[u8], pps: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `enabled` is never used [INFO] [stdout] --> src/process/analysis/mod.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 113 | impl AnalysisManager { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_manager` is never read [INFO] [stdout] --> src/process/transcode/mod.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct TranscodeManager { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 67 | sessions: Arc>>, [INFO] [stdout] 68 | stream_manager: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TranscodeManager` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_bitrate` is never used [INFO] [stdout] --> src/process/transcode/mod.rs:446:8 [INFO] [stdout] | [INFO] [stdout] 446 | pub fn parse_bitrate(bitrate: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [WARN] too many lines in the log, truncating it