SHA256
1
0
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:
OBS User autobuild 2009-11-27 13:40:40 +00:00 committed by Git OBS Bridge
parent 7b7cbd6322
commit 944f0a6698
19 changed files with 1453 additions and 360 deletions

View File

@ -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

View File

@ -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
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9bda7583f46a039c70abb77360f84342125519a6497a50ccc0d19bc81934a6dd
size 25043

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e680faac1958048403b71d5db1501dac7f6281e46fc18673584d748e70aaede7
size 5198657

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9fc252d06e5db24265c83076676bd1f1d0e0935732b9f21ec7fcaac35bf80a36
size 7382381

View 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
View 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);
}

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7ed20d7e52e8e8db1a535d628d7afc41ed3665a9d23190ced8cbd9dca667be91
size 5073254

View File

@ -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

View 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);

View File

@ -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])
;;

View File

@ -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();

View File

@ -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

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d25a241efa55dc7d8f482336efa8bb7b9bb9d69b6df8a8a37f2660948fd67b52
size 7468182

View File

@ -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) {

View File

@ -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

View 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);
+}
+
/**

View File

@ -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

File diff suppressed because it is too large Load Diff