HTML header:

Magewell Pro Capture 系列采集卡

软件开发指南 for Linux

版权所有 2011–2016 南京美乐威电子科技有限公司 保留所有权利。

最后更新时间 2016–02–17

1 开发简介

本文主要介绍如何在 Linux 平台下开发基于 Pro Capture 系列采集卡的应用软件。

1.1 编程接口

一般来说,开发人员主要使用以下两种编程接口进行开发:

以上两种方法可以独立使用,也可以组合使用,开发人员可以根据实际需要进行选择。

1.2 I/O Control 功能特性

基于 I/O Control 编程接口开发应用软件,可以实现以下功能特性:

把图像数据分行传输,信号延时仅为输入 64 行图像信号所需的时间。

对于同一个采集设备能够创建多个采集实例,每个实例拥有不同的采集大小和色彩空间,每个采集设备保留 400MB–700MB 的独享传输带宽,用户在使用上能够更加灵活。

支持 AYUV、V408、Y410、V410、RGB10、BGR10 等色彩格式的图像采集。

精度为 100 纳秒的板载时钟为采集到的所有音视频帧提供的时间信息,并且支持网络上多个采集设备之间的时钟同步处理。

支持 RGBA 格式的文本或图片通过硬件实时合成到采集画面上,并且可以实现多个采集画面合成叠加,形成画中画(PIP)或者分屏(PAP)效果。

支持获取 HDMI 原始 InfoFrame 数据包,包括 AVI、Audio、SPD、MS、VS、ACP 等等,可以从中获取时间码等的各类扩展信息。

支持 IEC60958/IEC61937 格式的音频数据采集,包括 5.1 声道、7.1 声道、DTS、THX、SRS 等原始音频格式和 AAC、MP3 等各种压缩音频格式。

支持版载固件通过 API 调用方式进行升级,便于用户进行深度集成,以及实现远程升级等功能。

2 示例介绍

本节主要介绍开发包内提供的各项示例代码

2.1 I/O Control 示例

3 I/O Control 开发接口

本节主要介绍 I/O Control 编程接口。其主要开发按以下步骤进行:

3.1 开发步骤

I/O Control 开发主要按以下步骤进行:

3.2 I/O Control 控制指令

I/O Control 控制指令定义在 inc 目录的 mw-linux.h 中,它包含以下几类指令:

3.2.1 设备流信息获取指令

Pro Capture 系列采集设备在驱动程序安装后,会在 /dev 目录下生成若干个 video* 设备(* 为从0开始的数字)。 每个 video* 设备对应一个采集通道,每个采集通道可以同时被打开多次,设备流定义为对某个采集通道的一次打开操作。 以下控制指令用于获取当前设备的设备流信息。

名称 注释
MWCAP_IOCTL_GET_STREAMS_COUNT 获取当前设备的设备流数目
MWCAP_IOCTL_GET_STREAMS_INFO 获取当前设备的设备流详细信息,参见 3.3.2 MWCAP_STREAMS_INFO
MWCAP_IOCTL_GET_CTRL_STREAM_ID 获取当前控制的设备流 ID
MWCAP_IOCTL_SET_CTRL_STREAM_ID 设置当前控制的设备流 ID
MWCAP_IOCTL_GET_SELF_STREAM_ID 获取当前设备的设备流 ID

3.2.2 设备信息获取指令;

名称 注释
MWCAP_IOCTL_GET_CHANNEL_INFO 获取当前采集通道的信息,参见 3.3.3 MWCAP_CHANNEL_INFO
MWCAP_IOCTL_GET_FAMILY_INFO 获取当前采集通道的设备类型信息,参见 3.3.4 MWCAP_PRO_CAPTURE_INFO
MWCAP_IOCTL_GET_VIDEO_CAPS 获取当前视频通道的支持特性, 参见 3.3.5 MWCAP_VIDEO_CAPS
MWCAP_IOCTL_GET_AUDIO_CAPS 获取当前音频通道的支持特性,参见 3.3.6 MWCAP_AUDIO_CAPS

3.2.3 固件升级指令;

名称 注释
MWCAP_IOCTL_GET_FIRMWARE_STORAGE 获取当前通道的固件存储信息, 参见 3.3.7 MWCAP_FIRMWARE_STORAGE
MWCAP_IOCTL_SET_FIRMWARE_ERASE 插除当前通道的固件存储区域, 参见 3.3.8 MWCAP_FIRMWARE_ERASE
MWCAP_IOCTL_SET_FIRMWARE_DATA 向当前通道的固件存储区域写入数据,参见 3.3.9 MWCAP_FIRMWARE_DATA
MWCAP_IOCTL_GET_FIRMWARE_DATA 从当前通道的固件存储区域读取数据, 参见3.3.9 MWCAP_FIRMWARE_DATA

