    Checking stream_server v0.2.0 (/home/senke/Documents/veza/veza-stream-server)
warning: unused import: `DecodedAudio`
  --> src/audio/pipeline.rs:12:49
   |
12 | use crate::codecs::{AudioDecoder, AudioEncoder, DecodedAudio, DecoderInfo, EncoderInfo};
   |                                                 ^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

warning: unused import: `AppError`
  --> src/audio/pipeline.rs:13:20
   |
13 | use crate::error::{AppError, Result as AppResult};
   |                    ^^^^^^^^

warning: unused import: `std::sync::Arc`
  --> src/audio/pipeline.rs:14:5
   |
14 | use std::sync::Arc;
   |     ^^^^^^^^^^^^^^

warning: unused import: `std::time::Duration`
  --> src/audio/pipeline.rs:16:5
   |
16 | use std::time::Duration;
   |     ^^^^^^^^^^^^^^^^^^^

warning: unused imports: `Deserialize` and `Serialize`
 --> src/audio/realtime.rs:4:13
  |
4 | use serde::{Deserialize, Serialize};
  |             ^^^^^^^^^^^  ^^^^^^^^^

warning: unused import: `SystemTime`
  --> src/audio/realtime.rs:11:36
   |
11 | use std::time::{Duration, Instant, SystemTime};
   |                                    ^^^^^^^^^^

warning: unused import: `effects::*`
  --> src/audio/mod.rs:12:9
   |
12 | pub use effects::*;
   |         ^^^^^^^^^^

warning: unused import: `std::collections::hash_map::DefaultHasher`
 --> src/cache/audio_cache.rs:2:5
  |
2 | use std::collections::hash_map::DefaultHasher;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `AudioSampleFormat`, `CodecQuality`, and `LatencyMode`
 --> src/codecs/flac.rs:2:33
  |
2 |     AudioDecoder, AudioEncoder, AudioSampleFormat, CodecQuality, DecodedAudio, DecoderConfig,
  |                                 ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
3 |     DecoderInfo, EncoderConfig, EncoderInfo, EncoderMetrics, LatencyMode,
  |                                                              ^^^^^^^^^^^

warning: unused imports: `Deserialize` and `Serialize`
 --> src/codecs/flac.rs:6:13
  |
6 | use serde::{Deserialize, Serialize};
  |             ^^^^^^^^^^^  ^^^^^^^^^

warning: unused import: `std::collections::HashMap`
  --> src/codecs/flac.rs:14:5
   |
14 | use std::collections::HashMap;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `SystemTime`
  --> src/codecs/flac.rs:15:26
   |
15 | use std::time::{Instant, SystemTime};
   |                          ^^^^^^^^^^

warning: unused imports: `AudioFrame`, `CodecConfig`, `DecodingResult`, and `EncodingResult`
  --> src/codecs/mp3.rs:19:33
   |
19 |     AudioDecoder, AudioEncoder, AudioFrame, CodecConfig, CodecQuality, DecoderConfig,
   |                                 ^^^^^^^^^^  ^^^^^^^^^^^
20 |     DecodingResult, EncoderConfig, EncodingResult,
   |     ^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^

warning: unused import: `mpsc`
  --> src/core/buffer.rs:15:19
   |
15 | use tokio::sync::{mpsc, Mutex};
   |                   ^^^^

warning: unused import: `mpsc`
  --> src/core/stream.rs:10:30
   |
10 | use tokio::sync::{broadcast, mpsc};
   |                              ^^^^

warning: unused imports: `RwLock as TokioRwLock` and `mpsc`
  --> src/core/sync.rs:18:30
   |
18 | use tokio::sync::{broadcast, mpsc, RwLock as TokioRwLock};
   |                              ^^^^  ^^^^^^^^^^^^^^^^^^^^^

warning: unused imports: `Error as LapinError` and `ExchangeKind`
 --> src/event_bus.rs:3:5
  |
3 |     Error as LapinError, ExchangeKind,
  |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^

warning: unused import: `UNIX_EPOCH`
 --> src/monitoring/alerting.rs:7:39
  |
7 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
  |                                       ^^^^^^^^^^

warning: unused import: `Instant`
 --> src/monitoring/prometheus_metrics.rs:3:27
  |
3 | use std::time::{Duration, Instant};
  |                           ^^^^^^^

warning: unused imports: `Deserialize` and `Serialize`
 --> src/monitoring/prometheus_metrics.rs:6:13
  |
6 | use serde::{Deserialize, Serialize};
  |             ^^^^^^^^^^^  ^^^^^^^^^

warning: unused import: `Duration`
 --> src/monitoring/tracing_module.rs:4:17
  |
4 | use std::time::{Duration, SystemTime};
  |                 ^^^^^^^^

warning: unused import: `SystemHealth`
  --> src/monitoring/mod.rs:27:35
   |
27 | use health_checks::{HealthConfig, SystemHealth};
   |                                   ^^^^^^^^^^^^

