1fa7767c5Sopenharmony_ci# HiStreamer<a name="EN-US_TOPIC_0000001148809513"></a> 2fa7767c5Sopenharmony_ci 3fa7767c5Sopenharmony_ci- [HiStreamer<a name="EN-US_TOPIC_0000001148809513"></a>](#histreamer) 4fa7767c5Sopenharmony_ci - [Introduction<a name="section1158716411637"></a>](#introduction) 5fa7767c5Sopenharmony_ci - [Logical architecture<a name="section1158716411638"></a>](#logical-architecture) 6fa7767c5Sopenharmony_ci - [List of plug-ins<a name="section1158716411639"></a>](#plugin-list) 7fa7767c5Sopenharmony_ci - [Directory Structure<a name="section1158716411640"></a>](#directory-structure) 8fa7767c5Sopenharmony_ci - [Repositories Involved<a name="section1158716411641"></a>](#repositories-involved) 9fa7767c5Sopenharmony_ci 10fa7767c5Sopenharmony_ci## Introduction<a name="section1158716411637"></a> 11fa7767c5Sopenharmony_ci 12fa7767c5Sopenharmony_ciHiStreamer 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. 13fa7767c5Sopenharmony_ci 14fa7767c5Sopenharmony_ci## Logical architecture<a name="section1158716411638"></a> 15fa7767c5Sopenharmony_ciAs 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: 16fa7767c5Sopenharmony_ci- Application scenario Encapsulation layer: for example, HiPlayer and HiRecorder. 17fa7767c5Sopenharmony_ci- Pipeline framework layer: including Pipeline framework, each Filter node implementation. 18fa7767c5Sopenharmony_ci- Plug-in layer: includes plug-in framework, various plug-ins. 19fa7767c5Sopenharmony_ci 20fa7767c5Sopenharmony_ci 21fa7767c5Sopenharmony_ci 22fa7767c5Sopenharmony_ci## Plugin list<a name="section1158716411639"></a> 23fa7767c5Sopenharmony_ciThe HiStreamer plug-in list is as follows: 24fa7767c5Sopenharmony_ci| The plug-in name | path |External dependencies | License | function | applicable scene | 25fa7767c5Sopenharmony_ci| -- | -- | -- | -- | -- | -- | 26fa7767c5Sopenharmony_ci| FFMPEG Adapter| plugins/ffmpeg_adapter | FFMPEG | LGPL etc. | Decapsulation: mp3, m4a, mp4, wav<br>Decode: mp3, aac |Small/Standard devices that support dynamic linking | 27fa7767c5Sopenharmony_ci| File Source | plugins/source/file_source | FileSystem | Apache | Reading file data | All the device | 28fa7767c5Sopenharmony_ci| Minimp3 Adapter | plugins/minimp3_adapter | minimp3 | CC0 | Decapsulation: mp3<br>decode : mp3 | All the device | 29fa7767c5Sopenharmony_ci| Minimp4 Demuxer | plugins/demuxer/minimp4_demuxer | minimp4 | CC0 | Decapsulation: m4a | All the device | 30fa7767c5Sopenharmony_ci| Aac Demuxer | plugins/demuxer/aac_demuxer | NA | Apache | Decapsulation: aac | All the device | 31fa7767c5Sopenharmony_ci| HDI Sink | plugins/hdi_adapter | Audio HDI | Apache | play music | mini/small device| 32fa7767c5Sopenharmony_ci 33fa7767c5Sopenharmony_ci 34fa7767c5Sopenharmony_ci 35fa7767c5Sopenharmony_ci## Directory Structure<a name="section1158716411640"></a> 36fa7767c5Sopenharmony_ci 37fa7767c5Sopenharmony_ciThe structure of the repository directory is as follows: 38fa7767c5Sopenharmony_ci 39fa7767c5Sopenharmony_ci``` 40fa7767c5Sopenharmony_ci/foundation/multimedia/media_foundation # HiStreamer media engine component business code 41fa7767c5Sopenharmony_ci├─LICENSE # The license file 42fa7767c5Sopenharmony_ci├─engine # The engine code 43fa7767c5Sopenharmony_ci│ ├─foundation # Basic tool classes, including OS adaptation 44fa7767c5Sopenharmony_ci│ ├─include # Expose the necessary header files for calling histreamer in other modules, including calling pipeline/filter or calling plugins. 45fa7767c5Sopenharmony_ci│ │ ├─foundation # Basic tool library of histreamer, including logging, buffer tools, operating system adaptation, language extensions, etc. 46fa7767c5Sopenharmony_ci│ │ ├─pipeline # Header files for the pipeline framework, mainly the pipeline/filter interface. 47fa7767c5Sopenharmony_ci│ │ └─plugin # Header files for the "plugin" subfolder of the engine 48fa7767c5Sopenharmony_ci│ │ ├─common # Basic type header files required for plugin interfaces 49fa7767c5Sopenharmony_ci│ │ └─interface # Plugin interfaces 50fa7767c5Sopenharmony_ci│ ├─pipeline # pipeline framework 51fa7767c5Sopenharmony_ci│ │ ├─core # pipeline core implementation 52fa7767c5Sopenharmony_ci│ │ ├─factory # filter factory 53fa7767c5Sopenharmony_ci│ │ └─filters # Several filter node implementations 54fa7767c5Sopenharmony_ci│ │ ├─codec # Codec node implementation 55fa7767c5Sopenharmony_ci│ │ ├─common # Basic type definitions required by filters 56fa7767c5Sopenharmony_ci│ │ ├─demux # Decapsulation node implementation 57fa7767c5Sopenharmony_ci│ │ ├─muxer # Capsulation node implementation 58fa7767c5Sopenharmony_ci│ │ ├─sink # Output node implementation 59fa7767c5Sopenharmony_ci│ │ └─source # Data source node implementation 60fa7767c5Sopenharmony_ci│ ├─plugin # plug-in 61fa7767c5Sopenharmony_ci│ │ ├─common # The underlying type definitions on which the plug-in interface depends 62fa7767c5Sopenharmony_ci│ │ ├─core # Plug-in framework 63fa7767c5Sopenharmony_ci│ │ └─plugins # Several plug-in implementations 64fa7767c5Sopenharmony_ci│ │ ├─codec_adapter # Codec adapter 65fa7767c5Sopenharmony_ci│ │ ├─minimp3_adapter # minimp3 adapter 66fa7767c5Sopenharmony_ci│ │ ├─ffmpeg_adapter # FFMPEG adaption (adaption into encapsulation and decapsulation, codec plug-in) 67fa7767c5Sopenharmony_ci│ │ ├─hdi_adapter # HDI adapter (adapter to output plug-in) 68fa7767c5Sopenharmony_ci│ │ ├─lite_aac_decoder # Lite AAC decoder plugin 69fa7767c5Sopenharmony_ci│ │ ├─demuxer # Unpack plugin 70fa7767c5Sopenharmony_ci│ │ ├─sink # Output plug-in 71fa7767c5Sopenharmony_ci│ │ └─source # Data source plug-in 72fa7767c5Sopenharmony_ci│ ├─scene # Playback and recording scenes 73fa7767c5Sopenharmony_ci│ │ ├─common # Common basic type definitions 74fa7767c5Sopenharmony_ci│ │ ├─lite # interface implementation for integration with lite devices 75fa7767c5Sopenharmony_ci│ │ ├─player # Playback scene 76fa7767c5Sopenharmony_ci│ │ ├─recorder # Recording scene 77fa7767c5Sopenharmony_ci│ │ └─standard # interface implementation for integration with standard devices 78fa7767c5Sopenharmony_ci└─interface # Engine external interface 79fa7767c5Sopenharmony_ci``` 80fa7767c5Sopenharmony_ci 81fa7767c5Sopenharmony_ci## Repositories Involved<a name="section1158716411641"></a> 82fa7767c5Sopenharmony_ci 83fa7767c5Sopenharmony_ci- [multimedia Subsystem](https://gitee.com/openharmony/docs/blob/master/en/readme/multimedia.md) 84fa7767c5Sopenharmony_ci 85fa7767c5Sopenharmony_ci- [player_framework](https://gitee.com/openharmony/multimedia_player_framework) 86fa7767c5Sopenharmony_ci 87fa7767c5Sopenharmony_ci- [media_lite](https://gitee.com/openharmony/multimedia_media_lite) 88fa7767c5Sopenharmony_ci 89fa7767c5Sopenharmony_ci- **histreamer**