Media Process Platform (MPP) module
Go to file
2015-08-04 07:41:43 +00:00
build [cmake/android]: add build script on Android 2015-08-04 07:26:24 +00:00
inc [directory]: change directory structure 2015-08-03 01:31:27 +00:00
mpp [mpp]: add empty mpp.c 2015-08-03 01:40:39 +00:00
osal [osal]: add LOG_TAG for c/cpp file 2015-08-04 07:41:43 +00:00
CMakeLists.txt [cmake]: expand tab to space, add Android link configure for osal 2015-08-04 07:17:56 +00:00
readme.txt [readme]: update directory structure in readme.txt 2015-07-28 12:42:55 +00:00

Media Process Platform (MPP) module directory description:

MPP    : Media Process Platform
MPI    : Media Process Interface
HAL    : Hardware Abstract Layer
OSAL   : Operation System Abstract Layer

Rules:
1. header file arrange rule
a. inc directory in each module folder is for external module usage.
b. module internal header file should be put along with the implement file.
c. header file should not contain any relative path or absolute path, all include path should be keep in Makefile.
2. compiling system rule
a. for cross platform compiling use cmake as the compiling management system.
b. use cmake out-of-source build, final binary and library will be install to out/ directory.

NOTE:
1. when run on window pthreadVC2.dll needed to be copied to the system directory.

----                     top
   |
   |----- build          CMake out-of-source build directory
   |  |
   |  |----- cmake       cmake script directory
   |  |
   |  |----- android     android build directory
   |  |
   |  |----- linux       linux build directory
   |  |
   |  |----- vc12-x86_64 visual studio 2013 on x86_64 build directory
   |
   |----- inc            header file for external usage, including platform header and mpi header
   |
   |----- mpi            Media Process Interface: the api function implement in public (vpu_api layer)
   |
   |----- mpp            Media Process Platform : mpi function private implement and mpp infrastructure (vpu_api private layer)
   |  |
   |  |----- dec         general decoder loop module
   |  |
   |  |----- enc         general encoder loop module
   |
   |----- test           mpi/mpp unit test files and mpi demo files
   |
   |----- out            final release binary output directory
   |  |
   |  |----- bin         executable binary file output directory
   |  |
   |  |----- inc         header file output directory
   |  |
   |  |----- lib         library file output directory
   |
   |----- hal            Hardware Abstract Layer (HAL): modules used in mpi
   |  |
   |  |----- inc         header files provided by hal for external usage
   |  |
   |  |----- iep         iep user library
   |  |
   |  |----- pp          post-processor user library
   |  |
   |  |----- rga         rga user library
   |  |
   |  |----- deinter     deinterlace function module including pp/iep/rga
   |  |
   |  |----- rkdec       rockchip hardware decoder register generation library
   |  |  |
   |  |  |----- h264d    generate register file from H.264 structure created by codec parser
   |  |  |
   |  |  |----- h265d    generate register file from H.265 structure created by codec parser
   |  |  |
   |  |  |----- vp9d     generate register file from vp9 structure created by codec parser
   |  |
   |  |----- vpu         vpu register generation library
   |     |
   |     |----- h264d    generate register file from H.264 structure created by codec parser
   |     |
   |     |----- h265d    generate register file from H.265 structure created by codec parser
   |
   |----- osal           Operation System Abstract Layer: abstract layer for different operation system
   |  |
   |  |----- mem     	 mpi memory subsystem for hardware
   |  |
   |  |----- android     google's android
   |  |
   |  |----- linux       mainline linux kernel
   |  |
   |  |----- window      microsoft's window
   |  |
   |  |----- test        OASL unit test
   |
   |----- codec          all video codec parser, convert stream to protocol structure
      |
      |----- inc         header files provided by codec module for external usage
	  |
	  |----- dec
      |  |
      |  |----- h264
      |  |
      |  |----- h265
      |  |
      |  |----- vp9
	  |  |
      |  |----- jpeg
	  |
	  |----- enc
         |
         |----- h264
         |
         |----- h265
         |
         |----- jpeg

