# Format - [简介](#section11660541593) - [目录](#section161941989596) - [接口说明](#section1551164914237) - [使用说明](#section129654513264) - [相关仓](#section1371113476307) ## 简介 该仓下主要包含Format模块HDI(Hardware Driver Interface)接口定义及其实现,对上层提供媒体文件复用和解复用的驱动能力接口,HDI接口主要提供如下功能: - 创建、销毁复用和解复用器对象; - 启停复用和解复用器 - 获取片源属性; - 获取片源流数据帧信息 - 添加流和数据帧到复用器。 ## 目录 该仓下源代码目录结构如下所示 ``` /drivers/peripheral/format ├── interfaces # format模块对上层服务提供的驱动能力接口 │ └── include # format模块对外提供的接口定义 ``` ### 接口说明 Format驱动提供给framework层可直接调用的能力接口,主要功能有:创建、销毁复用器和解复用器对象,启停复用和解复用操作、获取片源属性、从片源读取数据帧处理、添加流和数据帧到复用器、事件上报等 提供的部分接口说明如[表1 Format HDI接口列表](#table1513255710559)所示: **表 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的规范性,保证生态良性演进。 具体接口调用及实现,以接口注释为准。 ## 相关仓 [驱动子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E9%A9%B1%E5%8A%A8%E5%AD%90%E7%B3%BB%E7%BB%9F.md) [drivers\_framework](https://gitee.com/openharmony/drivers_framework/blob/master/README_zh.md) [drivers\_adapter](https://gitee.com/openharmony/drivers_adapter/blob/master/README_zh.md) [drivers\_adapter\_khdf\_linux](https://gitee.com/openharmony/drivers_adapter_khdf_linux/blob/master/README_zh.md) [drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral)