forked from pool/xine-lib
Accepting request 24887 from multimedia:xine
Copy from multimedia:xine/xine-lib based on submit request 24887 from user lnussel OBS-URL: https://build.opensuse.org/request/show/24887 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xine-lib?expand=0&rev=27
This commit is contained in:
parent
7b7cbd6322
commit
944f0a6698
@ -20,7 +20,7 @@ SPU DVD subtitles. No legal expertise.
|
||||
CSS decoding needs extra library (libdvdcss), which is not part of SuSE Linux
|
||||
|
||||
Advanced users can build an RPM package and install also the additional
|
||||
"xine-internal" rpm, which contains all protected codecs.
|
||||
"libxine1-codecs" rpm, which contains all protected codecs.
|
||||
|
||||
See also
|
||||
http://www.opensuse.org/XINE#Legal_Matters
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:688f2e99785c07468fa13f51a2c0be08682c5627036ba29f44f8c86f1221867a
|
||||
size 22841
|
3
vdr-xine-0.9.3.diff.bz2
Normal file
3
vdr-xine-0.9.3.diff.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9bda7583f46a039c70abb77360f84342125519a6497a50ccc0d19bc81934a6dd
|
||||
size 25043
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e680faac1958048403b71d5db1501dac7f6281e46fc18673584d748e70aaede7
|
||||
size 5198657
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9fc252d06e5db24265c83076676bd1f1d0e0935732b9f21ec7fcaac35bf80a36
|
||||
size 7382381
|
10
xine-lib-1.1.16.3-assert.patch
Normal file
10
xine-lib-1.1.16.3-assert.patch
Normal file
@ -0,0 +1,10 @@
|
||||
--- xine-lib-1.1.16.3.orig/src/audio_out/audio_alsa_out.c 2008-06-25 15:04:09.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/src/audio_out/audio_alsa_out.c 2009-11-14 10:52:16.423781020 +0100
|
||||
@@ -41,6 +41,7 @@
|
||||
#ifdef HAVE_ALLOCA_H
|
||||
#include <alloca.h>
|
||||
#endif
|
||||
+#include <assert.h>
|
||||
|
||||
#define ALSA_PCM_NEW_HW_PARAMS_API
|
||||
#define ALSA_PCM_NEW_SW_PARAMS_API
|
310
xine-lib-1.1.16.3-cdda.diff
Normal file
310
xine-lib-1.1.16.3-cdda.diff
Normal file
@ -0,0 +1,310 @@
|
||||
diff -ur xine-lib-1.1.16.3.orig/src/demuxers/demux_cdda.c xine-lib-1.1.16.3/src/demuxers/demux_cdda.c
|
||||
--- xine-lib-1.1.16.3.orig/src/demuxers/demux_cdda.c 2008-06-15 01:15:00.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/src/demuxers/demux_cdda.c 2009-05-07 19:43:04.000000000 +0200
|
||||
@@ -60,6 +60,7 @@
|
||||
input_plugin_t *input;
|
||||
int status;
|
||||
|
||||
+ int send_newpts;
|
||||
int seek_flag; /* this is set when a seek just occurred */
|
||||
} demux_cdda_t;
|
||||
|
||||
@@ -91,9 +92,9 @@
|
||||
buf->extra_info->input_time = buf->pts / 90;
|
||||
buf->decoder_flags |= BUF_FLAG_FRAME_END;
|
||||
|
||||
- if (this->seek_flag) {
|
||||
- _x_demux_control_newpts(this->stream, buf->pts, BUF_FLAG_SEEK);
|
||||
- this->seek_flag = 0;
|
||||
+ if (this->send_newpts) {
|
||||
+ _x_demux_control_newpts(this->stream, buf->pts, this->seek_flag);
|
||||
+ this->send_newpts = this->seek_flag = 0;
|
||||
}
|
||||
|
||||
this->audio_fifo->put (this->audio_fifo, buf);
|
||||
@@ -146,9 +147,14 @@
|
||||
this->input->seek(this->input, start_pos & ~3, SEEK_SET);
|
||||
else
|
||||
this->input->seek(this->input, start_time * CD_BYTES_PER_SECOND, SEEK_SET);
|
||||
- this->seek_flag = 1;
|
||||
+
|
||||
this->status = DEMUX_OK;
|
||||
- _x_demux_flush_engine (this->stream);
|
||||
+
|
||||
+ this->send_newpts = 1;
|
||||
+ if (playing) {
|
||||
+ this->seek_flag = BUF_FLAG_SEEK;
|
||||
+ _x_demux_flush_engine (this->stream);
|
||||
+ }
|
||||
|
||||
return this->status;
|
||||
}
|
||||
diff -ur xine-lib-1.1.16.3.orig/src/input/input_cdda.c xine-lib-1.1.16.3/src/input/input_cdda.c
|
||||
--- xine-lib-1.1.16.3.orig/src/input/input_cdda.c 2009-02-17 03:55:21.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/input/input_cdda.c 2009-05-12 00:16:12.000000000 +0200
|
||||
@@ -113,7 +113,7 @@
|
||||
*************************************************************************/
|
||||
|
||||
#define MAX_TRACKS 99
|
||||
-#define CACHED_FRAMES 500
|
||||
+#define CACHED_FRAMES 100
|
||||
|
||||
typedef struct {
|
||||
int start;
|
||||
@@ -1433,6 +1433,73 @@
|
||||
return err;
|
||||
}
|
||||
|
||||
+static inline char *_cdda_append (/*const*/ char *first, const char *second)
|
||||
+{
|
||||
+ if (!first)
|
||||
+ return strdup (second);
|
||||
+
|
||||
+ char *result = (char *) realloc (first, strlen (first) + strlen (second) + 1);
|
||||
+ strcat (result, second);
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+static void _cdda_parse_cddb_info (cdda_input_plugin_t *this, char *buffer, char **dtitle)
|
||||
+{
|
||||
+ /* buffer should be no more than 2048 bytes... */
|
||||
+ char buf[2048];
|
||||
+ int track_no;
|
||||
+
|
||||
+ if (sscanf (buffer, "DTITLE=%s", &buf[0]) == 1) {
|
||||
+ char *pt = strchr (buffer, '=');
|
||||
+ if (pt) {
|
||||
+ ++pt;
|
||||
+
|
||||
+ *dtitle = _cdda_append (*dtitle, pt);
|
||||
+ pt = strdup (*dtitle);
|
||||
+
|
||||
+ char *title = strstr (pt, " / ");
|
||||
+ if (title)
|
||||
+ {
|
||||
+ *title = 0;
|
||||
+ title += 3;
|
||||
+ free (this->cddb.disc_artist);
|
||||
+ this->cddb.disc_artist = strdup (pt);
|
||||
+ }
|
||||
+ else
|
||||
+ title = pt;
|
||||
+
|
||||
+ free (this->cddb.disc_title);
|
||||
+ this->cddb.disc_title = strdup (title);
|
||||
+
|
||||
+ free (pt);
|
||||
+ }
|
||||
+ }
|
||||
+ else if (sscanf (buffer, "DYEAR=%s", &buf[0]) == 1) {
|
||||
+ char *pt = strchr (buffer, '=');
|
||||
+ if (pt && strlen (pt) == 5)
|
||||
+ this->cddb.disc_year = strdup (pt + 1);
|
||||
+ }
|
||||
+ else if(sscanf(buffer, "DGENRE=%s", &buf[0]) == 1) {
|
||||
+ char *pt = strchr(buffer, '=');
|
||||
+ if (pt)
|
||||
+ this->cddb.disc_category = strdup (pt + 1);
|
||||
+ }
|
||||
+ else if (sscanf (buffer, "TTITLE%d=%s", &track_no, &buf[0]) == 2) {
|
||||
+ char *pt = strchr(buffer, '=');
|
||||
+ this->cddb.track[track_no].title = _cdda_append (this->cddb.track[track_no].title, pt + 1);
|
||||
+ }
|
||||
+ else if (!strncmp (buffer, "EXTD=", 5))
|
||||
+ {
|
||||
+ if (!this->cddb.disc_year)
|
||||
+ {
|
||||
+ int nyear;
|
||||
+ char *y = strstr (buffer, "YEAR:");
|
||||
+ if (y && sscanf (y + 5, "%4d", &nyear) == 1)
|
||||
+ asprintf (&this->cddb.disc_year, "%d", nyear);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Try to load cached cddb infos
|
||||
*/
|
||||
@@ -1465,82 +1532,16 @@
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
- char buffer[256], *ln;
|
||||
- char buf[256];
|
||||
- int tnum;
|
||||
+ char buffer[2048], *ln;
|
||||
char *dtitle = NULL;
|
||||
|
||||
- while ((ln = fgets(buffer, 255, fd)) != NULL) {
|
||||
-
|
||||
- buffer[strlen(buffer) - 1] = '\0';
|
||||
-
|
||||
- if (sscanf(buffer, "DTITLE=%s", &buf[0]) == 1) {
|
||||
- char *pt, *artist, *title;
|
||||
-
|
||||
- pt = strchr(buffer, '=');
|
||||
- if (pt) {
|
||||
- pt++;
|
||||
-
|
||||
- if (dtitle != NULL)
|
||||
- {
|
||||
- dtitle = (char *) realloc(dtitle, strlen(dtitle) + strlen(pt) + 1);
|
||||
- strcat(dtitle, pt);
|
||||
- pt = dtitle;
|
||||
- }
|
||||
- dtitle = strdup(pt);
|
||||
-
|
||||
- artist = pt;
|
||||
- title = strstr(pt, " / ");
|
||||
- if (title) {
|
||||
- *title++ = '\0';
|
||||
- title += 2;
|
||||
- }
|
||||
- else {
|
||||
- title = artist;
|
||||
- artist = NULL;
|
||||
- }
|
||||
+ while ((ln = fgets(buffer, sizeof (buffer) - 1, fd)) != NULL) {
|
||||
|
||||
- if (artist)
|
||||
- this->cddb.disc_artist = strdup(artist);
|
||||
+ int length = strlen (buffer);
|
||||
+ if (length && buffer[length - 1] == '\n')
|
||||
+ buffer[length - 1] = '\0';
|
||||
|
||||
- this->cddb.disc_title = strdup(title);
|
||||
- }
|
||||
- }
|
||||
- else if (sscanf(buffer, "DYEAR=%s", &buf[0]) == 1) {
|
||||
- char *pt;
|
||||
-
|
||||
- pt = strrchr(buffer, '=');
|
||||
- pt++;
|
||||
- if (pt != NULL && strlen(pt) == 4)
|
||||
- this->cddb.disc_year = strdup(pt);
|
||||
- }
|
||||
- else if (sscanf(buffer, "TTITLE%d=%s", &tnum, &buf[0]) == 2) {
|
||||
- char *pt;
|
||||
-
|
||||
- pt = strchr(buffer, '=');
|
||||
- if (pt)
|
||||
- pt++;
|
||||
- if (this->cddb.track[tnum].title == NULL)
|
||||
- this->cddb.track[tnum].title = strdup(pt);
|
||||
- else
|
||||
- {
|
||||
- this->cddb.track[tnum].title
|
||||
- = (char *) realloc(this->cddb.track[tnum].title, strlen(this->cddb.track[tnum].title) + strlen(pt) + 1);
|
||||
- strcat(this->cddb.track[tnum].title, pt);
|
||||
- }
|
||||
- }
|
||||
- else {
|
||||
- if (!strncmp(buffer, "EXTD=", 5)) {
|
||||
- char *y;
|
||||
- int nyear;
|
||||
-
|
||||
- y = strstr(buffer, "YEAR:");
|
||||
- if (y && this->cddb.disc_year == NULL) {
|
||||
- if (sscanf(y+5, "%4d", &nyear) == 1)
|
||||
- asprintf(&this->cddb.disc_year, "%d", nyear);
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
+ _cdda_parse_cddb_info (this, buffer, &dtitle);
|
||||
}
|
||||
fclose(fd);
|
||||
free(dtitle);
|
||||
@@ -1803,82 +1804,13 @@
|
||||
memset(&buffercache, 0, sizeof(buffercache));
|
||||
|
||||
while (strcmp(buffer, ".")) {
|
||||
- char buf[2048];
|
||||
- int tnum;
|
||||
size_t bufsize = strlen(buffercache);
|
||||
|
||||
memset(&buffer, 0, sizeof(buffer));
|
||||
_cdda_cddb_socket_read(this, buffer, sizeof(buffer) - 1);
|
||||
snprintf(buffercache + bufsize, sizeof(buffercache) - bufsize, "%s\n", buffer);
|
||||
|
||||
- if (sscanf(buffer, "DTITLE=%s", &buf[0]) == 1) {
|
||||
- char *pt, *artist, *title;
|
||||
-
|
||||
- pt = strrchr(buffer, '=');
|
||||
- if (pt) {
|
||||
- pt++;
|
||||
-
|
||||
- if (dtitle != NULL)
|
||||
- {
|
||||
- dtitle = (char *) realloc(dtitle, strlen(dtitle) + strlen(pt) + 1);
|
||||
- strcat(dtitle, pt);
|
||||
- pt = dtitle;
|
||||
- }
|
||||
- dtitle = strdup(pt);
|
||||
-
|
||||
- artist = pt;
|
||||
- title = strstr(pt, " / ");
|
||||
- if (title) {
|
||||
- *title++ = '\0';
|
||||
- title += 2;
|
||||
- }
|
||||
- else {
|
||||
- title = artist;
|
||||
- artist = NULL;
|
||||
- }
|
||||
-
|
||||
- if (artist) {
|
||||
- this->cddb.disc_artist = strdup(artist);
|
||||
- }
|
||||
- this->cddb.disc_title = strdup(title);
|
||||
- }
|
||||
- }
|
||||
- else if(sscanf(buffer, "DYEAR=%s", &buf[0]) == 1) {
|
||||
- char *pt;
|
||||
-
|
||||
- pt = strrchr(buffer, '=');
|
||||
- pt++;
|
||||
- if (pt != NULL && strlen(pt) == 4)
|
||||
- this->cddb.disc_year = strdup(pt);
|
||||
- }
|
||||
- else if (sscanf(buffer, "TTITLE%d=%s", &tnum, &buf[0]) == 2) {
|
||||
- char *pt;
|
||||
-
|
||||
- pt = strrchr(buffer, '=');
|
||||
- if (pt) {
|
||||
- pt++;
|
||||
- if (this->cddb.track[tnum].title == NULL)
|
||||
- this->cddb.track[tnum].title = strdup(pt);
|
||||
- else
|
||||
- {
|
||||
- this->cddb.track[tnum].title
|
||||
- = (char *) realloc(this->cddb.track[tnum].title, strlen(this->cddb.track[tnum].title) + strlen(pt) + 1);
|
||||
- strcat(this->cddb.track[tnum].title, pt);
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- else {
|
||||
- if (!strncmp(buffer, "EXTD=", 5)) {
|
||||
- char *y;
|
||||
- int nyear;
|
||||
-
|
||||
- y = strstr(buffer, "YEAR:");
|
||||
- if (y && this->cddb.disc_year == NULL) {
|
||||
- if (sscanf(y+5, "%4d", &nyear) == 1)
|
||||
- asprintf(&this->cddb.disc_year, "%d", nyear);
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
+ _cdda_parse_cddb_info (this, buffer, &dtitle);
|
||||
}
|
||||
free(dtitle);
|
||||
|
||||
@@ -2491,6 +2423,9 @@
|
||||
}
|
||||
lprintf("Track %d Title: %s\n", this->track+1, pt);
|
||||
|
||||
+ char tracknum[4];
|
||||
+ snprintf(tracknum, 4, "%d", this->track+1);
|
||||
+ _x_meta_info_set_utf8(this->stream, XINE_META_INFO_TRACK_NUMBER, tracknum);
|
||||
_x_meta_info_set_utf8(this->stream, XINE_META_INFO_TITLE, pt);
|
||||
}
|
||||
|
3
xine-lib-1.1.16.3-crippled.tar.bz2
Normal file
3
xine-lib-1.1.16.3-crippled.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7ed20d7e52e8e8db1a535d628d7afc41ed3665a9d23190ced8cbd9dca667be91
|
||||
size 5073254
|
@ -8,11 +8,9 @@ Subject: [PATCH] xine-lib-demuxcheckfor_mad_ffmpeg-LOCAL.diff
|
||||
src/xine-engine/load_plugins.c | 17 ++++++++++++++++-
|
||||
1 files changed, 16 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c
|
||||
index a710927..e507c07 100644
|
||||
--- a/src/xine-engine/load_plugins.c
|
||||
+++ b/src/xine-engine/load_plugins.c
|
||||
@@ -2481,9 +2481,18 @@ char *xine_get_file_extensions (xine_t *self) {
|
||||
--- xine-lib-1.1.16.3.orig/src/xine-engine/load_plugins.c 2009-02-10 18:21:07.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/xine-engine/load_plugins.c 2009-11-14 11:00:26.719796977 +0100
|
||||
@@ -2487,9 +2487,18 @@
|
||||
|
||||
plugin_catalog_t *catalog = self->plugin_catalog;
|
||||
int list_id;
|
||||
@ -31,7 +29,7 @@ index a710927..e507c07 100644
|
||||
/* calc length of output string and create an array of strings to
|
||||
concatenate */
|
||||
size_t len = 0;
|
||||
@@ -2495,7 +2504,13 @@ char *xine_get_file_extensions (xine_t *self) {
|
||||
@@ -2501,7 +2510,13 @@
|
||||
if (node->plugin_class || _load_plugin_class(self, node, NULL)) {
|
||||
demux_class_t *const cls = (demux_class_t *)node->plugin_class;
|
||||
if( (extensions[list_id] = cls->get_extensions(cls)) != NULL )
|
||||
@ -46,6 +44,3 @@ index a710927..e507c07 100644
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
1.5.6
|
||||
|
22
xine-lib-1.1.16.3-glitch-free-pulseaudio.patch
Normal file
22
xine-lib-1.1.16.3-glitch-free-pulseaudio.patch
Normal file
@ -0,0 +1,22 @@
|
||||
diff -uNr xine-lib-1.1.15.orig/src/xine-engine/audio_out.c xine-lib-1.1.15/src/xine-engine/audio_out.c
|
||||
--- xine-lib-1.1.15.orig/src/xine-engine/audio_out.c 2008-07-10 18:19:10.000000000 +0200
|
||||
+++ xine-lib-1.1.15/src/xine-engine/audio_out.c 2009-01-10 21:57:20.000000000 +0100
|
||||
@@ -1151,8 +1151,17 @@
|
||||
|
||||
/*
|
||||
* calculate gap:
|
||||
+ *
|
||||
+ * HACK (rwa): If we have no video stream we do not need an AV sync and so
|
||||
+ * we assume a gap of 0. This seems to avoid the skips in the
|
||||
+ * first seconds when playing audio-only via the "glitch-free"
|
||||
+ * pulseaudio server.
|
||||
*/
|
||||
- gap = in_buf->vpts - hw_vpts;
|
||||
+ if (in_buf && in_buf->stream && in_buf->stream->video_decoder_plugin) {
|
||||
+ gap = in_buf->vpts - hw_vpts;
|
||||
+ } else {
|
||||
+ gap = 0;
|
||||
+ }
|
||||
lprintf ("hw_vpts : %" PRId64 " buffer_vpts : %" PRId64 " gap : %" PRId64 "\n",
|
||||
hw_vpts, in_buf->vpts, gap);
|
||||
|
@ -7,11 +7,11 @@ Subject: [PATCH] ia64 is not alpha
|
||||
configure.ac | 5 ++++-
|
||||
1 files changed, 4 insertions(+), 1 deletions(-)
|
||||
|
||||
Index: xine-lib-1.1.16.1/configure.ac
|
||||
Index: xine-lib-1.1.16.3/configure.ac
|
||||
===================================================================
|
||||
--- xine-lib-1.1.16.1.orig/configure.ac
|
||||
+++ xine-lib-1.1.16.1/configure.ac
|
||||
@@ -2311,10 +2311,13 @@ case "$host_or_hostalias" in
|
||||
--- xine-lib-1.1.16.3.orig/configure.ac 2009-04-02 20:44:45.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/configure.ac 2009-11-14 10:45:11.618782275 +0100
|
||||
@@ -2328,10 +2328,13 @@
|
||||
mips-*)
|
||||
AC_DEFINE_UNQUOTED(FPM_MIPS,,[Define to select libmad fixed point arithmetic implementation])
|
||||
;;
|
@ -1,8 +1,7 @@
|
||||
Index: xine-lib-1.1.12/configure.ac
|
||||
===================================================================
|
||||
--- xine-lib-1.1.12.orig/configure.ac
|
||||
+++ xine-lib-1.1.12/configure.ac
|
||||
@@ -2560,6 +2560,28 @@ fi
|
||||
diff -uNr xine-lib-1.1.16.3.orig/configure.ac xine-lib-1.1.16.3/configure.ac
|
||||
--- xine-lib-1.1.16.3.orig/configure.ac 2009-04-02 20:44:45.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/configure.ac 2009-11-14 10:39:51.933031529 +0100
|
||||
@@ -2553,6 +2553,28 @@
|
||||
|
||||
AM_CONDITIONAL(HAVE_W32DLL, test "x$enable_w32dll" != "xno")
|
||||
|
||||
@ -31,53 +30,9 @@ Index: xine-lib-1.1.12/configure.ac
|
||||
|
||||
dnl ---------------------------------------------
|
||||
dnl some include paths ( !!! DO NOT REMOVE !!! )
|
||||
Index: xine-lib-1.1.12/src/xine-engine/xine.c
|
||||
===================================================================
|
||||
--- xine-lib-1.1.12.orig/src/xine-engine/xine.c
|
||||
+++ xine-lib-1.1.12/src/xine-engine/xine.c
|
||||
@@ -1780,6 +1780,15 @@ void xine_init (xine_t *this) {
|
||||
0, NULL, this);
|
||||
|
||||
/*
|
||||
+ * enable/disable option for the plugins helper
|
||||
+ */
|
||||
+ this->config->register_bool(this->config,
|
||||
+ "media.plugins_helper", 1,
|
||||
+ _("Run plugins helper"),
|
||||
+ _("Searches the internet for missing plugins"),
|
||||
+ 0, NULL, this);
|
||||
+
|
||||
+ /*
|
||||
* keep track of all opened streams
|
||||
*/
|
||||
this->streams = xine_list_new();
|
||||
Index: xine-lib-1.1.12/src/xine-engine/video_decoder.c
|
||||
===================================================================
|
||||
--- xine-lib-1.1.12.orig/src/xine-engine/video_decoder.c
|
||||
+++ xine-lib-1.1.12/src/xine-engine/video_decoder.c
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
#include "xine_internal.h"
|
||||
#include "xineutils.h"
|
||||
+#include "install_plugins_helper.h"
|
||||
#include <sched.h>
|
||||
|
||||
#define SPU_SLEEP_INTERVAL (90000/2)
|
||||
@@ -376,6 +377,10 @@ static void *video_decoder_loop (void *s
|
||||
stream->video_decoder_plugin = _x_get_video_decoder (stream, streamtype);
|
||||
|
||||
_x_stream_info_set(stream, XINE_STREAM_INFO_VIDEO_HANDLED, (stream->video_decoder_plugin != NULL));
|
||||
+ if(buf->type != buftype_unknown && !stream->video_decoder_plugin)
|
||||
+ _x_install_plugins_helper(stream,"decoder-video", buf->type, _x_buf_video_name( buf->type ));
|
||||
+
|
||||
+
|
||||
}
|
||||
|
||||
if (stream->video_decoder_plugin)
|
||||
Index: xine-lib-1.1.12/src/xine-engine/audio_decoder.c
|
||||
===================================================================
|
||||
--- xine-lib-1.1.12.orig/src/xine-engine/audio_decoder.c
|
||||
+++ xine-lib-1.1.12/src/xine-engine/audio_decoder.c
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/xine-engine/audio_decoder.c xine-lib-1.1.16.3/src/xine-engine/audio_decoder.c
|
||||
--- xine-lib-1.1.16.3.orig/src/xine-engine/audio_decoder.c 2009-02-10 18:32:23.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/xine-engine/audio_decoder.c 2009-11-14 10:39:51.934031409 +0100
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
#include "xine_internal.h"
|
||||
@ -86,7 +41,7 @@ Index: xine-lib-1.1.12/src/xine-engine/audio_decoder.c
|
||||
|
||||
static void *audio_decoder_loop (void *stream_gen) {
|
||||
|
||||
@@ -339,6 +340,10 @@ static void *audio_decoder_loop (void *s
|
||||
@@ -341,6 +342,10 @@
|
||||
|
||||
_x_stream_info_set(stream, XINE_STREAM_INFO_AUDIO_HANDLED,
|
||||
(stream->audio_decoder_plugin != NULL));
|
||||
@ -97,73 +52,9 @@ Index: xine-lib-1.1.12/src/xine-engine/audio_decoder.c
|
||||
}
|
||||
|
||||
if (audio_type != stream->audio_type) {
|
||||
Index: xine-lib-1.1.12/src/xine-engine/Makefile.am
|
||||
===================================================================
|
||||
--- xine-lib-1.1.12.orig/src/xine-engine/Makefile.am
|
||||
+++ xine-lib-1.1.12/src/xine-engine/Makefile.am
|
||||
@@ -19,7 +19,7 @@ libxine_la_SOURCES = xine.c metronom.c c
|
||||
video_overlay.c osd.c scratch.c demux.c vo_scale.c \
|
||||
xine_interface.c post.c tvmode.c broadcaster.c io_helper.c \
|
||||
input_rip.c input_cache.c info_helper.c refcounter.c \
|
||||
- alphablend.c
|
||||
+ alphablend.c install_plugins_helper.c
|
||||
|
||||
# FIXME: these are currently unused:
|
||||
EXTRA_DIST = lrb.c lrb.h accel_xvmc.h
|
||||
@@ -39,7 +39,8 @@ xineinclude_HEADERS = buffer.h metronom
|
||||
audio_out.h resample.h video_out.h xine_internal.h spu_decoder.h \
|
||||
video_overlay.h osd.h scratch.h xine_plugin.h xineintl.h \
|
||||
plugin_catalog.h audio_decoder.h video_decoder.h post.h \
|
||||
- io_helper.h broadcaster.h info_helper.h refcounter.h alphablend.h
|
||||
+ io_helper.h broadcaster.h info_helper.h refcounter.h alphablend.h \
|
||||
+ install_plugins_helper.h
|
||||
|
||||
noinst_HEADERS = bswap.h ffmpeg_bswap.h
|
||||
|
||||
Index: xine-lib-1.1.12/src/xine-engine/install_plugins_helper.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ xine-lib-1.1.12/src/xine-engine/install_plugins_helper.h
|
||||
@@ -0,0 +1,35 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2007 Sascha Sommer
|
||||
+ *
|
||||
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
+ *
|
||||
+ * helper functions to query the internet for additional codecs
|
||||
+ */
|
||||
+
|
||||
+#ifndef PLUGINS_HELPER_H
|
||||
+#define PLUGINS_HELPER_H
|
||||
+
|
||||
+#include <inttypes.h>
|
||||
+#include "xine_internal.h"
|
||||
+
|
||||
+/*
|
||||
+ * execute install plugins helper
|
||||
+ */
|
||||
+void _x_install_plugins_helper(xine_stream_t *stream, char* plugin_type, uint32_t type, char* plugin_desc) XINE_PROTECTED;
|
||||
+
|
||||
+
|
||||
+#endif
|
||||
Index: xine-lib-1.1.12/src/xine-engine/install_plugins_helper.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ xine-lib-1.1.12/src/xine-engine/install_plugins_helper.c
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/xine-engine/install_plugins_helper.c xine-lib-1.1.16.3/src/xine-engine/install_plugins_helper.c
|
||||
--- xine-lib-1.1.16.3.orig/src/xine-engine/install_plugins_helper.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/xine-engine/install_plugins_helper.c 2009-11-14 10:39:51.935031218 +0100
|
||||
@@ -0,0 +1,106 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2007 Sascha Sommer
|
||||
@ -271,3 +162,105 @@ Index: xine-lib-1.1.12/src/xine-engine/install_plugins_helper.c
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/xine-engine/install_plugins_helper.h xine-lib-1.1.16.3/src/xine-engine/install_plugins_helper.h
|
||||
--- xine-lib-1.1.16.3.orig/src/xine-engine/install_plugins_helper.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/xine-engine/install_plugins_helper.h 2009-11-14 10:39:51.935031218 +0100
|
||||
@@ -0,0 +1,35 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2007 Sascha Sommer
|
||||
+ *
|
||||
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
+ *
|
||||
+ * helper functions to query the internet for additional codecs
|
||||
+ */
|
||||
+
|
||||
+#ifndef PLUGINS_HELPER_H
|
||||
+#define PLUGINS_HELPER_H
|
||||
+
|
||||
+#include <inttypes.h>
|
||||
+#include "xine_internal.h"
|
||||
+
|
||||
+/*
|
||||
+ * execute install plugins helper
|
||||
+ */
|
||||
+void _x_install_plugins_helper(xine_stream_t *stream, char* plugin_type, uint32_t type, char* plugin_desc) XINE_PROTECTED;
|
||||
+
|
||||
+
|
||||
+#endif
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/xine-engine/Makefile.am xine-lib-1.1.16.3/src/xine-engine/Makefile.am
|
||||
--- xine-lib-1.1.16.3.orig/src/xine-engine/Makefile.am 2008-07-13 00:23:52.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/src/xine-engine/Makefile.am 2009-11-14 10:39:51.935031218 +0100
|
||||
@@ -19,7 +19,7 @@
|
||||
video_overlay.c osd.c scratch.c demux.c vo_scale.c \
|
||||
xine_interface.c post.c tvmode.c broadcaster.c io_helper.c \
|
||||
input_rip.c input_cache.c info_helper.c refcounter.c \
|
||||
- alphablend.c
|
||||
+ alphablend.c install_plugins_helper.c
|
||||
|
||||
# FIXME: these are currently unused:
|
||||
EXTRA_DIST = lrb.c lrb.h accel_xvmc.h
|
||||
@@ -39,7 +39,8 @@
|
||||
audio_out.h resample.h video_out.h xine_internal.h spu_decoder.h \
|
||||
video_overlay.h osd.h scratch.h xine_plugin.h xineintl.h \
|
||||
plugin_catalog.h audio_decoder.h video_decoder.h post.h \
|
||||
- io_helper.h broadcaster.h info_helper.h refcounter.h alphablend.h
|
||||
+ io_helper.h broadcaster.h info_helper.h refcounter.h alphablend.h \
|
||||
+ install_plugins_helper.h
|
||||
|
||||
noinst_HEADERS = bswap.h ffmpeg_bswap.h
|
||||
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/xine-engine/video_decoder.c xine-lib-1.1.16.3/src/xine-engine/video_decoder.c
|
||||
--- xine-lib-1.1.16.3.orig/src/xine-engine/video_decoder.c 2009-02-10 18:32:24.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/xine-engine/video_decoder.c 2009-11-14 10:39:51.934031409 +0100
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
#include "xine_internal.h"
|
||||
#include "xineutils.h"
|
||||
+#include "install_plugins_helper.h"
|
||||
#include <sched.h>
|
||||
|
||||
#define SPU_SLEEP_INTERVAL (90000/2)
|
||||
@@ -376,6 +377,10 @@
|
||||
stream->video_decoder_plugin = _x_get_video_decoder (stream, streamtype);
|
||||
|
||||
_x_stream_info_set(stream, XINE_STREAM_INFO_VIDEO_HANDLED, (stream->video_decoder_plugin != NULL));
|
||||
+ if(buf->type != buftype_unknown && !stream->video_decoder_plugin)
|
||||
+ _x_install_plugins_helper(stream,"decoder-video", buf->type, _x_buf_video_name( buf->type ));
|
||||
+
|
||||
+
|
||||
}
|
||||
|
||||
if (stream->video_decoder_plugin)
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/xine-engine/xine.c xine-lib-1.1.16.3/src/xine-engine/xine.c
|
||||
--- xine-lib-1.1.16.3.orig/src/xine-engine/xine.c 2009-02-18 12:37:43.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/xine-engine/xine.c 2009-11-14 10:39:51.934031409 +0100
|
||||
@@ -1773,6 +1773,15 @@
|
||||
0, NULL, this);
|
||||
|
||||
/*
|
||||
+ * enable/disable option for the plugins helper
|
||||
+ */
|
||||
+ this->config->register_bool(this->config,
|
||||
+ "media.plugins_helper", 1,
|
||||
+ _("Run plugins helper"),
|
||||
+ _("Searches the internet for missing plugins"),
|
||||
+ 0, NULL, this);
|
||||
+
|
||||
+ /*
|
||||
* keep track of all opened streams
|
||||
*/
|
||||
this->streams = xine_list_new();
|
@ -1,8 +1,7 @@
|
||||
Index: configure.ac
|
||||
================================================================================
|
||||
--- configure
|
||||
+++ configure
|
||||
@@ -54785,6 +54785,7 @@
|
||||
diff -uNr xine-lib-1.1.16.3.orig/configure xine-lib-1.1.16.3/configure
|
||||
--- xine-lib-1.1.16.3.orig/configure 2009-04-02 20:46:08.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/configure 2009-11-14 11:11:36.154780901 +0100
|
||||
@@ -48161,6 +48161,7 @@
|
||||
echo " * video decoder plugins:"
|
||||
echo " - MPEG 1,2 - Amiga Bitplane"
|
||||
echo " - Raw RGB - Raw YUV"
|
||||
@ -10,9 +9,10 @@ Index: configure.ac
|
||||
if test "x$with_external_ffmpeg" = "xyes"; then
|
||||
echo " - ffmpeg (external library):"
|
||||
else
|
||||
--- configure.ac
|
||||
+++ configure.ac
|
||||
@@ -1062,6 +1062,28 @@
|
||||
diff -uNr xine-lib-1.1.16.3.orig/configure.ac xine-lib-1.1.16.3/configure.ac
|
||||
--- xine-lib-1.1.16.3.orig/configure.ac 2009-04-02 20:44:45.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/configure.ac 2009-11-14 11:11:36.156781247 +0100
|
||||
@@ -1075,6 +1075,28 @@
|
||||
AC_SUBST([SDL_LIBS])
|
||||
|
||||
dnl ---------------------------------------------
|
||||
@ -41,7 +41,7 @@ Index: configure.ac
|
||||
dnl check for Libstk
|
||||
dnl ---------------------------------------------
|
||||
|
||||
@@ -2775,6 +2797,7 @@
|
||||
@@ -2760,6 +2782,7 @@
|
||||
src/libxineadec/gsm610/Makefile
|
||||
src/libxineadec/nosefart/Makefile
|
||||
src/libreal/Makefile
|
||||
@ -49,7 +49,7 @@ Index: configure.ac
|
||||
src/post/Makefile
|
||||
src/post/planar/Makefile
|
||||
src/post/goom/Makefile
|
||||
@@ -2962,6 +2985,9 @@
|
||||
@@ -2946,6 +2969,9 @@
|
||||
dnl audio decoders
|
||||
echo " * audio decoder plugins:"
|
||||
echo " - GSM 06.10 - linear PCM"
|
||||
@ -59,19 +59,20 @@ Index: configure.ac
|
||||
if test "x$with_external_ffmpeg" = "xyes"; then
|
||||
echo " - ffmpeg (external library):"
|
||||
else
|
||||
--- src/Makefile.am
|
||||
+++ src/Makefile.am
|
||||
@@ -25,6 +25,7 @@
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/Makefile.am xine-lib-1.1.16.3/src/Makefile.am
|
||||
--- xine-lib-1.1.16.3.orig/src/Makefile.am 2009-02-13 18:52:47.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/Makefile.am 2009-11-14 11:11:36.156781247 +0100
|
||||
@@ -26,5 +26,6 @@
|
||||
libreal \
|
||||
libfaad \
|
||||
libmusepack \
|
||||
+ mjpeg \
|
||||
post \
|
||||
combined \
|
||||
vdr
|
||||
--- src/Makefile.in
|
||||
+++ src/Makefile.in
|
||||
@@ -411,6 +411,7 @@
|
||||
combined
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/Makefile.in xine-lib-1.1.16.3/src/Makefile.in
|
||||
--- xine-lib-1.1.16.3.orig/src/Makefile.in 2009-04-02 20:45:50.000000000 +0200
|
||||
+++ xine-lib-1.1.16.3/src/Makefile.in 2009-11-14 11:11:36.157781105 +0100
|
||||
@@ -414,6 +414,7 @@
|
||||
libreal \
|
||||
libfaad \
|
||||
libmusepack \
|
||||
@ -79,8 +80,9 @@ Index: configure.ac
|
||||
post \
|
||||
combined
|
||||
|
||||
--- src/mjpeg/Makefile.am
|
||||
+++ src/mjpeg/Makefile.am
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/mjpeg/Makefile.am xine-lib-1.1.16.3/src/mjpeg/Makefile.am
|
||||
--- xine-lib-1.1.16.3.orig/src/mjpeg/Makefile.am 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/mjpeg/Makefile.am 2009-11-14 11:11:36.157781105 +0100
|
||||
@@ -0,0 +1,9 @@
|
||||
+include $(top_srcdir)/misc/Makefile.common
|
||||
+
|
||||
@ -91,8 +93,9 @@ Index: configure.ac
|
||||
+xineplug_decode_mjpeg_la_CFLAGS = $(VISIBILITY_FLAG)
|
||||
+xineplug_decode_mjpeg_la_LDFLAGS = $(xineplug_ldflags)
|
||||
+endif
|
||||
--- src/mjpeg/Makefile.in
|
||||
+++ src/mjpeg/Makefile.in
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/mjpeg/Makefile.in xine-lib-1.1.16.3/src/mjpeg/Makefile.in
|
||||
--- xine-lib-1.1.16.3.orig/src/mjpeg/Makefile.in 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/mjpeg/Makefile.in 2009-11-14 11:11:36.158781034 +0100
|
||||
@@ -0,0 +1,751 @@
|
||||
+# Makefile.in generated by automake 1.10 from Makefile.am.
|
||||
+# @configure_input@
|
||||
@ -845,8 +848,9 @@ Index: configure.ac
|
||||
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
+# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
+.NOEXPORT:
|
||||
--- src/mjpeg/xine_mjpeg_decoder.c
|
||||
+++ src/mjpeg/xine_mjpeg_decoder.c
|
||||
diff -uNr xine-lib-1.1.16.3.orig/src/mjpeg/xine_mjpeg_decoder.c xine-lib-1.1.16.3/src/mjpeg/xine_mjpeg_decoder.c
|
||||
--- xine-lib-1.1.16.3.orig/src/mjpeg/xine_mjpeg_decoder.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ xine-lib-1.1.16.3/src/mjpeg/xine_mjpeg_decoder.c 2009-11-14 11:11:36.158781034 +0100
|
||||
@@ -0,0 +1,397 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2007 Marcus Meissner
|
3
xine-lib-1.1.16.3.tar.bz2
Normal file
3
xine-lib-1.1.16.3.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d25a241efa55dc7d8f482336efa8bb7b9bb9d69b6df8a8a37f2660948fd67b52
|
||||
size 7468182
|
@ -1,22 +0,0 @@
|
||||
Index: xine-lib-1.1.16.1/src/demuxers/demux_4xm.c
|
||||
===================================================================
|
||||
--- xine-lib-1.1.16.1.orig/src/demuxers/demux_4xm.c
|
||||
+++ xine-lib-1.1.16.1/src/demuxers/demux_4xm.c
|
||||
@@ -190,8 +190,16 @@ static int open_fourxm_file(demux_fourxm
|
||||
return 0;
|
||||
}
|
||||
const uint32_t current_track = _X_LE_32(&header[i + 8]);
|
||||
- if (current_track + 1 > fourxm->track_count) {
|
||||
+ if(current_track >= UINT_MAX / sizeof(audio_track_t) - 1){
|
||||
+ free(header);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (current_track >= fourxm->track_count) {
|
||||
fourxm->track_count = current_track + 1;
|
||||
+ if (!fourxm->track_count || fourxm->track_count >= UINT_MAX / sizeof(audio_track_t)) {
|
||||
+ free(header);
|
||||
+ return 0;
|
||||
+ }
|
||||
fourxm->tracks = realloc(fourxm->tracks,
|
||||
fourxm->track_count * sizeof(audio_track_t));
|
||||
if (!fourxm->tracks) {
|
@ -1,12 +0,0 @@
|
||||
Index: xine-lib-1.1.11/src/audio_out/audio_alsa_out.c
|
||||
===================================================================
|
||||
--- xine-lib-1.1.11.orig/src/audio_out/audio_alsa_out.c
|
||||
+++ xine-lib-1.1.11/src/audio_out/audio_alsa_out.c
|
||||
@@ -41,6 +41,7 @@
|
||||
#ifdef HAVE_ALLOCA_H
|
||||
#include <alloca.h>
|
||||
#endif
|
||||
+#include <assert.h>
|
||||
|
||||
#define ALSA_PCM_NEW_HW_PARAMS_API
|
||||
#define ALSA_PCM_NEW_SW_PARAMS_API
|
122
xine-lib-libdvdread_udf.diff
Normal file
122
xine-lib-libdvdread_udf.diff
Normal file
@ -0,0 +1,122 @@
|
||||
# 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>
|
||||
+#ifndef __WIN32__
|
||||
+#include <fnmatch.h>
|
||||
+#endif
|
||||
|
||||
#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,
|
||||
@@ -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 )
|
||||
{
|
||||
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)) {
|
||||
+#else
|
||||
+ 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;
|
||||
+
|
||||
+ 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);
|
||||
+}
|
||||
+
|
||||
|
||||
|
||||
/**
|
@ -1,3 +1,38 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 18 15:11:00 UTC 2009 - lnussel@suse.de
|
||||
|
||||
- enable libmodplug on >= 11.2
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Nov 14 15:31:00 CEST 2009 - Manfred.Tremmel@iiv.de
|
||||
|
||||
- merged packman and openSUSE package
|
||||
- update to 1.1.16.3
|
||||
* Security fixes:
|
||||
- Fix another possible int overflow in the 4XM demuxer.
|
||||
(ref. TKADV2009-004, CVE-2009-0385)
|
||||
- Fix an integer overflow in the Quicktime demuxer.
|
||||
* Enable libmpeg2new (if configured with --enable-libmpeg2new).
|
||||
This is not yet production code; the old mpeg2 decoder remains the default.
|
||||
* Add support for OpenBSD.
|
||||
* Fix a build failure on *BSD due to some rather useful GNUisms.
|
||||
* Protect audio loop so it cannot write to a paused device (fix
|
||||
pause/resume freeze with pulseaudio).
|
||||
* Fix build with libavutil >= 50.0.0.
|
||||
* Fix segfaults when playing VCDs.
|
||||
* Fix calculation of frame duration for ffmpeg-decoded formats.
|
||||
* Don't assume that ID3v2 tags with no content mean "end of ID3 data".
|
||||
- changes from 1.1.16.1 to 1.1.16.2:
|
||||
* Build fixes related to ImageMagick 6.4 & later.
|
||||
* Fix an error in Matroska PTS calculation.
|
||||
* Some front ends hang due to the hang fixes in 1.1.16. Fix this by
|
||||
removing a break statement.
|
||||
* Fix broken size checks in various input plugins (ref. CVE-2008-5239).
|
||||
* More malloc checking (ref. CVE-2008-5240).
|
||||
* Fix race conditions in gapless_switch (ref. kde bug #180339)
|
||||
* Fix a possible integer overflow in the 4XM demuxer.
|
||||
(TKADV2009-004, CVE-2009-0385)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 29 18:01:00 CEST 2009 - meissner@suse.de
|
||||
|
||||
|
954
xine-lib.spec
954
xine-lib.spec
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user