? hwsubs.patch ? libdha/pci.db ? libdha/pci_vendors.h ? libdha/pci_ids.h ? libdha/pci_names.c ? libdha/pci_names.h ? libdha/pci_dev_ids.c Index: mplayer.c =================================================================== RCS file: /cvsroot/mplayer/main/mplayer.c,v retrieving revision 1.364 diff -u -r1.364 mplayer.c --- mplayer.c 11 Jan 2002 12:14:22 -0000 1.364 +++ mplayer.c 14 Jan 2002 19:01:06 -0000 @@ -2323,7 +2323,16 @@ #ifdef USE_DVDREAD // DVD sub: - if(vo_spudec){ + if(vo_flags & 0x08){ + static vo_mpegpes_t packet; + static vo_mpegpes_t *pkg=&packet; + packet.timestamp=sh_video->timer*90000.0; + packet.id=0x20; /* Subpic */ + while((packet.size=ds_get_packet_sub(d_dvdsub,&packet.data))>0){ + mp_msg(MSGT_CPLAYER,MSGL_V,"\rDVD sub: len=%d v_pts=%5.3f s_pts=%5.3f \n",packet.size,d_video->pts,d_dvdsub->pts); + video_out->draw_frame(&pkg); + } + }else if(vo_spudec){ unsigned char* packet=NULL; int len; current_module="spudec"; Index: DOCS/DXR3 =================================================================== RCS file: /cvsroot/mplayer/main/DOCS/DXR3,v retrieving revision 1.9 diff -u -r1.9 DXR3 --- DOCS/DXR3 11 Jan 2002 22:31:36 -0000 1.9 +++ DOCS/DXR3 14 Jan 2002 19:01:06 -0000 @@ -17,20 +17,23 @@ 2. Usage - -vo dxr3: For video output - -ao oss: For audio output - -ac hwac3 For digital audio output instead of analog - -vc mpegpes For mpeg playback - Number of device to use for playback (if you - have more than one card.). This can usually - be left out (-vo dxr3). - Mandrake 8.1 uses devfs by default. If you are - running mandrake 8.1 please use -vo dxr3:0 - Normally /dev/em8300_ma or - /dev/em8300_ma- - (-ao dxr3:/dev/em8300_ma). If left out the - default oss device will be used (normally - soundcard). + -vo dxr3: For video output + -ao oss: For audio output + -ac hwac3 For digital audio output instead of + analog + -vc mpegpes For mpeg playback + -aop list=resample:fout=48000 If samplerate is below 44100Hz + Number of device to use for playback + (if you have more than one card.). + This can usually be left out (-vo dxr3). + Mandrake 8.1 uses devfs by default. If + you are running mandrake 8.1 please use + -vo dxr3:0 + Normally /dev/em8300_ma or + /dev/em8300_ma- + (-ao dxr3:/dev/em8300_ma). If left out + the default oss device will be used + (normally soundcard). MPEG-1, MPEG-2, VCD and DVD Notes There are some important notes to take into account here for optimum playback. Index: DOCS/tech/tech-eng.txt =================================================================== RCS file: /cvsroot/mplayer/main/DOCS/tech/tech-eng.txt,v retrieving revision 1.17 diff -u -r1.17 tech-eng.txt --- DOCS/tech/tech-eng.txt 23 Aug 2001 11:33:41 -0000 1.17 +++ DOCS/tech/tech-eng.txt 14 Jan 2002 19:01:07 -0000 @@ -191,6 +191,7 @@ 0x1 - supported (by hardware or conversion) 0x2 - supported (by hardware, without conversion) 0x4 - sub/osd supported (has draw_alpha) + 0x8 - hardware handles subpics IMPORTANT: it's mandatorial that every vo driver support the YV12 format, and one (or both) of BGR15 and BGR24, with conversion, if needed. If these aren't supported, not every codec will work! The mpeg codecs Index: libvo/vo_dxr3.c =================================================================== RCS file: /cvsroot/mplayer/main/libvo/vo_dxr3.c,v retrieving revision 1.30 diff -u -r1.30 vo_dxr3.c --- libvo/vo_dxr3.c 12 Jan 2002 15:59:47 -0000 1.30 +++ libvo/vo_dxr3.c 14 Jan 2002 19:01:08 -0000 @@ -91,6 +91,8 @@ } #endif +extern int vidmode; + static uint32_t init(uint32_t scr_width, uint32_t scr_height, uint32_t width, uint32_t height, uint32_t fullscreen, char *title, uint32_t format) { int tmp1,tmp2; @@ -112,7 +114,7 @@ sprintf(devname, "/dev/em8300_mv-%s", vo_subdevice); else sprintf(devname, "/dev/em8300_mv"); - fd_video = open(devname, O_WRONLY); + fd_video = open(devname, O_WRONLY | O_NONBLOCK); if (fd_video < 0) { printf("VO: [dxr3] Error opening %s for writing!\n", devname); uninit(); @@ -135,7 +137,7 @@ /* Subpic code isn't working yet, don't set to ON * unless you are really sure what you are doing */ - ioval = EM8300_SPUMODE_OFF; + ioval = EM8300_SPUMODE_ON; if (ioctl(fd_control, EM8300_IOCTL_SET_SPUMODE, &ioval) < 0) { printf("VO: [dxr3] Unable to set subpicture mode!\n"); uninit(); @@ -332,11 +334,19 @@ vo_mpegpes_t *p = (vo_mpegpes_t *) src[0]; size_t data_left = p->size; - if (ioctl(fd_video, EM8300_IOCTL_VIDEO_SETPTS, &vo_pts) < 0) - printf("VO: [dxr3] Unable to set pts\n"); + if (p->id == 0x20) { + if (ioctl(fd_spu, EM8300_IOCTL_SPU_SETPTS, &vo_pts) < 0) + printf("VO: [dxr3] Unable to set pts\n"); + + while (data_left) + data_left -= write(fd_spu, (void*) (p->data + p->size-data_left), data_left); + } else { + if (ioctl(fd_video, EM8300_IOCTL_VIDEO_SETPTS, &vo_pts) < 0) + printf("VO: [dxr3] Unable to set pts\n"); - while (data_left) - data_left -= write(fd_video, (void*) (p->data + p->size-data_left), data_left); + while (data_left) + data_left -= write(fd_video, (void*) (p->data + p->size-data_left), data_left); + } return 0; } #ifdef USE_MP1E @@ -439,7 +449,7 @@ uint32_t flag = 0; if (format == IMGFMT_MPEGPES) - flag = 0x2 | 0x4; + flag = 0x2 | 0x4 | 0x8; #ifdef USE_MP1E if (format == IMGFMT_YV12) flag = 0x1 | 0x4;