2024年9月18日发(作者:春经赋)
XinDawn Airplay SDK for
2014-2016
©
XinDawn Tech
Linux
开发说明文档
XinDawn Tech
2015-09
1 / 9
1.1 系统SDK
1.1.1 启动 airplay服务
int XinDawn_StartMediaServer(char *friendname, int width, int height, airplay_callbacks_t
*cb);
函数功能: 启动Airplay服务
输入参数: friendname iOS 设备上显示的接收设备名称
width 设置接收设备的最佳显示宽度
height 设置接收设备的最佳显示高度
cb 设置回调函数
返回值:
-1:端口被占用
0:成功
1.1.2 停止airplay 服务
void XinDawn_StopMediaServer();
函数功能: 停止airplay 服务
输入参数: 无。
返回值: 无。
1.2 设置回调函数
1.2.1 输出屏幕镜像时视频流头数据
void(*AirPlayMirroring_Play)(void *cls,int width,int height,const void *buffer, int buflen,
int payloadtype, double timestamp);
函数功能: 输出屏幕镜像时视频流头信息(SPS/PPS)
输入参数: cls 用户回调句柄
width 输出视频宽带
height 输出视频高度
buffer 视频信息输出缓冲区指针
buflen 视频信息长度
2014-2016 XinDawn Tech
©
2 / 9
返回值:
payloadtype 保留
timestamp 保留
无。
1.2.2 输出屏幕镜像时视频数据
void(*AirPlayMirroring_Process)(void *cls, const void *buffer, int buflen, int payloadtype,
double timestamp);
函数功能: 输出屏幕镜像时视频流数据。
输入参数: cls 用户回调句柄
buffer 视频数据输出缓冲区指针
buflen 视频数据长度
payloadtype 视频类型 1:额外的视频流信息 0:视频数据
timestamp 视频时间戳,单位是秒
返回值: 无。
注意: 1.额外的视频流信息
它出现在视频流开始或者屏幕发生旋转并且视频分辨率改变的时候
H.264 codec data from iPad
0000 01 64 c0 28 ff e1 00 10 67 64 c0 28 ac 56 20 0d
0010 81 4f e5 9b 81 01 01 01 01 00 04 28 ee 3c b0
The H.264 codec data is interpreted as follows:
size
1 byte
1 byte
1 byte
1 byte
6 bits
2 bits
3 bits
5 bits
value description
1 version
100 profile (high)
0xc0 compatibility
40 level (4.0)
0x3f reserved
3 NAL units length size - 1
0x7 reserved
1 number of SPS
3 / 9 2014-2016 XinDawn Tech
©
size value description
length of SPS
Sequence parameter set
number of PPS
length of PPS
Picture parameter set
2 bytes 16
16 bytes …
1 byte 1
2 bytes 4
4 bytes …
2.视频流信息
这个数据用于解码包括IDR,NON-IDR数据
3.H.264数据的单位是NAL,每次输出的数据可能包含多个NAL,需要依
次处理。
1.2.3 通知屏幕镜像时视频流输出关闭
void(*AirPlayMirroring_Stop)(void *cls);
函数功能: 通知视频流输出关闭
输入参数: cls 用户回调句柄
返回值: 无
1.2.4 输出屏幕镜像/播放音乐时音频流信息
void(*AirPlayAudio_Init)(void *cls, int bits, int channels, int samplerate, int isaudio);
函数功能: 输出屏幕镜像时音频流信息。
输入参数: cls 用户回调句柄
bits 音频采样大小
channels 音频的通道数目
samplerate 音频采样频率
isaudio 保留
返回值: 无。
注意: 输出为AAC-LC raw data
1.2.5 输出屏幕镜像/播放音乐时音频帧数据
void(*AirPlayAudio_Process)(void *cls, const void *buffer, int buflen, double timestamp,
uint32_t seqnum);
函数功能: 输出屏幕镜像时音频流数据。
2014-2016 XinDawn Tech
©
4 / 9
输入参数: cls 用户回调句柄
buffer 音频数据输出缓冲区指针
buflen 音频数据长度
timestamp 音频时间戳,单位是秒
seqnum 保留
返回值: 无。
1.2.6 通知屏幕镜像/播放音乐时音频流输出关闭
void(*AirPlayAudio_destroy)(void *cls);
函数功能: 音频流输出关闭;
输入参数: cls 用户回调句柄
返回值: 无。
1.2.7 设置屏幕镜像/播放音乐时音频流音量
void(*AirPlayAudio_SetVolume)(void *cls, int volume);
函数功能: 音频流音量调节
输入参数: cls 用户回调句柄
volume 音量大小(0-100)
返回值: 无。
1.2.8 输出屏幕镜像/播放音乐时音频流元数据(艺术家/专辑名/歌曲
名)
void(*AirPlayAudio_SetMetadata) (void *cls, const void *buffer, int buflen);
函数功能: 音频流输出元数据信息
输入参数: cls 用户回调句柄
buffer meta数据输出缓冲区指针
buflen meta数据长度
返回值: 无。
注意: meta数据格式为DMAP
2014-2016 XinDawn Tech
©
5 / 9
1.2.9 输出屏幕镜像/播放音乐时封面数据
void(*AirPlayAudio_SetCoverart)(void *cls, const void *buffer, int buflen);
函数功能: 音频流输出封面数据
输入参数: cls 用户回调句柄
buffer 封面数据输出缓冲区指针
buflen 封面数据长度
返回值: 无。
注意: 封面数据为jpeg格式
1.2.10 清空屏幕镜像/播放音乐数据流
void(*AirPlayAudio_Flush)(void *cls);
函数功能: 音频流数据清空
输入参数: cls 用户回调句柄
返回值: 无。
1.2.11 Airplay视频播放文件打开
void(*AirPlayPlayback_Open) (void *cls,char *url, float fPosition);
函数功能: Airplay 视频播放文件打开
输入参数: cls 用户回调句柄
url 播放的视频地址
fPosition 播放的视频开始位置(0.0-1.0)
返回值: 无。
1.2.12 Airplay视频播放开始
void(*AirPlayPlayback_Play) (void *cls);
函数功能: Airplay 视频播放开始
输入参数: cls 用户回调句柄
返回值: 无。
2014-2016
©
XinDawn Tech
6 / 9
1.2.13 Airplay视频播放暂停
void(*AirPlayPlayback_Pause)(void *cls);
函数功能: Airplay 视频播放暂停
输入参数: cls 用户回调句柄
返回值: 无。
1.2.14 Airplay视频播放停止
void(*AirPlayPlayback_Stop) (void *cls);
函数功能: Airplay 视频播放停止
输入参数: cls 用户回调句柄
返回值: 无。
1.2.15 Airplay视频播放快进
void(*AirPlayPlayback_Seek)(void *cls,float fPosition);
函数功能: Airplay 视频播放快进
输入参数: cls 用户回调句柄
fPosition 视频播放跳转位置(0.0-1.0)
返回值: 无。
1.2.16 Airplay视频播放音量调节
void(*AirPlayPlayback_SetVolume)(void *cls,int volume);
函数功能: Airplay 视频播放音量调节
输入参数: cls 用户回调句柄
volume 音量大小(0-100)
返回值: 无。
注意: 当前没有调用
1.2.17 Airplay返回视频播放文件的总时长
long(*AirPlayPlayback_GetDuration)(void *cls);
函数功能: 返回当前播放视频的总时长
输入参数: cls 用户回调句柄
2014-2016
©
XinDawn Tech
7 / 9
返回值: 总时长(单位是ms)
1.2.18 Airplay返回视频播放文件的当前时间
long(*AirPlayPlayback_GetPostion)(void *cls);
函数功能: 返回视频播放的当前时间
输入参数: cls 用户回调句柄
返回值: 当前播放时间(单位是ms)
1.2.19 Airplay返回当前视频是否在播放状态
int(*AirPlayPlayback_IsPlaying)(void *cls);
函数功能: 返回当前视频播放是否在播放状态
输入参数: cls 用户回调句柄
返回值: 0/1
1.2.20 Airplay返回当前视频是否在暂停状态
int(*AirPlayPlayback_IsPaused)(void *cls);
函数功能: 返回当前视频播放是否在暂停状态
输入参数: cls 用户回调句柄
返回值: 0/1
1.2.21 Airplay图片播放
void(*AirPlayPlayback_ShowPhoto)(void *cls, unsigned char *data, long long size);
函数功能: Airplay 图片播放
输入参数: cls 用户回调句柄
data 图像数据输出缓冲区指针
size 图像数据长度
返回值: 无。
注意: 图片数据为JPEG 格式
2014-2016
©
XinDawn Tech
8 / 9
2014-2016
©
XinDawn Tech
9 / 9
2024年9月18日发(作者:春经赋)
XinDawn Airplay SDK for
2014-2016
©
XinDawn Tech
Linux
开发说明文档
XinDawn Tech
2015-09
1 / 9
1.1 系统SDK
1.1.1 启动 airplay服务
int XinDawn_StartMediaServer(char *friendname, int width, int height, airplay_callbacks_t
*cb);
函数功能: 启动Airplay服务
输入参数: friendname iOS 设备上显示的接收设备名称
width 设置接收设备的最佳显示宽度
height 设置接收设备的最佳显示高度
cb 设置回调函数
返回值:
-1:端口被占用
0:成功
1.1.2 停止airplay 服务
void XinDawn_StopMediaServer();
函数功能: 停止airplay 服务
输入参数: 无。
返回值: 无。
1.2 设置回调函数
1.2.1 输出屏幕镜像时视频流头数据
void(*AirPlayMirroring_Play)(void *cls,int width,int height,const void *buffer, int buflen,
int payloadtype, double timestamp);
函数功能: 输出屏幕镜像时视频流头信息(SPS/PPS)
输入参数: cls 用户回调句柄
width 输出视频宽带
height 输出视频高度
buffer 视频信息输出缓冲区指针
buflen 视频信息长度
2014-2016 XinDawn Tech
©
2 / 9
返回值:
payloadtype 保留
timestamp 保留
无。
1.2.2 输出屏幕镜像时视频数据
void(*AirPlayMirroring_Process)(void *cls, const void *buffer, int buflen, int payloadtype,
double timestamp);
函数功能: 输出屏幕镜像时视频流数据。
输入参数: cls 用户回调句柄
buffer 视频数据输出缓冲区指针
buflen 视频数据长度
payloadtype 视频类型 1:额外的视频流信息 0:视频数据
timestamp 视频时间戳,单位是秒
返回值: 无。
注意: 1.额外的视频流信息
它出现在视频流开始或者屏幕发生旋转并且视频分辨率改变的时候
H.264 codec data from iPad
0000 01 64 c0 28 ff e1 00 10 67 64 c0 28 ac 56 20 0d
0010 81 4f e5 9b 81 01 01 01 01 00 04 28 ee 3c b0
The H.264 codec data is interpreted as follows:
size
1 byte
1 byte
1 byte
1 byte
6 bits
2 bits
3 bits
5 bits
value description
1 version
100 profile (high)
0xc0 compatibility
40 level (4.0)
0x3f reserved
3 NAL units length size - 1
0x7 reserved
1 number of SPS
3 / 9 2014-2016 XinDawn Tech
©
size value description
length of SPS
Sequence parameter set
number of PPS
length of PPS
Picture parameter set
2 bytes 16
16 bytes …
1 byte 1
2 bytes 4
4 bytes …
2.视频流信息
这个数据用于解码包括IDR,NON-IDR数据
3.H.264数据的单位是NAL,每次输出的数据可能包含多个NAL,需要依
次处理。
1.2.3 通知屏幕镜像时视频流输出关闭
void(*AirPlayMirroring_Stop)(void *cls);
函数功能: 通知视频流输出关闭
输入参数: cls 用户回调句柄
返回值: 无
1.2.4 输出屏幕镜像/播放音乐时音频流信息
void(*AirPlayAudio_Init)(void *cls, int bits, int channels, int samplerate, int isaudio);
函数功能: 输出屏幕镜像时音频流信息。
输入参数: cls 用户回调句柄
bits 音频采样大小
channels 音频的通道数目
samplerate 音频采样频率
isaudio 保留
返回值: 无。
注意: 输出为AAC-LC raw data
1.2.5 输出屏幕镜像/播放音乐时音频帧数据
void(*AirPlayAudio_Process)(void *cls, const void *buffer, int buflen, double timestamp,
uint32_t seqnum);
函数功能: 输出屏幕镜像时音频流数据。
2014-2016 XinDawn Tech
©
4 / 9
输入参数: cls 用户回调句柄
buffer 音频数据输出缓冲区指针
buflen 音频数据长度
timestamp 音频时间戳,单位是秒
seqnum 保留
返回值: 无。
1.2.6 通知屏幕镜像/播放音乐时音频流输出关闭
void(*AirPlayAudio_destroy)(void *cls);
函数功能: 音频流输出关闭;
输入参数: cls 用户回调句柄
返回值: 无。
1.2.7 设置屏幕镜像/播放音乐时音频流音量
void(*AirPlayAudio_SetVolume)(void *cls, int volume);
函数功能: 音频流音量调节
输入参数: cls 用户回调句柄
volume 音量大小(0-100)
返回值: 无。
1.2.8 输出屏幕镜像/播放音乐时音频流元数据(艺术家/专辑名/歌曲
名)
void(*AirPlayAudio_SetMetadata) (void *cls, const void *buffer, int buflen);
函数功能: 音频流输出元数据信息
输入参数: cls 用户回调句柄
buffer meta数据输出缓冲区指针
buflen meta数据长度
返回值: 无。
注意: meta数据格式为DMAP
2014-2016 XinDawn Tech
©
5 / 9
1.2.9 输出屏幕镜像/播放音乐时封面数据
void(*AirPlayAudio_SetCoverart)(void *cls, const void *buffer, int buflen);
函数功能: 音频流输出封面数据
输入参数: cls 用户回调句柄
buffer 封面数据输出缓冲区指针
buflen 封面数据长度
返回值: 无。
注意: 封面数据为jpeg格式
1.2.10 清空屏幕镜像/播放音乐数据流
void(*AirPlayAudio_Flush)(void *cls);
函数功能: 音频流数据清空
输入参数: cls 用户回调句柄
返回值: 无。
1.2.11 Airplay视频播放文件打开
void(*AirPlayPlayback_Open) (void *cls,char *url, float fPosition);
函数功能: Airplay 视频播放文件打开
输入参数: cls 用户回调句柄
url 播放的视频地址
fPosition 播放的视频开始位置(0.0-1.0)
返回值: 无。
1.2.12 Airplay视频播放开始
void(*AirPlayPlayback_Play) (void *cls);
函数功能: Airplay 视频播放开始
输入参数: cls 用户回调句柄
返回值: 无。
2014-2016
©
XinDawn Tech
6 / 9
1.2.13 Airplay视频播放暂停
void(*AirPlayPlayback_Pause)(void *cls);
函数功能: Airplay 视频播放暂停
输入参数: cls 用户回调句柄
返回值: 无。
1.2.14 Airplay视频播放停止
void(*AirPlayPlayback_Stop) (void *cls);
函数功能: Airplay 视频播放停止
输入参数: cls 用户回调句柄
返回值: 无。
1.2.15 Airplay视频播放快进
void(*AirPlayPlayback_Seek)(void *cls,float fPosition);
函数功能: Airplay 视频播放快进
输入参数: cls 用户回调句柄
fPosition 视频播放跳转位置(0.0-1.0)
返回值: 无。
1.2.16 Airplay视频播放音量调节
void(*AirPlayPlayback_SetVolume)(void *cls,int volume);
函数功能: Airplay 视频播放音量调节
输入参数: cls 用户回调句柄
volume 音量大小(0-100)
返回值: 无。
注意: 当前没有调用
1.2.17 Airplay返回视频播放文件的总时长
long(*AirPlayPlayback_GetDuration)(void *cls);
函数功能: 返回当前播放视频的总时长
输入参数: cls 用户回调句柄
2014-2016
©
XinDawn Tech
7 / 9
返回值: 总时长(单位是ms)
1.2.18 Airplay返回视频播放文件的当前时间
long(*AirPlayPlayback_GetPostion)(void *cls);
函数功能: 返回视频播放的当前时间
输入参数: cls 用户回调句柄
返回值: 当前播放时间(单位是ms)
1.2.19 Airplay返回当前视频是否在播放状态
int(*AirPlayPlayback_IsPlaying)(void *cls);
函数功能: 返回当前视频播放是否在播放状态
输入参数: cls 用户回调句柄
返回值: 0/1
1.2.20 Airplay返回当前视频是否在暂停状态
int(*AirPlayPlayback_IsPaused)(void *cls);
函数功能: 返回当前视频播放是否在暂停状态
输入参数: cls 用户回调句柄
返回值: 0/1
1.2.21 Airplay图片播放
void(*AirPlayPlayback_ShowPhoto)(void *cls, unsigned char *data, long long size);
函数功能: Airplay 图片播放
输入参数: cls 用户回调句柄
data 图像数据输出缓冲区指针
size 图像数据长度
返回值: 无。
注意: 图片数据为JPEG 格式
2014-2016
©
XinDawn Tech
8 / 9
2014-2016
©
XinDawn Tech
9 / 9