3.2.4 硬件时钟指令;

名称 注释
MWCAP_IOCTL_GET_TIME 获取当前通道的硬件时钟
MWCAP_IOCTL_SET_TIME 设置当前通道的硬件时钟
MWCAP_IOCTL_TIME_REGULATION 校准当前通道的硬件时钟
MWCAP_IOCTL_TIMER_REGISTRATION 注册时钟调度对象
MWCAP_IOCTL_TIMER_DEREGISTRATION 注消时钟调度对象
MWCAP_IOCTL_TIMER_EXPIRE_TIME 设置时钟调度对象失效时间,参见 3.3.10 MWCAP_TIMER_EXPIRE_TIME
MWCAP_IOCTL_TIMER_WAIT 等待时钟调度对象失效,参见 3.3.11 MWCAP_TIMER_WAIT
MWCAP_IOCTL_TIMER_CANCEL 取消最后一次等待时钟调度对象失效

3.2.5 异步通知指令;

名称 注释
MWCAP_IOCTL_NOTIFY_REGISTRATION 注册异步事件通知对象,参见 3.3.12 MWCAP_NOTIFY_REGISTRATION_S
MWCAP_IOCTL_NOTIFY_DEREGISTRATION 注销异步事件通知对象
MWCAP_IOCTL_NOTIFY_STATUS 获取事件通知的状态,参见 3.3.13 MWCAP_NOTIFY_STATUS
MWCAP_IOCTL_NOTIFY_WAIT 等待异步通知事件返回,参见3.3.14 MWCAP_NOTIFY_WAIT
MWCAP_IOCTL_NOTIFY_CANCEL 取消最后一次等待异步通知事件返回
MWCAP_IOCTL_NOTIFY_ENABLE 使异步事件类型值生效,参见 3.3.15 MWCAP_NOTIFY_ENABLE

3.2.6 音视频采集指令;

名称 注释
MWCAP_IOCTL_GET_VIDEO_BUFFER_INFO 获取视频缓冲信息,参见 3.3.16 MWCAP_VIDEO_BUFFER_INFO
MWCAP_IOCTL_GET_VIDEO_FRAME_INFO 获取视频帧信息, 参见 3.3.17 MWCAP_VIDEO_FRAME_INFO
MWCAP_IOCTL_VIDEO_CAPTURE_OPEN 启动通道的视频采集
MWCAP_IOCTL_VIDEO_CAPTURE_FRAME 采集一帧视频数据, 参见 3.3.18 MWCAP_VIDEO_CAPTURE_FRAME
MWCAP_IOCTL_VIDEO_CAPTURE_STATUS 获取视频采集状态, 参见 3.3.19 MWCAP_VIDEO_CAPTURE_STATUS
MWCAP_IOCTL_VIDEO_CAPTURE_CLOSE 关闭通道的视频采集
MWCAP_IOCTL_AUDIO_CAPTURE_OPEN 启动通道的音频采集
MWCAP_IOCTL_AUDIO_CAPTURE_FRAME 采集一帧音频数据,参见 3.3.20 MWCAP_AUDIO_CAPTURE_FRAME
MWCAP_IOCTL_AUDIO_CAPTURE_CLOSE 关闭通道的音频采集

3.2.7 采集通道输入指令;

名称 注释
MWCAP_IOCTL_VIDEO_INPUT_SOURCE_COUNT 获取视频通道的输入接口数目
MWCAP_IOCTL_VIDEO_INPUT_SOURCE_ARRAY 获取视频通道的输入接口,参见 3.3.21 MWCAP_INPUT_SOURCE_ARRAY
MWCAP_IOCTL_AUDIO_INPUT_SOURCE_COUNT 获取音频通道的输入接口数目
MWCAP_IOCTL_AUDIO_INPUT_SOURCE_ARRAY 获取音频通道的输入接口,参见 3.3.21 MWCAP_INPUT_SOURCE_ARRAY
MWCAP_IOCTL_SET_INPUT_SOURCE_SCAN 设置视频输入是否自动扫描
MWCAP_IOCTL_GET_INPUT_SOURCE_SCAN 获取视频输入是否自动扫描
MWCAP_IOCTL_GET_INPUT_SOURCE_SCAN_STATE 获取采集通道的输入接口扫描状态
MWCAP_IOCTL_SET_AV_INPUT_SOURCE_LINK 设置音频是否自动连接到视频输入
MWCAP_IOCTL_GET_AV_INPUT_SOURCE_LINK 获取音频是否自动连接到视频输入
MWCAP_IOCTL_SET_VIDEO_INPUT_SOURCE 设置该通道当前视频输入源,参见 3.4.16 MWCAP_VIDEO_INPUT_TYPE
MWCAP_IOCTL_GET_VIDEO_INPUT_SOURCE 获取该通道当前视频输入源,参见 3.4.16 MWCAP_VIDEO_INPUT_TYPE
MWCAP_IOCTL_SET_AUDIO_INPUT_SOURCE 设置该通道当前音频输入源,参见 3.4.17 MWCAP_AUDIO_INPUT_TYPE
MWCAP_IOCTL_GET_AUDIO_INPUT_SOURCE 获取该通道当前音频输入源,参见 3.4.17 MWCAP_AUDIO_INPUT_TYPE

