Mistral DM8148 EVM - andreimironenko/oe-davinci GitHub Wiki
Excerption from MS_TI_DM814x_REVD_BB_HUG.pdf
"... HDMI interface has the following features
- Hot-plug detection
- Supports up to 165-MHz pixel clock
- 1920 x 1080p @75 Hz with 8-bit/component color depth
- 1600 x 1200 @60 Hz with 8-bit/component color depth
- Support for deep-color mode:
- 10-bit/component color depth up to 1080p @60 Hz (Max pixel clock = 148.5MHz)
- 12-bit/component color depth up to 720p/1080i @60 Hz (Max pixel clock =
- TMDS clock to the HDMI-PHY is up to 185.625 MHz
The list of supported video modes can be found in this header file
ti-ezsdk_dm814x-evm_5_03_00_09/board-support/linux-2.6.37-psp04.01.00.06.patch1/drivers/video/ti81xx/vpss/sysfs.h
/*used for mode sysfs*/ static const struct dc_vencmode_info vmode_info[] = { {"ntsc", FVID2_STD_NTSC, {FVID2_STD_NTSC, 720, 480, FVID2_SF_INTERLACED, 216000, 60, 12, 68, 64, 5, 41, 5} }, {"pal", FVID2_STD_PAL, {FVID2_STD_PAL, 720, 576, FVID2_SF_INTERLACED, 216000, 50, 16, 58, 64, 6, 31, 6} }, {"1080p-60", FVID2_STD_1080P_60, {FVID2_STD_1080P_60, 1920, 1080, FVID2_SF_PROGRESSIVE, 148500, 60, 88, 148, 44, 4, 36, 5} }, {"1920x1080@60", FVID2_STD_1080P_60, {FVID2_STD_CUSTOM, 1920, 1080, FVID2_SF_PROGRESSIVE, 148500, 60, 88, 148, 44, 4, 36, 5} }, {"1080p-50", FVID2_STD_1080P_50, {FVID2_STD_1080P_50, 1920, 1080, FVID2_SF_PROGRESSIVE, 148500, 50, 528, 148, 44, 4, 36, 5} }, {"1920x1080@50", FVID2_STD_1080P_50, {FVID2_STD_CUSTOM, 1920, 1080, FVID2_SF_PROGRESSIVE, 148500, 50, 528, 148, 44, 4, 36, 5} }, {"1080p-30", FVID2_STD_1080P_30, {FVID2_STD_1080P_30, 1920, 1080, FVID2_SF_PROGRESSIVE, 74250, 30, 88, 148, 44, 4, 36, 5} }, {"1920x1080@30", FVID2_STD_1080P_30, {FVID2_STD_CUSTOM, 1920, 1080, FVID2_SF_PROGRESSIVE, 74250, 30, 88, 148, 44, 4, 36, 5} }, {"720p-60", FVID2_STD_720P_60, {FVID2_STD_720P_60, 1280, 720, FVID2_SF_PROGRESSIVE, 74250, 60, 110, 220, 40, 5, 20, 5} }, {"1280x720@60", FVID2_STD_720P_60, {FVID2_STD_CUSTOM, 1280, 720, FVID2_SF_PROGRESSIVE, 74250, 60, 110, 220, 40, 5, 20, 5} }, {"720p-50", FVID2_STD_720P_50, {FVID2_STD_720P_50, 1280, 720, FVID2_SF_PROGRESSIVE, 74250, 50, 440, 220, 40, 5, 20, 5} }, {"1280x720@50", FVID2_STD_720P_50, { FVID2_STD_CUSTOM, 1280, 720, FVID2_SF_PROGRESSIVE, 74250, 50, 440, 220, 40, 5, 20, 5} }, {"1080i-60", FVID2_STD_1080I_60, {FVID2_STD_1080I_60, 1920, 1080, FVID2_SF_INTERLACED, 74250, 60, 88, 148, 44, 2, 15, 5} }, {"1920x1080@60i", FVID2_STD_1080I_60, {FVID2_STD_CUSTOM, 1920, 1080, FVID2_SF_INTERLACED, 74250, 60, 88, 148, 44, 2, 15, 5} }, {"1080i-50", FVID2_STD_1080I_50, {FVID2_STD_1080I_50, 1920, 1080, FVID2_SF_INTERLACED, 742500, 50, 528, 148, 44, 2, 15, 5} }, {"1920x1080@50i", FVID2_STD_1080I_50, {FVID2_STD_CUSTOM, 1920, 1080, FVID2_SF_INTERLACED, 742500, 50, 528, 148, 44, 2, 15, 5} }, /*VGA*/ {"640x480@60", FVID2_STD_VGA_60, {FVID2_STD_CUSTOM, 640, 480, FVID2_SF_PROGRESSIVE, 25175, 60, 16, 48, 96, 10, 33, 2} }, {"640x480@72", FVID2_STD_VGA_72, {FVID2_STD_CUSTOM, 640, 480, FVID2_SF_PROGRESSIVE, 31500, 72, 24, 128, 40, 9, 29, 2} }, {"640x480@75", FVID2_STD_VGA_75, {FVID2_STD_CUSTOM, 640, 480, FVID2_SF_PROGRESSIVE, 31500, 75, 16, 120, 64, 1, 16, 3} }, {"640x480@85", FVID2_STD_VGA_85, {FVID2_STD_CUSTOM, 640, 480, FVID2_SF_PROGRESSIVE, 36000, 85, 56, 80, 56, 1, 25, 3} }, /*SVGA*/ {"800x600@60", FVID2_STD_SVGA_60, {FVID2_STD_CUSTOM, 800, 600, FVID2_SF_PROGRESSIVE, 40000, 60, 40, 88, 128, 1, 23, 4} }, {"800x600@72", FVID2_STD_SVGA_72, {FVID2_STD_CUSTOM, 800, 600, FVID2_SF_PROGRESSIVE, 50000, 72, 56, 64, 120, 37, 23, 6} }, {"800x600@75", FVID2_STD_SVGA_75, {FVID2_STD_CUSTOM, 800, 600, FVID2_SF_PROGRESSIVE, 49500, 75, 16, 160, 80, 1, 21, 3} }, {"800x600@85", FVID2_STD_SVGA_85, {FVID2_STD_CUSTOM, 800, 600, FVID2_SF_PROGRESSIVE, 56250, 85, 32, 152, 64, 1, 27, 3} }, /*XGA*/ {"1024x768@60", FVID2_STD_XGA_60, {FVID2_STD_XGA_60, 1024, 768, FVID2_SF_PROGRESSIVE, 65000, 60, 24, 160, 136, 3, 29, 6} }, {"1024x768@70", FVID2_STD_XGA_70, {FVID2_STD_CUSTOM, 1024, 768, FVID2_SF_PROGRESSIVE, 75000, 70, 24, 144, 136, 3, 29, 6} }, {"1024x768@75", FVID2_STD_XGA_75, {FVID2_STD_XGA_75, 1024, 768, FVID2_SF_PROGRESSIVE, 78750, 75, 16, 176, 96, 1, 28, 3} }, {"1024x768@85", FVID2_STD_XGA_85, {FVID2_STD_CUSTOM, 1024, 768, FVID2_SF_PROGRESSIVE, 94500, 85, 48, 208, 96, 1, 36, 3} }, /*SXGA*/ {"1280x1024@60", FVID2_STD_SXGA_60, {FVID2_STD_SXGA_60, 1280, 1024, FVID2_SF_PROGRESSIVE, 108000, 60, 48, 248, 112, 1, 38, 3} }, {"1280x1024@75", FVID2_STD_SXGA_75, {FVID2_STD_SXGA_75, 1280, 1024, FVID2_SF_PROGRESSIVE, 135000, 75, 16, 248, 144, 1, 38, 3} }, {"1280x1024@85", FVID2_STD_SXGA_85, {FVID2_STD_CUSTOM, 1280, 1024, FVID2_SF_PROGRESSIVE, 157500, 85, 64, 224, 160, 1, 44, 3} }, /*UXGA*/ {"1600x1200@60", FVID2_STD_UXGA_60, {FVID2_STD_UXGA_60, 1600, 1200, FVID2_SF_PROGRESSIVE, 162000, 60, 64, 304, 192, 1, 46, 3} }, /*WVGA*/ {"800x480@60", FVID2_STD_WVGA_60, {FVID2_STD_CUSTOM, 800, 480, FVID2_SF_PROGRESSIVE, 33500, 60, 164, 89, 10, 10, 23, 10} }, /*480P*/ {"480p-60", FVID2_STD_480P, {FVID2_STD_480P, 720, 480, FVID2_SF_PROGRESSIVE, 27000, 60, 16, 60, 62, 9, 20, 6} } };
to change the mode use this simple script:
#!/bin/bash
- This scripts changes the graphics. Graphic mode must be provided by first
- parameter in this form:
grmode="$1"
- grmode 720p-60
- grmode 1920x1080@60
echo 0 > /sys/devices/platform/vpss/graphics0/enabled
- Disable graphics0 pipeline
echo 0 > /sys/devices/platform/vpss/display0/enabled
- Disable hdmi VENC
echo $grmode > /sys/devices/platform/vpss/display0/mode
- Set the new VENC mode
echo 1 > /sys/devices/platform/vpss/display0/enabled
- Enable HDMI VENC
echo 1 > /sys/devices/platform/vpss/graphics0/enabled
- Enable graphics0 pipeline
List of timings and how to setup
Run this BASH test script to test all modes on the target.
To run video on EVM board issue this
/usr/share/ti/ti-omx/decode_display_a8host_debug.xv5T -w 1920 -h 1080 -f 30 -i /usr/share/ti/data/videos/dm816x_1080p_demo.26
Gstreamer examples:
Mount HTC nfs share on EVM:
mkdir -p /media/usb1 mount -o port=2049,nolock,proto=tcp -t nfs 192.168.9.2:/mnt/usb1 /media/usb1
/media/mmcblk0p3/131925719.avi /media/mmcblk0p3/131925719.mp4 /media/mmcblk0p3/91183494.avi /media/mmcblk0p3/91183494.mov /media/mmcblk0p3/pacific-rim-trailer.mp4 /media/mmcblk0p3/flight-trailer.mp4 /media/mmcblk0p3/big_buck_bunny_1080p_h264.mov
gst-launch filesrc location=/media/mmcblk0p3/flight-trailer.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 ! gstperf print-fps=true print-arm-load=true ! omx_videosink enable-last-buffer=false mux.audio_00 ! queue ! faad ! alsasink device=plughw:0,0 -v gst-launch rtspsrc location=rtsp://192.168.0.144:8554:/home/amironenko/tmp/flight.sdp ! rtph264depay ! queue ! h264parse access-unit=true ! queue ! omx_h264dec ! omx_scaler ! queue ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf print-fps=true print-arm-load=true ! omx_videosink sync=false enable-last-buffer=false enable-last-buffer=false mux.audio_00 ! queue ! faad ! alsasink device=plughw:0,0 -v
Gstreamer commands without QT Matrix
gst-launch -v filesrc location=/media/sda1/videos/flight-trailer.mp4 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DCenable-last-buffer=false mux.audio_00 ! queue ! faad ! alsasink device=plughw:0,0 -v_MODE_1080P_60 ! omx_videosink sync=false
720P-60 playback in a center of 1366x768 display
gst-launch filesrc location=$1 ! qtdemux name=mux mux.video_00 ! queue ! h264parse output-format=1 ! omx_h264dec ! omx_scaler ! 'video/x-raw-yuv,width=(int)1280,height=(int)720' ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf print-fps=true print-arm-load=true ! omx_videosink display-mode=OMX_DC_MODE_720P_60 top=24 left=42
RTSP playing
Server side
./rr_rtsp_server "( filesrc location=/media/mmcblk0p3/pacific-rim-trailer.mp4 ! qtdemux ! queue ! h264parse ! rtph264pay name=pay0 pt=96 )"
Client side
gst-launch rtspsrc location=$1 ! rtph264depay ! queue ! h264parse access-unit=true ! queue ! omx_h264dec ! omx_scaler ! queue ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! gstperf print-fps=true print-arm-load=true ! omx_videosink sync=false enable-last-buffer=false
where location rtsp://10.42.43.222:554/test
Receiving RTSP stream from HTC
gst-launch -v rtspsrc latency=200 location=rtsp://192.168.1.153:8554/test ! rtph264depay byte-stream=true ! h264parse access-unit=true ! queue ! 'video/x-h264, width=(int)1280, height=(int)720' ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_30 ! omx_videosink sync=true enable-last-buffer=false
Alsa playing
aplay -Dplughw:0,0 sound/wav_samples/1kHz.wav
Iptables default security rules
Guide how to enable HDMI interface
More Comprehensive Guide to DM81xx video
Running sample applications with slaveloader
TI81XX Linux PSP Releases Notes
Graphics stack from X to Wayland
DM814x Ethernet Switch User Guide
TI81XX Linux PSP Releases Notes
DM814x/AM387x PSP Linux drivers user guide
DM81XX Gstreamer Plugin Architecture
DM81xx AM38xx Audio Driver User Guide