Mistral DM8148 EVM - andreimironenko/oe-davinci GitHub Wiki

Table of Contents

Video outputs

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
  1. 1920 x 1080p @75 Hz with 8-bit/component color depth
  2. 1600 x 1200 @60 Hz with 8-bit/component color depth
  • Support for deep-color mode:
  1. 10-bit/component color depth up to 1080p @60 Hz (Max pixel clock = 148.5MHz)
  2. 12-bit/component color depth up to 720p/1080i @60 Hz (Max pixel clock =
123.75 MHz)
  • 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


  1. This scripts changes the graphics. Graphic mode must be provided by first
  2. parameter in this form:
  1. grmode 720p-60
  2. grmode 1920x1080@60
grmode="$1"
  1. Disable graphics0 pipeline
echo 0 > /sys/devices/platform/vpss/graphics0/enabled
  1. Disable hdmi VENC
echo 0 > /sys/devices/platform/vpss/display0/enabled
  1. Set the new VENC mode
echo $grmode > /sys/devices/platform/vpss/display0/mode
  1. Enable HDMI VENC
echo 1 > /sys/devices/platform/vpss/display0/enabled
  1. Enable graphics0 pipeline
echo 1 > /sys/devices/platform/vpss/graphics0/enabled

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

Creating gateway with iptables

Links

Iptables default security rules

Home Gateway

Simple Statefull Firewall

Iptables rules examples

Useful links

DM814x EZ SDK Home

Guide how to enable HDMI interface

More Comprehensive Guide to DM81xx video

Running sample applications with slaveloader

Video Driver User Guide

Framebuffer-HOWTO

Linux LCD driver writing

VESA standard

Video timings calculator

Wayland Home Page

TI81XX Linux PSP Releases Notes

EzSDK DM814x Release Notes

MP4/H264 video samples

Graphics stack from X to Wayland

DM814x Ethernet Switch User Guide

TI81XX Linux PSP Releases Notes

Gstreamer plugins list

DM81xx Gstreamer Pipelines

DM814x/AM387x PSP Linux drivers user guide

DM81XX Gstreamer Plugin Architecture

DM81xx AM38xx Audio Driver User Guide

Creating an image with loopback device

Quick installation and user guide of Graphics SDK

⚠️ **GitHub.com Fallback** ⚠️