Here is the mpp implement overall framework:

	+-------------------------+    +--------+
	|                         |    |        |
	|        MPI / MPP        |    |        |
	|   buffer queue manage   |    |        |
	|                         |    |        |
	+-------------------------+    |        |
								   |        |
	+-------------------------+    |        |
	|                         |    |        |
	|          codec          |    |  OSAL  |
	|    decoder / encoder    |    |        |
	|                         |    |        |
	+-------------------------+    |        |
								   |        |
	+-----------+ +-----------+    |        |
	|           | |           |    |        |
	|  parser   | |    HAL    |    |        |
	|  recoder  | |  reg_gen  |    |        |
	|           | |           |    |        |
	+-----------+ +-----------+    +--------+


Take H.264 deocder for example. Video stream will first queued by MPI/MPP layer, MPP will send the stream to codec layer,
codec layer parses the stream header and generates a protocol standard output. This output will be send to HAL to generate
register file set and communicate with hardware. Hardware will complete the task and resend information back. MPP notify
codec by hardware result, codec output decoded frame by display order.

MPI                MPP              decoder             parser              HAL

 +                  +                  +                  +                  +
 |                  |                  |                  |                  |
 |   open context   |                  |                  |                  |
 +----------------> |                  |                  |                  |
 |                  |                  |                  |                  |
 |       init       |                  |                  |                  |
 +----------------> |                  |                  |                  |
 |                  |                  |                  |                  |
 |                  |       init       |                  |                  |
 |                  +----------------> |                  |                  |
 |                  |                  |                  |                  |
 |                  |                  |       init       |                  |
 |                  |                  +----------------> |                  |
 |                  |                  |                  |                  |
 |                  |                  |                  |       open       |
 |                  |                  +-----------------------------------> |
 |                  |                  |                  |                  |
 |      decode      |                  |                  |                  |
 +----------------> |                  |                  |                  |
 |                  |                  |                  |                  |
 |                  |   send_stream    |                  |                  |
 |                  +----------------> |                  |                  |
 |                  |                  |                  |                  |
 |                  |                  |   parse_stream   |                  |
 |                  |                  +----------------> |                  |
 |                  |                  |                  |                  |
 |                  |                  |                  |  reg generation  |
 |                  |                  +-----------------------------------> |
 |                  |                  |                  |                  |
 |                  |                  |                  |    send_regs     |
 |                  |                  +-----------------------------------> |
 |                  |                  |                  |                  |
 |                  |                  |                  |    wait_regs     |
 |                  |                  +-----------------------------------> |
 |                  |                  |                  |                  |
 |                  |                  |  notify_hw_end   |                  |
 |                  |                  +----------------> |                  |
 |                  |                  |                  |                  |
 |                  |   get_picture    |                  |                  |
 |                  +----------------> |                  |                  |
 |                  |                  |                  |                  |
 |                  |                  |   get_picture    |                  |
 |                  |                  +----------------> |                  |
 |                  |                  |                  |                  |
 |      flush       |                  |                  |                  |
 +----------------> |                  |                  |                  |
 |                  |                  |                  |                  |
 |                  |      flush       |                  |                  |
 |                  +----------------> |                  |                  |
 |                  |                  |                  |                  |
 |                  |                  |      reset       |                  |
 |                  |                  +----------------> |                  |
 |                  |                  |                  |                  |
 |      close       |                  |                  |                  |
 +----------------> |                  |                  |                  |
 |                  |                  |                  |                  |
 |                  |      close       |                  |                  |
 |                  +----------------> |                  |                  |
 |                  |                  |                  |                  |
 |                  |                  |      close       |                  |
 |                  |                  +----------------> |                  |
 |                  |                  |                  |                  |
 |                  |                  |                  |      close       |
 |                  |                  +-----------------------------------> |
 +                  +                  +                  +                  +