Difference between revisions of "Linbian Usage Guide"
(→Demo programs) |
Xiaoshujun (talk | contribs) (→Test result) |
||
(24 intermediate revisions by 2 users not shown) | |||
Line 70: | Line 70: | ||
=== Allwinner official documents === | === Allwinner official documents === | ||
− | * MPP Application Development Reference Manual, [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/AW%20IPC%e5%aa%92%e4%bd%93%e5%a4%84%e7%90%86%e8%bd%af%e4%bb%b6%e5%bc%80%e5%8f%91%e5%8f%82%e8%80%83.pdf Chinese version]. | + | * MPP Application Development Reference Manual, [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/AW%20IPC%e5%aa%92%e4%bd%93%e5%a4%84%e7%90%86%e8%bd%af%e4%bb%b6%e5%bc%80%e5%8f%91%e5%8f%82%e8%80%83.pdf Chinese version], [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/AW_MPP_IPC_Media_Processing_Software_Development_Reference.pdf English version]. |
* ISP Module User Guide, [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/MPP_ISP%20%e6%a8%a1%e5%9d%97%e7%94%a8%e6%88%b7%e6%8c%87%e5%8d%97.pdf Chinese version], [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/MPP_ISP%20Development%20User%20Guide.pdf English version]. | * ISP Module User Guide, [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/MPP_ISP%20%e6%a8%a1%e5%9d%97%e7%94%a8%e6%88%b7%e6%8c%87%e5%8d%97.pdf Chinese version], [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/MPP_ISP%20Development%20User%20Guide.pdf English version]. | ||
* EVE Application Development Reference Manual, [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/EVE%e5%ba%94%e7%94%a8API%e5%8f%82%e8%80%83%e6%89%8b%e5%86%8c.pdf Chinese version], [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/EVE%c2%a0Application%c2%a0API%c2%a0Reference%c2%a0Manual_%e5%85%ad%e7%82%b9%e7%a7%91%e6%8a%80.pdf English version]. | * EVE Application Development Reference Manual, [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/EVE%e5%ba%94%e7%94%a8API%e5%8f%82%e8%80%83%e6%89%8b%e5%86%8c.pdf Chinese version], [http://files.lindeni.org/lindenis-v5/documents/soft_design/MPP/EVE%c2%a0Application%c2%a0API%c2%a0Reference%c2%a0Manual_%e5%85%ad%e7%82%b9%e7%a7%91%e6%8a%80.pdf English version]. | ||
Line 98: | Line 98: | ||
...... | ...... | ||
</pre> | </pre> | ||
− | '''There is a instruction name readme.txt in every sample, you should read the document first when you running the sample | + | '''There is a instruction name readme.txt in every sample, you should read the document first when you running the sample''' |
+ | |||
+ | '''And then you can know how to config the sample, some sample needed be configured,maybe config file is sample_xxx.conf.''' | ||
'''app/''' includes a set of MPP samples with a command line based menu. '''sample_xxx/''' is a separate sample of the scene. Root privileges is required when run these sample. e.g. | '''app/''' includes a set of MPP samples with a command line based menu. '''sample_xxx/''' is a separate sample of the scene. Root privileges is required when run these sample. e.g. | ||
Line 127: | Line 129: | ||
app_mpp_sample | app_mpp_sample | ||
− | ==== | + | ==== Build ==== |
<pre> | <pre> | ||
Line 188: | Line 190: | ||
==== Test result ==== | ==== Test result ==== | ||
− | [[File: | + | [[File:Rtsp1.jpg|frameless]] |
+ | |||
+ | *You can see that the two remote device can get the data at the same time | ||
+ | |||
+ | *There are two output data channel, you can get 720p from channel1 and 4K data from channel0 | ||
− | === Dual Camera | + | *Tt also can be viewed by mobile phone, a simple IPC mode. |
+ | |||
+ | === Dual Camera === | ||
==== Location ==== | ==== Location ==== | ||
Line 196: | Line 204: | ||
sample_virvi2ise2vo | sample_virvi2ise2vo | ||
− | ==== | + | ==== Build ==== |
<pre> | <pre> | ||
Line 211: | Line 219: | ||
==== Test result ==== | ==== Test result ==== | ||
[[File:Dual camera.jpg|frameless]] | [[File:Dual camera.jpg|frameless]] | ||
+ | |||
+ | *Two ISP can work at the same time | ||
+ | |||
+ | *And each one can send 4K 30fps data out when you preview the picture | ||
+ | |||
+ | *Device can support 4K 15fps encode when two ISP work at the same time | ||
=== Face detection === | === Face detection === | ||
Line 220: | Line 234: | ||
sample_face_detect | sample_face_detect | ||
− | ==== | + | ==== Build ==== |
<pre> | <pre> | ||
Line 237: | Line 251: | ||
==== Test result ==== | ==== Test result ==== | ||
[[File:Face detect.jpg|frameless]] | [[File:Face detect.jpg|frameless]] | ||
+ | |||
+ | *Support face detect which the data source minmum pixels is 20 | ||
+ | |||
+ | *Support face detection and tracing at the same time, the maximum number is 16 | ||
+ | |||
+ | *The maximum detect face number is 128 | ||
=== Motion detection === | === Motion detection === | ||
Line 246: | Line 266: | ||
sample_AILib/sample_vi2MOD | sample_AILib/sample_vi2MOD | ||
− | ==== | + | ==== Build ==== |
<pre> | <pre> | ||
Line 269: | Line 289: | ||
sample_AILib/sample_vi2HCNT | sample_AILib/sample_vi2HCNT | ||
− | ==== | + | ==== Build ==== |
<pre> | <pre> | ||
Line 292: | Line 312: | ||
sample_AILib/sample_vi2VLPR | sample_AILib/sample_vi2VLPR | ||
− | ==== | + | ==== Build ==== |
<pre> | <pre> | ||
Line 315: | Line 335: | ||
sample_AILib/sample_BDII | sample_AILib/sample_BDII | ||
− | ==== | + | ==== Build ==== |
<pre> | <pre> | ||
Line 330: | Line 350: | ||
The output is a 8bit-gray-scale picture, stored at ./BDIIResult.bin . | The output is a 8bit-gray-scale picture, stored at ./BDIIResult.bin . | ||
− | === | + | === OpenCV === |
+ | |||
+ | sample_virvi2opencv2vo<br><br> | ||
+ | OpenCV version 4.0.1<br> | ||
+ | This is a simple sample for motion detection via opencv. <br> | ||
+ | When running this sample, if the picture captured by the camera is still, it will be black screen. If there is a moving object, the outline of the moving object will be displayed. When the mean difference of the real-time image frame difference is greater than the sensitivity value, the following printing appears, indicating that there is a significant change in the image or something is moving. | ||
+ | |||
+ | Something is moving! mean_diff:10<br> | ||
+ | Something is moving! mean_diff:70<br> | ||
+ | Something is moving! mean_diff:94<br> | ||
+ | Something is moving! mean_diff:120<br> | ||
+ | Something is moving! mean_diff:362<br> | ||
+ | Something is moving! mean_diff:34<br> | ||
+ | Something is moving! mean_diff:30<br> | ||
+ | |||
+ | ==== Location ==== | ||
+ | sample_virvi2opencv2vo<br> | ||
+ | |||
+ | ==== Build ==== | ||
− | + | <pre> | |
+ | $ cd ~/mpp_sample/sample_virvi2opencv2vo | ||
+ | $ make | ||
+ | </pre> | ||
+ | |||
+ | ==== Running ==== | ||
+ | |||
+ | <pre> | ||
+ | $ sudo ./sample_virvi2opencv2vo -path ./sample_virvi2opencv2vo.conf | ||
+ | </pre> | ||
+ | |||
+ | You can change the conf in the sample_virvi2opencv2vo.conf | ||
+ | # auto_test_count : test times | ||
+ | # get_frame_count : number of frame in one time test | ||
+ | # dev number: video node | ||
+ | # src_width * src_height:720p/1080p; | ||
+ | # src_frame_rate: 25 | ||
+ | # pic_format is nv21 | ||
+ | # enable_disp_color: 0 disable, 1 enable | ||
+ | # moving_detect_sensitivity >=1 , 1 is most sensitive | ||
+ | |||
+ | ==== Test result ==== | ||
+ | [[File:Black Screen.jpg|thumb|left]] | ||
+ | [[File:Something is moving.jpg|thumb|left]] |
Latest revision as of 08:51, 11 April 2019
Contents
Terminal
On Linbian OS, the default terminal application is LXTerminal.
You can open it from Application Menu -> System Tools.
Camera Module
download source code from github
- ldcam developed base on gstreamer
compile
- compile on v5 board===
- you can execute "make" directly
- compile on your own env
- you should create the Makefile by yourself
user commd
- you can use "./ldcam -?" or "./ldcam --help" to get the cmd instructions
Webcams
Gstreamer
Camera source
- lindeniv4l2src: Video (video4linux2) Source
Use for CSI Camera
Example:
sudo gst-launch-1.0 lindeniv4l2src device=/dev/video1 ! video/x-raw,width=1920,height=1080,format=I420 ! videoconvert ! sunxifbsink video-memory=24
Omx hardware H.264 decoder and encoder
- omxh264dec: OpenMAX H.264 Video Decoder
Example:
sudo gst-launch-1.0 filesrc location=1c.mp4 ! qtdemux name=demux demux.video_0 ! queue ! h264parse ! omxh264dec ! videoconvert ! sunxifbsink
- omxh264videoenc: OpenMAX H.264 Video Encoder
Example:
sudo gst-launch-1.0 lindeniv4l2src device=/dev/video1 ! video/x-raw,width=1920,height=1080,format=I420 ! videoconvert ! omxh264videoenc target-bitrate=5000000 ! mpegtsmux ! filesink location=1.ts
Display sink
- sunxifbsink: Accelerated console framebuffer video sink for sunxi-based devices
Example:
sudo gst-launch-1.0 -v videotestsrc pattern=ball name=left ! sunxifbsink
Play Video
Play Audio
Python
GPIO
MPP
MPP is the media process platform of Allwinner V5, including following components.
- system control, API family: AW_MPI_SYS
- This component deal with the media hardware initialization, other components initialization and component state management and etc.
- video input, API family: AW_MPI_VI
- video output, API family: AW_MPI_VO
- image stitch engine, API family: AW_MPI_ISE
- video encode, API family: AW_MPI_VENC
- video decode, API family: AW_MPI_VDEC
- mux, API family: AW_MPI_MUX
- demux, API family: AW_MPI_DEMUX
- audio input, API family: AW_MPI_AI
- audio output, API family: AW_MPI_AO
- audio endode, API family: AW_MPI_AENC
- audio output, API family: AW_MPI_AOUT
- Region, API family: AW_MPI_RGN
Allwinner official documents
- MPP Application Development Reference Manual, Chinese version, English version.
- ISP Module User Guide, Chinese version, English version.
- EVE Application Development Reference Manual, Chinese version, English version.
- Human Counting Application Development Reference Manual, Chinese version
- Motion Detection Application Development Reference Manual, Chinese version
- Binocular depth of field (DOF) Application Development Reference Manual, Chinese version
Samples
Please refer to Demo programs.
Demo programs
Allwinner release a series of MPP samples. You can download from Github.
$ git clone https://github.com/lindenis-org/mpp_sample ~/mpp_sample
After downloading, You will get the following directory.
app/ Makefile.param README.md sample_adec/ sample_aenc/ sample_ai/ ......
There is a instruction name readme.txt in every sample, you should read the document first when you running the sample
And then you can know how to config the sample, some sample needed be configured,maybe config file is sample_xxx.conf.
app/ includes a set of MPP samples with a command line based menu. sample_xxx/ is a separate sample of the scene. Root privileges is required when run these sample. e.g.
$ sudo ./app/release/app_mpp_sample *************************************************************** 1 : vi+(venc+rtsp)+vo 2 : vi+(venc+rtsp) 3 : vi+vo 4 : vi+ise+(venc+rtsp)+vo 5 : [vi+venc+vo]+[ai+aenc+ao]+rtsp 6 : vi->yuv+venc+rtsp 7 : vi+venc+mux 8 : vi+(venc+mux)+vo 9 : demux+vdec+vo 10 : ai+aenc+mux+ao 11 : demux+adec+ao 12 : Quit *************************************************************** Please choice 1~12 num:
RTSP
Location
app_mpp_sample
Build
$ cd ~/mpp_sample/app $ make
Running
$ sudo ./release/app_mpp_sample
There will shows the following message when you execultive the cmd, and type the num according the menu.
*************************************************************** 1 : vi+(venc+rtsp)+vo 2 : vi+(venc+rtsp) 3 : vi+vo 4 : vi+ise+(venc+rtsp)+vo 5 : [vi+venc+vo]+[ai+aenc+ao]+rtsp 6 : vi->yuv+venc+rtsp 7 : vi+venc+mux 8 : vi+(venc+mux)+vo 9 : demux+vdec+vo 10 : ai+aenc+mux+ao 11 : demux+adec+ao 12 : Quit *************************************************************** Please choice 1~12 num: 1 *************************************************************** 1 : Set VI+VENC scene (Resolution, default:4K@25fps+720P@25fps) 2 : Set VENC Payload Type (H264/H265, default:H264) 3 : Set VENC RC Mode (CBR/VBR/FIXQP, default:CBR) 4 : Set VENC Profile (BL/MP/HP, default:Main Profile) 5 : Set VENC rotate (0/90/180/270, default:rotate_0) 6 : Save confige and run this sample *************************************************************** Please choice 1~6 num: 1 ***************** Choice VI+VENC scene ************************** [0]:VI_4K@30fps + VENC(4K@30fps+VGA@30fps) [1]:VI_4K@25fps + VENC(4K@25fps+720P@25fps) [default] [2]:VI_2K@30fps + VENC(2K@30fps+720P@30fps) [3]:VI_1080P@30fps + VENC(1080P@30fps+720P@30fps) [4]:VI_2880x2160@30fps + VENC(2880x2160@30fps+1080P@30fps) [5]:VI_2592x1944@30fps + VENC(2592x1944@30fps+1080P@30fps) Please choose VI+VENC scene ID 0~3 or (q-Quit): 1 *************************************************************** 1 : Set VI+VENC scene (Resolution, default:4K@25fps+720P@25fps) 2 : Set VENC Payload Type (H264/H265, default:H264) 3 : Set VENC RC Mode (CBR/VBR/FIXQP, default:CBR) 4 : Set VENC Profile (BL/MP/HP, default:Main Profile) 5 : Set VENC rotate (0/90/180/270, default:rotate_0) 6 : Save confige and run this sample *************************************************************** Please choice 1~6 num: 6
Test result
- You can see that the two remote device can get the data at the same time
- There are two output data channel, you can get 720p from channel1 and 4K data from channel0
- Tt also can be viewed by mobile phone, a simple IPC mode.
Dual Camera
Location
sample_virvi2ise2vo
Build
$ cd ~/mpp_sample/sample_virvi2ise2vo $ make
Running
$ sudo ./sample_virvi2ise2vo -path sample_virvi2ise2vo.conf
Test result
- Two ISP can work at the same time
- And each one can send 4K 30fps data out when you preview the picture
- Device can support 4K 15fps encode when two ISP work at the same time
Face detection
Face detection based on EVE.
Location
sample_face_detect
Build
$ cd ~/mpp_sample/sample_face_detect $ make
Running
$ sudo ./sample_face_detect
The picture of face crop and store at ./pic directory when detected.
Test result
- Support face detect which the data source minmum pixels is 20
- Support face detection and tracing at the same time, the maximum number is 16
- The maximum detect face number is 128
Motion detection
Motion detection based on CVE.
Location
sample_AILib/sample_vi2MOD
Build
$ cd ~/mpp_sample/sample_AILib/sample_vi2MOD $ make
Running
$ sudo ./sample_vi2MOD -path sample_vi2MOD.conf
The information of detected target was stored at ./DTCAResult.bin .
Human counting
Hunman counting based on CVE.
Location
sample_AILib/sample_vi2HCNT
Build
$ cd ~/mpp_sample/sample_AILib/sample_vi2HCNT $ make
Running
$ sudo ./sample_vi2HCNT -path sample_vi2HCNT.conf
The information of detected target was stored at ./HCNTResult.bin .
VLPR
VLPR based on CVE.
Location
sample_AILib/sample_vi2VLPR
Build
$ cd ~/mpp_sample/sample_AILib/sample_vi2VLPR $ make
Running
$ sudo ./sample_vi2VLPR -path sample_vi2VLPR.conf
The information of detected vehicle license plate was stored at ./VLPRResult.bin .
Binocular depth information image
BDII based on CVE.
Location
sample_AILib/sample_BDII
Build
$ cd ~/mpp_sample/sample_AILib/sample_vi2BDII $ make
Running
$ sudo ./sample_vi2BDII -path sample_vi2BDII.conf
The output is a 8bit-gray-scale picture, stored at ./BDIIResult.bin .
OpenCV
sample_virvi2opencv2vo
OpenCV version 4.0.1
This is a simple sample for motion detection via opencv.
When running this sample, if the picture captured by the camera is still, it will be black screen. If there is a moving object, the outline of the moving object will be displayed. When the mean difference of the real-time image frame difference is greater than the sensitivity value, the following printing appears, indicating that there is a significant change in the image or something is moving.
Something is moving! mean_diff:10
Something is moving! mean_diff:70
Something is moving! mean_diff:94
Something is moving! mean_diff:120
Something is moving! mean_diff:362
Something is moving! mean_diff:34
Something is moving! mean_diff:30
Location
sample_virvi2opencv2vo
Build
$ cd ~/mpp_sample/sample_virvi2opencv2vo $ make
Running
$ sudo ./sample_virvi2opencv2vo -path ./sample_virvi2opencv2vo.conf
You can change the conf in the sample_virvi2opencv2vo.conf
- auto_test_count : test times
- get_frame_count : number of frame in one time test
- dev number: video node
- src_width * src_height:720p/1080p;
- src_frame_rate: 25
- pic_format is nv21
- enable_disp_color: 0 disable, 1 enable
- moving_detect_sensitivity >=1 , 1 is most sensitive