Add ft's zsh configuration to links section.
[zsh-lovers.git] / zsh_people / bruno_bonfils / functions / _mplayer
1 #compdef mplayer
2
3 #
4 # MPlayer Zsh function
5 # Feb 2002, Bruno Bonfils <asyd@zshfr.org>
6 # thanks to #zsh@irc.openprojects.net (specially Clint)
7 #
8
9 _audio-codec-list ()
10 {
11     if ( [[ ${+_mplayer_audio_codec} -eq 0 ]] || 
12             _cache_invalid MPlayer_ac ) && 
13         ! _retrieve_cache MPlayer_ac; then
14         
15         local buffer version
16         
17         buffer=(${(@f)"$(mplayer -ac help)"})
18         version=buffer[1]
19
20         if [[ "$version" = *\0.50* ]]; then
21             _mplayer_audio_codec=(${buffer[3,-1]%% *})
22         else
23             _mplayer_audio_codec=(${buffer[9,-1]%% *})
24         fi
25
26         _store_cache MPlayer_ac _mplayer_audio_codec
27     fi
28
29     _wanted audio-codec expl 'audio-codec' compadd $_mplayer_audio_codec
30 }
31
32 _audio-driver-list ()
33 {
34     if ( [[ ${+_mplayer_audio_driver} -eq 0 ]] ||
35             _cache_invalid MPlayer_ao ) &&
36         ! _retrieve_cache MPlayer_ao; then
37         
38         local buffer version
39
40         buffer=(${(@f)"$(mplayer -ao help)"})
41         version=$buffer[1]
42
43         if [[ "$version" = *\0.50* ]]; then
44             _mplayer_audio_driver=(${${buffer[3,-1]/[[:blank:]]/}%%[[:blank:]]*})
45         else
46             _mplayer_audio_driver=(${${buffer[7,-1]/[[:blank:]]/}%%[[:blank:]]*})
47         fi
48
49         _store_cache MPlayer_ao _mplayer_audio_driver
50
51     fi
52
53     _wanted audio-driver expl 'audio-driver' compadd $_mplayer_audio_driver
54 }
55
56 _video-codec-list ()
57 {
58     if ( [[ ${+_mplayer_video_codec} -eq 0 ]] || 
59             _cache_invalid MPlayer_vc ) && 
60         ! _retrieve_cache MPlayer_vc; then
61         
62         local buffer version
63         
64         buffer=(${(@f)"$(mplayer -vc help)"})
65         version=buffer[1]
66
67         if [[ "$version" = *\0.50* ]]; then
68             _mplayer_video_codec=(${buffer[3,-1]%% *})
69         else
70             _mplayer_video_codec=(${buffer[9,-1]%% *})
71         fi
72
73         _store_cache MPlayer_vc _mplayer_video_codec
74     fi
75
76     _wanted video-codec expl 'video-codec' compadd $_mplayer_video_codec
77 }
78
79 _video-driver-list ()
80 {
81     if ( [[ ${+_mplayer_video_driver} -eq 0 ]] ||
82             _cache_invalid MPlayer_vo ) &&
83         ! _retrieve_cache MPlayer_vo; then
84         
85         local buffer version
86
87         buffer=(${(@f)"$(mplayer -vo help)"})
88         version=$buffer[1]
89
90         if [[ "$version" = *\0.50* ]]; then
91             _mplayer_video_driver=(${${buffer[3,-1]/[[:blank:]]/}%%[[:blank:]]*})
92         else
93             _mplayer_video_driver=(${${buffer[7,-1]/[[:blank:]]/}%%[[:blank:]]*})
94         fi
95
96         _store_cache MPlayer_vo _mplayer_video_driver
97
98     fi
99
100     _wanted video-driver expl 'video-driver' compadd $_mplayer_video_driver
101 }
102
103 _skins-list ()
104 {
105     local _default_skin
106     if zstyle -a ":completion:${curcontext}:" default-skin _default_skin; then
107         if ( [[ -d ~/.mplayer/Skin/$_default_skin ]] || [[ -d /usr/local/share/Skin/mplayer/$_default_skin ]] ); then
108            compadd $_default_skin && return 0
109         fi
110     fi
111
112     if ( [[ ${+_mplayer_skins} -eq 0 ]] ||
113             _cache_invalid MPlayer_skins ) &&
114         ! _retrieve_cache MPlayer_skins; then
115
116         if [[ -d ~/.mplayer/Skin ]]; then
117             _mplayer_skins=(${(o)$(ls ~/.mplayer/Skin)})
118         fi
119
120         if [[ -d /usr/local/share/mplayer/Skin ]]; then
121             _mplayer_skins=($_mplayer_skins ${(o)$(ls /usr/local/share/mplayer/Skin)})
122         fi
123
124         _store_cache MPlayer_skins _mplayer_skins
125
126     fi
127
128     _wanted skin expl 'skin' compadd $_mplayer_skins
129 }
130
131
132 _arguments -C -s \
133     '-abs[sound card audio buffer size(in bytes, default: measuring)]:buffer size' \
134     '-ac[force usage of a specific audio codec]:audio-codec attachment:_audio-codec-list' \
135     '-afm[force usage of a specific audio codec family]:audio-codec-family:(1 2 3 4 5)' \
136     '-aid[select audio channel]:audio-channel' \
137     '-ao[audio driver]:audio-driver attachment:_audio-driver-list' \
138     '-aspect[set aspect ratio of movies]:ratio' \
139     '-benchmark[use with combination with -nosound and -vo null for benchmarking]' \
140     '-chapter[specify which chapter to start playing at]:chapter' \
141     '-config[specifies where to search for config files]' \
142     '-delay[audio delay in seconds (may be +/- float value)]:delay' \
143     '-display[specify the hostname and display number of the X server]:display attachment:_x_display' \
144     '-double[enable double buffering]' \
145     '-dumpaudio[writes audio stream of the file to ./stream.dump]' \
146     '-dvdkey[key to decrypt stream encoded with css]:key' \
147     '-dvd[tell MPlayer which movies to play]:titleid' \
148     '-fbmode[change videomode from /etc/fb.modes]:fbmode' \
149     '-fbmodeconfig[use config file instead /etc/fb.modes]:fbmodeconfig:_files' \
150     '-fb[specifies the framebuffer device to user]' \
151     '-ffactor[resample alphamap of the font]:factor:(0 0.75 1 10)' \
152     '-forceidx[force rebuilding of index]' \
153     '-forcexv[force using xvideo (sdl)]' \
154     '-fps[force frame rate (if value is wrong in the header)]:frame-rate' \
155     '-framedrop[enable slow dropping (for slow machine)]' \
156     '-framedrop[frame dropping]' \
157     '-frames[mplayer plays number frame, and quits]:frame-number' \
158     '-fs[fullscreen]' \
159     '-fsmode[fullscreen mode]:fs-mode:(0 1 2 3)' \
160     '-gui[start with gui mode]' \
161     '-skin[skin name]:skin attachment:_skins-list' \
162     '-idx[rebuilds index of the avi]' \
163     '-include[specify config file to be parsed after the default]:config-file:_files' \
164     '-lircconf[specifies a configfile for lirc]:lirc-config-files attachment:_files' \
165     '-mc[maximun sync correction per 5 frames (in second)]:max-sync-correction' \
166     '-monitoraspect[set aspect ratio of your screen]:ratio' \
167     '-ni[force usage of non-interlaced avi parser]' \
168     '-nobps[do not use avg byte/sec value for A-V sync (AVI)]' \
169     '-nobps[use alternative A-V sync method for AVI files]' \
170     '-nodouble[disable double buffering (default)]' \
171     '-nodshow[disable usage of directshow video codecs]' \
172     '-noframedrop[no frame dropping]' \
173     '-nosound[no sound]' \
174     '-osdlevel[specifies which mode the osd should start]:osd-level:(0 1 2)' \
175     '-pp[apply postprocess filter]:filter attachment:_filter-list' \
176     '-quiet[display less output, status messages]' \
177     '-sb[seek to byte position]:byte' \
178     '-srate[specifies Hz to playback audio on]:frequence' \
179     '-ss[seek to given time position (format hh:mm\[:ss\])]:position' \
180     '-steromode[select type of mpeg1 stereo output]:stereo-mode:(0 1 2)' \
181     '-subfps[specify frame/sec rate of subtitle file only]:rate' \
182     '-sub[use/display this subtitle file]:subtitle:_files' \
183     '-unicode[tells mplayer to handle the subtitle file as unicode]' \
184     '-utf8[tells mplayer to handle the subtitle file as utf8]' \
185     '-vcd[play video cd track]:track' \
186     '-vc[force usage of a specific video codec]:video-codec attachment:_video-codec-list' \
187     '-v[enable verbose output]' \
188     '-vfm[force usage of a specific video codec family]:video-codec-family:(1 2 3 4 5)' \
189     '-vid[select video channel]:video-channel' \
190     '-vm[use XF86VidMode extension for mode changing]' \
191     '-vo[video driver]:video-driver attachment:_video-driver-list' \
192     '-x[scale image to x width if driver supports]:width' \
193     '-xy[scale image by factor if driver supports]:factor' \
194     '-y[scale image to y height if driver supports]:height' \
195     '-zoom[use software scaling, where available (use with -nofs)]' \
196     '-z[specify compression level for png output]:compression-level:(0 1 2 3 4 5 6 7 8)' \
197     "*:video file:_files -g '*.(#i)(mpg|avi|mpeg|mov|asf|vob|mjpg)'" \
198     && return 0
199 return 1
200
201