Changes

Jump to: navigation, search

Uses cases with Naon Embedded Linux Kit

4,244 bytes added, 13:16, 4 December 2013
m
V4L2 Capture, decimanted
{{InfoBoxTop}}
{{AppliesToNaonAppliesToNaonFamily}}
{{Applies To NaonEVB-Lite}}
{{Applies To NaonEVB-Mid}}
==Introduction==
This page lists some statistics and information about real use cases based on [[Naon Embedded Linux Kit (NELK)]].
===Gstreamer-based applications===For the sake of completeness, for each use case the full command line used to run the test application is provided. System software is based on [[Naon Embedded Linux Kit (NELK)]] 2'''N.B.''': before launching the gst pipelines, it is required to [http://bash.cyberciti.biz/guide/Source_command source] the /home/root/gst-nelk.sh included into the NELK root file system, which sets the following environment variables: <pre>export GST_REGISTRY=/home/root/gst-nelk_registry.binexport LD_LIBRARY_PATH=/opt/gst/libexport GST_PLUGIN_PATH=/opt/gst/lib/gstreamer-0.10export PATH=/opt/gst/bin:$PATHexport GST_PLUGIN_SCANNER=/opt/gst/libexec/gstreamer-0 Alpha.10/gst-plugin-scanner</pre> ==== Video decoding and playing====
Output is HDMI port connected to Full HD 46" TV screen.
CPU usage refers to the process under test as reported by <code>top</code> application.
=====Use case #1=====
* Description: playing H264 RAW video 1920x1080@25fps
* CPU usage: 30%
decode_display_a8host_debug.xv5T -w 1920 -h 1080 -f 25 -i /home/root/working-dir/battleship-ressurrecting_h1080p.h264
</pre>
=====Use case #2=====
* Description: playing H264 MP4 video 1920x1080@30fps demuxed video only
* CPU usage: 12%
</pre>
=====Use case #3=====
* Description: playing two videos (both are hrdware decoded)
** video #1: H264 Raw 1920x1080 @25fps
gst-launch omx_videomixer port-index=0 framerate=25 name=mix sink_00::outX=0 sink_00::outY=0 sink_00::outWidth=1920 sink_00::outHeight=816 sink_01::outX=0 sink_01::outY=0 sink_01::outWidth=848 sink_01::outHeight=360 ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink sync=false filesrc location=/home/root/working-dir/480p-ice-int.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix. filesrc location=/home/root/working-dir/iceage4-1080p.h264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! mix.
</pre>
=====Use case #4=====
This section shows some different video combinations with overlayed text.
=====Use case #4.1=====
* Description: playing two videos (both are hardware decoded)
** video #1: H264 Raw 1920x1080 @25fps with ClockOverlay
</pre>
=====Use case #4.2=====
* Description: playing two videos (both are hardware decoded) with no overlap
** video #1: H264 Raw 1920x1080 @25fps rescaled in hardware to 1280x720
[[File:PiPseparated.jpg|400px]]
=====Use case #4.3=====
* Description: playing two videos (both are hardware decoded)
** video #1: H264 MP4 1920x1080 @30fps demuxed only video
[[File:PipFull.jpg|400px]]
=====Use case #4.4=====
* Description: playing two videos (both are hardware decoded)
** video #1: H264 MP4 1920x1080 @30fps demuxed only video
</pre>
=====Use case #4.5=====
* Description: Stream H264 320x240 rescaled at 800x600
* CPU usage: 9%
video/x-raw-yuv,width=800,height=600' !omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink sync=false
</pre>
=====Use case #4.6=====
* Description: playing two videos (both are hardware decoded)
** video #1: H264 MP4 1920x1080 @30fps demuxed only video
</pre>
[[File:PiPstreaming.jpg|400px]]
===v4l2-based applications===
This section provides some examples of applications based on well-known [[http://en.wikipedia.org/wiki/Video4Linux|Video4Linux API]].
=== Video capture and encoding ===
 
==== V4L2 1080p60 Capture/HDMI display ====
 
* Description:
** 1080p60 video is captured from VIN0A using v4l2src gstreamer component
** output displayed on HDMI at the same resolution
 
<pre class="board-terminal">
gst-launch -v v4l2src device="/dev/video0" always-copy=false queue-size=6 num-buffers=-1 ! 'video/x-raw-yuv-strided,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc silent=false numBuffers=6 ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false
</pre>
 
==== V4L2 1080p60 Capture/H264 encoding/HDMI display ====
 
* Description:
** 1080p60 video is captured from VIN0A using v4l2src gstreamer component
** DEI/Scaler is used to split the source
** the former goes to H264 encoder (result saved to file)
** the latter goes to HDMI output
 
<pre class="board-terminal">
gst-launch v4l2src device="/dev/video0" always-copy=false queue-size=12 num-buffers=1000 ! 'video/x-raw-yuv-strided,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc silent=false numBuffers=12 ! omx_mdeiscaler name=d d.src_01 ! omx_h264enc force-idr-period=300 i-period=100 bitrate=5000000 ! filesink location=v4l2cap.h264 d.src_00 ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink display-mode=OMX_DC_MODE_1080P_60
</pre>
 
==== V4L2 Capture, decimated ====
 
* Description
** 1080p50 video is captured from VIN1A using v4l2src
** input is decimated to 10 fps, using the same v4l2src
** output is displayed on HDMI
 
<pre class="board-terminal">
gst-launch -v v4l2src device="/dev/video2" always-copy=false queue-size=12 num-buffers=-1 decimate=5 ! 'video/x-raw-yuv-strided,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)50/1' ! omxbufferalloc silent=false numBuffers=12 ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf ! omx_videosink sync=false
</pre>
 
==v4l2-based applications==
This section provides some examples of applications based on well-known [http://en.wikipedia.org/wiki/Video4Linux|Video4Linux API].
 
== saLoopBack ==
This sample program capture a video stream on v4l2 input and display the frames on v4l2 output. More information regarding the software can be found on [http://processors.wiki.ti.com/index.php/TI81XX_Video_Capture_Driver_User_Guide#saLoopBack this] TI wiki article.
'''== UVCcapture Tool'''==
This utility take a snapshot for USB WebCAM using v4l2 driver class uvc
download [http://staticwave.ca/source/uvccapture/uvccapture-0.5.tar.bz2 uvccapture], compile it on tragettarget 
<pre class="board-terminal">
$ wget http://staticwave.ca/source/uvccapture/uvccapture-0.5.tar.bz2
</pre>
=== Dual MAC EMAC mode (NaonEVB-Lite)=== The two Ethernet interfaces on [[Category:NaonEVB-Lite|NaonEVB-Lite]] can be used as:* Ethernet switch: Linux sees only one Ethernet interface and packets are routed between the two ports like a standard Ethernet switch does.* Dual EMAC Mode: Linux sees two independent Ethernet interfaces and packet are routed between the two like a Ethernet router does. The default configuration provided with [[Naon Embedded Linux Kit (NELK)]] is ''Dual EMAC Mode'', where ''eth0'' is the [[Category:Naon|Naon]] on-board 10/100Mbit Ethernet interface, while eth1 is the [[Category:NaonEVB-Lite|NaonEVB-Lite]] Gigabit interface.
Added DUAL MAC support: Phy 100Mbit is eth0 The official TI documentation to enable and Phy 1Gbit use Dual EMAC is eth1[http://processors.wiki.ti.com/index.php/DM814x_AM387x_Ethernet_Switch_User_Guide#Dual_Standalone_EMAC_mode here]
Documentation [http://processorsPlease note that no routing is enabled between the two interface is Dual EMAC mode by default.wikiLinux userspace tool should be used to configure VLAN tagging and packet routing rules.ti.com/index.php/DM814x_AM387x_Ethernet_Switch_User_Guide#Dual_Standalone_EMAC_mode here]
Added VLAN tagging support only on eth1 (gigabit), VLAN ID 2 and 3 is reserved for DualMAC mode.
== Extending the root file system ==NELK root file system derives directly from the one delivered along with TI EZSDK. In order to enrich it by installing new pre-built packages, well-known '''NFSroot is possible only on eth0 (100Mbit)opkg'''tool comes to help. The following instructions describes how to configure opkg in order to add more packages in order to provide a richer set of libraries, tools and applications. To configure opgk to retrieve pre-built packages from angstrom repository, please follow these instructions:<pre>$ echo "src/gz angstrom-base http://www.angstrom-distribution.org/feeds/unstable/ipk/glibc/armv7a/base" >> /etc/opkg/opkg.conf$ opkg update</pre> Please note that '''packages provided by angstrom repository are not optimized for DM8148 media hardware blocks such as video codec'''. For this reason, pay attention to not replace DM8148-optimized applications and libraries provided by default root file system.

Navigation menu