3.2.8 信号状态指令;

名称 注释
MWCAP_IOCTL_GET_INPUT_SPECIFIC_STATUS 获取该通道的输入信号状态,参见 3.3.28 MWCAP_INPUT_SPECIFIC_STATUS
MWCAP_IOCTL_GET_VIDEO_SIGNAL_STATUS 获取视频输入信号的状态, 参见 3.3.29 MWCAP_VIDEO_SIGNAL_STATUS
MWCAP_IOCTL_GET_AUDIO_SIGNAL_STATUS 获取音频输入信号的状态,参见 3.3.30 MWCAP_AUDIO_SIGNAL_STATUS
MWCAP_IOCTL_GET_HDMI_INFOFRAME_VALID 获取 HDMI InfoFrame 有效状态, 参见 3.4.13 MWCAP_HDMI_INFOFRAME_ID
MWCAP_IOCTL_GET_HDMI_INFOFRAME_PACKET 获取 HDMI 信息帧的数据,参见 3.3.32 HDMI_INFOFRAME_PACKET

3.2.9 视频处理指令

名称 注释
MWCAP_IOCTL_GET_VIDEO_INPUT_ASPECT_RATIO 获取视频输入信号的宽高比,参见 3.3.33 MWCAP_VIDEO_ASPECT_RATIO
MWCAP_IOCTL_SET_VIDEO_INPUT_ASPECT_RATIO 设置视频输入信号的宽高比,参见 3.3.33 MWCAP_VIDEO_ASPECT_RATIO
MWCAP_IOCTL_GET_VIDEO_INPUT_COLOR_FORMAT 获取视频输入信号的色彩空间格式,参见 3.4.4 MWCAP_VIDEO_COLOR_FORMAT
MWCAP_IOCTL_SET_VIDEO_INPUT_COLOR_FORMAT 设置视频输入信号的色彩空间格式,参见 3.4.4 MWCAP_VIDEO_COLOR_FORMAT
MWCAP_IOCTL_GET_VIDEO_INPUT_QUANTIZATION_RANGE 获取视频输入的量化范围, 参见 3.4.5 MWCAP_VIDEO_QUANTIZATION_RANGE
MWCAP_IOCTL_SET_VIDEO_INPUT_QUANTIZATION_RANGE 设置视频输入的量化范围, 参见 3.4.5 MWCAP_VIDEO_QUANTIZATION_RANGE

3.2.10 OSD 指令

名称 注释
MWCAP_IOCTL_VIDEO_CREATE_IMAGE 创建 OSD 图像,参见 3.3.34 MWCAP_VIDEO_CREATE_IMAGE
MWCAP_IOCTL_VIDEO_OPEN_IMAGE 打开 OSD 图像,参见 3.3.35 MWCAP_VIDEO_IMAGE_REF
MWCAP_IOCTL_VIDEO_CLOSE_IMAGE 关闭 OSD 图像,参见 3.3.35 MWCAP_VIDEO_IMAGE_REF
MWCAP_IOCTL_VIDEO_UPLOAD_IMAGE 上载图像到采集设备,参见 3.3.36 MWCAP_VIDEO_UPLOAD_IMAGE

3.2.11 时序指令

