summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-28 12:04:58 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-12-28 12:04:58 +0000
commit2e399f394d686f2f8dc763af7b2535fb1e184012 (patch)
treed821ae31b25dde0cc42d6d9c50d65031cf4083ca
parenta40067b39a61c58a970232dcda01d8a7e3fbb1ff (diff)
downloadmpv-2e399f394d686f2f8dc763af7b2535fb1e184012.tar.bz2
mpv-2e399f394d686f2f8dc763af7b2535fb1e184012.tar.xz
DVB-HEAD (aka. NEWSTRUCT) detection & support
patch by Dimitrios Dimitrakos <mail@dimitrios.de> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8595 b3059339-0415-0410-9bf9-f77b7e298cf2
-rwxr-xr-xconfigure50
-rw-r--r--libao2/ao_mpegpes.c9
-rw-r--r--libvo/vo_mpegpes.c31
3 files changed, 86 insertions, 4 deletions
diff --git a/configure b/configure
index 7617cd5907..a8af59a6bb 100755
--- a/configure
+++ b/configure
@@ -970,6 +970,7 @@ _vesa=auto
_fbdev=auto
_fbdev_nocopy=no
_dvb=auto
+_dvbhead=auto
_dxr2=auto
_dxr3=auto
_iconv=auto
@@ -1098,6 +1099,8 @@ for ac_option do
--disable-fbdev) _fbdev=no ;;
--enable-dvb) _dvb=yes ;;
--disable-dvb) _dvb=no ;;
+ --enable-dvbhead) _dvbhead=yes ;;
+ --disable-dvbhead) _dvbhead=no ;;
--enable-dxr2) _dxr2=yes ;;
--disable-dxr2) _dxr2=no ;;
--enable-dxr3) _dxr3=yes ;;
@@ -2745,10 +2748,53 @@ if test "$_dvb" = yes ; then
_def_dvb='#define HAVE_DVB 1'
_aomodules="mpegpes(dvb) $_aomodules"
_vomodules="mpegpes(dvb) $_vomodules"
-else
+fi
+if test "$_dvbhead" != no ; then
+ echocheck "DVB HEAD"
+ if test "$_dvbhead" != no ; then
+ _dvbhead=no
+ test -c /dev/dvb/adapter0/video0 && _dvbhead=yes
+
+cat >$TMPC << EOF
+#include <sys/poll.h>
+#include <sys/ioctl.h>
+#include <stdio.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <linux/dvb/dmx.h>
+#include <linux/dvb/frontend.h>
+#include <linux/dvb/video.h>
+#include <linux/dvb/audio.h>
+int main(void) {return 0;}
+EOF
+ if cc_check ; then
+ _dvbhead=yes
+ echores "yes"
+ else
+ for I in "-I/usr/src/DVB/include" "$_inc_extra/include/linux" ; do
+ if cc_check "$I" ; then
+ _dvbhead=yes
+ _inc_dvb="$I"
+ echores "yes (using $_inc_dvb)"
+ break
+ fi
+ done
+ test "$_dvbhead" = no && echores "no (specify path to DVB/include (HEAD Version) with --with-extraincdir=DIR)"
+ fi
+ else
+ echores "no"
+ fi
+ if test "$_dvbhead" = yes ; then
+ _def_dvb='#define HAVE_DVB_HEAD 1'
+ _aomodules="mpegpes(dvb) $_aomodules"
+ _vomodules="mpegpes(dvb) $_vomodules"
+ fi
+fi
+if test "$_dvbhead" = no && test "$_dvb" = no ; then
_def_dvb='#undef HAVE_DVB'
_aomodules="mpegpes(file) $_aomodules"
- _vomodules="mpegpes(file) $_vomodules"
+ _vomodules="mpegpes(file) $_vomodules"
fi
diff --git a/libao2/ao_mpegpes.c b/libao2/ao_mpegpes.c
index 8822878562..e00acde8f0 100644
--- a/libao2/ao_mpegpes.c
+++ b/libao2/ao_mpegpes.c
@@ -1,6 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#ifdef DVB_HEAD
+#define HAVE_DVB 1
+#endif
+
#ifdef HAVE_DVB
#include <sys/ioctl.h>
#endif
@@ -15,8 +19,13 @@
#include "../mp_msg.h"
#ifdef HAVE_DVB
+#ifndef HAVE_DVB_HEAD
#include <ost/audio.h>
audioMixer_t dvb_mixer={255,255};
+#else
+#include </linux/dvb/audio.h>
+audio_mixer_t dvb_mixer={255,255};
+#endif
#endif
extern int vo_mpegpes_fd;
extern int vo_mpegpes_fd2;
diff --git a/libvo/vo_mpegpes.c b/libvo/vo_mpegpes.c
index 0e186ca23f..a930b6eea5 100644
--- a/libvo/vo_mpegpes.c
+++ b/libvo/vo_mpegpes.c
@@ -26,9 +26,11 @@
#include <unistd.h>
#include "mp_msg.h"
-
+#ifdef HAVE_DVB_HEAD
+#define HAVE_DVB 1
+#endif
#ifdef HAVE_DVB
-
+#ifndef HAVE_DVB_HEAD
#include <sys/poll.h>
#include <sys/ioctl.h>
@@ -41,6 +43,20 @@
#include <ost/video.h>
#include <ost/audio.h>
+#else
+#define true 1
+#define false 0
+#include <sys/poll.h>
+
+#include <sys/ioctl.h>
+#include <stdio.h>
+#include <time.h>
+
+#include <linux/dvb/dmx.h>
+#include <linux/dvb/frontend.h>
+#include <linux/dvb/video.h>
+#include <linux/dvb/audio.h>
+#endif
#endif
#include "config.h"
@@ -86,6 +102,7 @@ static uint32_t preinit(const char *arg){
#ifdef HAVE_DVB
if(!arg){
//|O_NONBLOCK
+#ifndef HAVE_DVB_HEAD
if((vo_mpegpes_fd = open("/dev/ost/video",O_RDWR)) < 0){
perror("DVB VIDEO DEVICE: ");
return -1;
@@ -94,6 +111,16 @@ static uint32_t preinit(const char *arg){
perror("DVB AUDIO DEVICE: ");
return -1;
}
+#else
+ if((vo_mpegpes_fd = open("/dev/dvb/adapter0/video0",O_RDWR)) < 0){
+ perror("DVB VIDEO DEVICE: ");
+ return -1;
+ }
+ if((vo_mpegpes_fd2 = open("/dev/dvb/adapter0/audio0",O_RDWR|O_NONBLOCK)) < 0){
+ perror("DVB AUDIO DEVICE: ");
+ return -1;
+ }
+#endif
if ( (ioctl(vo_mpegpes_fd,VIDEO_SET_BLANK, false) < 0)){
perror("DVB VIDEO SET BLANK: ");
return -1;