From 2e399f394d686f2f8dc763af7b2535fb1e184012 Mon Sep 17 00:00:00 2001 From: arpi Date: Sat, 28 Dec 2002 12:04:58 +0000 Subject: [PATCH] DVB-HEAD (aka. NEWSTRUCT) detection & support patch by Dimitrios Dimitrakos git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8595 b3059339-0415-0410-9bf9-f77b7e298cf2 --- configure | 50 +++++++++++++++++++++++++++++++++++++++++++-- libao2/ao_mpegpes.c | 9 ++++++++ libvo/vo_mpegpes.c | 31 ++++++++++++++++++++++++++-- 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 +#include +#include +#include +#include + +#include +#include +#include +#include +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 #include #include +#ifdef DVB_HEAD +#define HAVE_DVB 1 +#endif + #ifdef HAVE_DVB #include #endif @@ -15,8 +19,13 @@ #include "../mp_msg.h" #ifdef HAVE_DVB +#ifndef HAVE_DVB_HEAD #include audioMixer_t dvb_mixer={255,255}; +#else +#include +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 #include "mp_msg.h" - +#ifdef HAVE_DVB_HEAD +#define HAVE_DVB 1 +#endif #ifdef HAVE_DVB - +#ifndef HAVE_DVB_HEAD #include #include @@ -41,6 +43,20 @@ #include #include +#else +#define true 1 +#define false 0 +#include + +#include +#include +#include + +#include +#include +#include +#include +#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;