名称 注释
MWCAP_IOCTL_GET_VIDEO_AUTO_H_ALIGN 获取视频水平方向是否自动调整
MWCAP_IOCTL_SET_VIDEO_AUTO_H_ALIGN 设置视频水平方向是否自动调整
MWCAP_IOCTL_GET_VIDEO_SAMPLING_PHASE 获取视频采样相位大小
MWCAP_IOCTL_SET_VIDEO_SAMPLING_PHASE 设置视频采样相位大小
MWCAP_IOCTL_GET_VIDEO_SAMPLING_PHASE_AUTO 获取视频采样相位是否自动调整
MWCAP_IOCTL_SET_VIDEO_SAMPLING_PHASE_AUTO 设置视频采样相位是否自动调整
MWCAP_IOCTL_SET_VIDEO_TIMING 获取视频通道时序信息,参见 3.3.37 MWCAP_VIDEO_TIMING
MWCAP_IOCTL_GET_VIDEO_PREFERRED_TIMING_ARRAY 获取预设置视频时序参数,参见 3.3.37 MWCAP_VIDEO_TIMING
MWCAP_IOCTL_SET_VIDEO_CUSTOM_TIMING 设置自定义视频时序参数,参见 3.3.38 MWCAP_VIDEO_CUSTOM_TIMING
MWCAP_IOCTL_GET_VIDEO_CUSTOM_TIMING_COUNT 获取自定义视频时序个数
MWCAP_IOCTL_GET_VIDEO_CUSTOM_TIMING_ARRAY 获取自定义视频时序,参见 3.3.39 MWCAP_VIDEO_CUSTOM_TIMING_PAR
MWCAP_IOCTL_SET_VIDEO_CUSTOM_TIMING_ARRAY 设置自定义视频时序, 参见 3.3.39 MWCAP_VIDEO_CUSTOM_TIMING_PAR
MWCAP_IOCTL_GET_VIDEO_CUSTOM_RESOLUTION_COUNT 获取自定义视频分辨率个数
MWCAP_IOCTL_GET_VIDEO_CUSTOM_RESOLUTION_ARRAY 获取自定义视频分辨率,参见 3.3.40 MWCAP_VIDEO_CUSTOM_RESOLUTION_PAR
MWCAP_IOCTL_SET_VIDEO_CUSTOM_RESOLUTION_ARRAY 设置自定义视频分辨率,参见 3.3.40 MWCAP_VIDEO_CUSTOM_RESOLUTION_PAR

3.2.12 其他指令;

名称 注释
MWCAP_IOCTL_SET_LED_MODE 设置 LED 模式,参见 3.4.15 MWCAP_LED_MODE
MWCAP_IOCTL_SET_POST_RECONFIG 发送重读配置的指令,延迟执行
MWCAP_IOCTL_GET_CORE_TEMPERATURE 获取采集设备芯片温度
MWCAP_IOCTL_GET_EDID_DATA 获取 EDID 信息,参见 3.3.41 MWCAP_EDID_DATA
MWCAP_IOCTL_SET_EDID_DATA 设置 EDID 信息,参见 3.3.41 MWCAP_EDID_DATA

3.2.13 V4L2 控制指令

名称 注释
MWCAP_IOCTL_GET_VIDEO_CONNECTION_FORMAT 获取视频采集格式信息,参见 3.3.42 MWCAP_VIDEO_CONNECTION_FORMAT
MWCAP_IOCTL_GET_VIDEO_PROCESS_SETTINGS 获取视频采集处理配置参数,参见 3.3.43 MWCAP_VIDEO_PROCESS_SETTINGS
MWCAP_IOCTL_SET_VIDEO_PROCESS_SETTINGS 设置视频采集处理配置参数,参见 3.3.43 MWCAP_VIDEO_PROCESS_SETTINGS
MWCAP_IOCTL_GET_VIDEO_OSD_SETTINGS 获取视频采集 OSD 配置参数,参见 3.3.44 MWCAP_VIDEO_OSD_SETTINGS
MWCAP_IOCTL_SET_VIDEO_OSD_SETTINGS 设置视频采集 OSD 配置参数,参见 3.3.44 MWCAP_VIDEO_OSD_SETTINGS
MWCAP_IOCTL_GET_VIDEO_OSD_IMAGE 获取视频采集 OSD 图像区域,参见 3.3.45 MWCAP_VIDEO_OSD_IMAGE
MWCAP_IOCTL_SET_VIDEO_OSD_IMAGE 设置视频采集 OSD 图像区域,参见 3.3.45 MWCAP_VIDEO_OSD_IMAGE
MWCAP_IOCTL_GET_BRIGHTNESS 获取视频采集亮度
MWCAP_IOCTL_SET_BRIGHTNESS 设置视频采集亮度
MWCAP_IOCTL_GET_CONTRAST 获取视频采集对比度
MWCAP_IOCTL_SET_CONTRAST 设置视频采集对比度
MWCAP_IOCTL_GET_HUE 获取视频采集色度
MWCAP_IOCTL_SET_HUE 设置视频采集色度
MWCAP_IOCTL_GET_SATURATION 获取视频采集饱和度
MWCAP_IOCTL_SET_SATURATION 设置视频采集饱和度

