#ifndef LOW_LATENCY_CONFIG_H
#define LOW_LATENCY_CONFIG_H

// 低延迟模式配置参数（平衡模式 - 类似VLC）
namespace LowLatencyConfig {
    // 缓冲区大小优化（动态调整模式）
    constexpr int BALANCED_FRAME_QUEUE_SIZE = 2;     // 减少到2帧 ≈ 67ms@30fps
    constexpr int BALANCED_PACKET_QUEUE_SIZE = 4;    // 减少到4包 ≈ 133ms
    constexpr int MAX_FRAME_QUEUE_SIZE = 5;          // 最大帧队列大小
    constexpr int MIN_FRAME_QUEUE_SIZE = 1;          // 最小帧队列大小
    
    // 音频缓冲区优化（动态调整模式）
    constexpr int BALANCED_AUDIO_SAMPLES = 256;      // 减少到256样本 ≈ 5.8ms@44.1kHz
    constexpr int MAX_AUDIO_SAMPLES = 1024;          // 最大音频样本数
    constexpr int MIN_AUDIO_SAMPLES = 128;           // 最小音频样本数
    
    // 缓冲区动态调整参数
    constexpr double BUFFER_ADJUST_THRESHOLD = 0.1;  // 缓冲区调整阈值（100ms）
    constexpr double BUFFER_SHRINK_FACTOR = 0.8;     // 缓冲区收缩因子
    constexpr double BUFFER_EXPAND_FACTOR = 1.2;     // 缓冲区扩展因子
    
    // 同步阈值优化（自适应模式）
    constexpr double BALANCED_SYNC_THRESHOLD_MIN = 0.01;  // 减少到10ms
    constexpr double BALANCED_SYNC_THRESHOLD_MAX = 0.04;  // 减少到40ms
    constexpr double BALANCED_NOSYNC_THRESHOLD = 2.0;     // 减少到2秒放弃同步
    constexpr double BALANCED_SYNC_FRAMEDUP_THRESHOLD = 0.08;  // 减少到80ms单帧视频时长阈值上限
    constexpr double BALANCED_SYNC_REJUDGE_THRESHOLD = 0.005;  // 减少到5ms同步重判阈值
    
    // 时间戳处理优化参数
    constexpr double TIMESTAMP_SMOOTH_FACTOR = 0.1;      // 时间戳平滑因子
    constexpr double TIMESTAMP_JUMP_THRESHOLD = 1.0;     // 时间戳跳跃检测阈值（1秒）
    constexpr int TIMESTAMP_HISTORY_SIZE = 10;           // 时间戳历史记录大小
    
    // 延迟累积控制参数
constexpr double DELAY_ACCUMULATION_THRESHOLD = 0.5; // 延迟累积阈值
constexpr double DELAY_RESET_FACTOR = 0.9;           // 延迟重置因子
constexpr int DELAY_MONITOR_INTERVAL = 30;           // 延迟监控间隔

// 高精度时间处理参数
constexpr double TIME_PRECISION_FACTOR = 1000000.0;  // 微秒到秒的转换因子
constexpr double FRAME_TIMER_CORRECTION_THRESHOLD = 0.001; // 帧定时器校正阈值(1ms)
constexpr double PRECISION_ERROR_COMPENSATION = 0.0001;    // 精度误差补偿值(0.1ms)
constexpr int TIMER_RESET_INTERVAL = 300;            // 定时器重置间隔(帧数)
constexpr double MAX_ACCEPTABLE_DRIFT = 0.01;        // 最大可接受漂移(10ms)（帧数）

// 高精度时间常量（int64类型，微秒单位）- 避免运算表达式
constexpr int64_t MAX_ACCEPTABLE_DRIFT_US = 10000LL;        // 最大可接受漂移(10ms = 10000微秒)
constexpr int64_t PRECISION_ERROR_COMPENSATION_US = 100LL;  // 精度误差补偿值(0.1ms = 100微秒)
constexpr int64_t TIMER_RESET_INTERVAL_US = 300000000LL;    // 定时器重置间隔(300秒 = 300000000微秒)
constexpr int64_t FRAME_TIMER_CORRECTION_THRESHOLD_US = 1000LL; // 帧定时器校正阈值(1ms = 1000微秒)
constexpr int64_t BALANCED_SYNC_THRESHOLD_MIN_US = 10000LL;     // 同步阈值最小值(10ms = 10000微秒)
constexpr int64_t BALANCED_SYNC_THRESHOLD_MAX_US = 40000LL;     // 同步阈值最大值(40ms = 40000微秒)
constexpr int64_t BALANCED_SYNC_REJUDGE_THRESHOLD_US = 5000LL;  // 同步重判阈值(5ms = 5000微秒)
    
    // 网络优化参数（更新为平衡配置）
    constexpr const char* RTSP_TRANSPORT = "tcp";
    constexpr const char* PROBE_SIZE = "1048576";      // 1MB探测大小 - 增加以获得足够帧进行帧率计算
    constexpr const char* ANALYZE_DURATION = "3000000"; // 3秒分析时长 - 增加以确保准确的流信息
    constexpr const char* MAX_DELAY = "500000";        // 500ms最大延迟
    constexpr const char* FFLAGS = "nobuffer";         // 无缓冲模式
    constexpr const char* BUFFER_SIZE = "131072";      // 128KB接收缓冲区 - 增加以配合更大的探测大小
    
    // RTSP流优化参数
    constexpr const char* RTSP_FLAGS = "prefer_tcp";   // 优先使用TCP传输
    constexpr const char* STIMEOUT = "5000000";        // 5秒连接超时
    constexpr const char* USER_AGENT = "LearningSmartClient/1.0"; // 自定义用户代理
    
    // 解码器优化（平衡配置）
    constexpr int DECODER_THREAD_COUNT = 2;           // 2线程平衡性能与延迟
    constexpr const char* CODEC_PRESET = "fast";      // fast预设
    constexpr const char* CODEC_TUNE = "zerolatency"; // 零延迟调优
    constexpr bool ENABLE_FRAME_DROP = true;          // 启用丢帧
    constexpr double FRAME_DROP_THRESHOLD = 0.05;     // 50ms丢帧阈值
}

#endif // LOW_LATENCY_CONFIG_H