aboutsummaryrefslogtreecommitdiff
path: root/multimedia/vdr-plugin-xineliboutput
diff options
context:
space:
mode:
authorJuergen Lock <nox@FreeBSD.org>2011-03-26 19:21:47 +0000
committerJuergen Lock <nox@FreeBSD.org>2011-03-26 19:21:47 +0000
commit9531ac93c5fa423743cd469be938320a6100fbc2 (patch)
tree13d2116cc9de5865da1e1559753d06a8a2f0a743 /multimedia/vdr-plugin-xineliboutput
parentee0ebe6479200c18341b2c2184a214d327c68391 (diff)
downloadports-9531ac93c5fa423743cd469be938320a6100fbc2.tar.gz
ports-9531ac93c5fa423743cd469be938320a6100fbc2.zip
X11 and Linux framebuffer front-end for VDR. Plugin displays video and OSD in X/Xv/XvMC/VAAPI/VDPAU window, Linux framebuffer/DirectFB/vidixfb or DXR3 card. Support for local and remote frontends. Built-in image and media player supports playback of most known media files (avi/mp3/divx/jpeg/...), DVDs and radio/video streams (http, rtsp, ...) directly from VDR. FreeBSD Note: If you want to use VAAPI/VDPAU make sure the ffmpeg and libxine ports are (re)built with the corresponding knobs turned on! (make config in their port dirs.) WWW: http://sourceforge.net/projects/xineliboutput/
Notes
Notes: svn path=/head/; revision=271811
Diffstat (limited to 'multimedia/vdr-plugin-xineliboutput')
-rw-r--r--multimedia/vdr-plugin-xineliboutput/Makefile60
-rw-r--r--multimedia/vdr-plugin-xineliboutput/distinfo2
-rw-r--r--multimedia/vdr-plugin-xineliboutput/files/keymap1148
-rw-r--r--multimedia/vdr-plugin-xineliboutput/files/patch-Makefile47
-rw-r--r--multimedia/vdr-plugin-xineliboutput/files/patch-config.c14
-rw-r--r--multimedia/vdr-plugin-xineliboutput/files/patch-configure62
-rw-r--r--multimedia/vdr-plugin-xineliboutput/files/patch-tools-sys_cap.h12
-rw-r--r--multimedia/vdr-plugin-xineliboutput/files/patch-xine_frontend_main.c11
-rw-r--r--multimedia/vdr-plugin-xineliboutput/pkg-descr17
-rw-r--r--multimedia/vdr-plugin-xineliboutput/pkg-plist22
10 files changed, 1395 insertions, 0 deletions
diff --git a/multimedia/vdr-plugin-xineliboutput/Makefile b/multimedia/vdr-plugin-xineliboutput/Makefile
new file mode 100644
index 000000000000..5b50013149fb
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/Makefile
@@ -0,0 +1,60 @@
+# New ports collection makefile for: vdr-plugin-xineliboutput
+# Date created: Wed Apr 14 18:11:42 CEST 2010
+# Whom: Juergen Lock <nox@freebsd.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= vdr-plugin-xineliboutput
+PORTVERSION= 1.0.90s20110308.2305
+PORTREVISION= 6
+CATEGORIES= multimedia
+MASTER_SITES= SF:release \
+ LOCAL:snapshot
+MASTER_SITE_SUBDIR= xineliboutput/files/xineliboutput/vdr-xineliboutput-${PORTVERSION}/:release \
+ nox/:snapshot
+DISTNAME= ${PORTNAME:S/-plugin-/-plugin-/}_${DISTVERSIONPREFIX}${DISTVERSION:S/s/+cvs/:S/$/.orig/}${DISTVERSIONSUFFIX}
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:snapshot
+
+MAINTAINER= nox@FreeBSD.org
+COMMENT= Video Disk Recorder - xineliboutput plugin/viewer
+
+LIB_DEPENDS+= extractor.3:${PORTSDIR}/textproc/libextractor \
+ xine.1:${PORTSDIR}/multimedia/libxine \
+ avutil.1:${PORTSDIR}/multimedia/ffmpeg \
+ dbus-glib-1.2:${PORTSDIR}/devel/dbus-glib \
+ vdpau.1:${PORTSDIR}/multimedia/libvdpau
+
+PATCH_STRIP= -p1
+USE_GNOME+= pkgconfig
+USE_XORG+= xrandr xrender
+USE_GL= gl glu glut
+PORTDOCS= COPYING README
+PORTEXAMPLES= xine
+MAKE_JOBS_SAFE= yes
+WRKSRC= ${WRKDIR}/vdr-${PLUGIN}
+
+.include "${.CURDIR}/../vdr/Makefile.plugins"
+
+MAKE_ARGS+= CONFIGURE_OPTS="${CONFIGURE_OPTS}"
+
+.include <bsd.port.pre.mk>
+
+post-patch: post-patch-plugin
+
+post-install: post-install-pluginlocales
+ @${INSTALL} -o ${VDR_USER} -g ${VDR_GROUP} -d ${PREFIX}/etc/vdr/plugins/${PLUGIN}
+ @${INSTALL_DATA} ${WRKSRC}/examples/allowed_hosts.conf ${PREFIX}/etc/vdr/plugins/${PLUGIN}/allowed_hosts.conf.sample
+ @if [ ! -f ${PREFIX}/etc/vdr/plugins/${PLUGIN}/allowed_hosts.conf ]; then \
+ ${INSTALL_DATA} ${WRKSRC}/examples/allowed_hosts.conf ${PREFIX}/etc/vdr/plugins/${PLUGIN}; \
+ fi
+.if !defined(NOPORTEXAMPLES)
+ ${MKDIR} ${EXAMPLESDIR}/xine
+ ${INSTALL_DATA} ${FILESDIR}/keymap ${EXAMPLESDIR}/xine
+.endif
+.if !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${DOCSDIR})
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/multimedia/vdr-plugin-xineliboutput/distinfo b/multimedia/vdr-plugin-xineliboutput/distinfo
new file mode 100644
index 000000000000..42c1c78e3962
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/distinfo
@@ -0,0 +1,2 @@
+SHA256 (vdr/vdr-plugin-xineliboutput_1.0.90+cvs20110308.2305.orig.tar.gz) = 9d5ae04c96cdebcd0f6eebc32242bfbfcbc5fa0d1c7aaf12cbebb5226a3a6a61
+SIZE (vdr/vdr-plugin-xineliboutput_1.0.90+cvs20110308.2305.orig.tar.gz) = 440599
diff --git a/multimedia/vdr-plugin-xineliboutput/files/keymap b/multimedia/vdr-plugin-xineliboutput/files/keymap
new file mode 100644
index 000000000000..598838c8c178
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/files/keymap
@@ -0,0 +1,1148 @@
+##
+# xine key bindings.
+# Automatically generated by xine-ui version 0.99.6.
+##
+
+# start playback
+Play {
+ key = VOID
+ modifier = none
+}
+
+# playback pause toggle
+Pause {
+ key = space
+ modifier = meta
+}
+
+# stop playback
+Stop {
+ key = S
+ modifier = meta
+}
+
+# take a snapshot
+Snapshot {
+ key = t
+ modifier = none
+}
+
+# eject the current medium
+Eject {
+ key = E
+ modifier = none
+}
+
+# select and play next MRL in the playlist
+NextMrl {
+ key = Next
+ modifier = control
+}
+
+# select and play previous MRL in the playlist
+PriorMrl {
+ key = Prior
+ modifier = control
+}
+
+# select and play MRL in the playlist
+SelectMrl {
+ key = Select
+ modifier = none
+}
+
+# loop mode toggle
+ToggleLoopMode {
+ key = l
+ modifier = none
+}
+
+# stop playback after played stream
+PlaylistStop {
+ key = l
+ modifier = control
+}
+
+# scan playlist to grab stream infos
+ScanPlaylistInfo {
+ key = s
+ modifier = control
+}
+
+# add a mediamark from current playback
+AddMediamark {
+ key = a
+ modifier = control
+}
+
+# edit selected mediamark
+MediamarkEditor {
+ key = e
+ modifier = control
+}
+
+# set position to -60 seconds in current stream
+SeekRelative-60 {
+ key = VOID
+ modifier = none
+}
+
+# set position to +60 seconds in current stream
+SeekRelative+60 {
+ key = VOID
+ modifier = none
+}
+
+# set position to -30 seconds in current stream
+SeekRelative-30 {
+ key = VOID
+ modifier = meta
+}
+
+# set position to +30 seconds in current stream
+SeekRelative+30 {
+ key = VOID
+ modifier = meta
+}
+
+# set position to -15 seconds in current stream
+SeekRelative-15 {
+ key = VOID
+ modifier = control
+}
+
+# set position to +15 seconds in current stream
+SeekRelative+15 {
+ key = VOID
+ modifier = control
+}
+
+# set position to -7 seconds in current stream
+SeekRelative-7 {
+ key = VOID
+ modifier = mod3
+}
+
+# set position to +7 seconds in current stream
+SeekRelative+7 {
+ key = VOID
+ modifier = mod3
+}
+
+# set position to beginning of current stream
+SetPosition0% {
+ key = 0
+ modifier = control
+}
+
+# set position to 10% of current stream
+SetPosition10% {
+ key = 1
+ modifier = control
+}
+
+# set position to 20% of current stream
+SetPosition20% {
+ key = 2
+ modifier = control
+}
+
+# set position to 30% of current stream
+SetPosition30% {
+ key = 3
+ modifier = control
+}
+
+# set position to 40% of current stream
+SetPosition40% {
+ key = 4
+ modifier = control
+}
+
+# set position to 50% of current stream
+SetPosition50% {
+ key = 5
+ modifier = control
+}
+
+# set position to 60% of current stream
+SetPosition60% {
+ key = 6
+ modifier = control
+}
+
+# set position to 70% of current stream
+SetPosition70% {
+ key = 7
+ modifier = control
+}
+
+# set position to 80% of current stream
+SetPosition80% {
+ key = 8
+ modifier = control
+}
+
+# set position to 90% of current stream
+SetPosition90% {
+ key = 9
+ modifier = control
+}
+
+# set position to 100% of current stream
+SetPosition100% {
+ key = End
+ modifier = control
+}
+
+# increment playback speed
+SpeedFaster {
+ key = VOID
+ modifier = none
+}
+
+# decrement playback speed
+SpeedSlower {
+ key = VOID
+ modifier = none
+}
+
+# reset playback speed
+SpeedReset {
+ key = DOWN
+ modifier = meta
+}
+
+# increment audio volume
+Volume+ {
+ key = V
+ modifier = meta
+}
+
+# decrement audio volume
+Volume- {
+ key = v
+ modifier = meta
+}
+
+# increment amplification level
+Amp+ {
+ key = V
+ modifier = control
+}
+
+# decrement amplification level
+Amp- {
+ key = v
+ modifier = control
+}
+
+# reset amplification to default value
+ResetAmp {
+ key = A
+ modifier = control
+}
+
+# audio muting toggle
+Mute {
+ key = VOID
+ modifier = control
+}
+
+# select next audio channel
+AudioChannelNext {
+ key = plus
+ modifier = none
+}
+
+# select previous audio channel
+AudioChannelPrior {
+ key = minus
+ modifier = none
+}
+
+# visibility toggle of audio post effect window
+APProcessShow {
+ key = VOID
+ modifier = none
+}
+
+# toggle post effect usage
+APProcessEnable {
+ key = VOID
+ modifier = none
+}
+
+# select next sub picture (subtitle) channel
+SpuNext {
+ key = period
+ modifier = none
+}
+
+# select previous sub picture (subtitle) channel
+SpuPrior {
+ key = comma
+ modifier = none
+}
+
+# interlaced mode toggle
+ToggleInterleave {
+ key = I
+ modifier = none
+}
+
+# cycle aspect ratio values
+ToggleAspectRatio {
+ key = A
+ modifier = none
+}
+
+# reduce the output window size by factor 1.2
+WindowReduce {
+ key = less
+ modifier = none
+}
+
+# enlarge the output window size by factor 1.2
+WindowEnlarge {
+ key = greater
+ modifier = none
+}
+
+# set video output window to 50%
+Window50 {
+ key = 1
+ modifier = meta
+}
+
+# set video output window to 100%
+Window100 {
+ key = 2
+ modifier = meta
+}
+
+# set video output window to 200%
+Window200 {
+ key = 3
+ modifier = meta
+}
+
+# zoom in
+ZoomIn {
+ key = z
+ modifier = none
+}
+
+# zoom out
+ZoomOut {
+ key = Z
+ modifier = none
+}
+
+# zoom in horizontally
+ZoomInX {
+ key = z
+ modifier = control
+}
+
+# zoom out horizontally
+ZoomOutX {
+ key = Z
+ modifier = control
+}
+
+# zoom in vertically
+ZoomInY {
+ key = z
+ modifier = meta
+}
+
+# zoom out vertically
+ZoomOutY {
+ key = Z
+ modifier = meta
+}
+
+# reset zooming
+ZoomReset {
+ key = z
+ modifier = control, meta
+}
+
+# resize output window to stream size
+Zoom1:1 {
+ key = S
+ modifier = none
+}
+
+# fullscreen toggle
+ToggleFullscreen {
+ key = f
+ modifier = none
+}
+
+# Xinerama fullscreen toggle
+ToggleXineramaFullscr {
+ key = F
+ modifier = none
+}
+
+# jump to media Menu
+Menu {
+ key = Tab
+ modifier = none
+}
+
+# jump to Title Menu
+TitleMenu {
+ key = VOID
+ modifier = none
+}
+
+# jump to Root Menu
+RootMenu {
+ key = VOID
+ modifier = none
+}
+
+# jump to Subpicture Menu
+SubpictureMenu {
+ key = VOID
+ modifier = none
+}
+
+# jump to Audio Menu
+AudioMenu {
+ key = VOID
+ modifier = none
+}
+
+# jump to Angle Menu
+AngleMenu {
+ key = F1
+ modifier = none
+}
+
+# jump to Part Menu
+PartMenu {
+ key = F2
+ modifier = none
+}
+
+# menu navigate up
+EventUp {
+ key = Up
+ modifier = none
+}
+
+# menu navigate down
+EventDown {
+ key = Down
+ modifier = none
+}
+
+# menu navigate left
+EventLeft {
+ key = Left
+ modifier = none
+}
+
+# menu navigate right
+EventRight {
+ key = Right
+ modifier = none
+}
+
+# menu select
+EventSelect {
+ key = Return
+ modifier = none
+}
+
+# jump to next chapter
+EventNext {
+ key = KP_Next
+ modifier = none
+}
+
+# jump to previous chapter
+EventPrior {
+ key = KP_Prior
+ modifier = none
+}
+
+# select next angle
+EventAngleNext {
+ key = KP_Home
+ modifier = none
+}
+
+# select previous angle
+EventAnglePrior {
+ key = KP_End
+ modifier = none
+}
+
+# visibility toggle of help window
+HelpShow {
+ key = h
+ modifier = meta
+}
+
+# visibility toggle of video post effect window
+VPProcessShow {
+ key = P
+ modifier = meta
+}
+
+# toggle post effect usage
+VPProcessEnable {
+ key = P
+ modifier = control, meta
+}
+
+# visibility toggle of output window
+ToggleWindowVisibility {
+ key = h
+ modifier = none
+}
+
+# bordered window toggle of output window
+ToggleWindowBorder {
+ key = b
+ modifier = none
+}
+
+# visibility toggle of UI windows
+ToggleVisibility {
+ key = g
+ modifier = none
+}
+
+# visibility toggle of control window
+ControlShow {
+ key = c
+ modifier = meta
+}
+
+# visibility toggle of mrl browser window
+MrlBrowser {
+ key = m
+ modifier = meta
+}
+
+# visibility toggle of playlist editor window
+PlaylistEditor {
+ key = p
+ modifier = meta
+}
+
+# visibility toggle of the setup window
+SetupShow {
+ key = s
+ modifier = meta
+}
+
+# visibility toggle of the event sender window
+EventSenderShow {
+ key = e
+ modifier = meta
+}
+
+# visibility toggle of analog TV window
+TVAnalogShow {
+ key = t
+ modifier = meta
+}
+
+# visibility toggle of log viewer
+ViewlogShow {
+ key = l
+ modifier = meta
+}
+
+# visibility toggle of stream info window
+StreamInfosShow {
+ key = i
+ modifier = meta
+}
+
+# display stream information using OSD
+OSDStreamInfos {
+ key = i
+ modifier = control
+}
+
+# display information using OSD
+OSDWriteText {
+ key = VOID
+ modifier = control
+}
+
+# show OSD menu
+OSDMenu {
+ key = O
+ modifier = none
+}
+
+# enter key binding editor
+KeyBindingEditor {
+ key = k
+ modifier = meta
+}
+
+# enable key bindings (not useful to bind a key to it!)
+KeyBindingsEnable {
+ key = VOID
+ modifier = none
+}
+
+# open file selector
+FileSelector {
+ key = o
+ modifier = control
+}
+
+# select a subtitle file
+SubSelector {
+ key = S
+ modifier = control
+}
+
+# download a skin from the skin server
+SkinDownload {
+ key = d
+ modifier = control
+}
+
+# display MRL/Ident toggle
+MrlIdentToggle {
+ key = t
+ modifier = control
+}
+
+# grab pointer toggle
+GrabPointer {
+ key = Insert
+ modifier = meta
+}
+
+# enter the number 0
+Number0 {
+ key = 0
+ modifier = none
+}
+
+# enter the number 1
+Number1 {
+ key = 1
+ modifier = none
+}
+
+# enter the number 2
+Number2 {
+ key = 2
+ modifier = none
+}
+
+# enter the number 3
+Number3 {
+ key = 3
+ modifier = none
+}
+
+# enter the number 4
+Number4 {
+ key = 4
+ modifier = none
+}
+
+# enter the number 5
+Number5 {
+ key = 5
+ modifier = none
+}
+
+# enter the number 6
+Number6 {
+ key = 6
+ modifier = none
+}
+
+# enter the number 7
+Number7 {
+ key = 7
+ modifier = none
+}
+
+# enter the number 8
+Number8 {
+ key = 8
+ modifier = none
+}
+
+# enter the number 9
+Number9 {
+ key = 9
+ modifier = none
+}
+
+# add 10 to the next entered number
+Number10add {
+ key = plus
+ modifier = mod3
+}
+
+# set position in current stream to numeric percentage
+SetPosition% {
+ key = slash
+ modifier = none
+}
+
+# set position forward by numeric argument in current stream
+SeekRelative+ {
+ key = VOID
+ modifier = meta
+}
+
+# set position back by numeric argument in current stream
+SeekRelative- {
+ key = VOID
+ modifier = mod3
+}
+
+# change audio video syncing (delay video)
+AudioVideoDecay+ {
+ key = VOID
+ modifier = none
+}
+
+# change audio video syncing (delay audio)
+AudioVideoDecay- {
+ key = n
+ modifier = none
+}
+
+# reset audio video syncing offset
+AudioVideoDecayReset {
+ key = Home
+ modifier = none
+}
+
+# change subtitle syncing (delay video)
+SpuVideoDecay+ {
+ key = M
+ modifier = none
+}
+
+# change subtitle syncing (delay subtitles)
+SpuVideoDecay- {
+ key = N
+ modifier = none
+}
+
+# reset subtitle syncing offset
+SpuVideoDecayReset {
+ key = End
+ modifier = none
+}
+
+# toggle TV modes (on the DXR3)
+ToggleTVmode {
+ key = o
+ modifier = control, meta
+}
+
+# switch Monitor to DPMS standby mode
+DPMSStandby {
+ key = d
+ modifier = none
+}
+
+# increase hue by 10
+HueControl+ {
+ key = VOID
+ modifier = none
+}
+
+# decrease hue by 10
+HueControl- {
+ key = VOID
+ modifier = none
+}
+
+# increase saturation by 10
+SaturationControl+ {
+ key = VOID
+ modifier = none
+}
+
+# decrease saturation by 10
+SaturationControl- {
+ key = VOID
+ modifier = none
+}
+
+# increase brightness by 10
+BrightnessControl+ {
+ key = VOID
+ modifier = none
+}
+
+# decrease brightness by 10
+BrightnessControl- {
+ key = VOID
+ modifier = none
+}
+
+# increase contrast by 10
+ContrastControl+ {
+ key = VOID
+ modifier = none
+}
+
+# decrease contrast by 10
+ContrastControl- {
+ key = VOID
+ modifier = none
+}
+
+# quit the program
+Quit {
+ key = q
+ modifier = none
+}
+
+# input_pvr: set input
+PVRSetInput {
+ key = VOID
+ modifier = none
+}
+
+# input_pvr: set frequency
+PVRSetFrequency {
+ key = VOID
+ modifier = none
+}
+
+# input_pvr: mark the start of a new stream section
+PVRSetMark {
+ key = VOID
+ modifier = none
+}
+
+# input_pvr: set the name for the current stream section
+PVRSetName {
+ key = VOID
+ modifier = none
+}
+
+# input_pvr: save the stream section
+PVRSave {
+ key = VOID
+ modifier = none
+}
+
+# VDR Red button
+VDRButtonRed {
+ key = F5
+ modifier = none
+}
+
+# VDR Green button
+VDRButtonGreen {
+ key = F6
+ modifier = none
+}
+
+# VDR Yellow button
+VDRButtonYellow {
+ key = F7
+ modifier = none
+}
+
+# VDR Blue button
+VDRButtonBlue {
+ key = F8
+ modifier = none
+}
+
+# VDR Play
+VDRPlay {
+ key = p
+ modifier = none
+}
+
+# VDR Pause
+VDRPause {
+ key = space
+ modifier = none
+}
+
+# VDR Stop
+VDRStop {
+ key = s
+ modifier = none
+}
+
+# VDR Record
+VDRRecord {
+ key = r
+ modifier = none
+}
+
+# VDR Fast forward
+VDRFastFwd {
+ key = w
+ modifier = none
+}
+
+# VDR Fast rewind
+VDRFastRew {
+ key = e
+ modifier = none
+}
+
+# VDR Power
+VDRPower {
+ key = VOID
+ modifier = none
+}
+
+# VDR Channel +
+VDRChannelPlus {
+ key = Prior
+ modifier = none
+}
+
+# VDR Channel -
+VDRChannelMinus {
+ key = Next
+ modifier = none
+}
+
+# VDR Schedule menu
+VDRSchedule {
+ key = VOID
+ modifier = none
+}
+
+# VDR Channel menu
+VDRChannels {
+ key = c
+ modifier = none
+}
+
+# VDR Timers menu
+VDRTimers {
+ key = VOID
+ modifier = none
+}
+
+# VDR Recordings menu
+VDRRecordings {
+ key = o
+ modifier = none
+}
+
+# VDR Setup menu
+VDRSetup {
+ key = VOID
+ modifier = none
+}
+
+# VDR Command menu
+VDRCommands {
+ key = C
+ modifier = none
+}
+
+# VDR Command back
+VDRBack {
+ key = BackSpace
+ modifier = none
+}
+
+# VDR User command 1
+VDRUser1 {
+ key = U
+ modifier = none
+}
+
+# VDR User command 2
+VDRUser2 {
+ key = V
+ modifier = none
+}
+
+# VDR User command 3
+VDRUser3 {
+ key = W
+ modifier = none
+}
+
+# VDR User command 4
+VDRUser4 {
+ key = X
+ modifier = none
+}
+
+# VDR User command 5
+VDRUser5 {
+ key = Y
+ modifier = none
+}
+
+# VDR User command 6
+VDRUser6 {
+ key = VOID
+ modifier = none
+}
+
+# VDR User command 7
+VDRUser7 {
+ key = VOID
+ modifier = none
+}
+
+# VDR User command 8
+VDRUser8 {
+ key = VOID
+ modifier = none
+}
+
+# VDR User command 9
+VDRUser9 {
+ key = VOID
+ modifier = none
+}
+
+# VDR Volume +
+VDRVolumePlus {
+ key = KP_Add
+ modifier = none
+}
+
+# VDR Volume -
+VDRVolumeMinus {
+ key = KP_Subtract
+ modifier = none
+}
+
+# VDR Mute audio
+VDRMute {
+ key = m
+ modifier = none
+}
+
+# VDR Audio menu
+VDRAudio {
+ key = a
+ modifier = none
+}
+
+# VDR Command info
+VDRInfo {
+ key = i
+ modifier = none
+}
+
+# VDR Previous channel
+VDRChannelPrevious {
+ key = VOID
+ modifier = none
+}
+
+# VDR Subtiles menu
+VDRSubtitles {
+ key = u
+ modifier = none
+}
+
+# menu select
+Alias {
+ entry = EventSelect
+ key = KP_Enter
+ modifier = none
+}
+
+# jump to media Menu
+Alias {
+ entry = Menu
+ key = Insert
+ modifier = none
+}
+
+# enter the number 0
+Alias {
+ entry = Number0
+ key = KP_0
+ modifier = none
+}
+
+# enter the number 1
+Alias {
+ entry = Number1
+ key = KP_1
+ modifier = none
+}
+
+# enter the number 2
+Alias {
+ entry = Number2
+ key = KP_2
+ modifier = none
+}
+
+# enter the number 3
+Alias {
+ entry = Number3
+ key = KP_3
+ modifier = none
+}
+
+# enter the number 4
+Alias {
+ entry = Number4
+ key = KP_4
+ modifier = none
+}
+
+# enter the number 5
+Alias {
+ entry = Number5
+ key = KP_5
+ modifier = none
+}
+
+# enter the number 6
+Alias {
+ entry = Number6
+ key = KP_6
+ modifier = none
+}
+
+# enter the number 7
+Alias {
+ entry = Number7
+ key = KP_7
+ modifier = none
+}
+
+# enter the number 8
+Alias {
+ entry = Number8
+ key = KP_8
+ modifier = none
+}
+
+# enter the number 9
+Alias {
+ entry = Number9
+ key = KP_9
+ modifier = none
+}
+
+##
+# End of xine key bindings.
+##
diff --git a/multimedia/vdr-plugin-xineliboutput/files/patch-Makefile b/multimedia/vdr-plugin-xineliboutput/files/patch-Makefile
new file mode 100644
index 000000000000..22f253842162
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/files/patch-Makefile
@@ -0,0 +1,47 @@
+--- a/Makefile
++++ b/Makefile
+@@ -84,13 +84,8 @@ VDRINCDIR = /usr/local/include
+ ### check for VDR
+ ###
+
+-ifeq ($(ARCH_APPLE_DARWIN), yes)
+ VDRVERSION = $(shell sed -ne '/define VDRVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
+ APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
+-else
+- VDRVERSION = $(shell sed -ne '/define VDRVERSION/ { s/^.*"\(.*\)".*$$/\1/; p }' $(VDRDIR)/config.h)
+- APIVERSION = $(shell sed -ne '/define APIVERSION/ { s/^.*"\(.*\)".*$$/\1/; p }' $(VDRDIR)/config.h)
+-endif
+
+ VDR_TREE = no
+ ifeq ($(strip $(VDRVERSION)),)
+@@ -199,6 +194,9 @@ endif
+ ifdef STARTUP_IMAGE_FILE
+ DEFINES += -DSTARTUP_IMAGE_FILE='"$(STARTUP_IMAGE_FILE)"'
+ endif
++ifdef LOCALBASE
++ DEFINES += -DLOCALBASE='"$(LOCALBASE)"'
++endif
+
+
+ ###
+@@ -410,7 +408,7 @@ ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes)
+ @echo Installing $(DESTDIR)$(LIBDIR)/$(VDRPLUGIN)
+ @mkdir -p $(DESTDIR)$(LIBDIR)
+ @-rm -rf $(DESTDIR)$(LIBDIR)/$(VDRPLUGIN)
+- @$(INSTALL) -D -m 0755 $(VDRPLUGIN) $(DESTDIR)$(LIBDIR)/$(VDRPLUGIN)
++ @$(INSTALL) -m 0755 $(VDRPLUGIN) $(DESTDIR)$(LIBDIR)/$(VDRPLUGIN)
+ endif
+ endif
+ ifeq ($(XINELIBOUTPUT_FB), yes)
+@@ -441,6 +439,11 @@ ifeq ($(XINELIBOUTPUT_X11), yes)
+ endif
+ endif
+ endif
++ifeq ($(XINELIBOUTPUT_VDRPLUGIN), yes)
++ @$(INSTALL) -m 0755 $(LIBDIR)/$(VDRPLUGIN) $(DESTDIR)/${PREFIX}/lib/vdr
++ @$(INSTALL) -m 0755 $(LIBDIR)/$(VDRPLUGIN_SXFE) $(DESTDIR)/${PREFIX}/lib/vdr
++
++endif
+
+ dist: clean
+ @-rm -rf $(TMPDIR)/$(ARCHIVE)
diff --git a/multimedia/vdr-plugin-xineliboutput/files/patch-config.c b/multimedia/vdr-plugin-xineliboutput/files/patch-config.c
new file mode 100644
index 000000000000..7f17158bf777
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/files/patch-config.c
@@ -0,0 +1,14 @@
+--- a/config.c
++++ b/config.c
+@@ -544,7 +544,11 @@ config_t::config_t() {
+ memset(audio_equalizer,0,sizeof(audio_equalizer));
+ strn0cpy(audio_visualization, "goom", sizeof(audio_visualization));
+ strn0cpy(audio_vis_goom_opts, "fps:25,width:720,height:576", sizeof(audio_vis_goom_opts));
++#ifdef LOCALBASE
++ strn0cpy(audio_vis_image_mrl, "file:" LOCALBASE "/share/xine/visuals/default.avi", sizeof(audio_vis_image_mrl));
++#else
+ strn0cpy(audio_vis_image_mrl, "file:/usr/share/xine/visuals/default.avi", sizeof(audio_vis_image_mrl));
++#endif
+
+ headphone = 0;
+ audio_upmix = 0;
diff --git a/multimedia/vdr-plugin-xineliboutput/files/patch-configure b/multimedia/vdr-plugin-xineliboutput/files/patch-configure
new file mode 100644
index 000000000000..b0e9ba536f55
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/files/patch-configure
@@ -0,0 +1,62 @@
+--- a/configure
++++ a/configure
+@@ -348,10 +348,13 @@ test_pkgconfig
+ [ $debug = yes ] && \
+ test_library X11 do_error "none.h" "-lnolib"
+
+-test_library VDR libextractor "extractor.h" "-lextractor" "EXTRACTOR_getKeywords(0,0)"
+-test_library VDR libcap "sys/capability.h" "-lcap" "cap_get_proc()"
+-test_library XINE libxine "xine.h" "-lxine" "xine_init(0)"
+-test_library DLFCN dlfcn "dlfcn.h" "-ldl" "dlopen(0,0)"
++#test_library VDR libextractor "extractor.h" "-lextractor" "EXTRACTOR_getKeywords(0,0)"
++test_library VDR libextractor "extractor.h" "-lextractor" "EXTRACTOR_getKeywords(0,0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++#test_library VDR libcap "sys/capability.h" "-lcap" "cap_get_proc()"
++#test_library XINE libxine "xine.h" "-lxine" "xine_init(0)"
++test_library XINE libxine "xine.h" "-lxine" "xine_init(0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++#test_library DLFCN dlfcn "dlfcn.h" "-ldl" "dlopen(0,0)"
++test_library DLFCN dlfcn "dlfcn.h" "" "dlopen(0,0)"
+
+ if enabled libxine; then
+
+@@ -363,19 +366,30 @@ if enabled libxine; then
+ fi
+ log " $XINEPLUGINDIR"
+
+- test_library AVUTIL libavutil "libavutil/mem.h" "-lavutil" "av_mallocz(1)"
+- test_library JPEG libjpeg "jpeglib.h" "-ljpeg" "jpeg_create_compress(0)"
+- test_library X11 x11 "X11/X.h" "-lX11" "XInitThreads()"
++# test_library AVUTIL libavutil "libavutil/mem.h" "-lavutil" "av_mallocz(1)"
++ test_library AVUTIL libavutil "libavutil/mem.h" "-lavutil" "av_mallocz(1)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library JPEG libjpeg "jpeglib.h" "-ljpeg" "jpeg_create_compress(0)"
++ test_library JPEG libjpeg "jpeglib.h" "-ljpeg" "jpeg_create_compress(0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library X11 x11 "X11/X.h" "-lX11" "XInitThreads()"
++ test_library X11 x11 "X11/X.h" "-lX11" "XInitThreads()" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
+ test_library PTHREAD pthread "pthread.h" "-lpthread" "pthread_create(0,0,0,0)"
+ if enabled x11; then
+- test_library X11 xext "X11/extensions/Xext.h" "-lXext" ""
+- test_library X11 xshm "X11/extensions/XShm.h" "-lXext" "XShmQueryExtension(0)"
+- test_library X11 xrender "X11/extensions/Xrender.h" "-lXrender" "XRenderQueryFormats(0)"
+- test_library X11 xshape "X11/extensions/shape.h" "-lXext" "XShapeQueryExtension(0,0,0)"
+- test_library X11 xdpms "X11/extensions/dpms.h" "-lXext" "DPMSDisable(0)"
+- test_library X11 xinerama "X11/extensions/Xinerama.h" "-lXinerama" "XineramaQueryScreens(0,0)"
+- test_library X11 opengl "GL/glx.h" "-lGL -lGLU -lglut" "glXQueryVersion(0,0,0)"
+- test_library none vdpau "vdpau/vdpau_x11.h" "-lvdpau" "vdp_device_create_x11(0,0,0,0)"
++# test_library X11 xext "X11/extensions/Xext.h" "-lXext" ""
++ test_library X11 xext "X11/extensions/Xext.h" "-lXext" "" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library X11 xshm "X11/extensions/XShm.h" "-lXext" "XShmQueryExtension(0)"
++ test_library X11 xshm "X11/extensions/XShm.h" "-lXext" "XShmQueryExtension(0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library X11 xrender "X11/extensions/Xrender.h" "-lXrender" "XRenderQueryFormats(0)"
++ test_library X11 xrender "X11/extensions/Xrender.h" "-lXrender" "XRenderQueryFormats(0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library X11 xshape "X11/extensions/shape.h" "-lXext" "XShapeQueryExtension(0,0,0)"
++ test_library X11 xshape "X11/extensions/shape.h" "-lXext" "XShapeQueryExtension(0,0,0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library X11 xdpms "X11/extensions/dpms.h" "-lXext" "DPMSDisable(0)"
++ test_library X11 xdpms "X11/extensions/dpms.h" "-lXext" "DPMSDisable(0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library X11 xinerama "X11/extensions/Xinerama.h" "-lXinerama" "XineramaQueryScreens(0,0)"
++ test_library X11 xinerama "X11/extensions/Xinerama.h" "-lXinerama" "XineramaQueryScreens(0,0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library X11 opengl "GL/glx.h" "-lGL -lGLU -lglut" "glXQueryVersion(0,0,0)"
++ test_library X11 opengl "GL/glx.h" "-lGL -lGLU -lglut" "glXQueryVersion(0,0,0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
++# test_library none vdpau "vdpau/vdpau_x11.h" "-lvdpau" "vdp_device_create_x11(0,0,0,0)"
++ test_library none vdpau "vdpau/vdpau_x11.h" "-lvdpau" "vdp_device_create_x11(0,0,0,0)" "-I${LOCALBASE}/include -L${LOCALBASE}/lib"
+ test_library X11 dbus-glib-1 \
+ "dbus/dbus-glib.h" \
+ "-ldbus-glib-1 -lgobject-2.0 -lglib-2.0" \
diff --git a/multimedia/vdr-plugin-xineliboutput/files/patch-tools-sys_cap.h b/multimedia/vdr-plugin-xineliboutput/files/patch-tools-sys_cap.h
new file mode 100644
index 000000000000..c881c0a75a34
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/files/patch-tools-sys_cap.h
@@ -0,0 +1,12 @@
+--- a/tools/sys_cap.h
++++ b/tools/sys_cap.h
+@@ -11,7 +11,9 @@
+ #ifndef _XINELIBOUTPUT_SYS_CAP_H_
+ #define _XINELIBOUTPUT_SYS_CAP_H_
+
++#ifdef HAVE_LIBCAP
+ #include "features.h"
++#endif
+
+ #include <unistd.h>
+ #include <sys/types.h>
diff --git a/multimedia/vdr-plugin-xineliboutput/files/patch-xine_frontend_main.c b/multimedia/vdr-plugin-xineliboutput/files/patch-xine_frontend_main.c
new file mode 100644
index 000000000000..cc3e28b64e7c
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/files/patch-xine_frontend_main.c
@@ -0,0 +1,11 @@
+--- a/xine_frontend_main.c
++++ b/xine_frontend_main.c
+@@ -629,7 +629,7 @@ int main(int argc, char *argv[])
+ case 'C': config_file = optarg;
+ PRINTF("Config file: %s\n", config_file);
+ break;
+- case 'L': lirc_dev = strdup(optarg ? : "/dev/lircd");
++ case 'L': lirc_dev = strdup(optarg ? : "/var/run/lirc/lircd");
+ if (strstr(lirc_dev, ",repeatemu")) {
+ *strstr(lirc_dev, ",repeatemu") = 0;
+ repeat_emu = 1;
diff --git a/multimedia/vdr-plugin-xineliboutput/pkg-descr b/multimedia/vdr-plugin-xineliboutput/pkg-descr
new file mode 100644
index 000000000000..f6ba1e4cc74a
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/pkg-descr
@@ -0,0 +1,17 @@
+http://www.linuxtv.org/vdrwiki/index.php/Xineliboutput-plugin
+
+X11 and Linux framebuffer front-end for VDR.
+Plugin displays video and OSD in X/Xv/XvMC/VAAPI/VDPAU window,
+Linux framebuffer/DirectFB/vidixfb or DXR3 card.
+
+Support for local and remote frontends.
+
+Built-in image and media player supports playback of most known
+media files (avi/mp3/divx/jpeg/...), DVDs and radio/video streams
+(http, rtsp, ...) directly from VDR.
+
+FreeBSD Note: If you want to use VAAPI/VDPAU make sure the ffmpeg
+and libxine ports are (re)built with the corresponding knobs turned on!
+(make config in their port dirs.)
+
+WWW: http://sourceforge.net/projects/xineliboutput/
diff --git a/multimedia/vdr-plugin-xineliboutput/pkg-plist b/multimedia/vdr-plugin-xineliboutput/pkg-plist
new file mode 100644
index 000000000000..37e97899b332
--- /dev/null
+++ b/multimedia/vdr-plugin-xineliboutput/pkg-plist
@@ -0,0 +1,22 @@
+bin/vdr-fbfe
+bin/vdr-sxfe
+lib/xine/plugins/1.29/xineplug_inp_xvdr.so
+lib/xine/plugins/1.29/post/xineplug_post_autocrop.so
+lib/xine/plugins/1.29/post/xineplug_post_swscale.so
+lib/xine/plugins/1.29/post/xineplug_post_audiochannel.so
+lib/vdr/libvdr-xineliboutput.so.1.7.17
+lib/vdr/libxineliboutput-sxfe.so.1.0.90-cvs
+@unexec if cmp -s %D/etc/vdr/plugins/xineliboutput/allowed_hosts.conf.sample %D/etc/vdr/plugins/xineliboutput/allowed_hosts.conf; then rm -f %D/etc/vdr/plugins/xineliboutput/allowed_hosts.conf; fi
+etc/vdr/plugins/xineliboutput/allowed_hosts.conf.sample
+@exec if [ ! -f %D/etc/vdr/plugins/xineliboutput/allowed_hosts.conf ] ; then cp -p %D/%F %B/allowed_hosts.conf; fi
+@exec chown %%VDR_USER%%:%%VDR_GROUP%% %D/etc/vdr/plugins/xineliboutput
+@dirrmtry etc/vdr/plugins/xineliboutput
+%%NLS%%share/locale/cs_CZ/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/de_DE/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/et_EE/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/fi_FI/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/it_IT/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/ru_RU/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/uk_UA/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/zh_CN/LC_MESSAGES/vdr-xineliboutput.mo
+%%NLS%%share/locale/zh_TW/LC_MESSAGES/vdr-xineliboutput.mo