最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

XinDawn AirPlay SDK For Linux 接口说明文档 -

IT圈 admin 39浏览 0评论

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

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论