text: //
  //  PLPlayerOption.h
  //  PLPlayerKit
  //
  //  Created by 何昊宇 on 2017/5/15.
  //  Copyright © 2017年 Aaron. All rights reserved.
  //
  
  #import <Foundation/Foundation.h>
  
  /**
   设置控制台 log 的级别，log 级别在 kPLLogInfo 及以上，则会缓存日志文件，
   日志文件存放的位置为 APP Container/Library/Caches/Pili/PlayerLogs
   
   */
  typedef enum : NSUInteger {
      /**
       *  No logs
       */
      kPLLogNone,
      /**
       *  Error logs only
       */
      kPLLogError,
      /**
       *  Error and warning logs
       */
      kPLLogWarning,
      /**
       *  Error, warning and info logs
       */
      kPLLogInfo,
      /**
       *  Error, warning, info and debug logs
       */
      kPLLogDebug,
      /**
       *  Error, warning, info, debug and verbose logs
       */
      kPLLogVerbose,
  } PLLogLevel;
  
  /**
   预设置播放器播放 URL 类型
   */
  typedef enum : NSUInteger {
      /**
       * 未知类型
       */
      kPLPLAY_FORMAT_UnKnown,
      /**
       * M3U8 类型
       */
      kPLPLAY_FORMAT_M3U8,
      /**
       * MP4 类型
       */
      kPLPLAY_FORMAT_MP4,
      /**
       *  FLV 类型
       */
      kPLPLAY_FORMAT_FLV,
      /**
       *  MP3 类型,此类型需要提前设置，才可播放
       */
      kPLPLAY_FORMAT_MP3,
      /**
       *  AAC 类型,此类型需要提前设置，才可播放
       */
      kPLPLAY_FORMAT_AAC
      
  } PLPlayFormat;
  
  /**
   @abstract 接收/发送数据包超时时间间隔所对应的键值，单位为 s ，默认配置为 10s
   
   @warning 建议设置正数。设置的值小于等于 0 时，表示禁用超时，播放卡住时，将无超时回调。
   该参数仅对 rtmp/flv 直播生效
   
   @since v1.0.0
   */
  extern NSString  * _Nonnull PLPlayerOptionKeyTimeoutIntervalForMediaPackets;
  
  /**
   @abstract 一级缓存大小，单位为 ms，默认为 2000ms，增大该值可以减小播放过程中的卡顿率，但会增大弱网环境的最大累积延迟
   
   @discussion 该缓存存放的是网络层读取到的数据，为保证实时性，超过该缓存池大小的过期音频数据将被丢弃，视频将加速渲染追上音频
   
   @warning 该参数仅对 rtmp/flv 直播生效
   
   @since v2.1.3
   */
  extern NSString  * _Nonnull PLPlayerOptionKeyMaxL1BufferDuration;
  
  /**
   @abstract 默认二级缓存大小，单位为 ms，默认为 300ms，增大该值可以减小播放过程中的卡顿率，但会增大弱网环境的最大累积延迟
   
   @discussion 该缓存存放的是解码之后待渲染的数据，如果该缓存池满，则二级缓存将不再接收来自一级缓存的数据
   
   @warning 该参数仅对 rtmp/flv 直播生效
   
   @since v2.1.3
   */
  extern NSString  * _Nonnull PLPlayerOptionKeyMaxL2BufferDuration;
  
  /**
   @abstract 是否使用 video toolbox 硬解码。
   
   @discussion 使用 video toolbox Player 将尝试硬解码，失败后，将切换回软解码。
   
   @waring 该参数仅对 rtmp/flv 直播生效, 默认不使用。支持 iOS 8.0 及更高版本。
   
   @since v2.1.4
   */
  extern NSString  * _Nonnull PLPlayerOptionKeyVideoToolbox;
  
  /**
   @abstract 配置 log 级别
   
   @discussion release 建议使用 kPLLogWarning, debug 建议使用 kPLLogInfo.
   
   @waring 取值范围: PLLogLevel
   
   @since v2.2.1
   */
  extern NSString * _Nonnull PLPlayerOptionKeyLogLevel;
  
  /**
   @abstract dns 查询，使用内置 DNS 解析
   
   @discussion NSString 类型，开启 DNS 解析，默认使用系统 API 解析
   
   @waring 该参数仅对 rtmp/flv 直播生效
   
   @since v2.2.1
   */
  extern NSString * _Nonnull PLPlayerOptionKeyDNSManager;
  
  /**
   @abstract 开启/关闭 HappyDNS 的 DNS 解析
   
   @discussion 默认关闭
   
   @waring 该参数仅对 rtmp 与 flv 生效，值类型为 BOOL
   
   @since v2.3.0
   */
  extern NSString * _Nonnull PLPlayerOptionKeyHappyDNSEnable __deprecated_msg("Method deprecated in v3.3.0. No support HappyDNS");
  
  /**
   @abstract 视频缓存目录, 默认为 nil
   
   @waring 该属性仅对点播 mp4 有效, 当 PLPlayerOptionKeyVideoCacheFolderPath 有值时，默认关闭 DNS  解析
   
   @since v3.0.0
   */
  extern NSString * _Nullable PLPlayerOptionKeyVideoCacheFolderPath;
  
  /**
   @abstract 视频预设值播放 URL 格式类型
   
   @discussion 该参数用于加快首开，提前告知播放器流类型，默认 kPLPLAY_FORMAT_UnKnown
   
   @waring 取值范围: PLPlayFormat
   
   @since v3.0.1
   */
  extern NSString * _Nullable PLPlayerOptionKeyVideoPreferFormat;
  
  /**
   @abstract 视频缓存扩展名
   
   @waring 该属性仅对点播 mp4 有效，需在视频缓存目录 PLPlayerOptionKeyVideoCacheFolderPath 基础上设置
   
   @see PLPlayerOptionKeyVideoCacheFolderPath
   
   @since v3.2.1
   */
  extern NSString * _Nullable PLPlayerOptionKeyVideoCacheExtensionName;
  
  /**
   SDK 设备 ID
   
   @discussion 该参数用于标记 SDK 设备 ID, 默认为 UUID
   
   @since v3.0.2
   */
  extern NSString * _Nullable PLPlayerOptionKeySDKID;
  
  /**
   PLPlayer 的可选配置类，在初始化 PLPlayer 对象的时候传入其实例进行 PLPlayer 的可选项配置
   
   @since v1.0.0
   */
  @interface PLPlayerOption : NSObject
  
  /**
   @abstract 使用默认配置生成一个 PLPlayerOption 对象
   
   @return 生成的 PLPlayerOption 对象
   
   @since v1.0.0
   */
  + (nonnull PLPlayerOption *)defaultOption;
  
  /**
   使用一个 NSDictionary 对象来生成一个 PLPlayerOption 对象
   
   @param dic 用于初始化 PLPlyerOption 对象的 NSDictionary 对象
   
   @return 生成的 PLPlayerOption 对象
   
   @since v1.0.0
   */
  + (nonnull PLPlayerOption *)optionWithDictionary:(nonnull NSDictionary *)dic;
  
  /**
   设置相应的键所对应的值
   
   @param value 要设置的值
   @param key   要设置值的键
   
   @since v1.0.0
   */
  - (void)setOptionValue:(nullable id)value forKey:(nonnull NSString *)key;
  
  /**
   获取特定键所对应的值
   
   @param key 要获取值的键名
   
   @return 获取到的值，当该值为 nil 时表示没有找到该键名对应的值。
   
   @since v1.0.0
   */
  - (nullable id)optionValueForKey:(nonnull NSString *)key;
  
  /**
   生成一个包含该 PLPlayer 所有键值对信息的 NSDictionary 对象来
   
   @return 所生成的 NSDictionary 对象
   
   @since v1.0.0
   */
  - (nonnull NSDictionary *)dictionaryValue;
  
  
  @end
  