summaryrefslogtreecommitdiffstats
path: root/abs/core/linhes-scripts/vdpau-detector
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/linhes-scripts/vdpau-detector')
-rwxr-xr-xabs/core/linhes-scripts/vdpau-detector103
1 files changed, 103 insertions, 0 deletions
diff --git a/abs/core/linhes-scripts/vdpau-detector b/abs/core/linhes-scripts/vdpau-detector
new file mode 100755
index 0000000..c8cd155
--- /dev/null
+++ b/abs/core/linhes-scripts/vdpau-detector
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+# This script written by an anonymous author
+# Original page http://www.knoppmythwiki.org/index.php?page=HardwareAcceleratedVideo
+#
+# It's modded to allow vdpau switches commands to pass to a modded version of Bob Igo's
+# mplayer-resumer.pl wrapper for mplayer
+#
+# User can customize commandline for mplayer by editing the appropriate sections below
+# They include BASIC_OPTS, NOHD_OPTS, and LOW_OPTS
+
+IAM=$0
+FILE=$1
+
+#if no input display usage
+if [[ -z "$FILE" ]]; then
+ echo usage: $0 /path/to/file
+ exit
+fi
+
+MPLAYER="/usr/bin/mplayer"
+
+# For a complete list of options, see the mplayer DOCS
+# http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html
+#
+
+# Options for all videos: fullscreen, zoom, and use software eq
+BASIC_OPTS="-fs -zoom"
+
+# Options for non-HD videos: force aspect to 16x10 (to ensure video fills TV screen)
+# You'll need to modify the ratio if your res differs
+# Example: 1920x1080 = 1.778 = 16:9
+# Example: 1680x1050 = 1.600 = 16:10
+# Example: 1280x720 = 1.778 = 16:9
+
+NOHD_OPTS="-aspect 16:10"
+
+# Options for normal and lowres videos: use XV forcing 16x10
+LOW_OPTS="-aspect 16:10 -vo xv"
+
+VWIDTH=$($MPLAYER -identify -vo vdpau -frames 0 "$FILE" | grep ID_VIDEO_WIDTH | cut -c 16-25)
+VCODEC=$($MPLAYER -identify -vo vdpau -frames 0 "$FILE" | grep ID_VIDEO_CODEC | cut -c 16-25)
+
+# all following echo commands can be uncommented for debug info
+#echo .
+#echo " DEBUG info: video codec: $VCODEC"
+#echo " DEBUG info: video width: $VWIDTH"
+#echo " Debug info:
+
+
+# Test for codec, if it's supported by VDPAU, set options to use it. Then, check if the video is in HD,
+# and if it's not, set non-HD options.
+case $VCODEC in
+ffh264)
+ #echo -e "Playing h.264 file $FILE:\n"
+ MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffh264vdpau"
+ if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS"
+ fi
+ if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS"
+ fi
+ ;;
+ffmpeg2)
+ #echo -e "Playing MPEG2 file $FILE:\n"
+ MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffmpeg12vdpau"
+ if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS"
+ fi
+ if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS"
+ fi
+ ;;
+ffwmv3)
+ #echo -e "Playing WMV3 file $FILE:\n"
+ MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffwmv3vdpau"
+ if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS"
+ fi
+ if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS"
+ fi
+ ;;
+# VC-1 is largely unsupported by nvidia - uncomment this section if you're sure your card supports it.
+ffvc1)
+ #echo -e "Playing VC-1 file $FILE:\n"
+ MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffvc1vdpau"
+ if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS"
+ fi
+ if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then
+ MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS"
+ fi
+ ;;
+*)
+ #echo -e "Playing normal file $FILE:\n"
+ # Use XV and yadif filter with 'normal' (DiVX, XViD, old WMV, etc.) files, and force 16:9
+ # -vf filters only seem to work with XV, or at least they don't work w/VDPAU
+ MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS"
+ ;;
+esac
+
+echo $MPLAYEROPTS