测试版

This commit is contained in:
liuyuan
2025-03-05 15:16:45 +08:00
parent 8dbdce6d3f
commit 9accfddbe5
3849 changed files with 365801 additions and 0 deletions

View File

@@ -0,0 +1,403 @@
//
// AVPDef.h
// AVPSDK
//
// Created by shiping.csp on 2018/11/16.
// Copyright © 2018 com.alibaba.AliyunPlayer. All rights reserved.
//
#ifndef AVPDef_h
#define AVPDef_h
#import <Foundation/Foundation.h>
#if TARGET_OS_OSX
#import <AppKit/AppKit.h>
#define AVPView NSView
#define AVPImage NSImage
#elif TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#define AVPView UIView
#define AVPImage UIImage
#endif // TARGET_OS_OSX
#import "AVPErrorCode.h"
/**
* Convert playback URL before playback.
*
* For vid playback, try to convert the playback URL before playback
*
* @param srcURL [in] input URL.
* @param srcFormat [in] input format. should be "m3u8" "mp4", or "" if unknown.
* @param destURL [out] output URL, convertURL function will malloc the memory, and user of PlayURLConverCallback need free it outside.
*
* @return true if success.
*/
typedef bool (*PlayURLConverCallback)(const char* srcURL, const char* srcFormat, char** destURL);
typedef enum AVPStatus: NSUInteger {
/** @brief 空转,闲时,静态 */
/**** @brief Idle */
AVPStatusIdle = 0,
/** @brief 初始化完成 */
/**** @brief Initialized */
AVPStatusInitialzed,
/** @brief 准备完成 */
/**** @brief Prepared */
AVPStatusPrepared,
/** @brief 正在播放 */
/**** @brief Playing */
AVPStatusStarted,
/** @brief 播放暂停 */
/**** @brief Paused */
AVPStatusPaused,
/** @brief 播放停止 */
/**** @brief Stopped */
AVPStatusStopped,
/** @brief 播放完成 */
/**** @brief Completed */
AVPStatusCompletion,
/** @brief 播放错误 */
/**** @brief Error */
AVPStatusError
} AVPStatus;
/**@brief 跳转模式,是否为精准跳转*/
/****@brief Seeking mode: accurate seeking or inaccurate seeking.*/
typedef enum AVPSeekMode: NSUInteger {
AVP_SEEKMODE_ACCURATE = 0x01,
AVP_SEEKMODE_INACCURATE = 0x10,
} AVPSeekMode;
/**@brief 渲染显示模式*/
/****@brief Zoom mode*/
typedef enum AVPScalingMode: NSUInteger {
/**@brief 不保持比例平铺*/
/****@brief Auto stretch to fit.*/
AVP_SCALINGMODE_SCALETOFILL,
/**@brief 保持比例,黑边*/
/****@brief Keep aspect ratio and add black borders.*/
AVP_SCALINGMODE_SCALEASPECTFIT,
/**@brief 保持比例填充,需裁剪*/
/****@brief Keep aspect ratio and crop.*/
AVP_SCALINGMODE_SCALEASPECTFILL,
} AVPScalingMode;
/**@brief 旋转模式*/
/****@brief Rotate mode*/
typedef enum AVPRotateMode: NSUInteger {
AVP_ROTATE_0 = 0,
AVP_ROTATE_90 = 90,
AVP_ROTATE_180 = 180,
AVP_ROTATE_270 = 270
} AVPRotateMode;
/**@brief 镜像模式*/
/****@brief Mirroring mode*/
typedef enum AVPMirrorMode: NSUInteger {
AVP_MIRRORMODE_NONE,
AVP_MIRRORMODE_HORIZONTAL,
AVP_MIRRORMODE_VERTICAL,
} AVPMirrorMode;
/**@brief 音频输出声道*/
/****@brief Output audio channel*/
typedef enum AVPOutputAudioChannel:NSUInteger {
/**@brief 不指定声道,默认值*/
/****@brief Not specified, default value*/
AVP_AUDIO_CHANNEL_NONE = 0,
/**@brief 左声道*/
/****@brief Left audio channel*/
AVP_AUDIO_CHANNEL_LEFT = 1,
/**@brief 右声道*/
/****@brief Right audio channel*/
AVP_AUDIO_CHANNEL_RIGHT = 2
} AVPOutputAudioChannel;
/**@brief 播放器事件类型*/
/****@brief Player event type*/
typedef enum AVPEventType: NSUInteger {
/**@brief 准备完成事件*/
/****@brief Preparation completion event*/
AVPEventPrepareDone,
/**@brief 自动启播事件*/
/****@brief Autoplay start event*/
AVPEventAutoPlayStart,
/**@brief 首帧显示事件*/
/****@brief First frame display event*/
AVPEventFirstRenderedStart,
/**@brief 播放完成事件*/
/****@brief Playback completion event*/
AVPEventCompletion,
/**@brief 缓冲开始事件*/
/****@brief Buffer start event*/
AVPEventLoadingStart,
/**@brief 缓冲完成事件*/
/****@brief Buffer completion event*/
AVPEventLoadingEnd,
/**@brief 跳转完成事件*/
/****@brief Seeking completion event*/
AVPEventSeekEnd,
/**@brief 循环播放开始事件*/
/****@brief Loop playback start event*/
AVPEventLoopingStart,
} AVPEventType;
/**@brief 获取信息播放器的key*/
/****@brief The key to get property*/
typedef enum AVPPropertyKey: NSUInteger {
/**@brief Http的response信息
* 返回的字符串是JSON数组每个对象带response和type字段。type字段可以是url/video/audio/subtitle根据流是否有相应Track返回。
* 例如:[{"response":"response string","type":"url"},{"response":"","type":"video"}]
*/
/****@brief Http response info
* Return with JSON arrayeach object item include 'response'/'type' filed。'type' could be url/video/audio/subtitle, depend on the stream whether have the tracks。
* For example: [{"response":"response string","type":"url"},{"response":"","type":"video"}]
*/
AVP_KEY_RESPONSE_INFO = 0,
/**@brief 主URL的连接信息
* 返回的字符串是JSON对象带url/ip/eagleID/cdnVia/cdncip/cdnsip等字段如果解析不到则不添加
* 例如:{"url":"http://xxx","openCost":23,"ip":"11.111.111.11","cdnVia":"xxx","cdncip":"22.222.222.22","cdnsip":"xxx"}
*/
/****@brief Major URL connect information
* Return with JSON objectinclude sub fileds such as url/ip/eagleID/cdnVia/cdncip/cdnsip.
* For example: {"url":"http://xxx","openCost":23,"ip":"11.111.111.11","cdnVia":"xxx","cdncip":"22.222.222.22","cdnsip":"xxx"}
*/
AVP_KEY_CONNECT_INFO = 1,
} AVPPropertyKey;
/**@brief IP 解析类型*/
/**@brief IP resolve type*/
typedef enum AVPIpResolveType: NSUInteger {
AVPIpResolveWhatEver,
AVPIpResolveV4,
AVPIpResolveV6,
} AVPIpResolveType;
typedef enum AVPOption : NSUInteger {
/**
* @brief 渲染的fps。类型为Float
*/
/****
* @brief render fps. Return value type is Float
*/
AVP_OPTION_RENDER_FPS = 0,
/**
* 当前的网络下行码率。类型为Float
*/
/****
* current download bitrate. Return value type is Float
*/
AVP_OPTION_DOWNLOAD_BITRATE = 1,
/**
* 当前播放的视频码率。类型为Float
*/
/****
* current playback video bitrate. Return value type is Float
*/
AVP_OPTION_VIDEO_BITRATE = 2,
/**
* 当前播放的音频码率。类型为Float
*/
/****
* current playback audio bitrate. Return value type is Float
*/
AVP_OPTION_AUDIO_BITRATE = 3,
} AVPOption;
/**
* 策略类型
*/
/****
* strategy type
*/
typedef enum AVPStrategyType : NSUInteger {
/**
* 动态预加载时长策略
*/
/****
* dynamic preload duration strategy.
*/
AVP_STRATEGY_DYNAMIC_PRELOAD = 1,
} AVPStrategyType;
/**
* 场景类型
*/
/****
* scene type
*/
typedef enum AVPSceneType : NSInteger {
/**
* 场景:无
*/
/****
* scene none
*/
AVP_SCENE_NONE = -1,
/**
* 超短视频场景适用于30s以下
*/
/****
* very short scene: apply to less 30s
*/
AVP_VERY_SHOR_VIDEO = 0,
/**
* 短视频场景适用于30s-5min
*/
/****
* short scene: apply to 30-5min
*/
AVP_SHORT_VIDEO = 1,
/**
* 中视频场景适用于5min-30min
*/
/****
* middle scene: apply to 5min-30min
*/
AVP_MIDDLE_VIDEO = 2,
/**
* 长视频场景适用于30min以上
*/
/****
* long scene: apply to more than 30min
*/
AVP_LONG_VIDEO = 3,
} AVPSceneType;
/**
@brief AVPErrorModel为播放错误信息描述
*/
/****
@brief AVPErrorModel represents playback error descriptions.
*/
OBJC_EXPORT
@interface AVPErrorModel : NSObject
/**
@brief code为播放错误信息code
*/
/****
@brief code represents a playback error code.
*/
@property (nonatomic, assign) AVPErrorCode code;
/**
@brief message为播放错误信息描述
*/
/****
@brief message represents a playback error message.
*/
@property (nonatomic, copy) NSString *message;
/**
@brief extra为播放错误信息描述的附加信息
*/
/****
@brief extra represents an additional playback error message.
*/
@property (nonatomic, copy) NSString *extra;
/**
@brief requestId为播放错误信息requestID
*/
/****
@brief requestId represents the request ID of a playback error.
*/
@property (nonatomic, copy) NSString *requestId;
/**
@brief videoId为播放错误发生的videoID
*/
/****
@brief videoId represents the VID of the video that has a playback error.
*/
@property (nonatomic, copy) NSString *videoId;
@end
/**
@brief AVPTimeShiftModel直播时移描述
*/
/****
@brief AVPTimeShiftModel represents broadcasting timeshift descriptions.
*/
OBJC_EXPORT
@interface AVPTimeShiftModel : NSObject
/**
@brief startTime直播时移开始时间
*/
/****
@brief startTime represents the start of the time range for broadcasting timeshift.
*/
@property (nonatomic, assign) NSTimeInterval startTime;
/**
@brief endTime直播时移结束时间
*/
/****
@brief endTime represents the end of the time range for broadcasting timeshift.
*/
@property (nonatomic, assign) NSTimeInterval endTime;
/**
@brief currentTime直播时移当前时间
*/
/****
@brief currentTime represents the time that broadcasting timeshift seeks to.
*/
@property (nonatomic, assign) NSTimeInterval currentTime;
@end
/**
@brief logLevel
*/
typedef enum AVPLogLevel: NSUInteger {
LOG_LEVEL_NONE = 0,
LOG_LEVEL_FATAL = 8,
LOG_LEVEL_ERROR = 16,
LOG_LEVEL_WARNING = 24,
LOG_LEVEL_INFO = 32,
LOG_LEVEL_DEBUG = 48,
LOG_LEVEL_TRACE = 56,
} AVPLogLevel;
typedef enum _AVPStsStatus {
Valid,
Invalid,
Pending } AVPStsStatus;
typedef struct _AVPStsInfo {
NSString *accId;
NSString *accSecret;
NSString *token;
NSString *region;
NSString *formats;
} AVPStsInfo;
/**
@brief 是否支持的功能的类型
*/
/****
@brief The type of the feature.
*/
typedef enum _SupportFeatureType : NSUInteger {
/**
* 硬件是否支持杜比音频
*/
/****
* whether the device support Dolby Audio.
*/
FeatureDolbyAudio
} SupportFeatureType;
#endif /* AVPDef_h */