[INFO] cloning repository https://github.com/Egue/hjstream
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Egue/hjstream" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEgue%2Fhjstream", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEgue%2Fhjstream'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a4434ebd7441ef9c629204f5546ac44a3e77a56d
[INFO] testing Egue/hjstream against 1.94.0 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEgue%2Fhjstream" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-7-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/Egue/hjstream
[INFO] finished tweaking git repo https://github.com/Egue/hjstream
[INFO] tweaked toml for git repo https://github.com/Egue/hjstream written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Egue/hjstream on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Egue/hjstream 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" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-test v0.4.5
[INFO] [stderr]   Downloaded tracing-appender v0.2.4
[INFO] [stderr]   Downloaded filetime v0.2.27
[INFO] [stderr]   Downloaded colored v3.1.1
[INFO] [stderr]   Downloaded mockito v1.7.1
[INFO] [stderr]   Downloaded cc v1.2.54
[INFO] [stderr]   Downloaded zerocopy v0.8.35
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.35
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] aa95732790044d71a81946efb6598ec5ac6face788adc1a827a5a81bd0595e5f
[INFO] running `Command { std: "docker" "start" "-a" "aa95732790044d71a81946efb6598ec5ac6face788adc1a827a5a81bd0595e5f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "aa95732790044d71a81946efb6598ec5ac6face788adc1a827a5a81bd0595e5f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa95732790044d71a81946efb6598ec5ac6face788adc1a827a5a81bd0595e5f", kill_on_drop: false }`
[INFO] [stdout] aa95732790044d71a81946efb6598ec5ac6face788adc1a827a5a81bd0595e5f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b53856225f1fa1225166cdc5aefae99fa1bd9328efa25907aed1b5d8574401b1
[INFO] running `Command { std: "docker" "start" "-a" "b53856225f1fa1225166cdc5aefae99fa1bd9328efa25907aed1b5d8574401b1", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling cc v1.2.54
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling zerocopy v0.8.35
[INFO] [stderr]    Compiling zmij v1.0.17
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling protobuf v2.28.0
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling prometheus v0.13.4
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling inotify v0.9.6
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling time v0.3.46
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling uuid v1.20.0
[INFO] [stderr]    Compiling notify v6.1.1
[INFO] [stderr]    Compiling dotenv v0.15.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling tungstenite v0.24.0
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling catv-transcoder-client v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/config/loader.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::Utc;
[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: `debug`
[INFO] [stdout]  --> src/mux/mpegts_demuxer.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut`
[INFO] [stdout]  --> src/mux/packet.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]   |             ^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native`
[INFO] [stdout]    --> src/network/srt_receiver.rs:193:7
[INFO] [stdout]     |
[INFO] [stdout] 193 | #[cfg(feature = "srt-native")]
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `metrics`, and `prometheus`
[INFO] [stdout]     = help: consider adding `srt-native` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::BytesMut`
[INFO] [stdout]  --> src/network/srt_receiver.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::BytesMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/network/srt_receiver.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/udp_sender.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, debug, error};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/multicast.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/utils/ffmpeg.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::{info, warn, error};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils/pid_manager.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> src/api/websocket.rs:72:38
[INFO] [stdout]    |
[INFO] [stdout] 72 |                     Ok(Message::Ping(data)) => {
[INFO] [stdout]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `offset` is never read
[INFO] [stdout]    --> src/mux/packet.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |             offset += 6;
[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: field `parameters` is never read
[INFO] [stdout]    --> src/api/websocket.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 127 | struct ClientCommand {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 130 |     parameters: Option<serde_json::Value>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClientCommand` has a derived impl for the trait `Debug`, 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: unused import: `client::ApiClient`
[INFO] [stdout]  --> src/api/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use client::ApiClient;
[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: `handlers::*`
[INFO] [stdout]   --> src/api/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use handlers::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `websocket::WebSocketManager`
[INFO] [stdout]   --> src/api/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use websocket::WebSocketManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `video::VideoEncoder`
[INFO] [stdout]   --> src/codec/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use video::VideoEncoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `audio::AudioEncoder`
[INFO] [stdout]   --> src/codec/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use audio::AudioEncoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `encoder::Encoder`
[INFO] [stdout]   --> src/codec/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use encoder::Encoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `decoder::Decoder`
[INFO] [stdout]   --> src/codec/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use decoder::Decoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/config/loader.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `manager::TranscoderManager`
[INFO] [stdout]   --> src/core/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use manager::TranscoderManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `channel::Channel`
[INFO] [stdout]   --> src/core/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use channel::Channel;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `transcoder::Transcoder`
[INFO] [stdout]   --> src/core/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use transcoder::Transcoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `analyzer::StreamAnalyzer`
[INFO] [stdout]   --> src/core/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use analyzer::StreamAnalyzer;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TranscodeStrategy` and `decide_strategy`
[INFO] [stdout]   --> src/core/mod.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use strategy::{TranscodeStrategy, decide_strategy};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `channel::Channel`
[INFO] [stdout]  --> src/models/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use channel::Channel;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error::TranscoderError`
[INFO] [stdout]  --> src/models/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use error::TranscoderError;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChannelStats` and `ChannelStatus`
[INFO] [stdout]   --> src/models/mod.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use stats::{ChannelStats, ChannelStatus};
[INFO] [stdout]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `health_checker::HealthChecker`
[INFO] [stdout]  --> src/monitor/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use health_checker::HealthChecker;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `metrics::MetricsCollector`
[INFO] [stdout]  --> src/monitor/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use metrics::MetricsCollector;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stats_collector::StatsCollector`
[INFO] [stdout]   --> src/monitor/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use stats_collector::StatsCollector;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alerting::AlertManager`
[INFO] [stdout]   --> src/monitor/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use alerting::AlertManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/mux/mpegts_demuxer.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut`
[INFO] [stdout]  --> src/mux/packet.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]   |             ^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpegts_demuxer::MpegTsDemuxer`
[INFO] [stdout]  --> src/mux/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use mpegts_demuxer::MpegTsDemuxer;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpegts_muxer::MpegTsMuxer`
[INFO] [stdout]   --> src/mux/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use mpegts_muxer::MpegTsMuxer;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AdaptationField`, `TsHeader`, and `TsPacket`
[INFO] [stdout]   --> src/mux/mod.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use packet::{TsPacket, TsHeader, AdaptationField};
[INFO] [stdout]    |                  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pes::PesPacket`
[INFO] [stdout]   --> src/mux/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use pes::PesPacket;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Pat`, `Pmt`, and `ProgramInfo`
[INFO] [stdout]   --> src/mux/mod.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use psi::{Pat, Pmt, ProgramInfo};
[INFO] [stdout]    |               ^^^  ^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native`
[INFO] [stdout]    --> src/network/srt_receiver.rs:193:7
[INFO] [stdout]     |
[INFO] [stdout] 193 | #[cfg(feature = "srt-native")]
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `metrics`, and `prometheus`
[INFO] [stdout]     = help: consider adding `srt-native` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::BytesMut`
[INFO] [stdout]  --> src/network/srt_receiver.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::BytesMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/network/srt_receiver.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/udp_sender.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, debug, error};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/multicast.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `srt_receiver::SrtReceiver`
[INFO] [stdout]  --> src/network/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use srt_receiver::SrtReceiver;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `udp_sender::UdpSender`
[INFO] [stdout]  --> src/network/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use udp_sender::UdpSender;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `multicast::MulticastSender`
[INFO] [stdout]  --> src/network/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use multicast::MulticastSender;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/utils/ffmpeg.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::{info, warn, error};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils/pid_manager.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `delete` and `extract::State`
[INFO] [stdout]    --> src/main.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         extract::State,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 180 |         routing::{get, post, delete},
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> src/api/websocket.rs:72:38
[INFO] [stdout]    |
[INFO] [stdout] 72 |                     Ok(Message::Ping(data)) => {
[INFO] [stdout]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `offset` is never read
[INFO] [stdout]    --> src/mux/packet.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |             offset += 6;
[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: methods `get_channel_config`, `send_channel_stats`, `send_bulk_stats`, `check_pending_commands`, and `acknowledge_command` are never used
[INFO] [stdout]    --> src/api/client.rs:119:18
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl ApiClient {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub async fn get_channel_config(&self, channel_id: &str) -> Result<ChannelConfig, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn send_channel_stats(&self, stats: &ChannelStats) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub async fn send_bulk_stats(&self, stats: Vec<ChannelStats>) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn check_pending_commands(&self, client_id: &str) -> Result<Vec<RemoteCommand>, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub async fn acknowledge_command(&self, command_id: &str, success: bool, message: Option<String>) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BulkStatsRequest` is never constructed
[INFO] [stdout]    --> src/api/client.rs:296:8
[INFO] [stdout]     |
[INFO] [stdout] 296 | struct BulkStatsRequest {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RemoteCommand` is never constructed
[INFO] [stdout]    --> src/api/client.rs:301:12
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub struct RemoteCommand {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RemoteCommandType` is never used
[INFO] [stdout]    --> src/api/client.rs:311:10
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub enum RemoteCommandType {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommandAcknowledgment` is never constructed
[INFO] [stdout]    --> src/api/client.rs:322:8
[INFO] [stdout]     |
[INFO] [stdout] 322 | struct CommandAcknowledgment {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_channel_stats` is never used
[INFO] [stdout]    --> src/api/handlers.rs:104:14
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub async fn get_channel_stats(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct CreateChannelRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/api/handlers.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub async fn create_channel(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_channel` is never used
[INFO] [stdout]    --> src/api/handlers.rs:151:14
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub async fn delete_channel(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_summary` is never used
[INFO] [stdout]    --> src/api/handlers.rs:185:14
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub async fn get_summary(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateConfigRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | pub struct UpdateConfigRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_channel_config` is never used
[INFO] [stdout]    --> src/api/handlers.rs:267:14
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub async fn update_channel_config(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_channels_health` is never used
[INFO] [stdout]    --> src/api/handlers.rs:287:14
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub async fn check_channels_health(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parameters` is never read
[INFO] [stdout]    --> src/api/websocket.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 127 | struct ClientCommand {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 130 |     parameters: Option<serde_json::Value>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegistrationService` is never constructed
[INFO] [stdout]  --> src/api/registration.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RegistrationService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `register_with_retry` are never used
[INFO] [stdout]   --> src/api/registration.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl RegistrationService {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(api_client: ApiClient, client_config: ClientConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn register_with_retry(&self) -> Result<(), TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeartbeatService` is never constructed
[INFO] [stdout]  --> src/api/heartbeat.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HeartbeatService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `start` are never used
[INFO] [stdout]   --> src/api/heartbeat.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HeartbeatService {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(api_client: Arc<ApiClient>, client_id: String, interval_seconds: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub async fn start(self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VideoEncoder` is never constructed
[INFO] [stdout]  --> src/codec/video.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct VideoEncoder {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `build_ffmpeg_args`, and `validate` are never used
[INFO] [stdout]    --> src/codec/video.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl VideoEncoder {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  46 |     /// Crear un encoder de video personalizado
[INFO] [stdout]  47 |     pub fn new(codec: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn build_ffmpeg_args(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioEncoder` is never constructed
[INFO] [stdout]  --> src/codec/audio.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct AudioEncoder {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `ac3_surround`, `eac3_surround`, `aac_stereo`, `build_ffmpeg_args`, and `validate` are never used
[INFO] [stdout]   --> src/codec/audio.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl AudioEncoder {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 30 |     /// Crear un encoder de audio personalizado
[INFO] [stdout] 31 |     pub fn new(codec: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn ac3_surround() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn eac3_surround() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn aac_stereo() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn build_ffmpeg_args(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Encoder` is never constructed
[INFO] [stdout]  --> src/codec/encoder.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Encoder {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EncoderMetadata` is never constructed
[INFO] [stdout]   --> src/codec/encoder.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct EncoderMetadata {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/codec/encoder.rs:40:12
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl Encoder {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  39 |     /// Crear un encoder para CATV estándar
[INFO] [stdout]  40 |     pub fn catv_standard() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn catv_surround() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn stream_optimized() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn high_quality() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn build_ffmpeg_command(&self) -> Result<Vec<String>, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn describe(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StreamInfo` is never constructed
[INFO] [stdout]  --> src/codec/decoder.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct StreamInfo {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ContainerInfo` is never constructed
[INFO] [stdout]   --> src/codec/decoder.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct ContainerInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Decoder` is never constructed
[INFO] [stdout]   --> src/codec/decoder.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Decoder {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `build_ffprobe_command`, `extract_video_info`, `extract_audio_info`, `extract_all_audio_streams`, and `extract_subtitle_info` are never used
[INFO] [stdout]   --> src/codec/decoder.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Decoder {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 37 |     /// Crear un decoder para una URL de entrada
[INFO] [stdout] 38 |     pub fn new(input_url: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn build_ffprobe_command(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn extract_video_info(container: &ContainerInfo) -> Option<StreamInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn extract_audio_info(container: &ContainerInfo) -> Option<StreamInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn extract_all_audio_streams(container: &ContainerInfo) -> Vec<StreamInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn extract_subtitle_info(container: &ContainerInfo) -> Vec<StreamInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_channel_config` and `delete_channel_config` are never used
[INFO] [stdout]    --> src/config/loader.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl ConfigLoader {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn load_channel_config(&self, channel_id: &str) -> Result<ChannelConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn delete_channel_config(&self, channel_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remove_channel`, `reload_channel_config`, `channel_count`, and `has_channel` are never used
[INFO] [stdout]    --> src/core/manager.rs:56:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl TranscoderManager {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub async fn remove_channel(&self, channel_id: &str) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub async fn reload_channel_config(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn channel_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn has_channel(&self, channel_id: &str) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_config` and `get_config` are never used
[INFO] [stdout]    --> src/core/channel.rs:165:18
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Channel {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub async fn update_config(&mut self, new_config: ChannelConfig) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn get_config(&self) -> &ChannelConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `quick_check` is never used
[INFO] [stdout]   --> src/core/analyzer.rs:73:18
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl StreamAnalyzer {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub async fn quick_check(input_url: &str) -> Result<bool, TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StrategyReason` is never constructed
[INFO] [stdout]    --> src/core/strategy.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub struct StrategyReason {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decide_strategy_with_reasons` is never used
[INFO] [stdout]    --> src/core/strategy.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn decide_strategy_with_reasons(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VideoFrame` is never constructed
[INFO] [stdout]  --> src/core/pipeline.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct VideoFrame {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioFrame` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct AudioFrame {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PixelFormat` is never used
[INFO] [stdout]   --> src/core/pipeline.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum PixelFormat {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingPipeline` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct ProcessingPipeline {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `process_video_frame`, and `process_audio_frame` are never used
[INFO] [stdout]   --> src/core/pipeline.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl ProcessingPipeline {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 40 |     pub fn new(buffer_size: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub async fn process_video_frame(&self, frame: VideoFrame) -> Result<(), TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub async fn process_audio_frame(&self, frame: AudioFrame) -> Result<(), TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VideoFilter` is never used
[INFO] [stdout]   --> src/core/pipeline.rs:62:11
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub trait VideoFilter: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeinterlaceFilter` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct DeinterlaceFilter;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaleFilter` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct ScaleFilter {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/pipeline.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl ScaleFilter {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(width: u32, height: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Channel` is never constructed
[INFO] [stdout]  --> src/models/channel.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Channel {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelConfigModel` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct ChannelConfigModel {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/models/channel.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Channel {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 29 |     pub fn new(id: String, name: String, client_id: String, config: ChannelConfigModel) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct CreateChannelRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateChannelRequest` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct UpdateChannelRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelResponse` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ChannelResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigSnapshot` is never constructed
[INFO] [stdout]  --> src/models/config.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ConfigSnapshot {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelConfigSnapshot` is never constructed
[INFO] [stdout]   --> src/models/config.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ChannelConfigSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_channel`, and `calculate_hash` are never used
[INFO] [stdout]   --> src/models/config.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl ConfigSnapshot {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(client_id: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn add_channel(&mut self, snapshot: ChannelConfigSnapshot) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn calculate_hash(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigValidator` is never constructed
[INFO] [stdout]   --> src/models/config.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct ConfigValidator;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `validate_channel_config` is never used
[INFO] [stdout]   --> src/models/config.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl ConfigValidator {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 54 |     /// Valida una configuración de canal
[INFO] [stdout] 55 |     pub fn validate_channel_config(config: &crate::config::loader::ChannelConfig) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/models/error.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum TranscoderError {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     ConfigError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     ConfigLoadError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     ConfigSaveError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     InvalidConfig(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     ProcessDied(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     NetworkError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     SrtError(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     UdpError(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     CodecError(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     MuxError(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     DemuxError(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     PipelineError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     ApiError(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     AuthError(String),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     Timeout(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     ResourceUnavailable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     HardwareError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     HardwareAccelNotAvailable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     Unknown(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TranscoderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_recoverable` and `severity` are never used
[INFO] [stdout]    --> src/models/error.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl TranscoderError {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout]  95 |     /// Verifica si el error es recuperable
[INFO] [stdout]  96 |     pub fn is_recoverable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn severity(&self) -> ErrorSeverity {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ErrorSeverity` is never used
[INFO] [stdout]    --> src/models/error.rs:141:10
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub enum ErrorSeverity {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]    --> src/models/error.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | impl ErrorSeverity {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 149 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]    --> src/models/error.rs:160:10
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub type Result<T> = std::result::Result<T, TranscoderError>;
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_active`, `is_error`, and `as_str` are never used
[INFO] [stdout]   --> src/models/stats.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ChannelStatus {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 31 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn is_error(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_healthy`, and `summary` are never used
[INFO] [stdout]    --> src/models/stats.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl ChannelStats {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  96 |     pub fn new(channel_id: String, mode: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_healthy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AggregatedStats` is never constructed
[INFO] [stdout]    --> src/models/stats.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub struct AggregatedStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_channels` is never used
[INFO] [stdout]    --> src/models/stats.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 176 | impl AggregatedStats {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 177 |     pub fn from_channels(stats: &[ChannelStats]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsHistory` is never constructed
[INFO] [stdout]    --> src/models/stats.rs:214:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub struct StatsHistory {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsEntry` is never constructed
[INFO] [stdout]    --> src/models/stats.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct StatsEntry {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_entry`, `average_fps`, `average_bitrate`, and `bitrate_variance` are never used
[INFO] [stdout]    --> src/models/stats.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 229 | impl StatsHistory {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 230 |     pub fn new(channel_id: String, max_entries: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn add_entry(&mut self, stats: &ChannelStats) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub fn average_fps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn average_bitrate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn bitrate_variance(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_interval` and `with_auto_restart` are never used
[INFO] [stdout]   --> src/monitor/health_checker.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl HealthChecker {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn with_interval(mut self, interval: Duration) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn with_auto_restart(mut self, enabled: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimpleHealthCheck` is never constructed
[INFO] [stdout]    --> src/monitor/health_checker.rs:176:12
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub struct SimpleHealthCheck;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `check`, `check_memory`, and `check_disk_space` are never used
[INFO] [stdout]    --> src/monitor/health_checker.rs:180:18
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl SimpleHealthCheck {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] 179 |     /// Verificar salud básica del sistema
[INFO] [stdout] 180 |     pub async fn check() -> HealthCheckResult {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     fn check_memory() -> Result<ComponentHealth, std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     fn check_disk_space() -> Result<ComponentHealth, std::io::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HealthCheckResult` is never constructed
[INFO] [stdout]    --> src/monitor/health_checker.rs:293:12
[INFO] [stdout]     |
[INFO] [stdout] 293 | pub struct HealthCheckResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ComponentHealth` is never constructed
[INFO] [stdout]    --> src/monitor/health_checker.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub struct ComponentHealth {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/monitor/metrics.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct MetricsCollector {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     frames_processed: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     frames_dropped: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     restarts_total: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     errors_total: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     active_channels: IntGauge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     current_fps: Gauge,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 27 |     current_bitrate: Gauge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     processing_duration: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/monitor/metrics.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl MetricsCollector {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn inc_frames_processed(&self, count: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn inc_frames_dropped(&self, count: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn inc_restarts(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn inc_errors(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn set_active_channels(&self, count: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn set_fps(&self, fps: f64) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn set_bitrate(&self, bitrate_kbps: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn observe_processing_duration(&self, duration_seconds: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetricsManager` is never constructed
[INFO] [stdout]    --> src/monitor/metrics.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub struct MetricsManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_from_stats`, and `gather` are never used
[INFO] [stdout]    --> src/monitor/metrics.rs:202:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | impl MetricsManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 202 |     pub fn new() -> Result<Self, String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub async fn update_from_stats(&self, stats: &crate::models::stats::ChannelStats) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub async fn gather(&self) -> String {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsCollector` is never constructed
[INFO] [stdout]   --> src/monitor/stats_collector.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct StatsCollector {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start`, `update_history`, `get_history`, `get_averages`, and `cleanup_old_history` are never used
[INFO] [stdout]   --> src/monitor/stats_collector.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl StatsCollector {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub async fn start(self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     async fn update_history(&self, stats: &HashMap<String, ChannelStats>) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn get_history(&self, channel_id: &str) -> Option<StatsHistory> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub async fn get_averages(&self, channel_id: &str) -> Option<ChannelAverages> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub async fn cleanup_old_history(&self, older_than_hours: u64) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelAverages` is never constructed
[INFO] [stdout]    --> src/monitor/stats_collector.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct ChannelAverages {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsAggregator` is never constructed
[INFO] [stdout]    --> src/monitor/stats_collector.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct StatsAggregator;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `aggregate` is never used
[INFO] [stdout]    --> src/monitor/stats_collector.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl StatsAggregator {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 123 |     /// Agregar estadísticas de múltiples canales
[INFO] [stdout] 124 |     pub fn aggregate(stats: &[ChannelStats]) -> AggregatedChannelStats {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AggregatedChannelStats` is never constructed
[INFO] [stdout]    --> src/monitor/stats_collector.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub struct AggregatedChannelStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlertManager` is never constructed
[INFO] [stdout]  --> src/monitor/alerting.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct AlertManager {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/monitor/alerting.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AlertManager {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(api_client: ApiClient) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn with_min_interval(mut self, seconds: i64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub async fn send_alert(&self, alert: MonitoringAlert) -> Result<(), String> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn cleanup_old_alerts(&self) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn alert_low_fps(channel_id: String, fps: f64) -> MonitoringAlert {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn alert_dropped_frames(channel_id: String, percentage: f64) -> MonitoringAlert {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn alert_bitrate_deviation(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MpegTsDemuxer` is never constructed
[INFO] [stdout]  --> src/mux/mpegts_demuxer.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct MpegTsDemuxer {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/mux/mpegts_demuxer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl MpegTsDemuxer {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn process(&mut self, data: &[u8]) -> Result<Vec<TsPacket>, String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn extract_stream(&mut self, pid: u16) -> Option<Vec<u8>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn get_stream(&self, pid: u16) -> Option<&Vec<u8>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn clear_stream(&mut self, pid: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn packet_count(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn active_pids(&self) -> Vec<u16> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MpegTsMuxer` is never constructed
[INFO] [stdout]  --> src/mux/mpegts_muxer.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MpegTsMuxer {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/mux/mpegts_muxer.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MpegTsMuxer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(pmt_pid: u16, video_pid: u16, audio_pid: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |     pub fn generate_pat(&mut self) -> TsPacket {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn generate_pmt(&mut self) -> TsPacket {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn create_video_packet(&mut self, data: &[u8], pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn create_audio_packet(&mut self, data: &[u8], pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     fn create_pes_packets(&mut self, pid: u16, data: &[u8], stream_id: u8, pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn create_pes_header(&self, stream_id: u8, data_len: usize, pts: Option<u64>) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn get_continuity_counter(&mut self, pid: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn get_pcr(&mut self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn mux(&mut self, video_data: &[u8], audio_data: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TS_PACKET_SIZE` is never used
[INFO] [stdout]  --> src/mux/packet.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const TS_PACKET_SIZE: usize = 188;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SYNC_BYTE` is never used
[INFO] [stdout]  --> src/mux/packet.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const SYNC_BYTE: u8 = 0x47;
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TsPacket` is never constructed
[INFO] [stdout]   --> src/mux/packet.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TsPacket {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TsHeader` is never constructed
[INFO] [stdout]   --> src/mux/packet.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct TsHeader {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AdaptationField` is never constructed
[INFO] [stdout]   --> src/mux/packet.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct AdaptationField {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `parse`, `parse_header`, `parse_adaptation_field`, `to_bytes`, and `is_valid` are never used
[INFO] [stdout]    --> src/mux/packet.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl TsPacket {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  47 |     /// Crear un nuevo paquete TS
[INFO] [stdout]  48 |     pub fn new(pid: u16, payload: Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn parse(data: &[u8]) -> Result<Self, String> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn parse_header(data: &[u8]) -> Result<TsHeader, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn parse_adaptation_field(data: &[u8]) -> Result<AdaptationField, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `pat` and `pmt` are never used
[INFO] [stdout]    --> src/mux/packet.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | impl TsHeader {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] 239 |     /// Crear header para PAT
[INFO] [stdout] 240 |     pub fn pat() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn pmt(pmt_pid: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PesPacket` is never constructed
[INFO] [stdout]  --> src/mux/pes.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct PesPacket {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse` and `parse_timestamp` are never used
[INFO] [stdout]   --> src/mux/pes.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl PesPacket {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 12 |     /// Parsear paquete PES
[INFO] [stdout] 13 |     pub fn parse(data: &[u8]) -> Result<Self, String> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     fn parse_timestamp(data: &[u8]) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pat` is never constructed
[INFO] [stdout]  --> src/mux/psi.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Pat {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_bytes` is never used
[INFO] [stdout]  --> src/mux/psi.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl Pat {
[INFO] [stdout]   | -------- method in this implementation
[INFO] [stdout] 9 |     pub fn to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pmt` is never constructed
[INFO] [stdout]   --> src/mux/psi.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Pmt {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_bytes` is never used
[INFO] [stdout]   --> src/mux/psi.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Pmt {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 60 |     pub fn to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgramInfo` is never constructed
[INFO] [stdout]    --> src/mux/psi.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct ProgramInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SrtReceiver` is never constructed
[INFO] [stdout]   --> src/network/srt_receiver.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SrtReceiver {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SrtMode` is never used
[INFO] [stdout]   --> src/network/srt_receiver.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum SrtMode {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/network/srt_receiver.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl SrtReceiver {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  26 |     pub fn new(url: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn with_latency(mut self, latency_ms: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn with_buffer_size(mut self, buffer_size: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub async fn connect(&mut self) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn receive(&mut self) -> Result<Vec<u8>, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn receive_timeout(&mut self, timeout: std::time::Duration) -> Result<Vec<u8>, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn close(&mut self) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     async fn connect_listener(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     async fn connect_caller(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     async fn connect_rendezvous(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     fn parse_srt_url(&self) -> Result<SocketAddr, TranscoderError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn parse_srt_parameters(&self, params: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SrtReceiverBuilder` is never constructed
[INFO] [stdout]    --> src/network/srt_receiver.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct SrtReceiverBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `latency`, `buffer_size`, `max_bandwidth`, `passphrase`, and `build` are never used
[INFO] [stdout]    --> src/network/srt_receiver.rs:243:12
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl SrtReceiverBuilder {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 243 |     pub fn new(url: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn latency(mut self, latency_ms: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn buffer_size(mut self, buffer_size: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn max_bandwidth(mut self, mbps: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn passphrase(mut self, passphrase: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn build(self) -> SrtReceiver {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UdpSender` is never constructed
[INFO] [stdout]  --> src/network/udp_sender.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct UdpSender {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/network/udp_sender.rs:19:18
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl UdpSender {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  18 |     /// Crear nuevo UdpSender
[INFO] [stdout]  19 |     pub async fn new(destination: SocketAddr) -> Result<Self, TranscoderError> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn from_url(url: &str) -> Result<Self, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn with_local_interface(mut self, interface: String) -> Result<Self, TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn enable_broadcast(&self) -> Result<(), TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub async fn send(&mut self, data: &[u8]) -> Result<usize, TranscoderError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub async fn send_batch(&mut self, packets: Vec<Vec<u8>>) -> Result<usize, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn stats(&self) -> UdpStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UdpStats` is never constructed
[INFO] [stdout]    --> src/network/udp_sender.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct UdpStats {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bitrate_kbps` is never used
[INFO] [stdout]    --> src/network/udp_sender.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl UdpStats {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 137 |     pub fn bitrate_kbps(&self, duration_secs: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedUdpUrl` is never constructed
[INFO] [stdout]    --> src/network/udp_sender.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct ParsedUdpUrl {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_udp_url` is never used
[INFO] [stdout]    --> src/network/udp_sender.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn parse_udp_url(url: &str) -> Result<ParsedUdpUrl, TranscoderError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UdpSenderBuilder` is never constructed
[INFO] [stdout]    --> src/network/udp_sender.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct UdpSenderBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `local_interface`, `ttl`, `packet_size`, `broadcast`, and `build` are never used
[INFO] [stdout]    --> src/network/udp_sender.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl UdpSenderBuilder {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 207 |     pub fn new(destination: SocketAddr) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn local_interface(mut self, interface: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn ttl(mut self, ttl: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn packet_size(mut self, size: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn broadcast(mut self, enabled: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub async fn build(self) -> Result<UdpSender, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MulticastSender` is never constructed
[INFO] [stdout]  --> src/network/multicast.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct MulticastSender {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send`, `set_ttl`, `set_multicast_loop`, and `packets_sent` are never used
[INFO] [stdout]   --> src/network/multicast.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MulticastSender {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 16 |     /// Crear nuevo MulticastSender
[INFO] [stdout] 17 |     pub async fn new(
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn send(&mut self, data: &[u8]) -> Result<usize, TranscoderError> {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn set_multicast_loop(&self, enabled: bool) -> Result<(), TranscoderError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn packets_sent(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_multicast_address` is never used
[INFO] [stdout]    --> src/network/multicast.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn is_multicast_address(addr: &Ipv4Addr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MulticastReceiver` is never constructed
[INFO] [stdout]    --> src/network/multicast.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct MulticastReceiver {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `receive` are never used
[INFO] [stdout]    --> src/network/multicast.rs:119:18
[INFO] [stdout]     |
[INFO] [stdout] 118 | impl MulticastReceiver {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 119 |     pub async fn new(
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn receive(&self, buffer: &mut [u8]) -> Result<(usize, SocketAddr), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_interface_ip` is never used
[INFO] [stdout]    --> src/network/multicast.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn get_interface_ip(interface_name: &str) -> Result<Ipv4Addr, TranscoderError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FfmpegHelper` is never constructed
[INFO] [stdout]  --> src/utils/ffmpeg.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct FfmpegHelper;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/utils/ffmpeg.rs:11:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl FfmpegHelper {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout]  10 |     /// Verificar si FFmpeg está instalado
[INFO] [stdout]  11 |     pub fn is_installed() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn get_version() -> Result<FfmpegVersion, TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn has_codec(codec_name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn has_encoder(encoder_name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn list_hw_encoders() -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn best_h264_encoder() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn check_capabilities() -> FfmpegCapabilities {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn has_protocol(protocol: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     fn parse_version(output: &str) -> Result<FfmpegVersion, TranscoderError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn validate_args(args: &[String]) -> Result<(), TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn execute(args: Vec<String>) -> Result<std::process::Output, TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FfmpegVersion` is never constructed
[INFO] [stdout]    --> src/utils/ffmpeg.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | pub struct FfmpegVersion {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_at_least` is never used
[INFO] [stdout]    --> src/utils/ffmpeg.rs:210:12
[INFO] [stdout]     |
[INFO] [stdout] 208 | impl FfmpegVersion {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 209 |     /// Verificar si la versión es al menos la especificada
[INFO] [stdout] 210 |     pub fn is_at_least(&self, major: u32, minor: u32, patch: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FfmpegCapabilities` is never constructed
[INFO] [stdout]    --> src/utils/ffmpeg.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub struct FfmpegCapabilities {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `print_summary` is never used
[INFO] [stdout]    --> src/utils/ffmpeg.rs:246:12
[INFO] [stdout]     |
[INFO] [stdout] 245 | impl FfmpegCapabilities {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] 246 |     pub fn print_summary(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PidManager` is never constructed
[INFO] [stdout]  --> src/utils/pid_manager.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PidManager {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/utils/pid_manager.rs:14:11
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl PidManager {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  13 |     /// PIDs reservados según el estándar MPEG-TS
[INFO] [stdout]  14 |     const PAT_PID: u16 = 0x0000;      // Program Association Table
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout]  15 |     const CAT_PID: u16 = 0x0001;      // Conditional Access Table
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout]  16 |     const TSDT_PID: u16 = 0x0002;     // Transport Stream Description Table
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout]  17 |     const NULL_PID: u16 = 0x1FFF;     // Null packets
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout]  18 |     
[INFO] [stdout]  19 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn with_base_pids(pmt_pid: u16, video_pid: u16, audio_pid: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn allocate(&mut self, stream_type: &str) -> Result<u16, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn allocate_specific(&mut self, stream_type: &str, pid: u16) -> Result<u16, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn free(&mut self, stream_type: &str) -> Option<u16> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn get_pid(&self, stream_type: &str) -> Option<u16> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn is_pid_reserved(&self, pid: u16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn is_pid_allocated(&self, pid: u16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn is_pid_used(&self, pid: u16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_all_allocated(&self) -> HashMap<String, u16> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn validate_pids(&self, pmt: u16, video: u16, audio: u16) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn auto_assign() -> PidAssignment {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PidAssignment` is never constructed
[INFO] [stdout]    --> src/utils/pid_manager.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub struct PidAssignment {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `catv_standard` and `validate` are never used
[INFO] [stdout]    --> src/utils/pid_manager.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl PidAssignment {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 173 |     /// Crear asignación estándar para CATV
[INFO] [stdout] 174 |     pub fn catv_standard(service_id: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitrateCalculator` is never constructed
[INFO] [stdout]  --> src/utils/bitrate_calc.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct BitrateCalculator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitrateSample` is never constructed
[INFO] [stdout]   --> src/utils/bitrate_calc.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct BitrateSample {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl BitrateCalculator {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  17 |     /// Crear calculadora con ventana de tiempo específica
[INFO] [stdout]  18 |     pub fn new(window_duration: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub fn new_1sec() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn new_5sec() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn add_sample(&mut self, bytes: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn calculate_bps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn calculate_kbps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn calculate_mbps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn average_bps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stats(&self) -> BitrateStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     fn cleanup_old_samples(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn calculate_historical_bitrates(&self) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitrateStats` is never constructed
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct BitrateStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `variance` and `is_cbr` are never used
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl BitrateStats {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 180 |     /// Calcular varianza del bitrate (para detectar CBR vs VBR)
[INFO] [stdout] 181 |     pub fn variance(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn is_cbr(&self, tolerance_percent: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CatvBitrateHelper` is never constructed
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct CatvBitrateHelper;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `recommended_video_bitrate`, `total_channel_bitrate`, and `channels_per_transponder` are never used
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | impl CatvBitrateHelper {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout] 198 |     /// Calcular bitrate recomendado para resolución
[INFO] [stdout] 199 |     pub fn recommended_video_bitrate(width: u32, height: u32, fps: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn total_channel_bitrate(video_kbps: u32, audio_kbps: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn channels_per_transponder(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeHelper` is never constructed
[INFO] [stdout]  --> src/utils/time.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TimeHelper;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `format_duration`, `mpegts_to_seconds`, `seconds_to_mpegts`, and `uptime_since` are never used
[INFO] [stdout]   --> src/utils/time.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl TimeHelper {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout]  7 |     /// Formatear duración en formato humano legible
[INFO] [stdout]  8 |     pub fn format_duration(seconds: u64) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn mpegts_to_seconds(pts: i64) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn seconds_to_mpegts(seconds: f64) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn uptime_since(started_at: DateTime<Utc>) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HashHelper` is never constructed
[INFO] [stdout]  --> src/utils/hash.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct HashHelper;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `hash_string`, `hash_config`, and `configs_equal` are never used
[INFO] [stdout]   --> src/utils/hash.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl HashHelper {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout]  8 |     /// Calcular hash simple de un string
[INFO] [stdout]  9 |     pub fn hash_string(s: &str) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn hash_config<T: serde::Serialize>(config: &T) -> Result<String, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn configs_equal<T: serde::Serialize>(a: &T, b: &T) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 20s
[INFO] running `Command { std: "docker" "inspect" "b53856225f1fa1225166cdc5aefae99fa1bd9328efa25907aed1b5d8574401b1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b53856225f1fa1225166cdc5aefae99fa1bd9328efa25907aed1b5d8574401b1", kill_on_drop: false }`
[INFO] [stdout] b53856225f1fa1225166cdc5aefae99fa1bd9328efa25907aed1b5d8574401b1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c3f4ad958cd9f64804fe9337b244fe876e3d7a36b4450f6d3b2cc6a0c462b1ce
[INFO] running `Command { std: "docker" "start" "-a" "c3f4ad958cd9f64804fe9337b244fe876e3d7a36b4450f6d3b2cc6a0c462b1ce", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling uuid v1.20.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling mockito v1.7.1
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling catv-transcoder-client v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/config/loader.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::Utc;
[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: `debug`
[INFO] [stdout]  --> src/mux/mpegts_demuxer.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut`
[INFO] [stdout]  --> src/mux/packet.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]   |             ^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native`
[INFO] [stdout]    --> src/network/srt_receiver.rs:193:7
[INFO] [stdout]     |
[INFO] [stdout] 193 | #[cfg(feature = "srt-native")]
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `metrics`, and `prometheus`
[INFO] [stdout]     = help: consider adding `srt-native` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::BytesMut`
[INFO] [stdout]  --> src/network/srt_receiver.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::BytesMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/network/srt_receiver.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/udp_sender.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, debug, error};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/multicast.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/utils/ffmpeg.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::{info, warn, error};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils/pid_manager.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/config/loader.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::Utc;
[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: `crate::config::loader::VideoConfig`
[INFO] [stdout]    --> src/core/strategy.rs:283:9
[INFO] [stdout]     |
[INFO] [stdout] 283 |     use crate::config::loader::VideoConfig;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/mux/mpegts_demuxer.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut`
[INFO] [stdout]  --> src/mux/packet.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]   |             ^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native`
[INFO] [stdout]    --> src/network/srt_receiver.rs:193:7
[INFO] [stdout]     |
[INFO] [stdout] 193 | #[cfg(feature = "srt-native")]
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `metrics`, and `prometheus`
[INFO] [stdout]     = help: consider adding `srt-native` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::BytesMut`
[INFO] [stdout]  --> src/network/srt_receiver.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::BytesMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/network/srt_receiver.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/udp_sender.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, debug, error};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/multicast.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/utils/ffmpeg.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::{info, warn, error};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils/pid_manager.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> src/api/websocket.rs:72:38
[INFO] [stdout]    |
[INFO] [stdout] 72 |                     Ok(Message::Ping(data)) => {
[INFO] [stdout]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> src/api/websocket.rs:72:38
[INFO] [stdout]    |
[INFO] [stdout] 72 |                     Ok(Message::Ping(data)) => {
[INFO] [stdout]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `offset` is never read
[INFO] [stdout]    --> src/mux/packet.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |             offset += 6;
[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: field `parameters` is never read
[INFO] [stdout]    --> src/api/websocket.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 127 | struct ClientCommand {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 130 |     parameters: Option<serde_json::Value>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClientCommand` has a derived impl for the trait `Debug`, 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: value assigned to `offset` is never read
[INFO] [stdout]    --> src/mux/packet.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |             offset += 6;
[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: `result`
[INFO] [stdout]    --> src/network/multicast.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let result = MulticastSender::new(multicast_addr, interface).await;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parameters` is never read
[INFO] [stdout]    --> src/api/websocket.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 127 | struct ClientCommand {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 130 |     parameters: Option<serde_json::Value>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClientCommand` has a derived impl for the trait `Debug`, 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: unused import: `client::ApiClient`
[INFO] [stdout]  --> src/api/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use client::ApiClient;
[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: `handlers::*`
[INFO] [stdout]   --> src/api/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use handlers::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `websocket::WebSocketManager`
[INFO] [stdout]   --> src/api/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use websocket::WebSocketManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `video::VideoEncoder`
[INFO] [stdout]   --> src/codec/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use video::VideoEncoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `audio::AudioEncoder`
[INFO] [stdout]   --> src/codec/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use audio::AudioEncoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `encoder::Encoder`
[INFO] [stdout]   --> src/codec/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use encoder::Encoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `decoder::Decoder`
[INFO] [stdout]   --> src/codec/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use decoder::Decoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Utc`
[INFO] [stdout]  --> src/config/loader.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::Utc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::loader::VideoConfig`
[INFO] [stdout]    --> src/core/strategy.rs:283:9
[INFO] [stdout]     |
[INFO] [stdout] 283 |     use crate::config::loader::VideoConfig;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `manager::TranscoderManager`
[INFO] [stdout]   --> src/core/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use manager::TranscoderManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `channel::Channel`
[INFO] [stdout]   --> src/core/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use channel::Channel;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `transcoder::Transcoder`
[INFO] [stdout]   --> src/core/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use transcoder::Transcoder;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `analyzer::StreamAnalyzer`
[INFO] [stdout]   --> src/core/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use analyzer::StreamAnalyzer;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TranscodeStrategy` and `decide_strategy`
[INFO] [stdout]   --> src/core/mod.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use strategy::{TranscodeStrategy, decide_strategy};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `channel::Channel`
[INFO] [stdout]  --> src/models/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use channel::Channel;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error::TranscoderError`
[INFO] [stdout]  --> src/models/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use error::TranscoderError;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChannelStats` and `ChannelStatus`
[INFO] [stdout]   --> src/models/mod.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use stats::{ChannelStats, ChannelStatus};
[INFO] [stdout]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `health_checker::HealthChecker`
[INFO] [stdout]  --> src/monitor/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use health_checker::HealthChecker;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `metrics::MetricsCollector`
[INFO] [stdout]  --> src/monitor/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use metrics::MetricsCollector;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stats_collector::StatsCollector`
[INFO] [stdout]   --> src/monitor/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use stats_collector::StatsCollector;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `alerting::AlertManager`
[INFO] [stdout]   --> src/monitor/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use alerting::AlertManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/mux/mpegts_demuxer.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufMut`, `Buf`, and `BytesMut`
[INFO] [stdout]  --> src/mux/packet.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]   |             ^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpegts_demuxer::MpegTsDemuxer`
[INFO] [stdout]  --> src/mux/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use mpegts_demuxer::MpegTsDemuxer;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mpegts_muxer::MpegTsMuxer`
[INFO] [stdout]   --> src/mux/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use mpegts_muxer::MpegTsMuxer;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AdaptationField`, `TsHeader`, and `TsPacket`
[INFO] [stdout]   --> src/mux/mod.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use packet::{TsPacket, TsHeader, AdaptationField};
[INFO] [stdout]    |                  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pes::PesPacket`
[INFO] [stdout]   --> src/mux/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use pes::PesPacket;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Pat`, `Pmt`, and `ProgramInfo`
[INFO] [stdout]   --> src/mux/mod.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use psi::{Pat, Pmt, ProgramInfo};
[INFO] [stdout]    |               ^^^  ^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `srt-native`
[INFO] [stdout]    --> src/network/srt_receiver.rs:193:7
[INFO] [stdout]     |
[INFO] [stdout] 193 | #[cfg(feature = "srt-native")]
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `metrics`, and `prometheus`
[INFO] [stdout]     = help: consider adding `srt-native` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::BytesMut`
[INFO] [stdout]  --> src/network/srt_receiver.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use bytes::BytesMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/network/srt_receiver.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/udp_sender.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, debug, error};
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/network/multicast.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `srt_receiver::SrtReceiver`
[INFO] [stdout]  --> src/network/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use srt_receiver::SrtReceiver;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `udp_sender::UdpSender`
[INFO] [stdout]  --> src/network/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use udp_sender::UdpSender;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `multicast::MulticastSender`
[INFO] [stdout]  --> src/network/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use multicast::MulticastSender;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/utils/ffmpeg.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::{info, warn, error};
[INFO] [stdout]   |                     ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils/pid_manager.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `delete` and `extract::State`
[INFO] [stdout]    --> src/main.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         extract::State,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 180 |         routing::{get, post, delete},
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> src/api/websocket.rs:72:38
[INFO] [stdout]    |
[INFO] [stdout] 72 |                     Ok(Message::Ping(data)) => {
[INFO] [stdout]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `offset` is never read
[INFO] [stdout]    --> src/mux/packet.rs:150:13
[INFO] [stdout]     |
[INFO] [stdout] 150 |             offset += 6;
[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: `result`
[INFO] [stdout]    --> src/network/multicast.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let result = MulticastSender::new(multicast_addr, interface).await;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_channel_config`, `send_channel_stats`, `send_bulk_stats`, `check_pending_commands`, and `acknowledge_command` are never used
[INFO] [stdout]    --> src/api/client.rs:119:18
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl ApiClient {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub async fn get_channel_config(&self, channel_id: &str) -> Result<ChannelConfig, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn send_channel_stats(&self, stats: &ChannelStats) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub async fn send_bulk_stats(&self, stats: Vec<ChannelStats>) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub async fn check_pending_commands(&self, client_id: &str) -> Result<Vec<RemoteCommand>, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub async fn acknowledge_command(&self, command_id: &str, success: bool, message: Option<String>) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BulkStatsRequest` is never constructed
[INFO] [stdout]    --> src/api/client.rs:296:8
[INFO] [stdout]     |
[INFO] [stdout] 296 | struct BulkStatsRequest {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RemoteCommand` is never constructed
[INFO] [stdout]    --> src/api/client.rs:301:12
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub struct RemoteCommand {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RemoteCommandType` is never used
[INFO] [stdout]    --> src/api/client.rs:311:10
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub enum RemoteCommandType {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommandAcknowledgment` is never constructed
[INFO] [stdout]    --> src/api/client.rs:322:8
[INFO] [stdout]     |
[INFO] [stdout] 322 | struct CommandAcknowledgment {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_channel_stats` is never used
[INFO] [stdout]    --> src/api/handlers.rs:104:14
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub async fn get_channel_stats(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct CreateChannelRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_channel` is never used
[INFO] [stdout]    --> src/api/handlers.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub async fn create_channel(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_channel` is never used
[INFO] [stdout]    --> src/api/handlers.rs:151:14
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub async fn delete_channel(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_summary` is never used
[INFO] [stdout]    --> src/api/handlers.rs:185:14
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub async fn get_summary(
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateConfigRequest` is never constructed
[INFO] [stdout]    --> src/api/handlers.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | pub struct UpdateConfigRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_channel_config` is never used
[INFO] [stdout]    --> src/api/handlers.rs:267:14
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub async fn update_channel_config(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_channels_health` is never used
[INFO] [stdout]    --> src/api/handlers.rs:287:14
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub async fn check_channels_health(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `parameters` is never read
[INFO] [stdout]    --> src/api/websocket.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 127 | struct ClientCommand {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 130 |     parameters: Option<serde_json::Value>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegistrationService` is never constructed
[INFO] [stdout]  --> src/api/registration.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RegistrationService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `register_with_retry` are never used
[INFO] [stdout]   --> src/api/registration.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl RegistrationService {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(api_client: ApiClient, client_config: ClientConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn register_with_retry(&self) -> Result<(), TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeartbeatService` is never constructed
[INFO] [stdout]  --> src/api/heartbeat.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct HeartbeatService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `start` are never used
[INFO] [stdout]   --> src/api/heartbeat.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HeartbeatService {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(api_client: Arc<ApiClient>, client_id: String, interval_seconds: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub async fn start(self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/codec/video.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl VideoEncoder {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 46 |     /// Crear un encoder de video personalizado
[INFO] [stdout] 47 |     pub fn new(codec: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/codec/audio.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl AudioEncoder {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 30 |     /// Crear un encoder de audio personalizado
[INFO] [stdout] 31 |     pub fn new(codec: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `stream_optimized`, `high_quality`, and `describe` are never used
[INFO] [stdout]    --> src/codec/encoder.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl Encoder {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn stream_optimized() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn high_quality() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn describe(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `extract_all_audio_streams` and `extract_subtitle_info` are never used
[INFO] [stdout]   --> src/codec/decoder.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Decoder {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn extract_all_audio_streams(container: &ContainerInfo) -> Vec<StreamInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn extract_subtitle_info(container: &ContainerInfo) -> Vec<StreamInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_channel_config` and `delete_channel_config` are never used
[INFO] [stdout]    --> src/config/loader.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl ConfigLoader {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 253 |     pub fn load_channel_config(&self, channel_id: &str) -> Result<ChannelConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn delete_channel_config(&self, channel_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remove_channel`, `reload_channel_config`, and `has_channel` are never used
[INFO] [stdout]    --> src/core/manager.rs:56:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl TranscoderManager {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub async fn remove_channel(&self, channel_id: &str) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub async fn reload_channel_config(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn has_channel(&self, channel_id: &str) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_config` and `get_config` are never used
[INFO] [stdout]    --> src/core/channel.rs:165:18
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Channel {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub async fn update_config(&mut self, new_config: ChannelConfig) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn get_config(&self) -> &ChannelConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `quick_check` is never used
[INFO] [stdout]   --> src/core/analyzer.rs:73:18
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl StreamAnalyzer {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub async fn quick_check(input_url: &str) -> Result<bool, TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StrategyReason` is never constructed
[INFO] [stdout]    --> src/core/strategy.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 199 | pub struct StrategyReason {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decide_strategy_with_reasons` is never used
[INFO] [stdout]    --> src/core/strategy.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn decide_strategy_with_reasons(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VideoFrame` is never constructed
[INFO] [stdout]  --> src/core/pipeline.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct VideoFrame {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioFrame` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct AudioFrame {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PixelFormat` is never used
[INFO] [stdout]   --> src/core/pipeline.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum PixelFormat {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessingPipeline` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct ProcessingPipeline {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `process_video_frame`, and `process_audio_frame` are never used
[INFO] [stdout]   --> src/core/pipeline.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl ProcessingPipeline {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 40 |     pub fn new(buffer_size: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub async fn process_video_frame(&self, frame: VideoFrame) -> Result<(), TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub async fn process_audio_frame(&self, frame: AudioFrame) -> Result<(), TranscoderError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `VideoFilter` is never used
[INFO] [stdout]   --> src/core/pipeline.rs:62:11
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub trait VideoFilter: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeinterlaceFilter` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct DeinterlaceFilter;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaleFilter` is never constructed
[INFO] [stdout]   --> src/core/pipeline.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct ScaleFilter {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/core/pipeline.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl ScaleFilter {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(width: u32, height: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Channel` is never constructed
[INFO] [stdout]  --> src/models/channel.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Channel {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelConfigModel` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct ChannelConfigModel {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/models/channel.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Channel {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 29 |     pub fn new(id: String, name: String, client_id: String, config: ChannelConfigModel) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CreateChannelRequest` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct CreateChannelRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UpdateChannelRequest` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct UpdateChannelRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelResponse` is never constructed
[INFO] [stdout]   --> src/models/channel.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ChannelResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigValidator` is never constructed
[INFO] [stdout]   --> src/models/config.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct ConfigValidator;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `validate_channel_config` is never used
[INFO] [stdout]   --> src/models/config.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl ConfigValidator {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 54 |     /// Valida una configuración de canal
[INFO] [stdout] 55 |     pub fn validate_channel_config(config: &crate::config::loader::ChannelConfig) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/models/error.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum TranscoderError {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     ConfigError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     ConfigLoadError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     ConfigSaveError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     ProcessDied(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     CodecError(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     MuxError(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     DemuxError(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     PipelineError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     ApiError(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     AuthError(String),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     Timeout(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     ResourceUnavailable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     HardwareError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     HardwareAccelNotAvailable(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TranscoderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]    --> src/models/error.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | impl ErrorSeverity {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 149 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]    --> src/models/error.rs:160:10
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub type Result<T> = std::result::Result<T, TranscoderError>;
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/models/stats.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ChannelStatus {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]    --> src/models/stats.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl ChannelStats {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsHistory` is never constructed
[INFO] [stdout]    --> src/models/stats.rs:214:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub struct StatsHistory {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsEntry` is never constructed
[INFO] [stdout]    --> src/models/stats.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct StatsEntry {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_entry`, `average_fps`, `average_bitrate`, and `bitrate_variance` are never used
[INFO] [stdout]    --> src/models/stats.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 229 | impl StatsHistory {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 230 |     pub fn new(channel_id: String, max_entries: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn add_entry(&mut self, stats: &ChannelStats) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub fn average_fps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn average_bitrate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn bitrate_variance(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_interval` and `with_auto_restart` are never used
[INFO] [stdout]   --> src/monitor/health_checker.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl HealthChecker {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn with_interval(mut self, interval: Duration) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn with_auto_restart(mut self, enabled: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/monitor/metrics.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct MetricsCollector {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     frames_processed: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     frames_dropped: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     restarts_total: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     errors_total: IntCounter,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     active_channels: IntGauge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     current_fps: Gauge,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 27 |     current_bitrate: Gauge,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     processing_duration: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/monitor/metrics.rs:98:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl MetricsCollector {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn inc_frames_processed(&self, count: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn inc_frames_dropped(&self, count: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn inc_restarts(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn inc_errors(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn set_active_channels(&self, count: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn set_fps(&self, fps: f64) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn set_bitrate(&self, bitrate_kbps: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn observe_processing_duration(&self, duration_seconds: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetricsManager` is never constructed
[INFO] [stdout]    --> src/monitor/metrics.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub struct MetricsManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_from_stats`, and `gather` are never used
[INFO] [stdout]    --> src/monitor/metrics.rs:202:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | impl MetricsManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 202 |     pub fn new() -> Result<Self, String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub async fn update_from_stats(&self, stats: &crate::models::stats::ChannelStats) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub async fn gather(&self) -> String {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatsCollector` is never constructed
[INFO] [stdout]   --> src/monitor/stats_collector.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct StatsCollector {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start`, `update_history`, `get_history`, `get_averages`, and `cleanup_old_history` are never used
[INFO] [stdout]   --> src/monitor/stats_collector.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl StatsCollector {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub async fn start(self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     async fn update_history(&self, stats: &HashMap<String, ChannelStats>) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn get_history(&self, channel_id: &str) -> Option<StatsHistory> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub async fn get_averages(&self, channel_id: &str) -> Option<ChannelAverages> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub async fn cleanup_old_history(&self, older_than_hours: u64) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChannelAverages` is never constructed
[INFO] [stdout]    --> src/monitor/stats_collector.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct ChannelAverages {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `cleanup_old_alerts`, `alert_dropped_frames`, and `alert_bitrate_deviation` are never used
[INFO] [stdout]   --> src/monitor/alerting.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AlertManager {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn cleanup_old_alerts(&self) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn alert_dropped_frames(channel_id: String, percentage: f64) -> MonitoringAlert {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn alert_bitrate_deviation(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `extract_stream`, `get_stream`, `clear_stream`, and `active_pids` are never used
[INFO] [stdout]   --> src/mux/mpegts_demuxer.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl MpegTsDemuxer {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn extract_stream(&mut self, pid: u16) -> Option<Vec<u8>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn get_stream(&self, pid: u16) -> Option<&Vec<u8>> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn clear_stream(&mut self, pid: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn active_pids(&self) -> Vec<u16> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pcr_pid` and `pcr_counter` are never read
[INFO] [stdout]   --> src/mux/mpegts_muxer.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct MpegTsMuxer {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pcr_pid: u16,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pcr_counter: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/mux/mpegts_muxer.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MpegTsMuxer {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn generate_pmt(&mut self) -> TsPacket {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn create_video_packet(&mut self, data: &[u8], pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn create_audio_packet(&mut self, data: &[u8], pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     fn create_pes_packets(&mut self, pid: u16, data: &[u8], stream_id: u8, pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn create_pes_header(&self, stream_id: u8, data_len: usize, pts: Option<u64>) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn get_pcr(&mut self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn mux(&mut self, video_data: &[u8], audio_data: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `opcr_flag`, `splicing_point_flag`, `transport_private_data_flag`, `adaptation_field_extension_flag`, and `opcr` are never read
[INFO] [stdout]   --> src/mux/packet.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct AdaptationField {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub opcr_flag: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 39 |     pub splicing_point_flag: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |     pub transport_private_data_flag: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 41 |     pub adaptation_field_extension_flag: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     pub pcr: Option<u64>,           // Program Clock Reference
[INFO] [stdout] 43 |     pub opcr: Option<u64>,          // Original PCR
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AdaptationField` 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_valid` is never used
[INFO] [stdout]    --> src/mux/packet.rs:233:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl TsPacket {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `pmt` is never used
[INFO] [stdout]    --> src/mux/packet.rs:254:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | impl TsHeader {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn pmt(pmt_pid: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PesPacket` is never constructed
[INFO] [stdout]  --> src/mux/pes.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct PesPacket {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse` and `parse_timestamp` are never used
[INFO] [stdout]   --> src/mux/pes.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl PesPacket {
[INFO] [stdout]    | -------------- associated functions in this implementation
[INFO] [stdout] 12 |     /// Parsear paquete PES
[INFO] [stdout] 13 |     pub fn parse(data: &[u8]) -> Result<Self, String> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     fn parse_timestamp(data: &[u8]) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pmt` is never constructed
[INFO] [stdout]   --> src/mux/psi.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Pmt {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_bytes` is never used
[INFO] [stdout]   --> src/mux/psi.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Pmt {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 60 |     pub fn to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgramInfo` is never constructed
[INFO] [stdout]    --> src/mux/psi.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct ProgramInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mode` and `socket` are never read
[INFO] [stdout]   --> src/network/srt_receiver.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SrtReceiver {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 11 |     url: String,
[INFO] [stdout] 12 |     mode: SrtMode,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 13 |     socket: Option<UdpSocket>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/network/srt_receiver.rs:56:18
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl SrtReceiver {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub async fn connect(&mut self) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn receive(&mut self) -> Result<Vec<u8>, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn receive_timeout(&mut self, timeout: std::time::Duration) -> Result<Vec<u8>, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn close(&mut self) -> Result<(), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     async fn connect_listener(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     async fn connect_caller(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     async fn connect_rendezvous(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_bandwidth_mbps` and `passphrase` are never read
[INFO] [stdout]    --> src/network/srt_receiver.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct SrtReceiverBuilder {
[INFO] [stdout]     |            ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |     max_bandwidth_mbps: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 239 |     passphrase: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `max_bandwidth` and `passphrase` are never used
[INFO] [stdout]    --> src/network/srt_receiver.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl SrtReceiverBuilder {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn max_bandwidth(mut self, mbps: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn passphrase(mut self, passphrase: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `socket`, `local_interface`, `ttl`, `packet_size`, `packets_sent`, and `bytes_sent` are never read
[INFO] [stdout]   --> src/network/udp_sender.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct UdpSender {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout]  8 |     socket: UdpSocket,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]  9 |     destination: SocketAddr,
[INFO] [stdout] 10 |     local_interface: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     ttl: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 12 |     packet_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 13 |     packets_sent: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     bytes_sent: u64,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/network/udp_sender.rs:39:18
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl UdpSender {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub async fn from_url(url: &str) -> Result<Self, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn with_local_interface(mut self, interface: String) -> Result<Self, TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn enable_broadcast(&self) -> Result<(), TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub async fn send(&mut self, data: &[u8]) -> Result<usize, TranscoderError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub async fn send_batch(&mut self, packets: Vec<Vec<u8>>) -> Result<usize, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn stats(&self) -> UdpStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UdpStats` is never constructed
[INFO] [stdout]    --> src/network/udp_sender.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct UdpStats {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bitrate_kbps` is never used
[INFO] [stdout]    --> src/network/udp_sender.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl UdpStats {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 137 |     pub fn bitrate_kbps(&self, duration_secs: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `local_interface` is never read
[INFO] [stdout]    --> src/network/udp_sender.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct ParsedUdpUrl {
[INFO] [stdout]     |        ------------ field in this struct
[INFO] [stdout] 151 |     destination: SocketAddr,
[INFO] [stdout] 152 |     local_interface: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UdpSenderBuilder` is never constructed
[INFO] [stdout]    --> src/network/udp_sender.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct UdpSenderBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `local_interface`, `ttl`, `packet_size`, `broadcast`, and `build` are never used
[INFO] [stdout]    --> src/network/udp_sender.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl UdpSenderBuilder {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 207 |     pub fn new(destination: SocketAddr) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn local_interface(mut self, interface: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn ttl(mut self, ttl: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn packet_size(mut self, size: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn broadcast(mut self, enabled: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub async fn build(self) -> Result<UdpSender, TranscoderError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ttl` and `packets_sent` are never read
[INFO] [stdout]   --> src/network/multicast.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct MulticastSender {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     ttl: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 12 |     packets_sent: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `send`, `set_ttl`, `set_multicast_loop`, and `packets_sent` are never used
[INFO] [stdout]   --> src/network/multicast.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MulticastSender {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn send(&mut self, data: &[u8]) -> Result<usize, TranscoderError> {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn set_multicast_loop(&self, enabled: bool) -> Result<(), TranscoderError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn packets_sent(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MulticastReceiver` is never constructed
[INFO] [stdout]    --> src/network/multicast.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct MulticastReceiver {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `receive` are never used
[INFO] [stdout]    --> src/network/multicast.rs:119:18
[INFO] [stdout]     |
[INFO] [stdout] 118 | impl MulticastReceiver {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 119 |     pub async fn new(
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn receive(&self, buffer: &mut [u8]) -> Result<(usize, SocketAddr), TranscoderError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_interface_ip` is never used
[INFO] [stdout]    --> src/network/multicast.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn get_interface_ip(interface_name: &str) -> Result<Ipv4Addr, TranscoderError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/utils/ffmpeg.rs:22:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl FfmpegHelper {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn get_version() -> Result<FfmpegVersion, TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn has_codec(codec_name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn has_encoder(encoder_name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn list_hw_encoders() -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn best_h264_encoder() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn check_capabilities() -> FfmpegCapabilities {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn has_protocol(protocol: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn validate_args(args: &[String]) -> Result<(), TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn execute(args: Vec<String>) -> Result<std::process::Output, TranscoderError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FfmpegCapabilities` is never constructed
[INFO] [stdout]    --> src/utils/ffmpeg.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub struct FfmpegCapabilities {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `print_summary` is never used
[INFO] [stdout]    --> src/utils/ffmpeg.rs:246:12
[INFO] [stdout]     |
[INFO] [stdout] 245 | impl FfmpegCapabilities {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] 246 |     pub fn print_summary(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_base_pids`, `free`, `get_pid`, `get_all_allocated`, and `auto_assign` are never used
[INFO] [stdout]    --> src/utils/pid_manager.rs:40:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl PidManager {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn with_base_pids(pmt_pid: u16, video_pid: u16, audio_pid: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn free(&mut self, stream_type: &str) -> Option<u16> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn get_pid(&self, stream_type: &str) -> Option<u16> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_all_allocated(&self) -> HashMap<String, u16> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn auto_assign() -> PidAssignment {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl BitrateCalculator {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn new_5sec() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn calculate_kbps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn calculate_mbps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn average_bps(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn stats(&self) -> BitrateStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn calculate_historical_bitrates(&self) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitrateStats` is never constructed
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct BitrateStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `variance` and `is_cbr` are never used
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl BitrateStats {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 180 |     /// Calcular varianza del bitrate (para detectar CBR vs VBR)
[INFO] [stdout] 181 |     pub fn variance(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn is_cbr(&self, tolerance_percent: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `channels_per_transponder` is never used
[INFO] [stdout]    --> src/utils/bitrate_calc.rs:242:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | impl CatvBitrateHelper {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn channels_per_transponder(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `uptime_since` is never used
[INFO] [stdout]   --> src/utils/time.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl TimeHelper {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn uptime_since(started_at: DateTime<Utc>) -> Duration {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `hash_config` and `configs_equal` are never used
[INFO] [stdout]   --> src/utils/hash.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl HashHelper {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn hash_config<T: serde::Serialize>(config: &T) -> Result<String, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn configs_equal<T: serde::Serialize>(a: &T, b: &T) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 50.84s
[INFO] running `Command { std: "docker" "inspect" "c3f4ad958cd9f64804fe9337b244fe876e3d7a36b4450f6d3b2cc6a0c462b1ce", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c3f4ad958cd9f64804fe9337b244fe876e3d7a36b4450f6d3b2cc6a0c462b1ce", kill_on_drop: false }`
[INFO] [stdout] c3f4ad958cd9f64804fe9337b244fe876e3d7a36b4450f6d3b2cc6a0c462b1ce
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 06d937fdcf469b25c1129f676a3b0a65dd2eac188ca345e3dbcad8b433f00f62
[INFO] running `Command { std: "docker" "start" "-a" "06d937fdcf469b25c1129f676a3b0a65dd2eac188ca345e3dbcad8b433f00f62", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `chrono::Utc`
[INFO] [stderr]  --> src/config/loader.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use chrono::Utc;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `debug`
[INFO] [stderr]  --> src/mux/mpegts_demuxer.rs:4:15
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{debug, warn};
[INFO] [stderr]   |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `BufMut`, `Buf`, and `BytesMut`
[INFO] [stderr]  --> src/mux/packet.rs:1:13
[INFO] [stderr]   |
[INFO] [stderr] 1 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stderr]   |             ^^^  ^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unexpected `cfg` condition value: `srt-native`
[INFO] [stderr]    --> src/network/srt_receiver.rs:193:7
[INFO] [stderr]     |
[INFO] [stderr] 193 | #[cfg(feature = "srt-native")]
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: expected values for `feature` are: `default`, `metrics`, and `prometheus`
[INFO] [stderr]     = help: consider adding `srt-native` as a feature in `Cargo.toml`
[INFO] [stderr]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `bytes::BytesMut`
[INFO] [stderr]  --> src/network/srt_receiver.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use bytes::BytesMut;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `error` and `warn`
[INFO] [stderr]  --> src/network/srt_receiver.rs:5:21
[INFO] [stderr]   |
[INFO] [stderr] 5 | use tracing::{info, warn, error, debug};
[INFO] [stderr]   |                     ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]  --> src/network/udp_sender.rs:4:28
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{info, debug, error};
[INFO] [stderr]   |                            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]  --> src/network/multicast.rs:4:21
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{info, error};
[INFO] [stderr]   |                     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `error` and `warn`
[INFO] [stderr]  --> src/utils/ffmpeg.rs:3:21
[INFO] [stderr]   |
[INFO] [stderr] 3 | use tracing::{info, warn, error};
[INFO] [stderr]   |                     ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]  --> src/utils/pid_manager.rs:2:21
[INFO] [stderr]   |
[INFO] [stderr] 2 | use tracing::{info, warn};
[INFO] [stderr]   |                     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `data`
[INFO] [stderr]   --> src/api/websocket.rs:72:38
[INFO] [stderr]    |
[INFO] [stderr] 72 |                     Ok(Message::Ping(data)) => {
[INFO] [stderr]    |                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `offset` is never read
[INFO] [stderr]    --> src/mux/packet.rs:150:13
[INFO] [stderr]     |
[INFO] [stderr] 150 |             offset += 6;
[INFO] [stderr]     |             ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `parameters` is never read
[INFO] [stderr]    --> src/api/websocket.rs:130:5
[INFO] [stderr]     |
[INFO] [stderr] 127 | struct ClientCommand {
[INFO] [stderr]     |        ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 130 |     parameters: Option<serde_json::Value>,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `catv-transcoder-client` (lib) generated 13 warnings (run `cargo fix --lib -p catv-transcoder-client` to apply 10 suggestions)
[INFO] [stderr] warning: unused import: `crate::config::loader::VideoConfig`
[INFO] [stderr]    --> src/core/strategy.rs:283:9
[INFO] [stderr]     |
[INFO] [stderr] 283 |     use crate::config::loader::VideoConfig;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `result`
[INFO] [stderr]    --> src/network/multicast.rs:219:13
[INFO] [stderr]     |
[INFO] [stderr] 219 |         let result = MulticastSender::new(multicast_addr, interface).await;
[INFO] [stderr]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `client::ApiClient`
[INFO] [stderr]  --> src/api/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use client::ApiClient;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `handlers::*`
[INFO] [stderr]   --> src/api/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use handlers::*;
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `websocket::WebSocketManager`
[INFO] [stderr]   --> src/api/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use websocket::WebSocketManager;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `video::VideoEncoder`
[INFO] [stderr]   --> src/codec/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use video::VideoEncoder;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `audio::AudioEncoder`
[INFO] [stderr]   --> src/codec/mod.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub use audio::AudioEncoder;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `encoder::Encoder`
[INFO] [stderr]   --> src/codec/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use encoder::Encoder;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `decoder::Decoder`
[INFO] [stderr]   --> src/codec/mod.rs:14:9
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub use decoder::Decoder;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `chrono::Utc`
[INFO] [stderr]  --> src/config/loader.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use chrono::Utc;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `manager::TranscoderManager`
[INFO] [stderr]   --> src/core/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use manager::TranscoderManager;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `channel::Channel`
[INFO] [stderr]   --> src/core/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use channel::Channel;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `transcoder::Transcoder`
[INFO] [stderr]   --> src/core/mod.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub use transcoder::Transcoder;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `analyzer::StreamAnalyzer`
[INFO] [stderr]   --> src/core/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use analyzer::StreamAnalyzer;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TranscodeStrategy` and `decide_strategy`
[INFO] [stderr]   --> src/core/mod.rs:14:20
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub use strategy::{TranscodeStrategy, decide_strategy};
[INFO] [stderr]    |                    ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `channel::Channel`
[INFO] [stderr]  --> src/models/mod.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use channel::Channel;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error::TranscoderError`
[INFO] [stderr]  --> src/models/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use error::TranscoderError;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ChannelStats` and `ChannelStatus`
[INFO] [stderr]   --> src/models/mod.rs:10:17
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use stats::{ChannelStats, ChannelStatus};
[INFO] [stderr]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `health_checker::HealthChecker`
[INFO] [stderr]  --> src/monitor/mod.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use health_checker::HealthChecker;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `metrics::MetricsCollector`
[INFO] [stderr]  --> src/monitor/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use metrics::MetricsCollector;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `stats_collector::StatsCollector`
[INFO] [stderr]   --> src/monitor/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use stats_collector::StatsCollector;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `alerting::AlertManager`
[INFO] [stderr]   --> src/monitor/mod.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use alerting::AlertManager;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `mpegts_demuxer::MpegTsDemuxer`
[INFO] [stderr]  --> src/mux/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use mpegts_demuxer::MpegTsDemuxer;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `mpegts_muxer::MpegTsMuxer`
[INFO] [stderr]   --> src/mux/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use mpegts_muxer::MpegTsMuxer;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AdaptationField`, `TsHeader`, and `TsPacket`
[INFO] [stderr]   --> src/mux/mod.rs:11:18
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use packet::{TsPacket, TsHeader, AdaptationField};
[INFO] [stderr]    |                  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `pes::PesPacket`
[INFO] [stderr]   --> src/mux/mod.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub use pes::PesPacket;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Pat`, `Pmt`, and `ProgramInfo`
[INFO] [stderr]   --> src/mux/mod.rs:13:15
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use psi::{Pat, Pmt, ProgramInfo};
[INFO] [stderr]    |               ^^^  ^^^  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `srt_receiver::SrtReceiver`
[INFO] [stderr]  --> src/network/mod.rs:7:9
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use srt_receiver::SrtReceiver;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `udp_sender::UdpSender`
[INFO] [stderr]  --> src/network/mod.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use udp_sender::UdpSender;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `multicast::MulticastSender`
[INFO] [stderr]  --> src/network/mod.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use multicast::MulticastSender;
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `delete` and `extract::State`
[INFO] [stderr]    --> src/main.rs:179:9
[INFO] [stderr]     |
[INFO] [stderr] 179 |         extract::State,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 180 |         routing::{get, post, delete},
[INFO] [stderr]     |                              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_channel_config`, `send_channel_stats`, `send_bulk_stats`, `check_pending_commands`, and `acknowledge_command` are never used
[INFO] [stderr]    --> src/api/client.rs:119:18
[INFO] [stderr]     |
[INFO] [stderr]  17 | impl ApiClient {
[INFO] [stderr]     | -------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 119 |     pub async fn get_channel_config(&self, channel_id: &str) -> Result<ChannelConfig, TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 167 |     pub async fn send_channel_stats(&self, stats: &ChannelStats) -> Result<(), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 186 |     pub async fn send_bulk_stats(&self, stats: Vec<ChannelStats>) -> Result<(), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 211 |     pub async fn check_pending_commands(&self, client_id: &str) -> Result<Vec<RemoteCommand>, TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 231 |     pub async fn acknowledge_command(&self, command_id: &str, success: bool, message: Option<String>) -> Result<(), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BulkStatsRequest` is never constructed
[INFO] [stderr]    --> src/api/client.rs:296:8
[INFO] [stderr]     |
[INFO] [stderr] 296 | struct BulkStatsRequest {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RemoteCommand` is never constructed
[INFO] [stderr]    --> src/api/client.rs:301:12
[INFO] [stderr]     |
[INFO] [stderr] 301 | pub struct RemoteCommand {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `RemoteCommandType` is never used
[INFO] [stderr]    --> src/api/client.rs:311:10
[INFO] [stderr]     |
[INFO] [stderr] 311 | pub enum RemoteCommandType {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CommandAcknowledgment` is never constructed
[INFO] [stderr]    --> src/api/client.rs:322:8
[INFO] [stderr]     |
[INFO] [stderr] 322 | struct CommandAcknowledgment {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_channel_stats` is never used
[INFO] [stderr]    --> src/api/handlers.rs:104:14
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub async fn get_channel_stats(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CreateChannelRequest` is never constructed
[INFO] [stderr]    --> src/api/handlers.rs:124:12
[INFO] [stderr]     |
[INFO] [stderr] 124 | pub struct CreateChannelRequest {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_channel` is never used
[INFO] [stderr]    --> src/api/handlers.rs:128:14
[INFO] [stderr]     |
[INFO] [stderr] 128 | pub async fn create_channel(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `delete_channel` is never used
[INFO] [stderr]    --> src/api/handlers.rs:151:14
[INFO] [stderr]     |
[INFO] [stderr] 151 | pub async fn delete_channel(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_summary` is never used
[INFO] [stderr]    --> src/api/handlers.rs:185:14
[INFO] [stderr]     |
[INFO] [stderr] 185 | pub async fn get_summary(
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UpdateConfigRequest` is never constructed
[INFO] [stderr]    --> src/api/handlers.rs:263:12
[INFO] [stderr]     |
[INFO] [stderr] 263 | pub struct UpdateConfigRequest {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `update_channel_config` is never used
[INFO] [stderr]    --> src/api/handlers.rs:267:14
[INFO] [stderr]     |
[INFO] [stderr] 267 | pub async fn update_channel_config(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_channels_health` is never used
[INFO] [stderr]    --> src/api/handlers.rs:287:14
[INFO] [stderr]     |
[INFO] [stderr] 287 | pub async fn check_channels_health(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `parameters` is never read
[INFO] [stderr]    --> src/api/websocket.rs:130:5
[INFO] [stderr]     |
[INFO] [stderr] 127 | struct ClientCommand {
[INFO] [stderr]     |        ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 130 |     parameters: Option<serde_json::Value>,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ClientCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RegistrationService` is never constructed
[INFO] [stderr]  --> src/api/registration.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct RegistrationService {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `register_with_retry` are never used
[INFO] [stderr]   --> src/api/registration.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl RegistrationService {
[INFO] [stderr]    | ------------------------ associated items in this implementation
[INFO] [stderr] 14 |     pub fn new(api_client: ApiClient, client_config: ClientConfig) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub async fn register_with_retry(&self) -> Result<(), TranscoderError> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HeartbeatService` is never constructed
[INFO] [stderr]  --> src/api/heartbeat.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct HeartbeatService {
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `start` are never used
[INFO] [stderr]   --> src/api/heartbeat.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl HeartbeatService {
[INFO] [stderr]    | --------------------- associated items in this implementation
[INFO] [stderr] 14 |     pub fn new(api_client: Arc<ApiClient>, client_id: String, interval_seconds: u64) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 23 |     pub async fn start(self) {
[INFO] [stderr]    |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/codec/video.rs:47:12
[INFO] [stderr]    |
[INFO] [stderr] 45 | impl VideoEncoder {
[INFO] [stderr]    | ----------------- associated function in this implementation
[INFO] [stderr] 46 |     /// Crear un encoder de video personalizado
[INFO] [stderr] 47 |     pub fn new(codec: &str) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/codec/audio.rs:31:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | impl AudioEncoder {
[INFO] [stderr]    | ----------------- associated function in this implementation
[INFO] [stderr] 30 |     /// Crear un encoder de audio personalizado
[INFO] [stderr] 31 |     pub fn new(codec: &str) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `stream_optimized`, `high_quality`, and `describe` are never used
[INFO] [stderr]    --> src/codec/encoder.rs:98:12
[INFO] [stderr]     |
[INFO] [stderr]  38 | impl Encoder {
[INFO] [stderr]     | ------------ associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  98 |     pub fn stream_optimized() -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn high_quality() -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub fn describe(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `extract_all_audio_streams` and `extract_subtitle_info` are never used
[INFO] [stderr]   --> src/codec/decoder.rs:77:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | impl Decoder {
[INFO] [stderr]    | ------------ associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 77 |     pub fn extract_all_audio_streams(container: &ContainerInfo) -> Vec<StreamInfo> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 87 |     pub fn extract_subtitle_info(container: &ContainerInfo) -> Vec<StreamInfo> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `load_channel_config` and `delete_channel_config` are never used
[INFO] [stderr]    --> src/config/loader.rs:253:12
[INFO] [stderr]     |
[INFO] [stderr] 228 | impl ConfigLoader {
[INFO] [stderr]     | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 253 |     pub fn load_channel_config(&self, channel_id: &str) -> Result<ChannelConfig> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 322 |     pub fn delete_channel_config(&self, channel_id: &str) -> Result<()> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `remove_channel`, `reload_channel_config`, and `has_channel` are never used
[INFO] [stderr]    --> src/core/manager.rs:56:18
[INFO] [stderr]     |
[INFO] [stderr]  16 | impl TranscoderManager {
[INFO] [stderr]     | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  56 |     pub async fn remove_channel(&self, channel_id: &str) -> Result<(), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 150 |     pub async fn reload_channel_config(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub async fn has_channel(&self, channel_id: &str) -> bool {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `update_config` and `get_config` are never used
[INFO] [stderr]    --> src/core/channel.rs:165:18
[INFO] [stderr]     |
[INFO] [stderr]  20 | impl Channel {
[INFO] [stderr]     | ------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 165 |     pub async fn update_config(&mut self, new_config: ChannelConfig) -> Result<(), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 180 |     pub fn get_config(&self) -> &ChannelConfig {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `quick_check` is never used
[INFO] [stderr]   --> src/core/analyzer.rs:73:18
[INFO] [stderr]    |
[INFO] [stderr] 37 | impl StreamAnalyzer {
[INFO] [stderr]    | ------------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 73 |     pub async fn quick_check(input_url: &str) -> Result<bool, TranscoderError> {
[INFO] [stderr]    |                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StrategyReason` is never constructed
[INFO] [stderr]    --> src/core/strategy.rs:199:12
[INFO] [stderr]     |
[INFO] [stderr] 199 | pub struct StrategyReason {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `decide_strategy_with_reasons` is never used
[INFO] [stderr]    --> src/core/strategy.rs:207:8
[INFO] [stderr]     |
[INFO] [stderr] 207 | pub fn decide_strategy_with_reasons(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `VideoFrame` is never constructed
[INFO] [stderr]  --> src/core/pipeline.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct VideoFrame {
[INFO] [stderr]   |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AudioFrame` is never constructed
[INFO] [stderr]   --> src/core/pipeline.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct AudioFrame {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `PixelFormat` is never used
[INFO] [stderr]   --> src/core/pipeline.rs:25:10
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub enum PixelFormat {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProcessingPipeline` is never constructed
[INFO] [stderr]   --> src/core/pipeline.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub struct ProcessingPipeline {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `process_video_frame`, and `process_audio_frame` are never used
[INFO] [stderr]   --> src/core/pipeline.rs:40:12
[INFO] [stderr]    |
[INFO] [stderr] 39 | impl ProcessingPipeline {
[INFO] [stderr]    | ----------------------- associated items in this implementation
[INFO] [stderr] 40 |     pub fn new(buffer_size: usize) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub async fn process_video_frame(&self, frame: VideoFrame) -> Result<(), TranscoderError> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub async fn process_audio_frame(&self, frame: AudioFrame) -> Result<(), TranscoderError> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `VideoFilter` is never used
[INFO] [stderr]   --> src/core/pipeline.rs:62:11
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub trait VideoFilter: Send + Sync {
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DeinterlaceFilter` is never constructed
[INFO] [stderr]   --> src/core/pipeline.rs:67:12
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub struct DeinterlaceFilter;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ScaleFilter` is never constructed
[INFO] [stderr]   --> src/core/pipeline.rs:78:12
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub struct ScaleFilter {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/core/pipeline.rs:84:12
[INFO] [stderr]    |
[INFO] [stderr] 83 | impl ScaleFilter {
[INFO] [stderr]    | ---------------- associated function in this implementation
[INFO] [stderr] 84 |     pub fn new(width: u32, height: u32) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Channel` is never constructed
[INFO] [stderr]  --> src/models/channel.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct Channel {
[INFO] [stderr]   |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ChannelConfigModel` is never constructed
[INFO] [stderr]   --> src/models/channel.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct ChannelConfigModel {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/models/channel.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | impl Channel {
[INFO] [stderr]    | ------------ associated function in this implementation
[INFO] [stderr] 29 |     pub fn new(id: String, name: String, client_id: String, config: ChannelConfigModel) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CreateChannelRequest` is never constructed
[INFO] [stderr]   --> src/models/channel.rs:46:12
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub struct CreateChannelRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UpdateChannelRequest` is never constructed
[INFO] [stderr]   --> src/models/channel.rs:54:12
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub struct UpdateChannelRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ChannelResponse` is never constructed
[INFO] [stderr]   --> src/models/channel.rs:63:12
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub struct ChannelResponse {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConfigValidator` is never constructed
[INFO] [stderr]   --> src/models/config.rs:51:12
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub struct ConfigValidator;
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `validate_channel_config` is never used
[INFO] [stderr]   --> src/models/config.rs:55:12
[INFO] [stderr]    |
[INFO] [stderr] 53 | impl ConfigValidator {
[INFO] [stderr]    | -------------------- associated function in this implementation
[INFO] [stderr] 54 |     /// Valida una configuración de canal
[INFO] [stderr] 55 |     pub fn validate_channel_config(config: &crate::config::loader::ChannelConfig) -> Result<(), String> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple variants are never constructed
[INFO] [stderr]   --> src/models/error.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr]  5 | pub enum TranscoderError {
[INFO] [stderr]    |          --------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 19 |     ConfigError(String),
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 22 |     ConfigLoadError(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     ConfigSaveError(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 40 |     ProcessDied(String),
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 52 |     CodecError(String),
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     MuxError(String),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 58 |     DemuxError(String),
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 61 |     PipelineError(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 64 |     ApiError(String),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 70 |     AuthError(String),
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 73 |     Timeout(String),
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 76 |     ResourceUnavailable(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 79 |     HardwareError(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 |     HardwareAccelNotAvailable(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TranscoderError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `as_str` is never used
[INFO] [stderr]    --> src/models/error.rs:149:12
[INFO] [stderr]     |
[INFO] [stderr] 148 | impl ErrorSeverity {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] 149 |     pub fn as_str(&self) -> &str {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `Result` is never used
[INFO] [stderr]    --> src/models/error.rs:160:10
[INFO] [stderr]     |
[INFO] [stderr] 160 | pub type Result<T> = std::result::Result<T, TranscoderError>;
[INFO] [stderr]     |          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `as_str` is never used
[INFO] [stderr]   --> src/models/stats.rs:39:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl ChannelStatus {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn as_str(&self) -> &str {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `summary` is never used
[INFO] [stderr]    --> src/models/stats.rs:148:12
[INFO] [stderr]     |
[INFO] [stderr]  95 | impl ChannelStats {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub fn summary(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StatsHistory` is never constructed
[INFO] [stderr]    --> src/models/stats.rs:214:12
[INFO] [stderr]     |
[INFO] [stderr] 214 | pub struct StatsHistory {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StatsEntry` is never constructed
[INFO] [stderr]    --> src/models/stats.rs:221:12
[INFO] [stderr]     |
[INFO] [stderr] 221 | pub struct StatsEntry {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_entry`, `average_fps`, `average_bitrate`, and `bitrate_variance` are never used
[INFO] [stderr]    --> src/models/stats.rs:230:12
[INFO] [stderr]     |
[INFO] [stderr] 229 | impl StatsHistory {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr] 230 |     pub fn new(channel_id: String, max_entries: usize) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 238 |     pub fn add_entry(&mut self, stats: &ChannelStats) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 255 |     pub fn average_fps(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 263 |     pub fn average_bitrate(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 271 |     pub fn bitrate_variance(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_interval` and `with_auto_restart` are never used
[INFO] [stderr]   --> src/monitor/health_checker.rs:28:12
[INFO] [stderr]    |
[INFO] [stderr] 17 | impl HealthChecker {
[INFO] [stderr]    | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 28 |     pub fn with_interval(mut self, interval: Duration) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 33 |     pub fn with_auto_restart(mut self, enabled: bool) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/monitor/metrics.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct MetricsCollector {
[INFO] [stderr]    |            ---------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 19 |     frames_processed: IntCounter,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 20 |     frames_dropped: IntCounter,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 21 |     restarts_total: IntCounter,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 22 |     errors_total: IntCounter,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     active_channels: IntGauge,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 26 |     current_fps: Gauge,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 27 |     current_bitrate: Gauge,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 30 |     processing_duration: Histogram,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/monitor/metrics.rs:98:12
[INFO] [stderr]     |
[INFO] [stderr]  34 | impl MetricsCollector {
[INFO] [stderr]     | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  98 |     pub fn inc_frames_processed(&self, count: u64) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     pub fn inc_frames_dropped(&self, count: u64) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 108 |     pub fn inc_restarts(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     pub fn inc_errors(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 118 |     pub fn set_active_channels(&self, count: i64) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 123 |     pub fn set_fps(&self, fps: f64) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 128 |     pub fn set_bitrate(&self, bitrate_kbps: f64) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 133 |     pub fn observe_processing_duration(&self, duration_seconds: f64) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MetricsManager` is never constructed
[INFO] [stderr]    --> src/monitor/metrics.rs:197:12
[INFO] [stderr]     |
[INFO] [stderr] 197 | pub struct MetricsManager {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `update_from_stats`, and `gather` are never used
[INFO] [stderr]    --> src/monitor/metrics.rs:202:12
[INFO] [stderr]     |
[INFO] [stderr] 201 | impl MetricsManager {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 202 |     pub fn new() -> Result<Self, String> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 215 |     pub async fn update_from_stats(&self, stats: &crate::models::stats::ChannelStats) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 224 |     pub async fn gather(&self) -> String {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `StatsCollector` is never constructed
[INFO] [stderr]   --> src/monitor/stats_collector.rs:11:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct StatsCollector {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `start`, `update_history`, `get_history`, `get_averages`, and `cleanup_old_history` are never used
[INFO] [stderr]   --> src/monitor/stats_collector.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | impl StatsCollector {
[INFO] [stderr]    | ------------------- associated items in this implementation
[INFO] [stderr] 20 |     pub fn new(
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 35 |     pub async fn start(self) {
[INFO] [stderr]    |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 65 |     async fn update_history(&self, stats: &HashMap<String, ChannelStats>) {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 78 |     pub async fn get_history(&self, channel_id: &str) -> Option<StatsHistory> {
[INFO] [stderr]    |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 84 |     pub async fn get_averages(&self, channel_id: &str) -> Option<ChannelAverages> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 99 |     pub async fn cleanup_old_history(&self, older_than_hours: u64) {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ChannelAverages` is never constructed
[INFO] [stderr]    --> src/monitor/stats_collector.rs:113:12
[INFO] [stderr]     |
[INFO] [stderr] 113 | pub struct ChannelAverages {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `cleanup_old_alerts`, `alert_dropped_frames`, and `alert_bitrate_deviation` are never used
[INFO] [stderr]   --> src/monitor/alerting.rs:63:18
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl AlertManager {
[INFO] [stderr]    | ----------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub async fn cleanup_old_alerts(&self) {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 81 |     pub fn alert_dropped_frames(channel_id: String, percentage: f64) -> MonitoringAlert {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 97 |     pub fn alert_bitrate_deviation(
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `extract_stream`, `get_stream`, `clear_stream`, and `active_pids` are never used
[INFO] [stderr]   --> src/mux/mpegts_demuxer.rs:72:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl MpegTsDemuxer {
[INFO] [stderr]    | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 72 |     pub fn extract_stream(&mut self, pid: u16) -> Option<Vec<u8>> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 77 |     pub fn get_stream(&self, pid: u16) -> Option<&Vec<u8>> {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 |     pub fn clear_stream(&mut self, pid: u16) {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 92 |     pub fn active_pids(&self) -> Vec<u16> {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `pcr_pid` and `pcr_counter` are never read
[INFO] [stderr]   --> src/mux/mpegts_muxer.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr]  6 | pub struct MpegTsMuxer {
[INFO] [stderr]    |            ----------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 10 |     pcr_pid: u16,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 13 |     pcr_counter: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/mux/mpegts_muxer.rs:49:12
[INFO] [stderr]     |
[INFO] [stderr]  16 | impl MpegTsMuxer {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  49 |     pub fn generate_pmt(&mut self) -> TsPacket {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  78 |     pub fn create_video_packet(&mut self, data: &[u8], pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  83 |     pub fn create_audio_packet(&mut self, data: &[u8], pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  88 |     fn create_pes_packets(&mut self, pid: u16, data: &[u8], stream_id: u8, pts: Option<u64>) -> Vec<TsPacket> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 154 |     fn create_pes_header(&self, stream_id: u8, data_len: usize, pts: Option<u64>) -> Vec<u8> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 200 |     fn get_pcr(&mut self) -> u64 {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 207 |     pub fn mux(&mut self, video_data: &[u8], audio_data: &[u8]) -> Vec<u8> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `opcr_flag`, `splicing_point_flag`, `transport_private_data_flag`, `adaptation_field_extension_flag`, and `opcr` are never read
[INFO] [stderr]   --> src/mux/packet.rs:38:9
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub struct AdaptationField {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 38 |     pub opcr_flag: bool,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 39 |     pub splicing_point_flag: bool,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 40 |     pub transport_private_data_flag: bool,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 41 |     pub adaptation_field_extension_flag: bool,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 42 |     pub pcr: Option<u64>,           // Program Clock Reference
[INFO] [stderr] 43 |     pub opcr: Option<u64>,          // Original PCR
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AdaptationField` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_valid` is never used
[INFO] [stderr]    --> src/mux/packet.rs:233:12
[INFO] [stderr]     |
[INFO] [stderr]  46 | impl TsPacket {
[INFO] [stderr]     | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 233 |     pub fn is_valid(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `pmt` is never used
[INFO] [stderr]    --> src/mux/packet.rs:254:12
[INFO] [stderr]     |
[INFO] [stderr] 238 | impl TsHeader {
[INFO] [stderr]     | ------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 254 |     pub fn pmt(pmt_pid: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PesPacket` is never constructed
[INFO] [stderr]  --> src/mux/pes.rs:3:12
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub struct PesPacket {
[INFO] [stderr]   |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `parse` and `parse_timestamp` are never used
[INFO] [stderr]   --> src/mux/pes.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl PesPacket {
[INFO] [stderr]    | -------------- associated functions in this implementation
[INFO] [stderr] 12 |     /// Parsear paquete PES
[INFO] [stderr] 13 |     pub fn parse(data: &[u8]) -> Result<Self, String> {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     fn parse_timestamp(data: &[u8]) -> u64 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Pmt` is never constructed
[INFO] [stderr]   --> src/mux/psi.rs:53:12
[INFO] [stderr]    |
[INFO] [stderr] 53 | pub struct Pmt {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_bytes` is never used
[INFO] [stderr]   --> src/mux/psi.rs:60:12
[INFO] [stderr]    |
[INFO] [stderr] 59 | impl Pmt {
[INFO] [stderr]    | -------- method in this implementation
[INFO] [stderr] 60 |     pub fn to_bytes(&self) -> Vec<u8> {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProgramInfo` is never constructed
[INFO] [stderr]    --> src/mux/psi.rs:112:12
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub struct ProgramInfo {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `mode` and `socket` are never read
[INFO] [stderr]   --> src/network/srt_receiver.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct SrtReceiver {
[INFO] [stderr]    |            ----------- fields in this struct
[INFO] [stderr] 11 |     url: String,
[INFO] [stderr] 12 |     mode: SrtMode,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 13 |     socket: Option<UdpSocket>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/network/srt_receiver.rs:56:18
[INFO] [stderr]     |
[INFO] [stderr]  25 | impl SrtReceiver {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  56 |     pub async fn connect(&mut self) -> Result<(), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  73 |     pub async fn receive(&mut self) -> Result<Vec<u8>, TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     pub async fn receive_timeout(&mut self, timeout: std::time::Duration) -> Result<Vec<u8>, TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub async fn close(&mut self) -> Result<(), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     async fn connect_listener(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 117 |     async fn connect_caller(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 132 |     async fn connect_rendezvous(&mut self, addr: SocketAddr) -> Result<(), TranscoderError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `max_bandwidth_mbps` and `passphrase` are never read
[INFO] [stderr]    --> src/network/srt_receiver.rs:238:5
[INFO] [stderr]     |
[INFO] [stderr] 234 | pub struct SrtReceiverBuilder {
[INFO] [stderr]     |            ------------------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 238 |     max_bandwidth_mbps: Option<u32>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 239 |     passphrase: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `max_bandwidth` and `passphrase` are never used
[INFO] [stderr]    --> src/network/srt_receiver.rs:263:12
[INFO] [stderr]     |
[INFO] [stderr] 242 | impl SrtReceiverBuilder {
[INFO] [stderr]     | ----------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 263 |     pub fn max_bandwidth(mut self, mbps: u32) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 268 |     pub fn passphrase(mut self, passphrase: String) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `socket`, `local_interface`, `ttl`, `packet_size`, `packets_sent`, and `bytes_sent` are never read
[INFO] [stderr]   --> src/network/udp_sender.rs:8:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub struct UdpSender {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr]  8 |     socket: UdpSocket,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]  9 |     destination: SocketAddr,
[INFO] [stderr] 10 |     local_interface: Option<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 11 |     ttl: u32,
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 12 |     packet_size: usize,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 13 |     packets_sent: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 14 |     bytes_sent: u64,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/network/udp_sender.rs:39:18
[INFO] [stderr]     |
[INFO] [stderr]  17 | impl UdpSender {
[INFO] [stderr]     | -------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  39 |     pub async fn from_url(url: &str) -> Result<Self, TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  60 |     pub fn with_local_interface(mut self, interface: String) -> Result<Self, TranscoderError> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  69 |     pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  79 |     pub fn enable_broadcast(&self) -> Result<(), TranscoderError> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  88 |     pub async fn send(&mut self, data: &[u8]) -> Result<usize, TranscoderError> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub async fn send_batch(&mut self, packets: Vec<Vec<u8>>) -> Result<usize, TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 111 |     pub fn stats(&self) -> UdpStats {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn reset_stats(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UdpStats` is never constructed
[INFO] [stderr]    --> src/network/udp_sender.rs:129:12
[INFO] [stderr]     |
[INFO] [stderr] 129 | pub struct UdpStats {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `bitrate_kbps` is never used
[INFO] [stderr]    --> src/network/udp_sender.rs:137:12
[INFO] [stderr]     |
[INFO] [stderr] 136 | impl UdpStats {
[INFO] [stderr]     | ------------- method in this implementation
[INFO] [stderr] 137 |     pub fn bitrate_kbps(&self, duration_secs: f64) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `local_interface` is never read
[INFO] [stderr]    --> src/network/udp_sender.rs:152:5
[INFO] [stderr]     |
[INFO] [stderr] 150 | struct ParsedUdpUrl {
[INFO] [stderr]     |        ------------ field in this struct
[INFO] [stderr] 151 |     destination: SocketAddr,
[INFO] [stderr] 152 |     local_interface: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `UdpSenderBuilder` is never constructed
[INFO] [stderr]    --> src/network/udp_sender.rs:198:12
[INFO] [stderr]     |
[INFO] [stderr] 198 | pub struct UdpSenderBuilder {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `local_interface`, `ttl`, `packet_size`, `broadcast`, and `build` are never used
[INFO] [stderr]    --> src/network/udp_sender.rs:207:12
[INFO] [stderr]     |
[INFO] [stderr] 206 | impl UdpSenderBuilder {
[INFO] [stderr]     | --------------------- associated items in this implementation
[INFO] [stderr] 207 |     pub fn new(destination: SocketAddr) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 217 |     pub fn local_interface(mut self, interface: String) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub fn ttl(mut self, ttl: u32) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 227 |     pub fn packet_size(mut self, size: usize) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 232 |     pub fn broadcast(mut self, enabled: bool) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 237 |     pub async fn build(self) -> Result<UdpSender, TranscoderError> {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `ttl` and `packets_sent` are never read
[INFO] [stderr]   --> src/network/multicast.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub struct MulticastSender {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 11 |     ttl: u32,
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 12 |     packets_sent: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `send`, `set_ttl`, `set_multicast_loop`, and `packets_sent` are never used
[INFO] [stderr]   --> src/network/multicast.rs:63:18
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl MulticastSender {
[INFO] [stderr]    | -------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub async fn send(&mut self, data: &[u8]) -> Result<usize, TranscoderError> {
[INFO] [stderr]    |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 72 |     pub fn set_ttl(&mut self, ttl: u32) -> Result<(), TranscoderError> {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 |     pub fn set_multicast_loop(&self, enabled: bool) -> Result<(), TranscoderError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 91 |     pub fn packets_sent(&self) -> u64 {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MulticastReceiver` is never constructed
[INFO] [stderr]    --> src/network/multicast.rs:112:12
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub struct MulticastReceiver {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `receive` are never used
[INFO] [stderr]    --> src/network/multicast.rs:119:18
[INFO] [stderr]     |
[INFO] [stderr] 118 | impl MulticastReceiver {
[INFO] [stderr]     | ---------------------- associated items in this implementation
[INFO] [stderr] 119 |     pub async fn new(
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub async fn receive(&self, buffer: &mut [u8]) -> Result<(usize, SocketAddr), TranscoderError> {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_interface_ip` is never used
[INFO] [stderr]    --> src/network/multicast.rs:164:8
[INFO] [stderr]     |
[INFO] [stderr] 164 | pub fn get_interface_ip(interface_name: &str) -> Result<Ipv4Addr, TranscoderError> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated functions are never used
[INFO] [stderr]    --> src/utils/ffmpeg.rs:22:12
[INFO] [stderr]     |
[INFO] [stderr]   9 | impl FfmpegHelper {
[INFO] [stderr]     | ----------------- associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  22 |     pub fn get_version() -> Result<FfmpegVersion, TranscoderError> {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  37 |     pub fn has_codec(codec_name: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     pub fn has_encoder(encoder_name: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  65 |     pub fn list_hw_encoders() -> Vec<String> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  91 |     pub fn best_h264_encoder() -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 115 |     pub fn check_capabilities() -> FfmpegCapabilities {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     pub fn has_protocol(protocol: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub fn validate_args(args: &[String]) -> Result<(), TranscoderError> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 189 |     pub fn execute(args: Vec<String>) -> Result<std::process::Output, TranscoderError> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `FfmpegCapabilities` is never constructed
[INFO] [stderr]    --> src/utils/ffmpeg.rs:232:12
[INFO] [stderr]     |
[INFO] [stderr] 232 | pub struct FfmpegCapabilities {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `print_summary` is never used
[INFO] [stderr]    --> src/utils/ffmpeg.rs:246:12
[INFO] [stderr]     |
[INFO] [stderr] 245 | impl FfmpegCapabilities {
[INFO] [stderr]     | ----------------------- method in this implementation
[INFO] [stderr] 246 |     pub fn print_summary(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `with_base_pids`, `free`, `get_pid`, `get_all_allocated`, and `auto_assign` are never used
[INFO] [stderr]    --> src/utils/pid_manager.rs:40:12
[INFO] [stderr]     |
[INFO] [stderr]  12 | impl PidManager {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  40 |     pub fn with_base_pids(pmt_pid: u16, video_pid: u16, audio_pid: u16) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  85 |     pub fn free(&mut self, stream_type: &str) -> Option<u16> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  95 |     pub fn get_pid(&self, stream_type: &str) -> Option<u16> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 115 |     pub fn get_all_allocated(&self) -> HashMap<String, u16> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 143 |     pub fn auto_assign() -> PidAssignment {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/utils/bitrate_calc.rs:32:12
[INFO] [stderr]     |
[INFO] [stderr]  16 | impl BitrateCalculator {
[INFO] [stderr]     | ---------------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  32 |     pub fn new_5sec() -> Self {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  78 |     pub fn calculate_kbps(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  83 |     pub fn calculate_mbps(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  88 |     pub fn average_bps(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 106 |     pub fn stats(&self) -> BitrateStats {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 130 |     pub fn reset(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 143 |     fn calculate_historical_bitrates(&self) -> Vec<f64> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BitrateStats` is never constructed
[INFO] [stderr]    --> src/utils/bitrate_calc.rs:167:12
[INFO] [stderr]     |
[INFO] [stderr] 167 | pub struct BitrateStats {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `variance` and `is_cbr` are never used
[INFO] [stderr]    --> src/utils/bitrate_calc.rs:181:12
[INFO] [stderr]     |
[INFO] [stderr] 179 | impl BitrateStats {
[INFO] [stderr]     | ----------------- methods in this implementation
[INFO] [stderr] 180 |     /// Calcular varianza del bitrate (para detectar CBR vs VBR)
[INFO] [stderr] 181 |     pub fn variance(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 189 |     pub fn is_cbr(&self, tolerance_percent: f64) -> bool {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `channels_per_transponder` is never used
[INFO] [stderr]    --> src/utils/bitrate_calc.rs:242:12
[INFO] [stderr]     |
[INFO] [stderr] 197 | impl CatvBitrateHelper {
[INFO] [stderr]     | ---------------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 242 |     pub fn channels_per_transponder(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `uptime_since` is never used
[INFO] [stderr]   --> src/utils/time.rs:36:12
[INFO] [stderr]    |
[INFO] [stderr]  6 | impl TimeHelper {
[INFO] [stderr]    | --------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 36 |     pub fn uptime_since(started_at: DateTime<Utc>) -> Duration {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `hash_config` and `configs_equal` are never used
[INFO] [stderr]   --> src/utils/hash.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr]  7 | impl HashHelper {
[INFO] [stderr]    | --------------- associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 16 |     pub fn hash_config<T: serde::Serialize>(config: &T) -> Result<String, String> {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 24 |     pub fn configs_equal<T: serde::Serialize>(a: &T, b: &T) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `catv-transcoder-client` (lib test) generated 15 warnings (13 duplicates) (run `cargo fix --lib -p catv-transcoder-client --tests` to apply 2 suggestions)
[INFO] [stderr] warning: `catv-transcoder-client` (bin "catv-transcoder" test) generated 141 warnings (13 duplicates) (run `cargo fix --bin "catv-transcoder" -p catv-transcoder-client --tests` to apply 29 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.42s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/catv_transcoder_client-2b4e18b55c19c8ad)
[INFO] [stdout] 
[INFO] [stdout] running 52 tests
[INFO] [stdout] test codec::audio::tests::test_audio_encoder_presets ... ok
[INFO] [stdout] test codec::audio::tests::test_ffmpeg_args_generation ... ok
[INFO] [stdout] test api::websocket::tests::test_stats_message_serialization ... ok
[INFO] [stdout] test codec::decoder::tests::test_decoder_creation ... ok
[INFO] [stdout] test codec::audio::tests::test_audio_validation ... ok
[INFO] [stdout] test codec::decoder::tests::test_ffprobe_command_building ... ok
[INFO] [stdout] test codec::decoder::tests::test_stream_extraction ... ok
[INFO] [stdout] test codec::encoder::tests::test_catv_presets ... ok
[INFO] [stdout] test codec::encoder::tests::test_default_encoder ... ok
[INFO] [stdout] test codec::encoder::tests::test_ffmpeg_command_building ... ok
[INFO] [stdout] test codec::video::tests::test_default_video_encoder ... ok
[INFO] [stdout] test codec::video::tests::test_ffmpeg_args_generation ... ok
[INFO] [stdout] test core::analyzer::tests::test_parse_fps ... ok
[INFO] [stdout] test models::config::tests::test_config_snapshot ... ok
[INFO] [stdout] test models::stats::tests::test_aggregated_stats ... ok
[INFO] [stdout] test core::manager::tests::test_manager_creation ... ok
[INFO] [stdout] test codec::video::tests::test_video_encoder_validation ... ok
[INFO] [stdout] test monitor::stats_collector::tests::test_stats_aggregation ... ok
[INFO] [stdout] test mux::mpegts_demuxer::tests::test_demuxer ... ok
[INFO] [stdout] test mux::mpegts_muxer::tests::test_muxer_creation ... ok
[INFO] [stdout] test mux::mpegts_muxer::tests::test_pat_generation ... ok
[INFO] [stdout] test network::srt_receiver::tests::test_builder ... ok
[INFO] [stdout] test network::srt_receiver::tests::test_srt_url_parsing ... ok
[INFO] [stdout] test network::multicast::tests::test_multicast_sender_creation ... ok
[INFO] [stdout] test models::error::tests::test_error_severity ... ok
[INFO] [stdout] test models::stats::tests::test_channel_stats_health ... ok
[INFO] [stdout] test mux::packet::tests::test_packet_serialize ... ok
[INFO] [stdout] test codec::audio::tests::test_default_audio_encoder ... ok
[INFO] [stdout] test models::stats::tests::test_dropped_frames_percentage ... ok
[INFO] [stdout] test utils::bitrate_calc::tests::test_recommended_bitrates ... ok
[INFO] [stdout] test utils::ffmpeg::tests::test_version_comparison ... ok
[INFO] [stdout] test utils::hash::tests::test_hash_string ... ok
[INFO] [stdout] test network::udp_sender::tests::test_parse_udp_url ... ok
[INFO] [stdout] test network::udp_sender::tests::test_udp_sender_creation ... ok
[INFO] [stdout] test utils::pid_manager::tests::test_catv_standard_pids ... ok
[INFO] [stdout] test utils::pid_manager::tests::test_pid_allocation ... ok
[INFO] [stdout] test utils::bitrate_calc::tests::test_total_bitrate ... ok
[INFO] [stdout] test models::error::tests::test_error_recoverability ... ok
[INFO] [stdout] test mux::packet::tests::test_packet_parse ... ok
[INFO] [stdout] test network::multicast::tests::test_is_multicast ... ok
[INFO] [stdout] test utils::ffmpeg::tests::test_version_parsing ... ok
[INFO] [stdout] test utils::ffmpeg::tests::test_ffmpeg_installed ... ok
[INFO] [stdout] test utils::pid_manager::tests::test_reserved_pids ... ok
[INFO] [stdout] test utils::pid_manager::tests::test_specific_pid_allocation ... ok
[INFO] [stdout] test utils::time::tests::test_format_duration ... ok
[INFO] [stdout] test utils::time::tests::test_mpegts_conversion ... ok
[INFO] [stdout] test monitor::health_checker::tests::test_simple_health_check ... ok
[INFO] [stdout] test utils::pid_manager::tests::test_pid_validation ... ok
[INFO] [stdout] test utils::bitrate_calc::tests::test_bitrate_calculation ... ok
[INFO] [stdout] test core::strategy::tests::test_video_compatibility ... FAILED
[INFO] [stdout] test api::client::tests::test_api_client_creation ... ok
[INFO] [stdout] test monitor::alerting::tests::test_alert_deduplication ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- core::strategy::tests::test_video_compatibility stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'core::strategy::tests::test_video_compatibility' (41) panicked at src/core/strategy.rs:325:9:
[INFO] [stdout] not yet implemented
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d1f95dee782 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5d1f95dee782 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5d1f95dee782 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5d1f95dee782 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5d1f95e015da - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5d1f95e015da - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5d1f95dbb736 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5d1f95dbb736 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5d1f95dcd5d9 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5d1f95dcd5d9 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5d1f95dcd471 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5d1f95971ece - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5d1f95971ece - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5d1f95dcd902 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5d1f95dcd902 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5d1f95dcd6ca - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5d1f95dc8469 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5d1f95dafd2d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5d1f95e0b6fc - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5d1f95e0b6c2 - core::panicking::panic::hbff2745fd4c5afec
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5d1f9593908a - catv_transcoder_client::core::strategy::tests::create_test_config::hdf345ba6fe1766b7
[INFO] [stdout]                                at /opt/rustwide/workdir/src/core/strategy.rs:325:9
[INFO] [stdout]   21:     0x5d1f959390a1 - catv_transcoder_client::core::strategy::tests::test_video_compatibility::h061565333c35a50b
[INFO] [stdout]                                at /opt/rustwide/workdir/src/core/strategy.rs:288:22
[INFO] [stdout]   22:     0x5d1f95939807 - catv_transcoder_client::core::strategy::tests::test_video_compatibility::{{closure}}::hd6e872a9162ce24a
[INFO] [stdout]                                at /opt/rustwide/workdir/src/core/strategy.rs:286:34
[INFO] [stdout]   23:     0x5d1f958f8686 - core::ops::function::FnOnce::call_once::h37785b046dc1a7de
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5d1f95971c8b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5d1f95971c8b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x5d1f9598569a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x5d1f9598569a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x5d1f9598569a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x5d1f9598569a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5d1f9598569a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5d1f9598569a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x5d1f9598569a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x5d1f9595faf4 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x5d1f9595faf4 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5d1f95963492 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x5d1f95963492 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x5d1f95963492 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x5d1f95963492 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5d1f95963492 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5d1f95963492 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x5d1f95963492 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x5d1f95dc356f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x5d1f95dc356f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   44:     0x78e943138aa4 - <unknown>
[INFO] [stdout]   45:     0x78e9431c5a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- monitor::alerting::tests::test_alert_deduplication stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'monitor::alerting::tests::test_alert_deduplication' (48) panicked at src/monitor/alerting.rs:140:9:
[INFO] [stdout] assertion failed: recent.contains_key("ch1:LowFps")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d1f95dee782 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5d1f95dee782 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5d1f95dee782 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5d1f95dee782 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5d1f95e015da - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5d1f95e015da - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5d1f95dbb736 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5d1f95dbb736 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5d1f95dcd5d9 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5d1f95dcd5d9 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5d1f95dcd471 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5d1f95971ece - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5d1f95971ece - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5d1f95dcd902 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5d1f95dcd902 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5d1f95dcd6ca - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5d1f95dc8469 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5d1f95dafd2d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5d1f95e0b6fc - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5d1f95e0b6c2 - core::panicking::panic::hbff2745fd4c5afec
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5d1f95933906 - catv_transcoder_client::monitor::alerting::tests::test_alert_deduplication::{{closure}}::h0be0b4ff2fd11dfa
[INFO] [stdout]                                at /opt/rustwide/workdir/src/monitor/alerting.rs:140:9
[INFO] [stdout]   21:     0x5d1f95924db2 - <core::pin::Pin<P> as core::future::future::Future>::poll::head4067a6a81208c
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x5d1f95924ded - <core::pin::Pin<P> as core::future::future::Future>::poll::hebde93a7ea7ec7e0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5d1f95911fcd - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::h21a7490a65c74474
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   24:     0x5d1f95911edb - tokio::task::coop::with_budget::h91c3bd6ee534eda8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   25:     0x5d1f95911edb - tokio::task::coop::budget::h8f47d12b98f0da98
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   26:     0x5d1f95911edb - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::hfbb939b1faa2009d
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   27:     0x5d1f9590f010 - tokio::runtime::scheduler::current_thread::Context::enter::h2625ecf767ac8593
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   28:     0x5d1f9591096d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::hdfee3802339e202b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   29:     0x5d1f959105f4 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::h39c56ccef148b53b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   30:     0x5d1f9591f08b - tokio::runtime::context::scoped::Scoped<T>::set::hff77f0333051ada4
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   31:     0x5d1f959249d9 - tokio::runtime::context::set_scheduler::{{closure}}::hfaa81c916a5ceaa1
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   32:     0x5d1f9594b612 - std::thread::local::LocalKey<T>::try_with::h1ccaf9a25e5a7830
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   33:     0x5d1f9594b0de - std::thread::local::LocalKey<T>::with::h604fce4f07fd30da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   34:     0x5d1f9592494d - tokio::runtime::context::set_scheduler::hf71973a1c7db206c
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   35:     0x5d1f9590ff60 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::h39bcd1189c3a3c0b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   36:     0x5d1f95910636 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h6c47e3e4966d2f57
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   37:     0x5d1f9590e5b0 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::h991514897eb4c0bb
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   38:     0x5d1f9593a793 - tokio::runtime::context::runtime::enter_runtime::h179b7a4cce2fbbf1
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   39:     0x5d1f9590e2c1 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h022835b2f183518e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   40:     0x5d1f9592f3b4 - tokio::runtime::runtime::Runtime::block_on_inner::h10c31a8275beaa84
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   41:     0x5d1f9592f68c - tokio::runtime::runtime::Runtime::block_on::h607104aee87f76c8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   42:     0x5d1f95933070 - catv_transcoder_client::monitor::alerting::tests::test_alert_deduplication::he3e66187a67a8a0a
[INFO] [stdout]                                at /opt/rustwide/workdir/src/monitor/alerting.rs:140:51
[INFO] [stdout]   43:     0x5d1f95933997 - catv_transcoder_client::monitor::alerting::tests::test_alert_deduplication::{{closure}}::h2653f851fd52a08d
[INFO] [stdout]                                at /opt/rustwide/workdir/src/monitor/alerting.rs:120:40
[INFO] [stdout]   44:     0x5d1f958f91f6 - core::ops::function::FnOnce::call_once::hded169e4f2882676
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x5d1f95971c8b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5d1f95971c8b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   47:     0x5d1f9598569a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   48:     0x5d1f9598569a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   49:     0x5d1f9598569a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   50:     0x5d1f9598569a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   51:     0x5d1f9598569a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   52:     0x5d1f9598569a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   53:     0x5d1f9598569a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   54:     0x5d1f9595faf4 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   55:     0x5d1f9595faf4 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   56:     0x5d1f95963492 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   57:     0x5d1f95963492 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   58:     0x5d1f95963492 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   59:     0x5d1f95963492 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   60:     0x5d1f95963492 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   61:     0x5d1f95963492 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   62:     0x5d1f95963492 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   63:     0x5d1f95dc356f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   64:     0x5d1f95dc356f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   65:     0x78e943138aa4 - <unknown>
[INFO] [stdout]   66:     0x78e9431c5a64 - clone
[INFO] [stdout]   67:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     core::strategy::tests::test_video_compatibility
[INFO] [stdout]     monitor::alerting::tests::test_alert_deduplication
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 50 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "06d937fdcf469b25c1129f676a3b0a65dd2eac188ca345e3dbcad8b433f00f62", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "06d937fdcf469b25c1129f676a3b0a65dd2eac188ca345e3dbcad8b433f00f62", kill_on_drop: false }`
[INFO] [stdout] 06d937fdcf469b25c1129f676a3b0a65dd2eac188ca345e3dbcad8b433f00f62
