low_latency_config.h 5.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef LOW_LATENCY_CONFIG_H
  2. #define LOW_LATENCY_CONFIG_H
  3. // 低延迟模式配置参数(平衡模式 - 类似VLC)
  4. namespace LowLatencyConfig {
  5. // 缓冲区大小优化(动态调整模式)
  6. constexpr int BALANCED_FRAME_QUEUE_SIZE = 2; // 减少到2帧 ≈ 67ms@30fps
  7. constexpr int BALANCED_PACKET_QUEUE_SIZE = 4; // 减少到4包 ≈ 133ms
  8. constexpr int MAX_FRAME_QUEUE_SIZE = 5; // 最大帧队列大小
  9. constexpr int MIN_FRAME_QUEUE_SIZE = 1; // 最小帧队列大小
  10. // 音频缓冲区优化(动态调整模式)
  11. constexpr int BALANCED_AUDIO_SAMPLES = 256; // 减少到256样本 ≈ 5.8ms@44.1kHz
  12. constexpr int MAX_AUDIO_SAMPLES = 1024; // 最大音频样本数
  13. constexpr int MIN_AUDIO_SAMPLES = 128; // 最小音频样本数
  14. // 缓冲区动态调整参数
  15. constexpr double BUFFER_ADJUST_THRESHOLD = 0.1; // 缓冲区调整阈值(100ms)
  16. constexpr double BUFFER_SHRINK_FACTOR = 0.8; // 缓冲区收缩因子
  17. constexpr double BUFFER_EXPAND_FACTOR = 1.2; // 缓冲区扩展因子
  18. // 同步阈值优化(自适应模式)
  19. constexpr double BALANCED_SYNC_THRESHOLD_MIN = 0.01; // 减少到10ms
  20. constexpr double BALANCED_SYNC_THRESHOLD_MAX = 0.04; // 减少到40ms
  21. constexpr double BALANCED_NOSYNC_THRESHOLD = 2.0; // 减少到2秒放弃同步
  22. constexpr double BALANCED_SYNC_FRAMEDUP_THRESHOLD = 0.08; // 减少到80ms单帧视频时长阈值上限
  23. constexpr double BALANCED_SYNC_REJUDGE_THRESHOLD = 0.005; // 减少到5ms同步重判阈值
  24. // 时间戳处理优化参数
  25. constexpr double TIMESTAMP_SMOOTH_FACTOR = 0.1; // 时间戳平滑因子
  26. constexpr double TIMESTAMP_JUMP_THRESHOLD = 1.0; // 时间戳跳跃检测阈值(1秒)
  27. constexpr int TIMESTAMP_HISTORY_SIZE = 10; // 时间戳历史记录大小
  28. // 延迟累积控制参数
  29. constexpr double DELAY_ACCUMULATION_THRESHOLD = 0.5; // 延迟累积阈值
  30. constexpr double DELAY_RESET_FACTOR = 0.9; // 延迟重置因子
  31. constexpr int DELAY_MONITOR_INTERVAL = 30; // 延迟监控间隔
  32. // 高精度时间处理参数
  33. constexpr double TIME_PRECISION_FACTOR = 1000000.0; // 微秒到秒的转换因子
  34. constexpr double FRAME_TIMER_CORRECTION_THRESHOLD = 0.001; // 帧定时器校正阈值(1ms)
  35. constexpr double PRECISION_ERROR_COMPENSATION = 0.0001; // 精度误差补偿值(0.1ms)
  36. constexpr int TIMER_RESET_INTERVAL = 300; // 定时器重置间隔(帧数)
  37. constexpr double MAX_ACCEPTABLE_DRIFT = 0.01; // 最大可接受漂移(10ms)(帧数)
  38. // 高精度时间常量(int64类型,微秒单位)- 避免运算表达式
  39. constexpr int64_t MAX_ACCEPTABLE_DRIFT_US = 10000LL; // 最大可接受漂移(10ms = 10000微秒)
  40. constexpr int64_t PRECISION_ERROR_COMPENSATION_US = 100LL; // 精度误差补偿值(0.1ms = 100微秒)
  41. constexpr int64_t TIMER_RESET_INTERVAL_US = 300000000LL; // 定时器重置间隔(300秒 = 300000000微秒)
  42. constexpr int64_t FRAME_TIMER_CORRECTION_THRESHOLD_US = 1000LL; // 帧定时器校正阈值(1ms = 1000微秒)
  43. constexpr int64_t BALANCED_SYNC_THRESHOLD_MIN_US = 10000LL; // 同步阈值最小值(10ms = 10000微秒)
  44. constexpr int64_t BALANCED_SYNC_THRESHOLD_MAX_US = 40000LL; // 同步阈值最大值(40ms = 40000微秒)
  45. constexpr int64_t BALANCED_SYNC_REJUDGE_THRESHOLD_US = 5000LL; // 同步重判阈值(5ms = 5000微秒)
  46. // 网络优化参数(更新为更激进的低延迟配置,匹配ffplay)
  47. constexpr const char* RTSP_TRANSPORT = "tcp";
  48. constexpr int PROBE_SIZE = 32; // 极小探测大小,尽快开始解码
  49. constexpr int ANALYZE_DURATION = 0; // 关闭分析,直接解码
  50. constexpr int MAX_DELAY = 500000; // 500ms最大延迟
  51. constexpr const char* FFLAGS = "nobuffer"; // 无缓冲模式
  52. constexpr int BUFFER_SIZE = 131072; // 接收缓冲区(保持)
  53. // 字符串版本的配置参数(用于av_dict_set)
  54. constexpr const char* PROBE_SIZE_STR = "32"; // 极小探测大小
  55. constexpr const char* ANALYZE_DURATION_STR = "0"; // 关闭分析
  56. constexpr const char* MAX_DELAY_STR = "500000"; // 500ms最大延迟字符串版本
  57. constexpr const char* BUFFER_SIZE_STR = "131072"; // 128KB接收缓冲区字符串版本
  58. // RTSP流优化参数
  59. constexpr const char* RTSP_FLAGS = "prefer_tcp"; // 优先使用TCP传输
  60. constexpr int STIMEOUT = 5000000; // 5秒连接超时
  61. constexpr const char* STIMEOUT_STR = "5000000"; // 5秒连接超时字符串版本
  62. constexpr const char* USER_AGENT = "LearningSmartClient/1.0"; // 自定义用户代理
  63. // 解码器优化(平衡配置)
  64. constexpr int DECODER_THREAD_COUNT = 2; // 2线程平衡性能与延迟
  65. constexpr const char* CODEC_PRESET = "fast"; // fast预设
  66. constexpr const char* CODEC_TUNE = "zerolatency"; // 零延迟调优
  67. constexpr bool ENABLE_FRAME_DROP = true; // 启用丢帧
  68. constexpr double FRAME_DROP_THRESHOLD = 0.05; // 50ms丢帧阈值
  69. }
  70. #endif // LOW_LATENCY_CONFIG_H