3.3 I/O Control 结构定义

3.3.1 MWCAP_STREAM_INFO

3.3.2 MWCAP_STREAMS_INFO

3.3.3 MWCAP_CHANNEL_INFO

3.3.4 MWCAP_PRO_CAPTURE_INFO

3.3.5 MWCAP_VIDEO_CAPS

3.3.6 MWCAP_AUDIO_CAPS

3.3.7 MWCAP_FIRMWARE_STORAGE

3.3.8 MWCAP_FIRMWARE_ERASE

3.3.9 MWCAP_FIRMWARE_DATA

3.3.10 MWCAP_TIMER_EXPIRE_TIME

3.3.11 MWCAP_TIMER_WAIT

3.3.12 MWCAP_NOTIFY_REGISTRATION_S

3.3.13 MWCAP_NOTIFY_STATUS

3.3.14 MWCAP_NOTIFY_WAIT

3.3.15 MWCAP_NOTIFY_ENABLE

3.3.16 MWCAP_VIDEO_BUFFER_INFO

3.3.17 MWCAP_VIDEO_FRAME_INFO

3.3.18 MWCAP_VIDEO_CAPTURE_FRAME

3.3.19 MWCAP_VIDEO_CAPTURE_STATUS

3.3.20 MWCAP_AUDIO_CAPTURE_FRAME

3.3.21 MWCAP_INPUT_SOURCE_ARRAY

3.3.22 MWCAP_HDMI_VIDEO_TIMING

3.3.23 MWCAP_VIDEO_TIMING_SETTINGS

3.3.24 MWCAP_SDI_SPECIFIC_STATUS

3.3.25 MWCAP_HDMI_SPECIFIC_STATUS

3.3.26 MWCAP_COMPONENT_SPECIFIC_STATUS

3.3.27 MWCAP_CVBS_YC_SPECIFIC_STATUS

3.3.28 MWCAP_INPUT_SPECIFIC_STATUS

3.3.29 MWCAP_VIDEO_SIGNAL_STATUS

3.3.30 MWCAP_AUDIO_SIGNAL_STATUS

3.3.31 HDMI_INFOFRAME_HEADER

3.3.32 HDMI_INFOFRAME_PACKET

3.3.33 MWCAP_VIDEO_ASPECT_RATIO

3.3.34 MWCAP_VIDEO_CREATE_IMAGE

3.3.35 MWCAP_VIDEO_IMAGE_REF

3.3.36 MWCAP_VIDEO_UPLOAD_IMAGE

3.3.37 MWCAP_VIDEO_TIMING

3.3.38 MWCAP_VIDEO_CUSTOM_TIMING

3.3.39 MWCAP_VIDEO_CUSTOM_TIMING_PAR

3.3.40 MWCAP_VIDEO_CUSTOM_RESOLUTION_PAR

3.3.41 MWCAP_EDID_DATA

3.3.42 MWCAP_VIDEO_CONNECTION_FORMAT

3.3.43 MWCAP_VIDEO_PROCESS_SETTINGS

3.3.44 MWCAP_VIDEO_OSD_SETTINGS

3.3.45 MWCAP_VIDEO_OSD_IMAGE

3.4 I/O Control 枚举定义

3.4.1 MW_FAMILY_ID

3.4.2 MWCAP_PRODUCT_ID

3.4.3 MWCAP_VIDEO_FRAME_STATE

3.4.4 MWCAP_VIDEO_COLOR_FORMAT

3.4.5 MWCAP_VIDEO_QUANTIZATION_RANGE

3.4.6 MWCAP_VIDEO_DEINTERLACE_MODE

3.4.7 MWCAP_VIDEO_ASPECT_RATIO_CONVERT_MODE

3.4.8 MWCAP_SD_VIDEO_STANDARD

3.4.9 MWCAP_VIDEO_SIGNAL_STATE

3.4.10 MWCAP_VIDEO_FRAME_TYPE

3.4.11 MWCAP_VIDEO_SATURATION_RANGE

3.4.12 MWCAP_HDMI_INFOFRAME_ID

3.4.13 MWCAP_HDMI_INFOFRAME_ID

3.4.14 MWCAP_VIDEO_TIMING_TYPE

3.4.15 MWCAP_LED_MODE

3.4.16 MWCAP_VIDEO_INPUT_TYPE

3.4.17 MWCAP_AUDIO_INPUT_TYPE