1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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
|