/**
 * Jessibuca 播放器配置
 */
export const getJessibucaConfig = (container) => {
  return {
    container, // 播放器容器
    videoBuffer: 0.5, // 视频缓冲区时长，单位：秒
    audioBuffer: 0.5, // 音频缓冲区时长，单位：秒
    debug: true, // 是否开启调试模式
    forceNoOffscreen: true, // 是否强制不使用离屏模式
    isResize: true, // 是否根据容器自动调整大小
    isFullResize: false, // 是否全屏模式调整大小
    text: '视频加载中...', // 加载过程中的提示文本
    loadingText: '加载中...',
    background: '#000000', // 背景色
    controlAutoHide: false, // 控制栏是否自动隐藏
    showBandwidth: true, // 是否显示网速
    operateBtns: {
      fullscreen: true, // 是否显示全屏按钮
      screenshot: true, // 是否显示截图按钮
      play: true, // 是否显示播放按钮
      audio: true, // 是否显示声音按钮
      recording: false // 是否显示录制按钮
    },
    supportDblclickFullscreen: true, // 是否支持双击全屏
    showBandwidthPosition: 'controls', // 显示网速的位置
    keepScreenOn: true, // 是否保持屏幕常亮
    hotKey: true, // 是否支持热键
    loadingTimeout: 10, // 视频加载超时时间，单位：秒
    // 指定解码器文件路径
    decoder: process.env.BASE_URL + 'decoder.js',
    wasmUrl: process.env.BASE_URL + 'decoder.wasm',
    
    // 解码配置
    decoderConfig: {
      // 解码类型，可选值：'software', 'hardware'
      type: 'auto',
      // 是否优先使用 WASM 解码
      preferWasm: true,
      // 是否使用 Worker 进行解码
      useWorker: true,
      // 是否使用 SIMD 加速
      useSIMD: true,
      // 是否使用 WebGL 渲染
      useWebGL: true,
    },
    
    // 视频渲染配置
    render: {
      // 是否开启抗锯齿
      antialias: true,
      // 是否使用 WebGL2
      useWebGL2: true,
      // 是否使用 YUV 渲染
      yuv: true,
    },
    
    // 网络配置
    network: {
      // 是否开启 HTTP 请求超时
      timeout: 10000,
      // 是否开启重试
      retry: true,
      // 重试次数
      retryCount: 3,
      // 重试间隔，单位：毫秒
      retryDelay: 1000,
    }
  };
};

/**
 * 根据视频格式获取 Jessibuca 播放地址
 * @param {string} url - 原始 URL
 * @param {string} format - 视频格式
 * @returns {string} - 处理后的 URL
 */
export const getJessibucaUrl = (url, format) => {
  // 对于 WebSocket 格式，确保 URL 以 ws:// 或 wss:// 开头
  if (format === 'ws' && !url.startsWith('ws://') && !url.startsWith('wss://')) {
    return `ws://${url.replace(/^https?:\/\//, '')}`;
  }
  
  // 对于 FLV 格式，确保 URL 正确
  if (format === 'flv' && !url.includes('.flv') && !url.includes('?') && !url.includes('=')) {
    // 如果 URL 不包含 .flv 后缀且没有查询参数，尝试添加 .flv 后缀
    return `${url}.flv`;
  }
  
  // 对于 HLS/M3U8 格式，确保 URL 正确
  if ((format === 'hls' || format === 'm3u8') && !url.includes('.m3u8') && !url.includes('?') && !url.includes('=')) {
    // 如果 URL 不包含 .m3u8 后缀且没有查询参数，尝试添加 .m3u8 后缀
    return `${url}.m3u8`;
  }
  
  return url;
};