Mercurial > mplayer.hg
view libdha/libdha.c @ 4513:2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
(high quality divx movies that before ran very poor now plays perfectly). Also includes some
minor fixes to the osd support. Since libmp1e has issues with non-mmx system I think this move
is a smart one...
author | mswitch |
---|---|
date | Sun, 03 Feb 2002 14:55:27 +0000 |
parents | 05ac3586db02 |
children | b782efa10c60 |
line wrap: on
line source
/* libgha.c - Library for direct hardware access Copyrights: 1996/10/27 - Robin Cutshaw (robin@xfree86.org) XFree86 3.3.3 implementation 1999 - Øyvind Aabling. Modified for GATOS/win/gfxdump. 2002 - library implementation by Nick Kurshev - dhahelper and some changes by Alex Beregszaszi supported O/S's: SVR4, UnixWare, SCO, Solaris, FreeBSD, NetBSD, 386BSD, BSDI BSD/386, Linux, Mach/386, ISC DOS (WATCOM 9.5 compiler), Win9x (with mapdev.vxd) Licence: GPL Original location: www.linuxvideo.org/gatos */ #include "config.h" #include "libdha.h" #include "AsmMacros.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> /* instead exit() use libdha_exit, and do the 'mother-application' deinit only in this code */ void libdha_exit(const char *message, int level) { printf("libdha: FATAL: %s\n", message); exit(level); /* FIXME */ } #if defined(_WIN32) #include "sysdep/libdha_win32.c" #elif defined (__EMX__) #include "sysdep/libdha_os2.c" #else #if defined(SVR4) || defined(SCO325) # if !(defined(sun) && defined (i386) && defined (SVR4)) # define DEV_MEM "/dev/pmem" # elif defined(PowerMAX_OS) # define DEV_MEM "/dev/iomem" # endif # ifdef SCO325 # undef DEV_MEM # define DEV_MEM "/dev/mem" # endif # endif /* SVR4 */ /* Generic version */ #include <sys/mman.h> #ifndef DEV_MEM #define DEV_MEM "/dev/mem" #endif #ifdef CONFIG_DHAHELPER static int mem=-1; void *map_phys_mem(unsigned base, unsigned size) { if ( (mem = open("/dev/dhahelper",O_RDWR)) < 0) { if ( (mem = open(DEV_MEM,O_RDWR)) == -1) { perror("libdha: open(/dev/mem) failed") ; exit(1) ; } } else { dhahelper_memory_t mem_req; mem_req.operation = MEMORY_OP_MAP; mem_req.start = base; mem_req.offset = 0; mem_req.size = size; if (ioctl(mem, DHAHELPER_MEMORY, &mem_req) < 0) { perror("libdha: failed mapping throught kernel helper"); return NULL; } } return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ; } #else static int mem=-1; void *map_phys_mem(unsigned base, unsigned size) { if ( (mem = open(DEV_MEM,O_RDWR)) == -1) { perror("libdha: open(/dev/mem) failed") ; exit(1) ; } return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ; } #endif /* CONFIG_DHAHELPER */ void unmap_phys_mem(void *ptr, unsigned size) { int res=munmap(ptr,size) ; if (res == -1) { perror("libdha: munmap() failed") ; exit(1) ; } close(mem); } #endif unsigned char INPORT8(unsigned idx) { return inb(idx); } unsigned short INPORT16(unsigned idx) { return inw(idx); } unsigned INPORT32(unsigned idx) { return inl(idx); } void OUTPORT8(unsigned idx,unsigned char val) { outb(idx,val); } void OUTPORT16(unsigned idx,unsigned short val) { outw(idx,val); } void OUTPORT32(unsigned idx,unsigned val) { outl(idx,val); }