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![Logical architecture diagram](images/media_foundation_architecture.png)
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**