1/17/2016

DM81xx Gstreamer-PlugIns (3rd Party PlugIn)

1. DM81xx 에서 제공하는 Gstream 기본구조  

TI에서 제공하는 3rd Party PlugIns들이며 이를 이해하기위해서는 DM81xx의 기본구조를 알아야한다.
DM81xx의 기본구조는 OMX (Open Max API)에 SysLink Driver에 연결이 되어 아래와 같이
Control 한다.
그리고, Frame buffer와 Video for Linux로 Display와 Video Capture를 Linux에서 진행을 한다.

아래와 같이 중요한 Video Encode와 Display에 관한 중요한 Driver들이다.
만약 Video Display를 LCD or HDMI를 할 경우에 따라 관련 Driver 역시 중요할 것이다.
  1. SYSLINK : HDVPSS와 HDVICP 및 DSP Interface 
  2. HDVPSS : Video Capture 와 Display 담당 
  3. HDVICP2 : HDVICP Version2 로  Video Encode와 Decode를 담당.



1.2 DISPLAY 선택 작업 

미리 VPSS의 DISPLAY를 정한다음에 Gstreamer를 이용하여 하는 것이 좋다.
물론 TI는 Gstreamer에서 DISPLAY 선택이 되는 것 같은데 완벽하지 않은 것 같다.

이 부분은 sys file를 이용하여 변경하며.
/etc/init.d/load-hd-firmware.sh  부분에서 초기에 다 설정을 한다.


  1. HDMI일 경우 dipsplay0을 사용 ( 이 부분 Datasheet 참고 DM814x) 
  2. LCD일 경우 display1을 사용 


$ echo 0 > /sys/devices/platform/vpss/display0/enabled 
$ echo 1080i-60 > /sys/devices/platform/vpss/display0/mode 
$ echo 1 > /sys/devices/platform/vpss/display0/enabled


1.3 DM81xx Gstream MPEG4 Decoding 기본예제



Gstream의 MPEG4 File의 Decoding 의 Pipeline을 보자.

  • 아래는 현재 HDMI로 MPEG4를 재생을 했다. 


$ gst-launch filesrc location= test1.mp4 ! qtdemux name=mux mux.video_00 ! queue  ! \
h264parse output-format=1 ! omx_h264dec ! omx_scaler !\ 
omx_ctrl display-mode=OMX_DC_MODE_1080P_30 ! omx_videosink enable-last-buffer=false



간단히 분석해보면,  (OMX는 SYSLINK를 통하여 HDVICP2 or HDVPSS로 연결된다)

  1. test1.mp4 읽어  qtdemux 에 전달 
  2. qtdemux에서 mov file을 구조를 분석하여 video 추출 하여 h264parse 전달 
  3. h264parse 이를 outformat을 설정 omx_h264dec전달 (HDVICP2) 
  4. omx_h264dec는 decoding을 한후 omx_scaler 전달 
  5. omx_scaler는 이를 화면을 resize하고 omx_ctrl에 전달. 
  6. omx_ctrl은 display모드 설정 ( LCD or HDMI 해상도) 하고 omx_videosink에 전달

아래의 사이트에서 TI에서 제공하는 3rd Party Plug-In의 Elements 자세히 알아보자.
중요하게 볼것이 Input과 output이다. 화면이 변경이 되기도 한다.

  http://wiki.tiprocessors.com/index.php/DM81xx_Gstreamer_Plugin
  http://processors.wiki.ti.com/index.php/DM81xx_Gstreamer_Plugin

  일반적인 질문사항
  http://wiki.tiprocessors.com/index.php/DM81xx_Gstreamer_FAQ

  추가 확장된 Driver
  http://processors.wiki.ti.com/index.php/DM81xx_AM38xx_Adding_External_Decoders_to_V4L2_Capture_Driver


1.4 Gstreamer 기본 MPEG TS 예제 

DM81xx가 Booting 후 설정되어야 환경변수이지만, 현재 불필요한 것 같다.
gstreamer가 전체 /usr/bin으로 포함되어져 있어 불필요하다.
만약 분리되었을 경우 아래와 같은 주소로 있는지 확인하자

export GST_REGISTRY=/tmp/gst_registry.bin
export LD_LIBRARY_PATH=/opt/gstreamer/lib
export GST_PLUGIN_PATH=/opt/gstreamer/lib/gstreamer-0.10
export PATH=/opt/gstreamer/bin:$PATH
export GST_PLUGIN_SCANNER=/opt/gstreamer/libexec/gstreamer-0.10/gst-plugin-scanner =


  http://processors.wiki.ti.com/index.php/DM81xx_Gstreamer_Pipelines

1.5 Gstreamer RTSP 적용 예제 

IP Camera 혹은 Settopbox라든지 다른 Device와 연동을 할 경우 많이 필요하다.
처음 VLC로 TEST를 하면 좋다.


  • RTSP Client로 사용할 경우 
  https://developer.ridgerun.com/wiki/index.php/Gstreamer_pipelines_for_DM816x_and_DM814x


  • RTSP Server로 사용할 경우 
  https://developer.ridgerun.com/wiki/index.php/DM81xx_GStreamer_Pipelines_-_SDK_Turrialba


RTSP Default TEST

$ gst-launch rtspsrc location=rtsp://172.24.136.242:5544/test \
! rtph264depay ! h264parse access-unit=true ! omx_h264dec ! omx_scaler \
! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink sync=false 


1.6 Gstreamer Video Crop and Scaling 예제 

조금 복잡한 기능이며, Scaling 즉 Resizing까지 지원이 되며, 이것을 이용하며,
4Channel Video Mux도 가능하다.

  https://developer.ridgerun.com/wiki/index.php/Video_crop_and_scaling_with_DM816x_and_DM814x

댓글 없음 :