mpp's Introduction
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. 3. header file include order a. MODULE_TAG b. system header c. osal header d. module header 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 | | | |----- vc10-x86_64 visual studio 2010 on x86_64 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 | |----- mpp Media Process Platform : mpi function private implement and mpp infrastructure (vpu_api private layer) | | | |----- common video codec protocol syntax interface for both codec parser and hal | | | |----- codec all video codec parser, convert stream to protocol structure | | | | | |----- inc header files provided by codec module for external usage | | | | | |----- dec | | | | | | | |----- dummy decoder parser work flow sample | | | | | | | |----- h264 | | | | | | | |----- h265 | | | | | | | |----- vp9 | | | | | | | |----- jpeg | | | | | |----- enc | | | | | |----- dummy encoder controllor work flow sample | | | | | |----- h264 | | | | | |----- h265 | | | | | |----- jpeg | | | |----- 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 | | | |----- legacy generate new libvpu to include old vpuapi path and new mpp path | | | |----- test mpp internal video protocol unit test and demo | |----- test mpp buffer/packet component unit test and mpi demo | |----- out final release binary output directory | | | |----- bin executable binary file output directory | | | |----- inc header file output directory | | | |----- lib library file output directory | |----- 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 | |----- tools coding style format tools | |----- utils small util functions Here is the mpp implement overall framework: +-------------------------+ +--------+ | | | | | MPI / MPP | | | | buffer queue manage | | | | | | | +-------------------------+ | | | | +-------------------------+ | | | | | | | codec | | OSAL | | decoder / encoder | | | | | | | +-------------------------+ | | | | +-----------+ +-----------+ | | | | | | | | | parser | | HAL | | | | recoder | | reg_gen | | | | | | | | | +-----------+ +-----------+ +--------+ Here is the Media Process Interface hierarchical structure MpiPacket and MpiFrame is the stream I/O data structure. And MpiBuffer encapsulates different buffer implement like Linux's dma-buf and Android's ion. This part is learned from ffmpeg. +-------------------+ | | | MPI | | | +---------+---------+ | | v +---------+---------+ | | +---+ ctx +---+ | | | | | +-------------------+ | | | v v +-------+-------+ +-------+-------+ | | | | | packet | | frame | | | | | +---------------+ +-------+-------+ | | | | | | | +---------------+ | | | | | +---->+ buffer +<----+ | | +---------------+ 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 | | | +-----------------------------------> | + + + + +
mpp's People
Forkers
geekerlw yyzhen omegamoon charliewis longchair mcerveny timkingh wainding zyh329 kevinlin09 mac-l1 idrnyu wzyy2 jakob-tsd rock64-linux ayufan-rock64-packages dreaminghell dalmatele bladegroup kwiboo lizhongwang520 rtavs fireflyteam mth dfyuan jameslinengineer lewishsw liuyinan xunchangqing byungwoo733 robopsi shanewfx trizna licshire vidanio herryfan fyyy4030 lightindarkgit labimage radxa tinkerboard kuanggenglian caesar-github numbqq wjchen niujiabenben rimonxu hubbybob2015 giwhy qiaoqidui fixmi virgill liwi163 flyingfish23333 yuxiatongzhi scalainc leez-sbc lwdddddd willendzw liabixiaoxin hollen520 wudping xiaoshzx xiezhihua001 635161813 chandzhang zsj0613 hermannjin nnvhryb sunsunsun000 river9977 hertzhang foilplanet zhuoyao1012 wenyihanv wavega-board whittmy aimin-wang dbermond xjhsxjh varzhou purplemiles chxj1980 liyang01010 yourancestor taogal liuqiaoping7 fengleck kevin523 zyeliteRecommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.