2 Star 0 Fork 972

zhao_haipeng / drivers_peripheral_1

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_zh.md 20.87 KB
一键复制 编辑 原始数据 按行查看 历史
NickYang 提交于 2022-03-09 14:44 . inner source review issues fix

Format

简介

该仓下主要包含Format模块HDI(Hardware Driver Interface)接口定义及其实现,对上层提供媒体文件复用和解复用的驱动能力接口,HDI接口主要提供如下功能:

  • 创建、销毁复用和解复用器对象;
  • 启停复用和解复用器
  • 获取片源属性;
  • 获取片源流数据帧信息
  • 添加流和数据帧到复用器。

目录

该仓下源代码目录结构如下所示

/drivers/peripheral/format
├── interfaces         # format模块对上层服务提供的驱动能力接口
│   └── include       # format模块对外提供的接口定义

接口说明

Format驱动提供给framework层可直接调用的能力接口,主要功能有:创建、销毁复用器和解复用器对象,启停复用和解复用操作、获取片源属性、从片源读取数据帧处理、添加流和数据帧到复用器、事件上报等

提供的部分接口说明如表1 Format HDI接口列表所示:

表 1 Format HDI接口列表

头文件

接口名称

功能描述

format_interface.h

void FormatInit(void);

模块初始化处理

void FormatDeInit(void);

模块去初始化处理

int32_t FormatDemuxerCreate(const FormatSource *source, FormatHandle * const handle);

创建解复用器对象

int32_t FormatDemuxerSetParameter(const FormatHandle handle, int32_t trackId, const ParameterItem *metaData, int32_t metaDataCnt);

扩展接口,设置解复用器属性信息

int32_t FormatDemuxerGetParameter(const FormatHandle handle, int32_t trackId, ParameterItem *metaData);

扩展接口,获取解复用器属性信息

int32_t FormatDemuxerSetCallBack(const FormatHandle handle, const FormatCallback *callBack);

设置回调函数接口,用于事件上报

int32_t FormatDemuxerSetBufferConfig(const FormatHandle handle, const FormatBufferSetting *setting);

设置解复用器数据帧缓存大小信息(可选)

int32_t FormatDemuxerGetBufferConfig(const FormatHandle handle, FormatBufferSetting *setting);

获取解复用器数据帧缓存大小信息(可选)

int32_t FormatDemuxerPrepare(const FormatHandle handle);

准备工作处理,完成片源属性探测处理

int32_t FormatDemuxerGetFileInfo(const FormatHandle handle, FileInfo *info);

获取片源属性。

int32_t FormatDemuxerSelectTrack(const FormatHandle handle, int32_t programId, int32_t trackId);

选择某个轨道。(通过FormatDemuxerReadFrame接口可以读取到对应轨道数据帧)

int32_t FormatDemuxerUnselectTrack(const FormatHandle handle, int32_t programId, int32_t trackId);

不选择某个轨道。(通过FormatDemuxerReadFrame接口不会读取到对应轨道数据帧)

int32_t FormatDemuxerStart(const FormatHandle handle);

启动工作。调用该接口后可读取到数据帧处理

int32_t FormatDemuxerGetSelectedTrack(const FormatHandle handle, int32_t *programId, int32_t trackId[], int32_t *nums);

获取当前已选择的轨道

int32_t FormatDemuxerReadFrame(const FormatHandle handle, FormatFrame *frame, int32_t timeOutMs);

读取数据帧

int32_t FormatDemuxerFreeFrame(const FormatHandle handle, FormatFrame *frame);

释放数据帧

int32_t FormatDemuxerSeek(const FormatHandle handle, int32_t streamIndex, int64_t timeStampUs, FormatSeekMode mode);

拖动到指定位置附近

int32_t FormatDemuxerStop(const FormatHandle handle);

解复用器停止工作

int32_t FormatDemuxerDestory(const FormatHandle handle);

销毁解复用器对象

int32_t FormatMuxerCreate(FormatHandle * const handle, const FormatOutputConfig *outputConfig);

创建复用器对象

int32_t FormatMuxerDestory(const FormatHandle handle);

销毁复用器对象

int32_t FormatMuxerAddTrack(const FormatHandle handle, const TrackSource *trackSource);

添加复用器流

int32_t FormatMuxerSetCallBack(const FormatHandle handle, const FormatCallback *callBack);

设置复用器回调函数

int32_t FormatMuxerSetOrientation(const FormatHandle handle, int degrees);

设置视频角度信息

int32_t FormatMuxerSetLocation(const FormatHandle handle, int latitude, int longitude);

设置地理位置信息

int32_t FormatMuxerSetMaxFileSize(const FormatHandle handle, int64_t bytes);

设置复用器生成文件最大SIZE

int32_t FormatMuxerSetMaxFileDuration(const FormatHandle handle, int64_t durationUs);

设置复用器生成文件最大时长

int32_t FormatMuxerSetFileSplitDuration(const FormatHandle handle, ManualSplitType type, int64_t timestampUs, uint32_t durationUs);

设置手动切分片信息

int32_t FormatMuxerStart(const FormatHandle handle);

复用器启动工作

int32_t FormatMuxerWriteFrame(const FormatHandle handle, const FormatFrame *frameData);

写入数据帧

int32_t FormatMuxerSetNextOutputFile(const FormatHandle handle, int32_t fd);

设置下一个输出文件句柄fd

int32_t FormatMuxerStop(const FormatHandle handle, bool block);

复用器停止工作

int32_t FormatMuxerSetParameter(const FormatHandle handle, int32_t trackId, const ParameterItem *item, int32_t itemNum);

扩展接口,设置复用器属性

int32_t FormatMuxerGetParameter(const FormatHandle handle, int32_t trackId, ParameterItem *item, int32_t itemNum);

扩展接口,获取复用器属性

使用说明

该仓核心功能包括两个方面:

  • 提供Format HDI接口供framework层调用,实现片源复用与解复用功能。
  • 作为标准南向接口,保证南向OEM产商实现HDI-adapter的规范性,保证生态良性演进。

具体接口调用及实现,以接口注释为准。

相关仓

驱动子系统

drivers_framework

drivers_adapter

drivers_adapter_khdf_linux

drivers_peripheral

1
https://gitee.com/zhao_haipeng/drivers_peripheral_1.git
git@gitee.com:zhao_haipeng/drivers_peripheral_1.git
zhao_haipeng
drivers_peripheral_1
drivers_peripheral_1
master

搜索帮助