warning: private item shadows public glob re-export
  --> src/monitoring/mod.rs:27:21
   |
27 | use health_checks::{HealthConfig, SystemHealth};
   |                     ^^^^^^^^^^^^
   |
note: the name `HealthConfig` in the type namespace is supposed to be publicly re-exported here
  --> src/monitoring/mod.rs:14:9
   |
14 | pub use health_checks::*;
   |         ^^^^^^^^^^^^^^^^
note: but the private item here shadows it
  --> src/monitoring/mod.rs:27:21
   |
27 | use health_checks::{HealthConfig, SystemHealth};
   |                     ^^^^^^^^^^^^
   = note: `#[warn(hidden_glob_reexports)]` on by default

warning: private item shadows public glob re-export
  --> src/monitoring/mod.rs:27:35
   |
27 | use health_checks::{HealthConfig, SystemHealth};
   |                                   ^^^^^^^^^^^^
   |
note: the name `SystemHealth` in the type namespace is supposed to be publicly re-exported here
  --> src/monitoring/mod.rs:14:9
   |
14 | pub use health_checks::*;
   |         ^^^^^^^^^^^^^^^^
note: but the private item here shadows it
  --> src/monitoring/mod.rs:27:35
   |
27 | use health_checks::{HealthConfig, SystemHealth};
   |                                   ^^^^^^^^^^^^

warning: private item shadows public glob re-export
  --> src/monitoring/mod.rs:28:5
   |
28 | use tracing_module::TracingConfig;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: the name `TracingConfig` in the type namespace is supposed to be publicly re-exported here
  --> src/monitoring/mod.rs:17:9
   |
17 | pub use tracing_module::*;
   |         ^^^^^^^^^^^^^^^^^
note: but the private item here shadows it
  --> src/monitoring/mod.rs:28:5
   |
28 | use tracing_module::TracingConfig;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `IntoResponse`
  --> src/routes/encoding.rs:14:16
   |
14 |     response::{IntoResponse, Response},
   |                ^^^^^^^^^^^^

warning: unused import: `Deserialize`
  --> src/routes/encoding.rs:17:13
   |
17 | use serde::{Deserialize, Serialize};
   |             ^^^^^^^^^^^

warning: unused import: `crate::core::encoding_service::EncodingService`
  --> src/routes/encoding.rs:86:9
   |
86 |     use crate::core::encoding_service::EncodingService;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `sync::Arc`
 --> src/routes/api.rs:8:49
  |
8 | use std::{collections::HashMap, time::Duration, sync::Arc};
  |                                                 ^^^^^^^^^

warning: unused imports: `Deserialize` and `Serialize`
  --> src/structured_logging.rs:12:13
   |
12 | use serde::{Deserialize, Serialize};
   |             ^^^^^^^^^^^  ^^^^^^^^^

warning: unused import: `std::time::Duration`
  --> src/structured_logging.rs:15:5
   |
15 | use std::time::Duration;
   |     ^^^^^^^^^^^^^^^^^^^

warning: unused import: `format::Writer`
  --> src/structured_logging.rs:22:17
   |
22 |     fmt::{self, format::Writer, time::ChronoUtc},
   |                 ^^^^^^^^^^^^^^

warning: unused import: `uuid::Uuid`
   --> src/structured_logging.rs:182:9
    |
182 |     use uuid::Uuid;
    |         ^^^^^^^^^^

warning: unused import: `std::collections::HashMap`
  --> src/lib.rs:25:5
   |
25 | use std::collections::HashMap;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `tokio::sync::RwLock`
  --> src/lib.rs:28:5
   |
28 | use tokio::sync::RwLock;
   |     ^^^^^^^^^^^^^^^^^^^

warning: unused variable: `user_id`
   --> src/auth/token_validator.rs:256:21
    |
