Changes of Revision 34
[-] | Changed | xine-lib.spec |
x 1
2 %define shortname libxine 3 %define name libxine1 4 %define version 1.1.11.1 5 -%define release 1 6 +%define release 3 7 8 %define major 1 9 %define libname %{shortname}%{major} 10
11 Summary(fi): Joustava video- ja ääniohjelmointikirjasto Unix-tyylisille käyttöjärjestelmille. 12 Version: %{version} 13 Release: %{release} 14 -License: GPL 15 -Group: Development/Libraries 16 +License: GPL v2 or later, Public Domain, Freeware, the cetus.ttf is freeware from http://www.fontfreak.com/authors/gregfonts.htm 17 +Group: Productivity/Multimedia/Video/Players 18 URL: http://xinehq.de 19 20 Source0: xine-lib-1.1.11.1.tar.bz2 21 22 -Patch0: vdr-xine-lib-0.8.1.diff 23 +Patch0: vdr-xine-lib-0.8.2.diff 24 Patch1: xine-lib-libdvdread_udf.diff 25 -Patch2: libxine-pc.diff 26 -Patch3: quicktime-atom-parsing.diff 27 +Patch2: xine-lib-pc.diff 28 +Patch3: xine-lib-fix-demuxers.diff 29 BuildRequires: alsa >= 0.9 30 BuildRequires: alsa-devel >= 0.9 31 BuildRequires: arts >= 1.0 32
33 Summary(cs): Hlavičkové soubory a dokumentace pro vývoj programů používající libxine 34 Summary(de): Headerdateien und Dokumentationen, um Programme mit libxine entwickeln zu können. 35 Summary(fi): Header-tiedostot ja dokumentaatio, joita tarvitset kehittäessäsi ohjelmia libxine:n kanssa. 36 -Group: Development/Libraries 37 +Group: Development/Libraries/C and C++ 38 Obsoletes: xine-lib-devel 39 Obsoletes: xine-devel 40 Obsoletes: libxine0-devel 41
42 Summary(cs): Zvukový výstupní modul libxine pro ALSA >= 0.9 43 Summary(de): libxine Soundausgabeplguin für Alsa >= 0.9 44 Summary(fi): libxine-Ddnilisdke uudelle Linux:n ddniarkkitehtuurille (ALSA >= 0.9) 45 -Group: Development/Libraries 46 +Group: Productivity/Multimedia/Video/Players 47 Obsoletes: xine-lib-alsa09 48 Obsoletes: libxine0-alsa09 49 Obsoletes: %{libname}-alsa09 50
51 Summary(cs): Zvukový výstupní modul libxine pro ARTS (zvukový server KDE) 52 Summary(de): libxine Soundausgabeplugin für arts (KDE-Soundserver) 53 Summary(fi): libxine-Ddnilisdke Arts ddnipalvelimelle (KDE:n ddnipalvelin) 54 -Group: Development/Libraries 55 +Group: Productivity/Multimedia/Video/Players 56 Obsoletes: xine-lib-arts 57 Obsoletes: libxine0-arts 58 Requires: %{libname} = %{version}-%{release} 59
60 Summary(cs): Zvukový výstupní modul libxine pro Enlightmend Sound Daemon 61 Summary(de): libxine Soundausgabeplugin für den Enlightmend Sound Daemon 62 Summary(fi): libxine-ddnilisdke Enlightmend ddnipalvelimelle 63 -Group: Development/Libraries 64 +Group: Productivity/Multimedia/Video/Players 65 Obsoletes: xine-lib-esd 66 Obsoletes: libxine0-esd 67 Requires: %{libname} = %{version}-%{release} 68
69 Summary(cs): Videovýstupní modul libxine pro knihovnu SDL (Simple DirectMedia Layer) 70 Summary(de): libxine Videoausgabeplguin für SDL-Bibliothek (Simple DirectMedia Layer) 71 Summary(fi): libxine-Videolisdke SDL grafiikkakirjastolle (Simple DirectMedia Layer) 72 -Group: Development/Libraries 73 +Group: Productivity/Multimedia/Video/Players 74 Obsoletes: xine-lib-sdl 75 Obsoletes: libxine0-sdl 76 Requires: %{libname} = %{version}-%{release} 77
78 Summary(cs): Videovýstupní modul libxine pro knihovnu aa (ASCII Art) 79 Summary(de): libxine Videoausgabeplugin für aa-Bibliothek (ASCII Art) 80 Summary(fi): libxine-Videolisdke aa-grafiikkakirjastolle (ASCII Art) 81 -Group: Development/Libraries 82 +Group: Productivity/Multimedia/Video/Players 83 Obsoletes: xine-lib-aa 84 Obsoletes: libxine0-aa 85 Obsoletes: xine-extra 86
87 Summary: libxine video output plugin using OpenGL (3D graphic cards) 88 Summary(cs): Videovýstupní modul libxine používající OpenGL (3D grafické karty) 89 Summary(de): libxine Videoausgabeplugin per OpenGL (3D Grafikkarte) 90 -Group: Development/Libraries 91 +Group: Productivity/Multimedia/Video/Players 92 Obsoletes: xine-lib-opengl 93 Obsoletes: libxine0-opengl 94 Requires: %{libname} = %{version}-%{release} 95
96 Summary(cs): Videovýstupní modul libxine používající framebuffer (karty Matrox) 97 Summary(de): libxine Videoausgabeplugin per synchronisiertem Framebuffer (Matrox Karten) 98 Summary(fi): libxine-Videolisdke Matrox-ndyttvkorttien synkronisoitua ndyttvmuistia varten. 99 -Group: Development/Libraries 100 +Group: Productivity/Multimedia/Video/Players 101 Obsoletes: libxine0-syncfb 102 Requires: %{libname} = %{version}-%{release} 103 Requires: zlib 104
105 Summary(cs): Vstupní modul libxine na přehrávání VideoDVD s DVD navigací 106 Summary(de): libxine Inputplugin zum abspielen von Video-DVDs mit DVD-Navigation 107 Summary(fi): libxine-Lukulisdke, jolla kdyttdjd voi soittaa DVD-levyjd 108 -Group: Development/Libraries 109 +Group: Productivity/Multimedia/Video/Players 110 Obsoletes: xine-dvdnav 111 Requires: %{libname} = %{version}-%{release} 112 Requires: libdvdcss >= 1.2 113
114 Summary(cs): Vstupní modul libxine pro karty digitální TV 115 Summary(de): libxine Einabeplugin für digitale TV-Karten 116 Summary(fi): libxine-Lukulisdke, jolla kdyttdjd voi katsella DigitalTV-korttien ohjelmia 117 -Group: Development/Libraries 118 +Group: Productivity/Multimedia/Video/Players 119 Requires: %{libname} = %{version}-%{release} 120 Requires: zlib 121 122
123 Summary(cs): Vstupní modul libxine pro totem (frontend GNOME) 124 Summary(de): libxine Einabeplugin für totem (ein Gnome Frontend) 125 Summary(fi): libxine-Lukulisdke Totem ohjelmaa varten, joka on libxine:n Gnome2 kdyttvliittymd 126 -Group: Development/Libraries 127 +Group: Productivity/Multimedia/Video/Players 128 Requires: %{libname} = %{version}-%{release} 129 Requires: glib2 130 Requires: gnome-vfs2 131
132 Summary(cs): Zvukový modul libxine pro dekódování souborů FLAC (Free Lossless Audio Codec) 133 Summary(de): libxine Soundeinabeplugin für flac-Dateien (Free Lossless Audio Codec) 134 Summary(fi): libxine-Ddnilisdke flac-tiedostojen toistamiseen (Free Lossless Audio Codec) 135 -Group: Development/Libraries 136 +Group: Productivity/Multimedia/Video/Players 137 Requires: %{libname} = %{version}-%{release} 138 Requires: flac 139 140
141 Summary(cs): Zvukový modul libxine pro dekódování souborů OGG a OGM 142 Summary(de): libxine Sound-/Videoeinabeplugin für ogg/ogm-Dateien 143 Summary(fi): libxine-Ddni/Videolisdke Ogg/Ogm tiedostojen toistamiseen 144 -Group: Development/Libraries 145 +Group: Productivity/Multimedia/Video/Players 146 Requires: %{libname} = %{version}-%{release} 147 Requires: libogg 148 Requires: libvorbis 149
150 Summary: libxine video output plugin using libdirectfb 151 Summary(cs): Videovýstupní modul libxine používající libdirectfb 152 Summary(de): libxine Videoausgabeplugin per libdirectfb 153 -Group: Development/Libraries 154 +Group: Productivity/Multimedia/Video/Players 155 Requires: %{libname} = %{version}-%{release} 156 Requires: DirectFB 157 158
159 Summary: libxine video output plugin using libstk 160 Summary(cs): Videovýstupní modul libxine používající libstk 161 Summary(de): libxine Videoausgabeplugin per libstk 162 -Group: Development/Libraries 163 +Group: Productivity/Multimedia/Video/Players 164 Requires: %{libname} = %{version}-%{release} 165 Requires: boost 166 Requires: freetype2 167
168 Summary(cs): Videovýstupní modul libxine používající karty s čipem DXR3 169 Summary(de): libxine Videoausgabeplugin, nutzt MPEG2-decoder-Karten mit dxr3 Decoder-Chip 170 Summary(fi): libxine-Videolisdke MPEG2-videopurkukorteille, joissa on DXR3 purkusiru 171 -Group: Development/Libraries 172 +Group: Productivity/Multimedia/Video/Players 173 Obsoletes: xine-lib-dxr3 174 Obsoletes: libxine0-dxr3 175 Requires: %{libname} = %{version}-%{release} 176
177 Summary: libxine video output plugin using XVideo-extension with motion compensation 178 Summary(cs): Videovýstupní modul libxine používající rozšíření XVideo MC 179 Summary(de): libxine Videoausgabeplugin per XVideo-Erweiterung mit Motion Compensation 180 -Group: Development/Libraries 181 +Group: Productivity/Multimedia/Video/Players 182 Obsoletes: libxine0-xvmc 183 Autoreqprov: Off 184 Requires: %{libname} = %{version}-%{release} 185
186 Summary(cs): Dekódovací modul libxine, který používá DLL knihovny WIN32 187 Summary(de): libxine Dekodierplugin, nutzt Win32 dlls für natvie nicht unterstützte Formate 188 Summary(fi): libxine-Purkulisdke, joka mahdollistaa Win32 DLL:n kdytvn. 189 -Group: Development/Libraries 190 +Group: Productivity/Multimedia/Video/Players 191 Obsoletes: xine-lib-w32dll 192 Obsoletes: libxine0-w32dll 193 Requires: %{libname} = %{version}-%{release} 194
195 %package jack 196 Summary: libxine sound output plugin for the jack soundserver 197 Summary(de): libxine Soundausgabeplugin für den jack-Soundserver 198 -Group: Development/Libraries 199 +Group: Productivity/Multimedia/Video/Players 200 Obsoletes: xine-lib-jack 201 |
||
[+] | Added | vdr-xine-lib-0.8.2.diff ^ |
@@ -0,0 +1,4486 @@ +diff -uNr xine-lib.orig/configure.ac xine-lib/configure.ac +--- xine-lib.orig/configure.ac 2008-03-04 20:22:53.000000000 +0100 ++++ xine-lib/configure.ac 2008-03-11 19:40:02.000000000 +0100 +@@ -2749,6 +2749,7 @@ + src/video_out/vidix/drivers/Makefile + src/xine-utils/Makefile + src/xine-engine/Makefile ++src/vdr/Makefile + win32/Makefile + win32/include/Makefile]) + AC_CONFIG_COMMANDS([default],[[chmod +x ./misc/SlackBuild ./misc/build_rpms.sh ./misc/relchk.sh]],[[]]) +@@ -2791,7 +2792,7 @@ + echo " - stdin_fifo - rtp" + echo " - http - mms" + echo " - pnm - rtsp" +-echo " - dvb" ++echo " - dvb - vdr" + if test "x$external_dvdnav" = "xyes"; then + echo " - dvd (external libs)" + else +@@ -2996,6 +2997,7 @@ + echo " - eq - eq2" + echo " - boxblur - denoise3d" + echo " - unsharp - tvtime" ++echo " - vdr" + echo " * SFX:" + echo " - goom - oscope" + echo " - fftscope - mosaico" +diff -uNr xine-lib.orig/src/Makefile.am xine-lib/src/Makefile.am +--- xine-lib.orig/src/Makefile.am 2007-04-17 20:46:41.000000000 +0200 ++++ xine-lib/src/Makefile.am 2008-03-11 19:40:02.000000000 +0100 +@@ -26,4 +26,5 @@ + libfaad \ + libmusepack \ + post \ +- combined ++ combined \ ++ vdr +diff -uNr xine-lib.orig/src/vdr/combined_vdr.c xine-lib/src/vdr/combined_vdr.c +--- xine-lib.orig/src/vdr/combined_vdr.c 1970-01-01 01:00:00.000000000 +0100 ++++ xine-lib/src/vdr/combined_vdr.c 2008-03-11 19:40:02.000000000 +0100 +@@ -0,0 +1,44 @@ ++/* ++ * Copyright (C) 2000-2004 the xine project ++ * ++ * This file is part of xine, a free video player. ++ * ++ * xine is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * xine is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA ++ */ ++ ++/* ++ * plugins for VDR ++ */ ++ ++#include "xine_internal.h" ++#include "post.h" ++#include "combined_vdr.h" ++ ++ ++ ++static const post_info_t vdr_video_special_info = { XINE_POST_TYPE_VIDEO_FILTER }; ++static const post_info_t vdr_audio_special_info = { XINE_POST_TYPE_AUDIO_FILTER }; ++ ++/* exported plugin catalog entry */ ++const plugin_info_t xine_plugin_info[] EXPORTED = ++{ ++ /* type , API, "name" , version , special_info , init_function */ ++ { PLUGIN_INPUT, 17, "VDR" , XINE_VERSION_CODE, NULL , &vdr_input_init_plugin }, ++ { PLUGIN_POST , 9, "vdr" , XINE_VERSION_CODE, &vdr_video_special_info, &vdr_video_init_plugin }, ++ { PLUGIN_POST , 9, "vdr_video", XINE_VERSION_CODE, &vdr_video_special_info, &vdr_video_init_plugin }, ++ { PLUGIN_POST , 9, "vdr_audio", XINE_VERSION_CODE, &vdr_audio_special_info, &vdr_audio_init_plugin }, ++ { PLUGIN_NONE , 0, "" , 0 , NULL , NULL } ++}; ++ +diff -uNr xine-lib.orig/src/vdr/combined_vdr.h xine-lib/src/vdr/combined_vdr.h +--- xine-lib.orig/src/vdr/combined_vdr.h 1970-01-01 01:00:00.000000000 +0100 ++++ xine-lib/src/vdr/combined_vdr.h 2008-03-11 19:40:02.000000000 +0100 +@@ -0,0 +1,92 @@ ++/* ++ * Copyright (C) 2000-2004 the xine project ++ * ++ * This file is part of xine, a free video player. ++ * ++ * xine is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * xine is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA ++ */ ++ ++#ifndef __COMBINED_VDR_H ++#define __COMBINED_VDR_H ++ ++ ++ ++typedef struct vdr_set_video_window_data_s { ++ int32_t x; ++ int32_t y; ++ int32_t w; ++ int32_t h; ++ int32_t w_ref; ++ int32_t h_ref; ++ ++} vdr_set_video_window_data_t; ++ ++ ++ ++typedef struct vdr_frame_size_changed_data_s { ++ int32_t x; ++ int32_t y; ++ int32_t w; ++ int32_t h; ++ double r; ++ ++} vdr_frame_size_changed_data_t; ++ ++ ++ ++typedef struct vdr_select_audio_data_s { ++ uint8_t channels; ++ ++} vdr_select_audio_data_t; ++ ++ ++ ++inline static int vdr_is_vdr_stream(xine_stream_t *stream) ++{ ++ if (!stream ++ || !stream->input_plugin ++ || !stream->input_plugin->input_class) ++ { ++ return 0; ++ } ++ ++ { ++ input_class_t *input_class = stream->input_plugin->input_class; ++ ++ if (input_class->get_identifier) ++ { ++ const char *identifier = input_class->get_identifier(input_class); ++ if (identifier ++ && 0 == strcmp(identifier, "VDR")) ++ { ++ return 1; ++ } ++ } ++ } ++ ++ return 0; ++} ++ ++ ++ ++/* plugin class initialization function */ ++void *vdr_input_init_plugin(xine_t *xine, void *data); ++void *vdr_video_init_plugin(xine_t *xine, void *data); ++void *vdr_audio_init_plugin(xine_t *xine, void *data); ++ ++ ++ ++#endif /* __COMBINED_VDR_H */ ++ +diff -uNr xine-lib.orig/src/vdr/input_vdr.c xine-lib/src/vdr/input_vdr.c +--- xine-lib.orig/src/vdr/input_vdr.c 1970-01-01 01:00:00.000000000 +0100 ++++ xine-lib/src/vdr/input_vdr.c 2008-03-11 19:41:31.000000000 +0100 +@@ -0,0 +1,2214 @@ ++/* ++ * Copyright (C) 2003-2004 the xine project ++ * ++ * This file is part of xine, a free video player. ++ * ++ * xine is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * xine is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
[+] | Added | xine-lib-fix-demuxers.diff ^ |
@@ -0,0 +1,64 @@ +diff -urN xine-lib-1.1.11.1.orig/src/demuxers/demux_matroska.c xine-lib-1.1.11.1/src/demuxers/demux_matroska.c +--- xine-lib-1.1.11.1.orig/src/demuxers/demux_matroska.c 2008-03-28 15:24:50.000000000 +0100 ++++ xine-lib-1.1.11.1/src/demuxers/demux_matroska.c 2008-04-08 19:28:32.000000000 +0200 +@@ -635,9 +635,7 @@ + } + buf->size = frame[i]; + +- buf->decoder_flags = BUF_FLAG_HEADER; +- if (i == 2) +- buf->decoder_flags |= BUF_FLAG_FRAME_END; ++ buf->decoder_flags = BUF_FLAG_HEADER | BUF_FLAG_FRAME_START | BUF_FLAG_FRAME_END; + buf->type = track->buf_type; + buf->pts = 0; + +@@ -2915,7 +2913,8 @@ + + + static const char *get_mimetypes (demux_class_t *this_gen) { +- return "video/mkv: mkv: matroska;"; ++ return "video/mkv: mkv: matroska;" ++ "video/x-matroska: mkv: matroska;"; + } + + +diff -urN xine-lib-1.1.11.1.orig/src/demuxers/demux_ogg.c xine-lib-1.1.11.1/src/demuxers/demux_ogg.c +--- xine-lib-1.1.11.1.orig/src/demuxers/demux_ogg.c 2008-03-28 15:24:50.000000000 +0100 ++++ xine-lib-1.1.11.1/src/demuxers/demux_ogg.c 2008-04-07 19:36:55.000000000 +0200 +@@ -2166,6 +2166,9 @@ + static const char *ogg_get_mimetypes (demux_class_t *this_gen) { + return "application/ogg: ogx: Ogg Stream;" + "application/x-ogg: ogx: Ogg Stream;" ++ "application/x-ogm: ogx: Ogg Stream;" ++ "application/x-ogm-audio: oga: Ogg Audio;" ++ "application/x-ogm-video: ogv: Ogg Video;" + "audio/ogg: oga: Ogg Audio;" + "audio/x-ogg: oga: Ogg Audio;" + "video/ogg: ogv: Ogg Video;" +diff -urN xine-lib-1.1.11.1.orig/src/demuxers/demux_qt.c xine-lib-1.1.11.1/src/demuxers/demux_qt.c +--- xine-lib-1.1.11.1.orig/src/demuxers/demux_qt.c 2008-03-28 23:50:47.000000000 +0100 ++++ xine-lib-1.1.11.1/src/demuxers/demux_qt.c 2008-04-01 20:08:55.000000000 +0200 +@@ -896,11 +896,6 @@ + current_atom_size = _X_BE_32(&trak_atom[i - 4]); + current_atom = _X_BE_32(&trak_atom[i]); + +- if (current_atom_size > trak_atom_size - i) { +- last_error = QT_NOT_A_VALID_FILE; +- goto free_trak; +- } +- + if (current_atom == TKHD_ATOM) { + trak->flags = _X_BE_16(&trak_atom[i + 6]); + } else if (current_atom == ELST_ATOM) { +diff -urN xine-lib-1.1.11.1.orig/src/demuxers/ebml.c xine-lib-1.1.11.1/src/demuxers/ebml.c +--- xine-lib-1.1.11.1.orig/src/demuxers/ebml.c 2008-03-28 15:24:50.000000000 +0100 ++++ xine-lib-1.1.11.1/src/demuxers/ebml.c 2008-04-06 00:38:26.000000000 +0200 +@@ -327,7 +327,7 @@ + if (text) + { + text[elem->len] = '\0'; +- if (ebml_read_ascii (ebml, &elem, text)) ++ if (ebml_read_ascii (ebml, elem, text)) + return text; + free (text); + } | ||
[+] | Changed | xine-lib-libdvdread_udf.diff ^ |
@@ -1,8 +1,14 @@ -Includes ifo patch from http://tobias.rautenkranz.ch/libdvdread_ifo.html which enables playback of Video-DVD's which are "protected" by bad blocks -diff -ur a/src/input/libdvdnav/dvd_udf.c b/src/input/libdvdnav/dvd_udf.c ---- a/src/input/libdvdnav/dvd_udf.c 2007-08-19 01:36:46.000000000 +0200 -+++ b/src/input/libdvdnav/dvd_udf.c 2008-01-23 21:43:49.000000000 +0100 -@@ -38,10 +38,16 @@ +# HG changeset patch +# User Tobias Rautenkranz <mail@tobias.rautenkranz.ch> +# Date 1202208482 -3600 +# Node ID 100241ff36f0730a15018a58456fb86eb590bf18 +# Parent 07c29261ed98fdb710a241c6711dac0215b6074a +Fix playback of DVDs with a broken UDF file system (aka DVD-Movie-Protect). + +diff -r 07c29261ed98 -r 100241ff36f0 src/input/libdvdnav/dvd_udf.c +--- a/src/input/libdvdnav/dvd_udf.c Thu Jan 31 22:02:04 2008 +0000 ++++ b/src/input/libdvdnav/dvd_udf.c Tue Feb 05 11:48:02 2008 +0100 +@@ -38,9 +38,15 @@ #include <sys/stat.h> #include <unistd.h> #include <inttypes.h> @@ -12,88 +18,105 @@ #include "dvd_reader.h" #include "dvd_udf.h" - ++ +#include "ifo_types.h" +#include "ifo_read.h" -+ + /* Private but located in/shared with dvd_reader.c */ extern int UDFReadBlocksRaw( dvd_reader_t *device, uint32_t lb_number, - size_t block_count, unsigned char *data, -@@ -777,6 +783,77 @@ - uint32_t UDFFindFile( dvd_reader_t *device, char *filename, +@@ -774,7 +780,9 @@ static int UDFFindPartition( dvd_reader_ + return part->valid; + } + +-uint32_t UDFFindFile( dvd_reader_t *device, char *filename, ++ ++ ++static uint32_t UDFFindFileReal( dvd_reader_t *device, char *filename, uint32_t *filesize ) { -+ uint32_t offset=0; + uint8_t LogBlock_base[ DVD_VIDEO_LB_LEN + 2048 ]; +@@ -856,6 +864,84 @@ uint32_t UDFFindFile( dvd_reader_t *devi + return partition.Start + File.Location; + } + ++/** ++ * Get the offset from the ifo files to allow playback of DVDs ++ * with a deliberately broken UDF file system (aka DVD-Movie-Protect). ++ * When the file is not an IFO or VOB, it calls the real UDF routine. ++ */ ++uint32_t UDFFindFile( dvd_reader_t *device, char *filename, ++ uint32_t *filesize ) ++{ +#ifndef __WIN32__ -+ if (!fnmatch("/VIDEO_TS/VTS_[0-9][0-9]_[0-9].???", filename, FNM_PATHNAME)) { ++ if (!fnmatch("/VIDEO_TS/VTS_[0-9][0-9]_[0-9].???", filename, FNM_PATHNAME)) { +#else -+ if (strlen("/VIDEO_TS/VTS_01_1.VOB") == strlen(filename) -+ && !strncmp(filename, "/VIDEO_TS/VTS_", strlen("/VIDEO_TS/VTS_")) ) { ++ if (strlen("/VIDEO_TS/VTS_01_1.VOB") == strlen(filename) ++ && !strncmp(filename, "/VIDEO_TS/VTS_", strlen("/VIDEO_TS/VTS_")) ) { +#endif -+ size_t len = strlen(filename); -+ char *extension = &filename[len-3]; -+ if (!strcmp(extension, "IFO") || !strcmp(extension, "VOB")) { -+ int title = atoi(&filename[len-8]); -+ int part = atoi(&filename[len-5]); -+ -+ ifo_handle_t *ifo_handle = ifoOpen(device, 0); -+ if (0 == ifo_handle) -+ return 0; -+ -+ if (title > ifo_handle->tt_srpt->nr_of_srpts) { -+ ifoClose(ifo_handle); -+ return 0; -+ -+ } -+ -+ uint32_t tmp_filesize; -+ offset += UDFFindFile(device, "/VIDEO_TS/VIDEO_TS.IFO", &tmp_filesize); -+ -+ -+ int i; -+ for (i=0; i<ifo_handle->tt_srpt->nr_of_srpts; i++) -+ if (title == ifo_handle->tt_srpt->title[i].title_set_nr) -+ break; -+ -+ if (i == ifo_handle->tt_srpt->nr_of_srpts) { -+ /* not found */ -+ ifoClose(ifo_handle); -+ return 0; -+ } -+ offset += ifo_handle->tt_srpt->title[i].title_set_sector; -+ -+ ifoClose(ifo_handle); -+ -+ if (!strcmp(extension, "VOB")) { -+ ifo_handle = ifoOpen(device, title); -+ if (0 == ifo_handle) -+ return 0; -+ -+ switch(part) { -+ case 0: -+ if (0 == ifo_handle->vtsi_mat->vtsm_vobs) -+ return 0; -+ offset += ifo_handle->vtsi_mat->vtsm_vobs; -+ break; -+ case 1: -+ if (0 == ifo_handle->vtsi_mat->vtstt_vobs) -+ return 0; -+ offset += ifo_handle->vtsi_mat->vtstt_vobs; -+ break; -+ default: /* can't get other parts (also no need to) */ -+ offset = 0; -+ break; -+ } -+ -+ ifoClose(ifo_handle); -+ } -+ -+ } -+ -+ *filesize = 1000000; /* File size unknown */ -+ if (offset != 0) -+ return offset; -+ } - uint8_t LogBlock_base[ DVD_VIDEO_LB_LEN + 2048 ]; - uint8_t *LogBlock = (uint8_t *)(((uintptr_t)LogBlock_base & ~((uintptr_t)2047)) + 2048); - uint32_t lbnum; ++ size_t len = strlen(filename); ++ char *extension = &filename[len-3]; ++ if (!strcmp(extension, "IFO") || !strcmp(extension, "VOB")) { ++ int title = atoi(&filename[len-8]); ++ int part = atoi(&filename[len-5]); ++ ++ ifo_handle_t *ifo_handle = ifoOpen(device, 0); ++ if (0 == ifo_handle) ++ return 0; ++ ++ uint32_t tmp_filesize; ++ uint32_t offset = UDFFindFileReal(device, "/VIDEO_TS/VIDEO_TS.IFO", &tmp_filesize); ++ ++ int i; ++ for (i=0; i<ifo_handle->tt_srpt->nr_of_srpts; i++) ++ if (title == ifo_handle->tt_srpt->title[i].title_set_nr) ++ break; ++ ++ if (i == ifo_handle->tt_srpt->nr_of_srpts) { ++ /* not found */ ++ ifoClose(ifo_handle); ++ return 0; ++ } ++ offset += ifo_handle->tt_srpt->title[i].title_set_sector; ++ ifoClose(ifo_handle); ++ ++ if (!strcmp(extension, "VOB")) { ++ ifo_handle = ifoOpen(device, title); ++ if (0 == ifo_handle) ++ return 0; ++ ++ switch(part) { ++ case 0: ++ if (0 == ifo_handle->vtsi_mat->vtsm_vobs) { ++ ifoClose(ifo_handle); ++ return 0; ++ } ++ offset += ifo_handle->vtsi_mat->vtsm_vobs; ++ break; ++ case 1: ++ if (0 == ifo_handle->vtsi_mat->vtstt_vobs) { ++ ifoClose(ifo_handle); ++ return 0; ++ } ++ offset += ifo_handle->vtsi_mat->vtstt_vobs; ++ break; ++ default: /* can't get other parts (also no need to) */ ++ offset = 0; ++ break; ++ } ++ ++ ifoClose(ifo_handle); ++ } ++ ++ ++ *filesize = 1000000; /* File size unknown */ ++ if (offset != 0) ++ return offset; ++ } ++ } ++ ++ return UDFFindFileReal( device, filename, filesize); ++} ++ + | ||
[+] | Added | xine-lib-pc.diff ^ |
@@ -0,0 +1,13 @@ +diff -ur xine-lib-1.1.10.orig/misc/libxine.pc.in xine-lib-1.1.10/misc/libxine.pc.in +--- xine-lib-1.1.10.orig/misc/libxine.pc.in 2008-01-23 06:11:50.000000000 +0100 ++++ xine-lib-1.1.10/misc/libxine.pc.in 2008-02-02 18:22:03.000000000 +0100 +@@ -3,8 +3,8 @@ + libdir=@libdir@ + includedir=@includedir@ + +-datarootdir=@datarootdir@ + datadir=@datadir@ ++datarootdir=@datarootdir@ + + xinelibdir=@xinelibdir@ + xinedatadir=@xinedatadir@ |