Difference between revisions of "Using the i.MX27 video codec"

From ArmadeusWiki
Jump to: navigation, search
(Usage)
(Usage)
Line 10: Line 10:
 
{{Note|Currently, decoder/reader on the PC side has to be launched BEFORE the encoding tool on the APF27 (if using RTP stream)}}
 
{{Note|Currently, decoder/reader on the PC side has to be launched BEFORE the encoding tool on the APF27 (if using RTP stream)}}
 
''mxc_vpu_test.out'' (yeah Freescale has strange ways to name its executables ;-) ) allows you to decode/encode video streams.
 
''mxc_vpu_test.out'' (yeah Freescale has strange ways to name its executables ;-) ) allows you to decode/encode video streams.
This tool needs a configuration file (some are given as examples).
+
This tool needs a configuration file (some are given as examples).  
 +
* To encode video in H.264 and send it through Ethernet/RTP to a client with 192.168.0.17 IP:
 
<pre class="apf">
 
<pre class="apf">
 
# mxc_vpu_test.out -c codec.cfg.net.enc.vga.h264
 
# mxc_vpu_test.out -c codec.cfg.net.enc.vga.h264
 +
</pre>
 +
with the following ''codec.cfg.net.enc.vga.h264'' file:
 +
<pre>
 +
1      ; Number of Codec
 +
0      ; index
 +
1      ; src, 0 file, 1 camera, 2 network
 +
/root/Kaleidoscope_h264_aac.m4v    ;file name or IP, if src is camera, ignore this item.
 +
2      ; dst, 0 file, 1 LCD, 2 network
 +
192.168.0.17    ; act as server
 +
1      ; 0=Dec, 1=Enc
 +
25      ; fps in Hz, not used now
 +
0      ; bitrate in Kbps (64, 128, 384), 0=auto
 +
2      ; 0=Mpeg4, 1=H.263, 2=H.264
 +
640    ; picWidth
 +
480    ; picHeight
 +
1      ; GopSize (0 only first frame is I, 1 all is I; 2: IPIP...), not used now
 +
1200    ; frame_count, not used now
 +
0      ; rot_angle;
 +
1      ; out_ratio, to fit the screen 240*320
 +
0      ; mirror, 0 none, 1 horizon, 2 vertical;
 
</pre>
 
</pre>
  

Revision as of 11:40, 7 September 2009

The i.MX27 (used on the APF27) has an internal DSP which can be used to encode/decode video stream, coming from various sources (CSI, buffer, etc...). To use it Freescale provides some useful tools.

Installation

$ make freescale-tools
  • then reflash your rootfs and you will get some stuff in /usr/bin/vpu/

Usage

Note Note: Currently, decoder/reader on the PC side has to be launched BEFORE the encoding tool on the APF27 (if using RTP stream)

mxc_vpu_test.out (yeah Freescale has strange ways to name its executables ;-) ) allows you to decode/encode video streams. This tool needs a configuration file (some are given as examples).

  • To encode video in H.264 and send it through Ethernet/RTP to a client with 192.168.0.17 IP:
# mxc_vpu_test.out -c codec.cfg.net.enc.vga.h264

with the following codec.cfg.net.enc.vga.h264 file:

 1       ; Number of Codec
 0       ; index
 1       ; src, 0 file, 1 camera, 2 network
 /root/Kaleidoscope_h264_aac.m4v    ;file name or IP, if src is camera, ignore this item.
 2       ; dst, 0 file, 1 LCD, 2 network
 192.168.0.17    ; act as server
 1       ; 0=Dec, 1=Enc
 25      ; fps in Hz, not used now
 0       ; bitrate in Kbps (64, 128, 384), 0=auto
 2       ; 0=Mpeg4, 1=H.263, 2=H.264
 640     ; picWidth
 480     ; picHeight
 1       ; GopSize (0 only first frame is I, 1 all is I; 2: IPIP...), not used now
 1200    ; frame_count, not used now
 0       ; rot_angle;
 1       ; out_ratio, to fit the screen 240*320
 0       ; mirror, 0 none, 1 horizon, 2 vertical;

Decoding incoming streams on your PC

  • Decoding an RTP H.264 stream coming in UDP on port 6666 and displaying it at original size:
$ gst-launch-0.10 udpsrc port=6666 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" \
                  ! rtph264depay ! ffdec_h264 ! xvimagesink sync=false
  • Decoding an RTP H.264 stream coming in UDP on port 6666 and displaying it in 320x240:
$ gst-launch-0.10 udpsrc port=6666 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" \
                  ! rtph264depay ! ffdec_h264 ! videoscale ! video/x-raw-yuv, width=320, height=240 ! xvimagesink sync=false

Links