256 |         if let Some(user_id) = user_id {
    |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
    |
    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default

warning: unused variable: `sample_rate`
   --> src/codecs/mp3.rs:766:13
    |
766 |         let sample_rate =
    |             ^^^^^^^^^^^
    |
help: if this is intentional, prefix it with an underscore
    |
766 |         let _sample_rate =
    |             +
help: you might have meant to pattern match on the similarly named constant `BRANCHES`
    |
766 -         let sample_rate =
766 +         let transcoding::pipeline::queue::PriorityQueue::next_job::{closure#0}::BRANCHES =
    |

warning: unused variable: `chunk`
   --> src/core/buffer.rs:453:25
    |
453 |         if let Some(ref chunk) = chunk {
    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_chunk`

warning: unused variable: `drift_samples`
   --> src/core/sync.rs:464:38
    |
464 |             SyncState::Calibrating { ref drift_samples, ref rtt_samples } => {
    |                                      ^^^^^^^^^^^^^^^^^ help: try ignoring the field: `drift_samples: _`

warning: unused variable: `rtt_samples`
   --> src/core/sync.rs:464:57
    |
464 |             SyncState::Calibrating { ref drift_samples, ref rtt_samples } => {
    |                                                         ^^^^^^^^^^^^^^^ help: try ignoring the field: `rtt_samples: _`

warning: variable does not need to be mutable
   --> src/core/sync.rs:444:13
    |
444 |         let mut listener = match listeners_map.get(&listener_id) {
    |             ----^^^^^^^^
    |             |
    |             help: remove this `mut`
    |
    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default

warning: variable `success_count` is assigned to, but never used
   --> src/core/sync.rs:416:17
    |
416 |         let mut success_count = 0;
    |                 ^^^^^^^^^^^^^
    |
    = note: consider using `_success_count` instead

warning: variable `error_count` is assigned to, but never used
   --> src/core/sync.rs:417:17
    |
417 |         let mut error_count = 0;
    |                 ^^^^^^^^^^^
    |
    = note: consider using `_error_count` instead

warning: unused variable: `encoding_service`
  --> src/routes/encoding.rs:83:11
   |
83 |     State(encoding_service): State<EncodingService>,
   |           ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_encoding_service`

warning: unused variable: `data`
   --> src/streaming/websocket.rs:372:43
    |
372 | ...                   Message::Ping(data) => {
    |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_data`

warning: unused variable: `conn`
   --> src/streaming/websocket.rs:374:45
    |
374 | ...                   if let Some(conn) =
    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_conn`

warning: unused variable: `global_sender_clone`
   --> src/streaming/websocket.rs:326:13
    |
326 |         let global_sender_clone = self.global_sender.clone();
    |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_global_sender_clone`

warning: unused variable: `ping_id`
   --> src/streaming/websocket.rs:541:42
    |
541 |             WebSocketCommand::SyncPong { ping_id, client_timestamp } => {
    |                                          ^^^^^^^ help: try ignoring the field: `ping_id: _`

warning: unused variable: `token`
   --> src/streaming/websocket.rs:786:9
    |
786 |     let token = params.token.or_else(|| {
    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`

warning: unused import: `AudioEffect`
  --> src/audio/pipeline.rs:11:29
   |
11 | use crate::audio::effects::{AudioEffect, EffectsChain};
   |                             ^^^^^^^^^^^

warning: unused import: `Hasher`
 --> src/cache/audio_cache.rs:3:23
  |
3 | use std::hash::{Hash, Hasher};
  |                       ^^^^^^

warning: unused import: `super`
   --> src/structured_logging.rs:179:9
    |
179 |     use super::*;
    |         ^^^^^

warning: unused variable: `config`
   --> src/codecs/mp3.rs:579:16
    |
579 |     pub fn new(config: DecoderConfig) -> Result<Self, AppError> {
    |                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`

warning: unused variable: `resource`
   --> src/error.rs:449:34
    |
449 |             AppError::NotFound { resource } => StreamError::FileNotFound,
    |                                  ^^^^^^^^ help: try ignoring the field: `resource: _`

warning: unused variable: `err`
   --> src/error.rs:513:13
    |
513 |     fn from(err: serde_json::Error) -> Self {
    |             ^^^ help: if this is intentional, prefix it with an underscore: `_err`

warning: type `Mp3Metadata` is more private than the item `Mp3EncoderImpl::set_metadata`
   --> src/codecs/mp3.rs:368:5
    |
368 |     pub async fn set_metadata(&self, metadata: Mp3Metadata) -> Result<(), AppError> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Mp3EncoderImpl::set_metadata` is reachable at visibility `pub`
    |
note: but type `Mp3Metadata` is only usable at visibility `pub(self)`
   --> src/codecs/mp3.rs:249:1
    |
249 | struct Mp3Metadata {
    | ^^^^^^^^^^^^^^^^^^
    = note: `#[warn(private_interfaces)]` on by default

warning: type `Mp3EncoderStats` is more private than the item `Mp3EncoderImpl::get_stats`
   --> src/codecs/mp3.rs:376:5
    |
376 |     pub async fn get_stats(&self) -> Mp3EncoderStats {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Mp3EncoderImpl::get_stats` is reachable at visibility `pub`
    |
note: but type `Mp3EncoderStats` is only usable at visibility `pub(self)`
   --> src/codecs/mp3.rs:264:1
    |
264 | struct Mp3EncoderStats {
    | ^^^^^^^^^^^^^^^^^^^^^^

warning: type `Mp3DecoderStats` is more private than the item `Mp3DecoderImpl::get_stats`
   --> src/codecs/mp3.rs:605:5
    |
605 |     pub async fn get_stats(&self) -> Mp3DecoderStats {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Mp3DecoderImpl::get_stats` is reachable at visibility `pub`
    |
note: but type `Mp3DecoderStats` is only usable at visibility `pub(self)`
   --> src/codecs/mp3.rs:281:1
    |
281 | struct Mp3DecoderStats {
    | ^^^^^^^^^^^^^^^^^^^^^^

warning: type `Mp3StreamInfo` is more private than the item `Mp3DecoderImpl::get_stream_info`
   --> src/codecs/mp3.rs:610:5
    |
610 |     pub async fn get_stream_info(&self) -> Option<Mp3StreamInfo> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `Mp3DecoderImpl::get_stream_info` is reachable at visibility `pub`
    |
note: but type `Mp3StreamInfo` is only usable at visibility `pub(self)`
   --> src/codecs/mp3.rs:230:1
    |
230 | struct Mp3StreamInfo {
    | ^^^^^^^^^^^^^^^^^^^^

warning: field `config` is never read
   --> src/analytics/mod.rs:126:5
    |
120 | pub struct AnalyticsEngine {
    |            --------------- field in this struct
...
126 |     config: Arc<Config>,
    |     ^^^^^^
    |
    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: method `cleanup_old_sessions` is never used
   --> src/analytics/mod.rs:668:14
    |
129 | impl AnalyticsEngine {
    | -------------------- method in this implementation
...
668 |     async fn cleanup_old_sessions(&self) {
    |              ^^^^^^^^^^^^^^^^^^^^

warning: fields `dry_wet_mix` and `performance_metrics` are never read
  --> src/audio/effects.rs:43:5
   |
39 | pub struct EffectsChain {
   |            ------------ fields in this struct
...
43 |     dry_wet_mix: f32,
   |     ^^^^^^^^^^^
...
47 |     performance_metrics: Arc<RwLock<EffectsPerformanceMetrics>>,
   |     ^^^^^^^^^^^^^^^^^^^
   |
   = note: `EffectsChain` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `sample_rate` and `channels` are never read
  --> src/audio/pipeline.rs:28:5
   |
24 | pub struct AudioPipeline {
   |            ------------- fields in this struct
...
28 |     sample_rate: u32,
   |     ^^^^^^^^^^^
29 |     channels: u8,
   |     ^^^^^^^^

warning: fields `filter_coeffs` and `history` are never read
   --> src/audio/realtime.rs:169:5
    |
163 | pub struct AdaptiveResampler {
    |            ----------------- fields in this struct
...
169 |     filter_coeffs: Vec<f32>,
    |     ^^^^^^^^^^^^^
170 |     /// Historique pour interpolation
171 |     history: VecDeque<f32>,
    |     ^^^^^^^
    |
    = note: `AdaptiveResampler` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `adaptive_buffer`, `target_latency_ms`, `measured_latency_ms`, `latency_history`, and `pid_controller` are never read
   --> src/audio/realtime.rs:197:5
    |
195 | pub struct LatencyManager {
    |            -------------- fields in this struct
196 |     /// Buffer adaptatif
197 |     adaptive_buffer: RingBuffer<f32>,
    |     ^^^^^^^^^^^^^^^
198 |     /// Latence cible
199 |     target_latency_ms: f32,
    |     ^^^^^^^^^^^^^^^^^
200 |     /// Latence mesurée
201 |     measured_latency_ms: f32,
    |     ^^^^^^^^^^^^^^^^^^^
202 |     /// Historique des latences
203 |     latency_history: VecDeque<f32>,
    |     ^^^^^^^^^^^^^^^
204 |     /// Contrôleur PID pour ajustement
205 |     pid_controller: PIDController,
    |     ^^^^^^^^^^^^^^
    |
    = note: `LatencyManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `psychoacoustic_model` and `bandwidth_extension` are never read
   --> src/codecs/aac.rs:134:5
    |
129 | struct AacEncoderState {
    |        --------------- fields in this struct
...
134 |     psychoacoustic_model: PsychoacousticModel,
    |     ^^^^^^^^^^^^^^^^^^^^
135 |     bandwidth_extension: BandwidthExtension,
    |     ^^^^^^^^^^^^^^^^^^^
    |
    = note: `AacEncoderState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: field `spectral_data` is never read
   --> src/codecs/aac.rs:145:5
    |
140 | struct AacDecoderState {
    |        --------------- field in this struct
...
145 |     spectral_data: SpectralData,
    |     ^^^^^^^^^^^^^
    |
    = note: `AacDecoderState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `masking_threshold`, `perceptual_entropy`, and `tonal_components` are never read
   --> src/codecs/aac.rs:151:5
    |
150 | struct PsychoacousticModel {
    |        ------------------- fields in this struct
151 |     masking_threshold: Vec<f32>,
    |     ^^^^^^^^^^^^^^^^^
152 |     perceptual_entropy: f32,
    |     ^^^^^^^^^^^^^^^^^^
153 |     tonal_components: Vec<TonalComponent>,
    |     ^^^^^^^^^^^^^^^^
    |
    = note: `PsychoacousticModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `sbr_active`, `ps_active`, and `high_freq_reconstruction` are never read
   --> src/codecs/aac.rs:159:5
    |
158 | struct BandwidthExtension {
    |        ------------------ fields in this struct
159 |     sbr_active: bool,
    |     ^^^^^^^^^^
160 |     ps_active: bool,
    |     ^^^^^^^^^
161 |     high_freq_reconstruction: Vec<f32>,
    |     ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `BandwidthExtension` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: field `concealment_method` is never read
   --> src/codecs/aac.rs:168:5
    |
166 | struct ErrorConcealmentState {
    |        --------------------- field in this struct
167 |     last_good_spectrum: Option<Vec<f32>>,
168 |     concealment_method: AacConcealMethod,
    |     ^^^^^^^^^^^^^^^^^^
    |
    = note: `ErrorConcealmentState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `mdct_coefficients`, `scale_factors`, and `quantized_spectrum` are never read
   --> src/codecs/aac.rs:175:5
    |
174 | struct SpectralData {
    |        ------------ fields in this struct
175 |     mdct_coefficients: Vec<f32>,
    |     ^^^^^^^^^^^^^^^^^
176 |     scale_factors: Vec<u8>,
    |     ^^^^^^^^^^^^^
177 |     quantized_spectrum: Vec<i16>,
    |     ^^^^^^^^^^^^^^^^^^
    |
    = note: `SpectralData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `frequency`, `amplitude`, and `phase` are never read
   --> src/codecs/aac.rs:183:5
    |
182 | struct TonalComponent {
    |        -------------- fields in this struct
183 |     frequency: f32,
    |     ^^^^^^^^^
184 |     amplitude: f32,
    |     ^^^^^^^^^
185 |     phase: f32,
    |     ^^^^^
    |
    = note: `TonalComponent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `input_buffer` and `quality_preset` are never read
  --> src/codecs/mp3.rs:34:5
   |
26 | pub struct Mp3EncoderImpl {
   |            -------------- fields in this struct
...
34 |     input_buffer: Arc<Mutex<Vec<f32>>>,
   |     ^^^^^^^^^^^^
35 |     /// Quality preset utilisé
36 |     quality_preset: Mp3QualityPreset,
   |     ^^^^^^^^^^^^^^
   |
   = note: `Mp3EncoderImpl` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `output_buffer` and `frame_cache` are never read
  --> src/codecs/mp3.rs:49:5
   |
41 | pub struct Mp3DecoderImpl {
   |            -------------- fields in this struct
...
49 |     output_buffer: Arc<Mutex<Vec<f32>>>,
   |     ^^^^^^^^^^^^^
50 |     /// Cache des frames pour seeking
51 |     frame_cache: Arc<RwLock<HashMap<u64, Mp3Frame>>>,
   |     ^^^^^^^^^^^
   |
   = note: `Mp3DecoderImpl` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `initialized`, `samples_encoded`, `bytes_generated`, `last_frame_timestamp`, and `internal_buffers` are never read
   --> src/codecs/mp3.rs:141:5
    |
139 | struct Mp3EncoderState {
    |        --------------- fields in this struct
140 |     /// Initialized flag
141 |     initialized: bool,
    |     ^^^^^^^^^^^
142 |     /// Total samples encodés
143 |     samples_encoded: u64,
    |     ^^^^^^^^^^^^^^^
144 |     /// Total bytes générés
145 |     bytes_generated: u64,
    |     ^^^^^^^^^^^^^^^
146 |     /// Dernière frame encodée
147 |     last_frame_timestamp: Option<Duration>,
    |     ^^^^^^^^^^^^^^^^^^^^
148 |     /// Buffers internes LAME (simulation)
149 |     internal_buffers: Vec<u8>,
    |     ^^^^^^^^^^^^^^^^
    |
    = note: `Mp3EncoderState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `initialized`, `total_samples`, `decode_buffer`, and `current_frame` are never read
   --> src/codecs/mp3.rs:158:5
    |
156 | struct Mp3DecoderState {
    |        --------------- fields in this struct
157 |     /// Initialized flag
158 |     initialized: bool,
    |     ^^^^^^^^^^^
...
162 |     total_samples: Option<u64>,
    |     ^^^^^^^^^^^^^
...
166 |     decode_buffer: Vec<f32>,
    |     ^^^^^^^^^^^^^
167 |     /// Frame courante
168 |     current_frame: Option<Mp3Frame>,
    |     ^^^^^^^^^^^^^
    |
    = note: `Mp3DecoderState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `audio_data`, `timestamp`, `bitrate`, and `header_info` are never read
   --> src/codecs/mp3.rs:175:5
    |
173 | struct Mp3Frame {
    |        -------- fields in this struct
174 |     /// Données audio
175 |     audio_data: Vec<f32>,
    |     ^^^^^^^^^^
176 |     /// Timestamp de la frame
177 |     timestamp: Duration,
    |     ^^^^^^^^^
178 |     /// Bitrate de cette frame
179 |     bitrate: u32,
    |     ^^^^^^^
180 |     /// Information du header
181 |     header_info: Mp3FrameHeader,
    |     ^^^^^^^^^^^
    |
    = note: `Mp3Frame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: multiple fields are never read
   --> src/codecs/mp3.rs:188:9
    |
186 | struct Mp3FrameHeader {
    |        -------------- fields in this struct
187 |     /// Version MPEG
188 |     pub mpeg_version: MpegVersion,
    |         ^^^^^^^^^^^^
189 |     /// Layer
190 |     pub layer: u8,
    |         ^^^^^
191 |     /// Protection CRC
192 |     pub crc_protection: bool,
    |         ^^^^^^^^^^^^^^
193 |     /// Bitrate index
194 |     pub bitrate_index: u8,
    |         ^^^^^^^^^^^^^
195 |     /// Sample rate index
196 |     pub samplerate_index: u8,
    |         ^^^^^^^^^^^^^^^^
197 |     /// Padding
198 |     pub padding: bool,
    |         ^^^^^^^
199 |     /// Mode (stereo, joint stereo, etc.)
200 |     pub channel_mode: ChannelMode,
    |         ^^^^^^^^^^^^
201 |     /// Mode extension pour joint stereo
202 |     pub mode_extension: u8,
    |         ^^^^^^^^^^^^^^
203 |     /// Copyright
204 |     pub copyright: bool,
    |         ^^^^^^^^^
205 |     /// Original
206 |     pub original: bool,
    |         ^^^^^^^^
207 |     /// Emphasis
208 |     pub emphasis: u8,
    |         ^^^^^^^^
    |
    = note: `Mp3FrameHeader` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: fields `average_bitrate`, `channels`, `duration`, `encoding_mode`, `has_id3`, and `encoder_info` are never read
   --> src/codecs/mp3.rs:232:9
    |
230 | struct Mp3StreamInfo {
    |        ------------- fields in this struct
231 |     /// Bitrate moyen
232 |     pub average_bitrate: u32,
    |         ^^^^^^^^^^^^^^^
...
236 |     pub channels: u8,
    |         ^^^^^^^^
237 |     /// Durée totale
238 |     pub duration: Option<Duration>,
    |         ^^^^^^^^
239 |     /// Mode d'encodage détecté
240 |     pub encoding_mode: Mp3EncodingMode,
    |         ^^^^^^^^^^^^^
241 |     /// Présence d'ID3 tags
242 |     pub has_id3: bool,
    |         ^^^^^^^
243 |     /// Version de l'encoder détectée
244 |     pub encoder_info: Option<String>,
    |         ^^^^^^^^^^^^
    |
    = note: `Mp3StreamInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: fields `frames_encoded`, `total_encoding_time`, `average_compression_ratio`, `average_bitrate`, `peak_cpu_usage`, and `encoding_errors` are never read
   --> src/codecs/mp3.rs:266:9
    |
264 | struct Mp3EncoderStats {
    |        --------------- fields in this struct
265 |     /// Total frames encodées
266 |     pub frames_encoded: u64,
    |         ^^^^^^^^^^^^^^
267 |     /// Temps total d'encodage
268 |     pub total_encoding_time: Duration,
    |         ^^^^^^^^^^^^^^^^^^^
269 |     /// Ratio de compression moyen
270 |     pub average_compression_ratio: f32,
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
271 |     /// Bitrate réel moyen
272 |     pub average_bitrate: f32,
    |         ^^^^^^^^^^^^^^^
273 |     /// Peak utilisation CPU
274 |     pub peak_cpu_usage: f32,
    |         ^^^^^^^^^^^^^^
275 |     /// Erreurs d'encodage
276 |     pub encoding_errors: u32,
    |         ^^^^^^^^^^^^^^^
    |
    = note: `Mp3EncoderStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: fields `frames_decoded`, `total_decoding_time`, `recovered_errors`, `corrupted_frames`, and `peak_cpu_usage` are never read
   --> src/codecs/mp3.rs:283:9
    |
281 | struct Mp3DecoderStats {
    |        --------------- fields in this struct
282 |     /// Total frames décodées
283 |     pub frames_decoded: u64,
    |         ^^^^^^^^^^^^^^
284 |     /// Temps total de décodage
285 |     pub total_decoding_time: Duration,
    |         ^^^^^^^^^^^^^^^^^^^
286 |     /// Erreurs de décodage récupérées
287 |     pub recovered_errors: u32,
    |         ^^^^^^^^^^^^^^^^
288 |     /// Frames corrompues détectées
289 |     pub corrupted_frames: u32,
    |         ^^^^^^^^^^^^^^^^
290 |     /// Peak utilisation CPU
291 |     pub peak_cpu_usage: f32,
    |         ^^^^^^^^^^^^^^
    |
    = note: `Mp3DecoderStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: methods `optimize_config_for_preset`, `initialize_lame_encoder`, `encode_with_lame`, and `generate_id3v1_tag` are never used
   --> src/codecs/mp3.rs:381:8
    |
324 | impl Mp3EncoderImpl {
    | ------------------- methods in this implementation
...
381 |     fn optimize_config_for_preset(&mut self) {
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
...
419 |     async fn initialize_lame_encoder(&self) -> Result<(), AppError> {
    |              ^^^^^^^^^^^^^^^^^^^^^^^
...
443 |     async fn encode_with_lame(&self, samples: &[f32]) -> Result<Vec<u8>, AppError> {
    |              ^^^^^^^^^^^^^^^^
...
509 |     fn generate_id3v1_tag(&self, metadata: &Mp3Metadata) -> Vec<u8> {
    |        ^^^^^^^^^^^^^^^^^^

warning: methods `analyze_mp3_header`, `parse_frame_header`, `bitrate_from_index`, `samplerate_from_index`, and `decode_mp3_frame` are never used
   --> src/codecs/mp3.rs:616:14
    |
577 | impl Mp3DecoderImpl {
    | ------------------- methods in this implementation
...
616 |     async fn analyze_mp3_header(&self, data: &[u8]) -> Result<Mp3StreamInfo, AppError> {
    |              ^^^^^^^^^^^^^^^^^^
...
656 |     fn parse_frame_header(&self, header_bytes: &[u8]) -> Result<Mp3FrameHeader, AppError> {
    |        ^^^^^^^^^^^^^^^^^^
...
709 |     fn bitrate_from_index(&self, index: u8, version: MpegVersion) -> u32 {
    |        ^^^^^^^^^^^^^^^^^^
...
734 |     fn samplerate_from_index(&self, index: u8, version: MpegVersion) -> u32 {
    |        ^^^^^^^^^^^^^^^^^^^^^
...
758 |     async fn decode_mp3_frame(&self, frame_data: &[u8]) -> Result<Mp3Frame, AppError> {
    |              ^^^^^^^^^^^^^^^^

warning: fields `adaptation_rate` and `quality_history` are never read
   --> src/codecs/opus.rs:146:5
    |
143 | struct BandwidthAdaptation {
    |        ------------------- fields in this struct
...
146 |     adaptation_rate: f32,
    |     ^^^^^^^^^^^^^^^
147 |     quality_history: Vec<f32>,
    |     ^^^^^^^^^^^^^^^
    |
    = note: `BandwidthAdaptation` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: method `adapt_bitrate` is never used
   --> src/codecs/opus.rs:319:8
    |
206 | impl OpusEncoderImpl {
    | -------------------- method in this implementation
...
319 |     fn adapt_bitrate(
    |        ^^^^^^^^^^^^^

warning: field `bandwidth_analyzer` is never read
  --> src/core/buffer.rs:33:5
   |
23 | pub struct BufferManager {
   |            ------------- field in this struct
...
33 |     bandwidth_analyzer: Arc<BandwidthAnalyzer>,
   |     ^^^^^^^^^^^^^^^^^^
   |
   = note: `BufferManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: field `model` is never read
   --> src/core/buffer.rs:209:5
    |
205 | pub struct BufferPredictor {
    |            --------------- field in this struct
...
209 |     model: Arc<RwLock<PredictionModel>>,
    |     ^^^^^
    |
    = note: `BufferPredictor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: field `analytics` is never read
  --> src/core/stream.rs:28:5
   |
20 | pub struct StreamManager {
   |            ------------- field in this struct
...
28 |     analytics: Arc<StreamAnalytics>,
   |     ^^^^^^^^^
   |
   = note: `StreamManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `synchronized_clients`, `config`, and `timed_metadata` are never read
  --> src/core/sync.rs:73:5
   |
68 | pub struct StreamSynchronizer {
   |            ------------------ fields in this struct
...
73 |     synchronized_clients: Arc<DashMap<Uuid, SynchronizedClient>>,
   |     ^^^^^^^^^^^^^^^^^^^^
...
77 |     config: StreamSyncConfig,
   |     ^^^^^^
78 |     /// Métadonnées temps réel (paroles, etc.)
79 |     timed_metadata: Arc<RwLock<TimedMetadata>>,
   |     ^^^^^^^^^^^^^^
   |
   = note: `StreamSynchronizer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `ntp_clients`, `time_offset`, and `sync_quality` are never read
  --> src/core/sync.rs:88:5
   |
84 | pub struct TimeServer {
   |            ---------- fields in this struct
...
88 |     ntp_clients: Vec<String>,
   |     ^^^^^^^^^^^
89 |     /// Décalage mesuré avec les serveurs externes
90 |     time_offset: Arc<std::sync::atomic::AtomicI64>,
   |     ^^^^^^^^^^^
91 |     /// Qualité de la synchronisation
92 |     sync_quality: Arc<std::sync::atomic::AtomicU8>,
   |     ^^^^^^^^^^^^
   |
   = note: `TimeServer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `drift_measurements`, `compensations`, and `config` are never read
   --> src/core/sync.rs:108:5
    |
106 | pub struct DriftCompensator {
    |            ---------------- fields in this struct
107 |     /// Mesures de drift par client
108 |     drift_measurements: Arc<DashMap<Uuid, VecDeque<DriftMeasurement>>>,
    |     ^^^^^^^^^^^^^^^^^^
109 |     /// Compensation calculée par client
110 |     compensations: Arc<DashMap<Uuid, DriftCompensation>>,
    |     ^^^^^^^^^^^^^
111 |     /// Configuration
112 |     config: DriftCompensatorConfig,
    |     ^^^^^^
    |
    = note: `DriftCompensator` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `timed_events` and `max_size` are never read
   --> src/core/sync.rs:189:5
    |
185 | pub struct SyncBuffer {
    |            ---------- fields in this struct
...
189 |     timed_events: VecDeque<TimedEvent>,
    |     ^^^^^^^^^^^^
190 |     /// Configuration
191 |     max_size: usize,
    |     ^^^^^^^^
    |
    = note: `SyncBuffer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis

warning: method `calculate_stability_score` is never used
   --> src/core/sync.rs:650:14
    |
360 | impl SyncEngine {
    | --------------- method in this implementation
...
650 |     async fn calculate_stability_score(&self, client_id: Uuid) -> f32 {
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: field `start_time` is never read
   --> src/core/sync.rs:795:5
    |
794 | pub struct MasterClock {
    |            ----------- field in this struct
795 |     start_time: Instant,
    |     ^^^^^^^^^^
    |
    = note: `MasterClock` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: fields `config` and `connection` are never read
  --> src/event_bus.rs:30:5
   |
29 | pub struct RabbitMQEventBus {
   |            ---------------- fields in this struct
30 |     config: config::RabbitMQConfig, // Use the canonical config type
   |     ^^^^^^
31 |     connection: Option<Connection>,
   |     ^^^^^^^^^^

warning: field `total_bytes` is never read
   --> src/health/mod.rs:850:5
    |
849 | struct DiskInfo {
    |        -------- field in this struct
850 |     total_bytes: u64,
    |     ^^^^^^^^^^^

warning: field `grafana_manager` is never read
  --> src/monitoring/mod.rs:78:5
   |
75 | pub struct MonitoringManager {
   |            ----------------- field in this struct
...
78 |     grafana_manager: Arc<GrafanaManager>,
   |     ^^^^^^^^^^^^^^^
   |
   = note: `MonitoringManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: field `config` is never read
  --> src/monitoring/grafana_dashboards.rs:14:5
   |
12 | pub struct GrafanaManager {
   |            -------------- field in this struct
13 |     dashboards: Arc<RwLock<Vec<GrafanaDashboard>>>,
14 |     config: GrafanaConfig,
   |     ^^^^^^
   |
   = note: `GrafanaManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: field `config` is never read
  --> src/monitoring/tracing_module.rs:13:5
   |
12 | pub struct TracingManager {
   |            -------------- field in this struct
13 |     config: TracingConfig,
   |     ^^^^^^
   |
   = note: `TracingManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis

warning: methods `update_quality_decisions`, `get_lower_quality`, and `get_higher_quality` are never used
   --> src/streaming/adaptive.rs:272:14
    |
177 | impl AdaptiveStreamingManager {
    | ----------------------------- methods in this implementation
...
272 |     async fn update_quality_decisions(&self) {
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
...
322 |     fn get_lower_quality(&self, current_quality: &str) -> Option<&AdaptiveProfile> {
    |        ^^^^^^^^^^^^^^^^^
...
337 |     fn get_higher_quality(&self, current_quality: &str) -> Option<&AdaptiveProfile> {
    |        ^^^^^^^^^^^^^^^^^^

warning: field `stats_collector` is never read
   --> src/streaming/live_recording.rs:292:5
    |
287 | pub struct LiveRecordingManager {
    |            -------------------- field in this struct
...
292 |     stats_collector: Arc<RwLock<HashMap<String, RecordingStats>>>,
    |     ^^^^^^^^^^^^^^^
    |
    = note: `LiveRecordingManager` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis

warning: field `stats_tx` is never read
   --> src/streaming/webrtc.rs:162:5
    |
158 | pub struct WebRTCManager {
    |            ------------- field in this struct
...
162 |     stats_tx: mpsc::Sender<PeerStats>,
    |     ^^^^^^^^
    |
    = note: `WebRTCManager` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis

warning: comparison is useless due to type limits
   --> src/config/mod.rs:604:30
    |
604 |         if self.port == 0 || self.port > 65535 {
    |                              ^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(unused_comparisons)]` on by default

warning: `stream_server` (lib) generated 103 warnings (run `cargo fix --lib -p stream_server` to apply 34 suggestions)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.43s
warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.25.4, sqlx-postgres v0.7.4
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
