mirror of
				https://github.com/nyanmisaka/mpp.git
				synced 2025-10-31 04:26:39 +08:00 
			
		
		
		
	 de26a4a79e
			
		
	
	de26a4a79e
	
	
	
		
			
			Change-Id: I179a2a4568d581f26b4d55dc521f1db806f74d91 Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
		
			
				
	
	
		
			113 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| MPP (Media Process Platform) design (2016.10.12)
 | |
| ================================================================================
 | |
| 
 | |
| The mpp is a middleware library for Rockchip SoC's cross platform media process.
 | |
| The main purpose of mpp is to provide very high performance, high flexibility
 | |
| and expansibility on multimedia (mainly video and image) process.
 | |
| 
 | |
| The design target of mpp is to connect different Rockchip hardware kernel driver
 | |
| and different userspace application.
 | |
| 
 | |
| Rockchip has two sets of hardware kernel driver.
 | |
| 
 | |
| The first one is vcodec_service/vpu_service/mpp_service which is a high
 | |
| performance stateless frame base hardware kernel driver. This driver supports
 | |
| all available codecs that hardware can provide. This driver is used on Android/
 | |
| Linux.
 | |
| 
 | |
| The second one is v4l2 driver which is developed for ChromeOS. It currently
 | |
| supports H.264/H.265/vp8/vp9. This driver is used on ChomeOS/Linux.
 | |
| 
 | |
| Mpp plans to support serval userspace applications including OpenMax, FFmpeg,
 | |
| gstreamer, libva.
 | |
| 
 | |
| 
 | |
| Feature explaination
 | |
| ================================================================================
 | |
| 
 | |
| 1. Cross Platform
 | |
| The target OS platform including Android, Linux, ChromeOS and windows.  Mpp uses
 | |
| cmake to compile on different platform.
 | |
| 
 | |
| 2. High Performance
 | |
| Mpp supports sync / async interface to reduce the time blocked in interface. And
 | |
| mpp internally make hardware and software run parallelly. When hardware is
 | |
| running sofware will prepare next hardware task at the same time.
 | |
| 
 | |
| 3. High Flexibility
 | |
| mpi (Media Process Interface) is easy to extend by different control function.
 | |
| The input/output element packet/frame/buffer is easy to extend different
 | |
| components.
 | |
| 
 | |
| 
 | |
| System Diagram
 | |
| ================================================================================
 | |
| 
 | |
|                 +---------------------------------------+
 | |
|                 |                                       |
 | |
|                 | ffmpeg / OpenMax / gstreamer / libva  |
 | |
|                 |                                       |
 | |
|                 +---------------------------------------+
 | |
| 
 | |
|             +-------------------- MPP ----------------------+
 | |
|             |                                               |
 | |
|             |   +-------------------------+    +--------+   |
 | |
|             |   |                         |    |        |   |
 | |
|             |   |        MPI / MPP        |    |        |   |
 | |
|             |   |   buffer queue manage   |    |        |   |
 | |
|             |   |                         |    |        |   |
 | |
|             |   +-------------------------+    |        |   |
 | |
|             |                                  |        |   |
 | |
|             |   +-------------------------+    |        |   |
 | |
|             |   |                         |    |        |   |
 | |
|             |   |          codec          |    |  OSAL  |   |
 | |
|             |   |    decoder / encoder    |    |        |   |
 | |
|             |   |                         |    |        |   |
 | |
|             |   +-------------------------+    |        |   |
 | |
|             |                                  |        |   |
 | |
|             |   +-----------+ +-----------+    |        |   |
 | |
|             |   |           | |           |    |        |   |
 | |
|             |   |  parser   | |    HAL    |    |        |   |
 | |
|             |   |  control  | |  reg_gen  |    |        |   |
 | |
|             |   |           | |           |    |        |   |
 | |
|             |   +-----------+ +-----------+    +--------|   |
 | |
|             |                                               |
 | |
|             +-------------------- MPP ----------------------+
 | |
| 
 | |
|                 +---------------------------------------+
 | |
|                 |                                       |
 | |
|                 |                kernel                 |
 | |
|                 |       RK vcodec_service / v4l2        |
 | |
|                 |                                       |
 | |
|                 +---------------------------------------+
 | |
| 
 | |
| Mpp is composed of four main sub-modules:
 | |
| 
 | |
| OSAL (Operation System Abstraction Layer)
 | |
| This module shutters the differences between different operation systems and
 | |
| provide basic components including memory, time, thread, log and hardware memory
 | |
| allocator.
 | |
| 
 | |
| MPI (Media Process Interface) / MPP
 | |
| This module is on charge of interaction with external user. Mpi layer has two
 | |
| ways for user. The simple way - User can use put/get packet/frame function set.
 | |
| The advanced way - User has to config MppTask and use dequeue/enqueue funciton
 | |
| set to communicate with mpp. MppTask can carry different meta data and complete
 | |
| complex work.
 | |
| 
 | |
| Codec (encoder / decoder)
 | |
| This module implements the high efficiency internal work flow. The codec module
 | |
| provides a general call flow for different video format. Software process will
 | |
| be separated from hardware specified process. The software will communicate with
 | |
| hardware with a common task interface which combines the buffer information and
 | |
| codec specified infomation.
 | |
| 
 | |
| Parser/Controller and hal (Hardware Abstraction Layer)
 | |
| This layer provides the implement function call of different video format and
 | |
| different hardware. For decoder parser provide the video stream parse function
 | |
| and output format related syntax structure to hal. The hal will translate the
 | |
| syntax structure to register set on different hardware. Current hal supports
 | |
| vcodec_service kernel driver and plan to support v4l2 driver later.
 | |
| 
 | |
| 
 |