1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-25 00:02:13 +00:00

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
This commit is contained in:
arpi 2002-12-28 12:04:58 +00:00
parent a40067b39a
commit 2e399f394d
3 changed files with 86 additions and 4 deletions

46
configure vendored
View File

@ -970,6 +970,7 @@ _vesa=auto
_fbdev=auto _fbdev=auto
_fbdev_nocopy=no _fbdev_nocopy=no
_dvb=auto _dvb=auto
_dvbhead=auto
_dxr2=auto _dxr2=auto
_dxr3=auto _dxr3=auto
_iconv=auto _iconv=auto
@ -1098,6 +1099,8 @@ for ac_option do
--disable-fbdev) _fbdev=no ;; --disable-fbdev) _fbdev=no ;;
--enable-dvb) _dvb=yes ;; --enable-dvb) _dvb=yes ;;
--disable-dvb) _dvb=no ;; --disable-dvb) _dvb=no ;;
--enable-dvbhead) _dvbhead=yes ;;
--disable-dvbhead) _dvbhead=no ;;
--enable-dxr2) _dxr2=yes ;; --enable-dxr2) _dxr2=yes ;;
--disable-dxr2) _dxr2=no ;; --disable-dxr2) _dxr2=no ;;
--enable-dxr3) _dxr3=yes ;; --enable-dxr3) _dxr3=yes ;;
@ -2745,7 +2748,50 @@ if test "$_dvb" = yes ; then
_def_dvb='#define HAVE_DVB 1' _def_dvb='#define HAVE_DVB 1'
_aomodules="mpegpes(dvb) $_aomodules" _aomodules="mpegpes(dvb) $_aomodules"
_vomodules="mpegpes(dvb) $_vomodules" _vomodules="mpegpes(dvb) $_vomodules"
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 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' _def_dvb='#undef HAVE_DVB'
_aomodules="mpegpes(file) $_aomodules" _aomodules="mpegpes(file) $_aomodules"
_vomodules="mpegpes(file) $_vomodules" _vomodules="mpegpes(file) $_vomodules"

View File

@ -1,6 +1,10 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#ifdef DVB_HEAD
#define HAVE_DVB 1
#endif
#ifdef HAVE_DVB #ifdef HAVE_DVB
#include <sys/ioctl.h> #include <sys/ioctl.h>
#endif #endif
@ -15,8 +19,13 @@
#include "../mp_msg.h" #include "../mp_msg.h"
#ifdef HAVE_DVB #ifdef HAVE_DVB
#ifndef HAVE_DVB_HEAD
#include <ost/audio.h> #include <ost/audio.h>
audioMixer_t dvb_mixer={255,255}; audioMixer_t dvb_mixer={255,255};
#else
#include </linux/dvb/audio.h>
audio_mixer_t dvb_mixer={255,255};
#endif
#endif #endif
extern int vo_mpegpes_fd; extern int vo_mpegpes_fd;
extern int vo_mpegpes_fd2; extern int vo_mpegpes_fd2;

View File

@ -26,9 +26,11 @@
#include <unistd.h> #include <unistd.h>
#include "mp_msg.h" #include "mp_msg.h"
#ifdef HAVE_DVB_HEAD
#define HAVE_DVB 1
#endif
#ifdef HAVE_DVB #ifdef HAVE_DVB
#ifndef HAVE_DVB_HEAD
#include <sys/poll.h> #include <sys/poll.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
@ -41,6 +43,20 @@
#include <ost/video.h> #include <ost/video.h>
#include <ost/audio.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 #endif
#include "config.h" #include "config.h"
@ -86,6 +102,7 @@ static uint32_t preinit(const char *arg){
#ifdef HAVE_DVB #ifdef HAVE_DVB
if(!arg){ if(!arg){
//|O_NONBLOCK //|O_NONBLOCK
#ifndef HAVE_DVB_HEAD
if((vo_mpegpes_fd = open("/dev/ost/video",O_RDWR)) < 0){ if((vo_mpegpes_fd = open("/dev/ost/video",O_RDWR)) < 0){
perror("DVB VIDEO DEVICE: "); perror("DVB VIDEO DEVICE: ");
return -1; return -1;
@ -94,6 +111,16 @@ static uint32_t preinit(const char *arg){
perror("DVB AUDIO DEVICE: "); perror("DVB AUDIO DEVICE: ");
return -1; 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)){ if ( (ioctl(vo_mpegpes_fd,VIDEO_SET_BLANK, false) < 0)){
perror("DVB VIDEO SET BLANK: "); perror("DVB VIDEO SET BLANK: ");
return -1; return -1;