# HiStreamer - [HiStreamer](#histreamer) - [Introduction](#introduction) - [Logical architecture](#logical-architecture) - [List of plug-ins](#plugin-list) - [Directory Structure](#directory-structure) - [Repositories Involved](#repositories-involved) ## Introduction HiStreamer is the foundation module of the multimedia subsystem. It provides a processing pipeline and plug-ins required by the media framework, such as the file source, codecs, muxer and demuxer, and audio and video data processor. ## Logical architecture As a media engine, HiStreamer connects to player_framework (on a Standard device) or media_lite (on a Mini or Small device) and provides application apis externally. It is divided into three layers: - Application scenario Encapsulation layer: for example, HiPlayer and HiRecorder. - Pipeline framework layer: including Pipeline framework, each Filter node implementation. - Plug-in layer: includes plug-in framework, various plug-ins. ![Logical architecture diagram](images/histreamer_architecture.png) ## Plugin list The HiStreamer plug-in list is as follows: | The plug-in name | path |External dependencies | License | function | applicable scene | | -- | -- | -- | -- | -- | -- | | FFMPEG Adapter| plugins/ffmpeg_adapter | FFMPEG | LGPL etc. | Decapsulation: mp3, m4a, mp4, wav
Decode: mp3, aac |Small/Standard devices that support dynamic linking | | File Source | plugins/source/file_source | FileSystem | Apache | Reading file data | All the device | | Minimp3 Adapter | plugins/minimp3_adapter | minimp3 | CC0 | Decapsulation: mp3
decode : mp3 | All the device | | Minimp4 Demuxer | plugins/demuxer/minimp4_demuxer | minimp4 | CC0 | Decapsulation: m4a | All the device | | Aac Demuxer | plugins/demuxer/aac_demuxer | NA | Apache | Decapsulation: aac | All the device | | HDI Sink | plugins/hdi_adapter | Audio HDI | Apache | play music | mini/small device| ## Directory Structure The structure of the repository directory is as follows: ``` /foundation/multimedia/histreamer ├── LICENSE # License file └── ohos.build # Build file /foundation/multimedia/histreamer # HiStreamer media engine component business code ├─LICENSE # The license file ├─engine # The engine code │ ├─foundation # Basic tool classes, including OS adaptation │ ├─pipeline framework # pipeline frame │ │ ├─core # pipeline core implementation │ │ ├─factory # filter factory │ │ └─filters # Several filter node implementations │ │ ├─codec # Codec node implementation │ │ ├─demux # Decapsulation node implementation │ │ ├─sink # Output node implementation │ │ └─source # Data source node implementation │ ├─player # Player package │ └─plugin # plug-in │ ├─common # The underlying type definitions on which the plug-in interface depends │ ├─core # Plug-in framework │ ├─interface # Plug-in interface │ └─plugins # Several plug-in implementations │ ├─minimp3_adapter # minimp3 adapter │ ├─ffmpeg_adapter # FFMPEG adaption (adaption into encapsulation and decapsulation, codec plug-in) │ ├─hdi_adapter # HDI adapter (adapter to output plug-in) │ ├─demuxer # Unpack plugin │ ├─sink # Output plug-in │ └─source # Data source plug-in └─interface # Engine external interface ``` ## Repositories Involved - [multimedia Subsystem](https://gitee.com/openharmony/docs/blob/master/en/readme/multimedia.md) - [player_framework](https://gitee.com/openharmony/multimedia_player_framework) - [media_lite](https://gitee.com/openharmony/multimedia_media_lite) - **multimedia_histreamer**