- update to 1.2.1

* The "I'm at Tyneside LUG" release.
  * Enable PulseAudio, JACK and VDPAU on the Hurd.
  * Rewrite of VDPAU OSD handling.
  * sndio plugin is now buildable.
  * Various bug fixes.
- first build of xine-lib-12 for packman

OBS-URL: https://build.opensuse.org/package/show/multimedia:xine/xine-lib?expand=0&rev=56
This commit is contained in:
Manfred Tremmel 2012-05-26 21:05:10 +00:00 committed by Git OBS Bridge
parent 595ac96b3d
commit 371c629f8b
26 changed files with 654 additions and 3838 deletions

View File

@ -1,26 +0,0 @@
For legal reasons this version of xine has limited functionality. Here is
a list of what has been disabled:
AC3 and AC4.1 sound decoding. Probably patented. Maybe legal if it is not labeled as XX-Y.
ASF parsing. Patented.
Closed Captioning Decoder (EIA-608). Probably patented.
GSM 610 decoding. Patented.
MPEG-4 (FFMPEG) codecs. Patented.
MS Video-1. Used in AVI and ASF. AVI is okay, ASF is not.
Sorenson video codec. Reverse engineering, no legal expertise.
Direct Hardware Access. Uncertain legal status.
Freeware Advanced Audio Decoder. No legal expertise.
Interplay DPCM Audio Decoder. No legal expertise.
Interplay MVE File Video Decoder. No legal expertise.
NES Music File Format. No legal expertise.
Origin's Wing Commander III MVE format. No legal expertise.
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
"libxine1-codecs" rpm, which contains all protected codecs.
See also
http://www.opensuse.org/XINE#Legal_Matters

View File

@ -1 +1 @@
libxine1
libxine2

View File

@ -58,13 +58,11 @@ pushd $tmp/$tarbase >/dev/null || exit 1
echo 1>&2 "Crippling..."
c_subdirs="dxr3 liba52 libdts libfaad libffmpeg libmad libmpeg2 libspucc libspudec libspudvb libw32dll input/vcd libxineadec/gsm610 libxineadec/nosefart combined/ffmpeg"
c_subdirs="dxr3 liba52 libdts libfaad libffmpeg libmad libmpeg2 libspucc libspudec libspudvb libw32dll input/vcd combined/ffmpeg"
c_demuxers="xineplug_dmx_asf.la asfheader.h asfheader.c demux_asf.c xineplug_dmx_mpeg.la demux_mpeg.c xineplug_dmx_mpeg_block.la demux_mpeg_block.c xineplug_dmx_mpeg_ts.la demux_ts.c xineplug_dmx_mpeg_elem.la demux_elem.c xineplug_dmx_mpeg_pes.la demux_mpeg_pes.c xineplug_dmx_yuv4mpeg2.la demux_yuv4mpeg2.c"
c_input="xineplug_inp_mms.la input_mms.c mms.c mmsh.c ../demuxers/asfheader.c mms.h mmsh.h xineplug_inp_vcdo.la input_vcd.c vcd"
c_libxineadec="xineplug_decode_gsm610.la xineplug_decode_nsf.la gsm610.c nsf.c gsm610 nosefart"
cp src/libffmpeg/libavcodec/libpostproc/mangle.h src/post/deinterlace/plugins/
do_nukeentry src/Makefile.am "$c_subdirs"
do_nukeentry configure.ac "$c_subdirs" "src/" "/[a-zA-Z0-9_./]*Makefile"
do_remove src "$c_subdirs"
@ -72,8 +70,6 @@ do_nukeentry src/demuxers/Makefile.am "$c_demuxers"
do_remove src/demuxers "$c_demuxers"
do_nukeentry src/input/Makefile.am "$c_input"
do_remove src/input "$c_input"
do_nukeentry src/libxineadec/Makefile.am "$c_libxineadec"
do_remove src/libxineadec "$c_libxineadec"
do_nukeentry src/combined/Makefile.am "ffmpeg"
do_remove src/combined "ffmpeg"
do_nukeentry src/post/planar/Makefile.am "pp\.c \S*/libpostproc/libpostprocess\.la"

View File

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

View File

@ -1,12 +0,0 @@
diff -ur xine-lib-1.1.18.orig/src/vdr/input_vdr.c xine-lib-1.1.18/src/vdr/input_vdr.c
--- xine-lib-1.1.18.orig/src/vdr/input_vdr.c 2010-02-24 21:01:43.658883179 +0100
+++ xine-lib-1.1.18/src/vdr/input_vdr.c 2010-02-24 21:02:59.800133025 +0100
@@ -51,7 +51,7 @@
#define VDR_MAX_NUM_WINDOWS 16
-#define VDR_ABS_FIFO_DIR "/tmp/vdr-xine"
+#define VDR_ABS_FIFO_DIR "/var/lib/vdr-xine"
#define BUF_SIZE 1024

View File

@ -1,11 +0,0 @@
diff -ur xine-lib-1.1.19.orig/configure.ac xine-lib-1.1.19/configure.ac
--- xine-lib-1.1.19.orig/configure.ac 2010-07-26 00:57:13.155035643 +0200
+++ xine-lib-1.1.19/configure.ac 2010-07-26 01:00:45.468785507 +0200
@@ -120,6 +120,7 @@
dnl ---------------------------------------------
AC_PROG_CC
+AC_PROG_CXX
AM_PROG_AS
case "$host_os" in

View File

@ -1,11 +0,0 @@
diff -ur xine-lib-1.1.20.orig/src/audio_out/audio_alsa_out.c xine-lib-1.1.20/src/audio_out/audio_alsa_out.c
--- xine-lib-1.1.20.orig/src/audio_out/audio_alsa_out.c 2011-10-04 23:42:53.000000000 +0200
+++ xine-lib-1.1.20/src/audio_out/audio_alsa_out.c 2011-11-13 17:54:44.276984269 +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

View File

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

View File

@ -1,37 +0,0 @@
diff -ur xine-lib-1.1.20.orig/src/xine-engine/load_plugins.c xine-lib-1.1.20/src/xine-engine/load_plugins.c
--- xine-lib-1.1.20.orig/src/xine-engine/load_plugins.c 2011-10-16 20:59:32.000000000 +0200
+++ xine-lib-1.1.20/src/xine-engine/load_plugins.c 2011-11-13 18:08:39.357570472 +0100
@@ -2508,9 +2508,18 @@
plugin_catalog_t *catalog = self->plugin_catalog;
int list_id;
+ int havempgdecoder = 0;
+ const char * const * p;
pthread_mutex_lock (&catalog->lock);
+ _build_list_typed_plugins(&catalog, catalog->plugin_lists[PLUGIN_AUDIO_DECODER - 1]);
+ for (p = catalog->ids; p && *p; p++) {
+ if (strcmp (*p, "mad") == 0 || strcmp (*p, "ffmpegaudio") == 0) {
+ havempgdecoder = 1;
+ break;
+ }
+ }
/* calc length of output string and create an array of strings to
concatenate */
size_t len = 0;
@@ -2522,7 +2531,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 )
- len += strlen(extensions[list_id]) +1;
+ {
+ if(havempgdecoder || !strstr(extensions[list_id], "mp3")) {
+ len += strlen(extensions[list_id]) +1;
+ } else {
+ extensions[list_id] = NULL;
+ }
+ }
}
}

View File

@ -1,22 +0,0 @@
diff -ur xine-lib-1.1.20.orig/src/xine-engine/audio_out.c xine-lib-1.1.20/src/xine-engine/audio_out.c
--- xine-lib-1.1.20.orig/src/xine-engine/audio_out.c 2010-08-16 18:36:37.000000000 +0200
+++ xine-lib-1.1.20/src/xine-engine/audio_out.c 2011-11-13 17:23:52.677415436 +0100
@@ -1156,8 +1156,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

@ -1,18 +0,0 @@
diff -ur xine-lib-1.1.20.orig/configure.ac xine-lib-1.1.20/configure.ac
--- xine-lib-1.1.20.orig/configure.ac 2011-11-13 02:36:20.000000000 +0100
+++ xine-lib-1.1.20/configure.ac 2011-11-13 17:19:36.819687116 +0100
@@ -2407,10 +2407,13 @@
mips-*)
AC_DEFINE_UNQUOTED(FPM_MIPS,,[Define to select libmad fixed point arithmetic implementation])
;;
- alphaev56-* | alpha* | ia64-* | hppa*-linux-*)
+ alphaev56-* | alpha* | hppa*-linux-*)
AC_DEFINE_UNQUOTED(FPM_64BIT,,[Define to select libmad fixed point arithmetic implementation])
AC_DEFINE_UNQUOTED(ARCH_ALPHA,,[Define this if you're running Alpha architecture])
;;
+ ia64-*)
+ AC_DEFINE_UNQUOTED(FPM_64BIT,,[Define to select libmad fixed point arithmetic implementation])
+ ;;
armv4l-*-linux*)
AC_DEFINE_UNQUOTED(FPM_ARM,,[Define to select libmad fixed point arithmetic implementation])
AC_DEFINE_UNQUOTED(ARCH_ARM,,[Define this if you're running ARM architecture])

View File

@ -1,266 +0,0 @@
diff -uNr xine-lib-1.1.20.orig/configure.ac xine-lib-1.1.20/configure.ac
--- xine-lib-1.1.20.orig/configure.ac 2011-11-13 17:46:57.513129735 +0100
+++ xine-lib-1.1.20/configure.ac 2011-11-13 17:40:51.572377268 +0100
@@ -2657,6 +2657,28 @@
AM_CONDITIONAL(HAVE_W32DLL, test "x$enable_w32dll" != "xno")
+dnl ---------------------------------------------
+dnl let distro override plugin install helper path
+dnl ---------------------------------------------
+AC_ARG_WITH(install-plugins-helper,
+ AC_HELP_STRING([--with-install-plugins-helper],
+ [specify path of helper script to call to install plugins]),
+ [
+ case "${withval}" in
+ yes) AC_MSG_ERROR(bad value ${withval} for --with-install-plugins-helper) ;;
+ no) AC_MSG_ERROR(bad value ${withval} for --with-install-plugins-helper) ;;
+ *) XINE_INSTALL_PLUGINS_HELPER="${withval}" ;;
+ esac
+ ],
+ [
+ dnl Default value
+ XINE_INSTALL_PLUGINS_HELPER="`makeexpand "${libexecdir}/xine-install-plugins-helper"`"
+ ]
+)
+AC_MSG_NOTICE(Using $XINE_INSTALL_PLUGINS_HELPER as plugin install helper)
+AC_DEFINE_UNQUOTED(XINE_INSTALL_PLUGINS_HELPER, "$XINE_INSTALL_PLUGINS_HELPER",
+ [plugin install helper script])
+AC_SUBST(XINE_INSTALL_PLUGINS_HELPER)
dnl ---------------------------------------------
dnl some include paths ( !!! DO NOT REMOVE !!! )
diff -uNr xine-lib-1.1.20.orig/src/xine-engine/audio_decoder.c xine-lib-1.1.20/src/xine-engine/audio_decoder.c
--- xine-lib-1.1.20.orig/src/xine-engine/audio_decoder.c 2011-11-13 17:46:57.513129735 +0100
+++ xine-lib-1.1.20/src/xine-engine/audio_decoder.c 2011-10-04 23:42:53.000000000 +0200
@@ -41,6 +41,7 @@
#include "xine_internal.h"
#include "xineutils.h"
+#include "install_plugins_helper.h"
static void *audio_decoder_loop (void *stream_gen) {
@@ -344,6 +345,10 @@
_x_stream_info_set(stream, XINE_STREAM_INFO_AUDIO_HANDLED,
(stream->audio_decoder_plugin != NULL));
+
+ if(buf->type != buftype_unknown && !stream->audio_decoder_plugin)
+ _x_install_plugins_helper(stream,"decoder-audio", buf->type, _x_buf_audio_name( buf->type ));
+
}
if (audio_type != stream->audio_type) {
diff -uNr xine-lib-1.1.20.orig/src/xine-engine/install_plugins_helper.c xine-lib-1.1.20/src/xine-engine/install_plugins_helper.c
--- xine-lib-1.1.20.orig/src/xine-engine/install_plugins_helper.c 2011-11-13 17:46:57.513129735 +0100
+++ xine-lib-1.1.20/src/xine-engine/install_plugins_helper.c 1970-01-01 01:00:00.000000000 +0100
@@ -0,0 +1,106 @@
+/*
+ * 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 plugins
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#include "install_plugins_helper.h"
+
+#define PROCNAME_LEN 100
+
+static const char *
+get_helper(xine_stream_t *stream)
+{
+ const char *helper;
+
+ helper = getenv("XINE_INSTALL_PLUGINS_HELPER");
+ if (helper == NULL)
+ helper = XINE_INSTALL_PLUGINS_HELPER;
+
+ xine_log (stream->xine, XINE_LOG_MSG,
+ _("Using plugin install helper '%s'"), helper);
+
+ return helper;
+}
+
+static void
+get_procname(char* procname, size_t len)
+{
+ char name[100];
+ FILE* fp;
+ size_t pos = 0;
+ snprintf(name, sizeof(name), "/proc/%u/cmdline", getpid());
+
+ fp = fopen(name,"rb");
+ if(fp){
+ while(fp && !feof(fp) && pos < sizeof(name)-1){
+ procname[pos] = fgetc(fp);
+ if(procname[pos] == ' ') /* ignore arguments */
+ break;
+ if(procname[pos] == '/') /* ignore the path to the executable */
+ pos = 0;
+ else
+ ++pos;
+ }
+ fclose(fp);
+ }
+ procname[pos] = '\0';
+}
+
+
+void _x_install_plugins_helper(xine_stream_t* stream,char* plugin_type, uint32_t id, char* plugin_desc)
+{
+ xine_cfg_entry_t cfgentry;
+ char* helper = get_helper(stream);
+ FILE* fp;
+
+ if(helper && xine_config_lookup_entry(stream->xine, "media.plugins_helper", &cfgentry) && cfgentry.num_value
+ && (fp = fopen(helper,"rb") )) {
+ char procname[PROCNAME_LEN];
+// char* procname = getenv("_"); /* might deliver /opt/kde3/bin/start_kdeinit_wrapper etc... */
+ pid_t pid;
+ fclose(fp);
+ get_procname(procname,PROCNAME_LEN);
+ pid = fork();
+ if(pid == 0) {
+ size_t len = 5 + strlen(XINE_VERSION) + 1 + strlen(procname) + 1 + strlen(plugin_desc) + 1 + strlen(plugin_type) + 1 + 100 + 1;
+ char* str = calloc(1,len + 1);
+ if(str){
+ snprintf(str,len,"xine|%s|%s|%s|%s=%u",XINE_VERSION,procname,plugin_desc,plugin_type,id);
+ if(execl(helper,"xine-install-plugins-helper",str, NULL) == -1)
+ xine_log(stream->xine, XINE_LOG_MSG,
+ _("Couldn't start plugins_helper"));
+ free(str);
+ }
+ }else if(pid < 0){
+ xine_log(stream->xine, XINE_LOG_MSG,
+ _("Couldn't fork"));
+ }else{
+ waitpid(pid, NULL, 0);
+ }
+ }
+}
+
diff -uNr xine-lib-1.1.20.orig/src/xine-engine/install_plugins_helper.h xine-lib-1.1.20/src/xine-engine/install_plugins_helper.h
--- xine-lib-1.1.20.orig/src/xine-engine/install_plugins_helper.h 2011-11-13 17:46:57.513129735 +0100
+++ xine-lib-1.1.20/src/xine-engine/install_plugins_helper.h 1970-01-01 01:00:00.000000000 +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.20.orig/src/xine-engine/Makefile.am xine-lib-1.1.20/src/xine-engine/Makefile.am
--- xine-lib-1.1.20.orig/src/xine-engine/Makefile.am 2011-11-13 17:46:57.513129735 +0100
+++ xine-lib-1.1.20/src/xine-engine/Makefile.am 2011-10-04 23:42:53.000000000 +0200
@@ -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 xine_private.h
diff -uNr xine-lib-1.1.20.orig/src/xine-engine/video_decoder.c xine-lib-1.1.20/src/xine-engine/video_decoder.c
--- xine-lib-1.1.20.orig/src/xine-engine/video_decoder.c 2011-11-13 17:46:57.517129699 +0100
+++ xine-lib-1.1.20/src/xine-engine/video_decoder.c 2011-11-08 21:26:43.000000000 +0100
@@ -38,6 +38,7 @@
#include "xine_internal.h"
#include "xineutils.h"
+#include "install_plugins_helper.h"
#include <sched.h>
#define SPU_SLEEP_INTERVAL (90000/2)
@@ -408,6 +409,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.20.orig/src/xine-engine/xine.c xine-lib-1.1.20/src/xine-engine/xine.c
--- xine-lib-1.1.20.orig/src/xine-engine/xine.c 2011-11-13 17:46:57.517129699 +0100
+++ xine-lib-1.1.20/src/xine-engine/xine.c 2011-11-13 17:35:47.579072679 +0100
@@ -1816,6 +1816,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();

File diff suppressed because it is too large Load Diff

View File

@ -1,51 +0,0 @@
# HG changeset patch
# User Ulrich Müller <ulm@gentoo.org>
# Date 1327945720 0
# Node ID 24d09421ed09d3a78efeab5c9b8ab31daaaba4fd
# Parent da296856c52e654cf599248de3a01bb754363c79
Compile failure in osd.c with sys-libs/zlib-1.2.6
diff -r da296856c52e -r 24d09421ed09 misc/xine-fontconv.c
--- a/misc/xine-fontconv.c Wed Jan 18 22:01:28 2012 +0000
+++ b/misc/xine-fontconv.c Mon Jan 30 17:48:40 2012 +0000
@@ -109,7 +109,7 @@
osd_font_t font;
-static int gzwrite_i16(gzFile *fp, uint16_t number) {
+static int gzwrite_i16(gzFile fp, uint16_t number) {
return gzputc(fp, number & 0xFF) != -1 &&
gzputc(fp, (number >> 8) & 0xFF) != -1;
}
@@ -341,7 +341,7 @@
char filename[1024];
FT_Bitmap *out_bitmap;
- gzFile *fp;
+ gzFile fp;
int error;
int error_counter;
int glyph_index;
diff -r da296856c52e -r 24d09421ed09 src/xine-engine/osd.c
--- a/src/xine-engine/osd.c Wed Jan 18 22:01:28 2012 +0000
+++ b/src/xine-engine/osd.c Mon Jan 30 17:48:40 2012 +0000
@@ -650,7 +650,7 @@
osd->display_y = y;
}
-static uint16_t gzread_i16(gzFile *fp) {
+static uint16_t gzread_i16(gzFile fp) {
uint16_t ret;
ret = gzgetc(fp);
ret |= (gzgetc(fp)<<8);
@@ -663,7 +663,7 @@
static int osd_renderer_load_font(osd_renderer_t *this, char *filename) {
- gzFile *fp;
+ gzFile fp;
osd_font_t *font = NULL;
int i, ret = 0;

View File

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

View File

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

3
xine-lib-1.2.1.tar.bz2 Normal file
View File

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

View File

@ -1,87 +0,0 @@
Index: src/input/input_dvd.c
===================================================================
--- src/input/input_dvd.c.orig
+++ src/input/input_dvd.c
@@ -1393,7 +1393,12 @@
static int dvd_parse_try_open(dvd_input_plugin_t *this, const char *locator)
{
- const char *intended_dvd_device;
+ const char *intended_dvd_device;
+ dvd_input_class_t *class = (dvd_input_class_t *)
+ this->input_plugin.input_class;
+ xine_sarray_t **plgs = class->xine->plugin_catalog->plugin_lists;
+ plugin_node_t *node;
+ int i;
/* FIXME: we temporarily special-case "dvd:/" for compatibility;
* actually "dvd:/" should play a DVD image stored in /, but for
@@ -1409,7 +1414,6 @@
xine_setenv("DVDCSS_RAW_DEVICE", "", 1);
} else {
/* use default DVD device */
- dvd_input_class_t *class = (dvd_input_class_t*)this->input_plugin.input_class;
xine_cfg_entry_t raw_device;
if (xine_config_lookup_entry(this->stream->xine,
"media.dvd.raw_device", &raw_device))
@@ -1417,6 +1421,23 @@
intended_dvd_device = class->dvd_device;
}
+ for (i = 0; (node = xine_sarray_get (plgs[PLUGIN_VIDEO_DECODER-1], i)); i++)
+ if (strcmp (node->info->id, "mpeg2") == 0)
+ break;
+ if (node)
+ for (i = 0; (node = xine_sarray_get (plgs[PLUGIN_SPU_DECODER-1], i)); i++)
+ if (strcmp (node->info->id, "spudec") == 0)
+ break;
+ if (! node) {
+ _x_message (this->stream, XINE_MSG_GENERAL_WARNING,
+ "This version of Xine lacks support for playing DVD discs "
+ "for legal reasons.\n"
+ "Please go to http://www.opensuse.org/XINE#Legal_Matters "
+ "for further details.",
+ NULL);
+ return 0;
+ }
+
/* attempt to open DVD */
if (this->opened) {
if (intended_dvd_device == this->current_dvd_device) {
@@ -1479,8 +1500,11 @@
}
static int dvd_plugin_open (input_plugin_t *this_gen) {
- dvd_input_plugin_t *this = (dvd_input_plugin_t*)this_gen;
+ dvd_input_plugin_t *this = (dvd_input_plugin_t*)this_gen;
dvd_input_class_t *class = (dvd_input_class_t*)this_gen->input_class;
+ xine_sarray_t **plgs = class->xine->plugin_catalog->plugin_lists;
+ plugin_node_t *node;
+ int i;
char *locator, *locator_orig;
char *title_part;
@@ -1489,6 +1513,23 @@
trace_print("Called\n");
+ for (i = 0; (node = xine_sarray_get (plgs[PLUGIN_VIDEO_DECODER-1], i)); i++)
+ if (strcmp (node->info->id, "mpeg2") == 0)
+ break;
+ if (node)
+ for (i = 0; (node = xine_sarray_get (plgs[PLUGIN_SPU_DECODER-1], i)); i++)
+ if (strcmp (node->info->id, "spudec") == 0)
+ break;
+ if (! node) {
+ _x_message (this->stream, XINE_MSG_GENERAL_WARNING,
+ "This version of Xine lacks support for playing DVD discs "
+ "for legal reasons.\n"
+ "Please go to http://www.opensuse.org/XINE#Legal_Matters "
+ "for further details.",
+ NULL);
+ return 0;
+ }
+
/* we already checked the "dvd:/" MRL before */
locator_orig = locator = strdup (this->mrl + (sizeof("dvd:") - 1));

View File

@ -1,35 +0,0 @@
Index: doc/faq/faq.sgml
===================================================================
--- doc/faq/faq.sgml.orig
+++ doc/faq/faq.sgml
@@ -413,12 +413,12 @@
<para>
If you want to have Xv support compiled in, make sure you either have
a shared Xv library on your system, e.g.
- <command>ls /usr/X11R6/lib/libXv*</command>
+ <command>ls /usr/lib/libXv*</command>
should give you some .so libs, like this:
<screen>
-&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libXv.a
-&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libXv.so
-&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libXv.so.1</screen>
+&nbsp;&nbsp;&nbsp;/usr/lib/libXv.a
+&nbsp;&nbsp;&nbsp;/usr/lib/libXv.so
+&nbsp;&nbsp;&nbsp;/usr/lib/libXv.so.1</screen>
</para>
<para>
Alternatively you need to have libtool 1.4 or newer installed, then
Index: doc/README_xxmc.html
===================================================================
--- doc/README_xxmc.html.orig
+++ doc/README_xxmc.html
@@ -69,8 +69,7 @@
installing</h2>
Make sure you have the XvMC wrapper installed. The wrapper will try to
figure out at run-time what xvmc-hardware specific driver to load. If
-it fails it will open the file <span style="font-family: monospace;">/etc/X11/XvMCConfig</span>
-or <span style="font-family: monospace;">/usr/X11R6/lib/X11/XvMCConfig</span>
+it fails it will open the file <span style="font-family: monospace;">/usr/lib/X11/XvMCConfig</span>
and try to load the hardware-specific library mentioned in that file.
If you downloaded the XvMC wrapper from the unichrome site, the default
XvMCConfig will make the XvMC wrapper try to load the Nvidia XvMC

388
xine-lib-ffmpeg11.patch Normal file
View File

@ -0,0 +1,388 @@
diff -uNr xine-lib-1.2.1.orig/src/combined/ffmpeg/ffmpeg_compat.h xine-lib-1.2.1/src/combined/ffmpeg/ffmpeg_compat.h
--- xine-lib-1.2.1.orig/src/combined/ffmpeg/ffmpeg_compat.h 2012-02-04 01:41:43.000000000 +0100
+++ xine-lib-1.2.1/src/combined/ffmpeg/ffmpeg_compat.h 2012-02-09 21:00:25.000000000 +0100
@@ -91,5 +91,9 @@
# define AVAUDIO 2
#endif
+/* AVFrame.age */
+#if !(LIBAVCODEC_VERSION_MAJOR >= 53 && LIBAVCODEC_VERSION_MAJOR >= 28 && LIBAVCODEC_VERSION_MICRO >= 1)
+# define AVFRAMEAGE 1
+#endif
#endif /* XINE_AVCODEC_COMPAT_H */
diff -uNr xine-lib-1.2.1.orig/src/combined/ffmpeg/ff_video_decoder.c xine-lib-1.2.1/src/combined/ffmpeg/ff_video_decoder.c
--- xine-lib-1.2.1.orig/src/combined/ffmpeg/ff_video_decoder.c 2012-02-04 01:41:43.000000000 +0100
+++ xine-lib-1.2.1/src/combined/ffmpeg/ff_video_decoder.c 2012-05-10 21:50:50.000000000 +0200
@@ -68,6 +68,7 @@
int thread_count;
int8_t skip_loop_filter_enum;
int8_t choose_speed_over_accuracy;
+ uint8_t enable_dri;
xine_t *xine;
} ff_video_class_t;
@@ -92,7 +93,7 @@
uint8_t is_mpeg12:1;
uint8_t pp_available:1;
uint8_t yuv_init:1;
- uint8_t is_direct_rendering_disabled:1;
+ uint8_t is_direct_rendering_disabled:1; /* used only to avoid flooding log */
uint8_t cs_convert_init:1;
uint8_t assume_bad_field_picture:1;
@@ -127,13 +128,45 @@
yuv_planes_t yuv;
+#ifdef AVPaletteControl
AVPaletteControl palette_control;
+#endif
+
+ int color_matrix, full2mpeg;
+ unsigned char ytab[256], ctab[256];
#ifdef LOG
enum PixelFormat debug_fmt;
#endif
};
+static void ff_check_colorspace (ff_video_decoder_t *this) {
+ int i, cm;
+
+ cm = this->context->colorspace << 1;
+ /* ffmpeg bug: color_range not set by svq3 decoder */
+ i = this->context->pix_fmt;
+ if (cm && ((i == PIX_FMT_YUVJ420P) || (i == PIX_FMT_YUVJ444P) ||
+ (this->context->color_range == AVCOL_RANGE_JPEG)))
+ cm |= 1;
+
+ /* report changes of colorspyce and/or color range */
+ if (cm != this->color_matrix) {
+ this->color_matrix = cm;
+ xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
+ "ffmpeg_video_dec: color matrix #%d\n", cm >> 1);
+
+ this->full2mpeg = 0;
+ if (cm & 1) {
+ /* sigh. fall back to manual conversion */
+ this->full2mpeg = 1;
+ for (i = 0; i < 256; i++) {
+ this->ytab[i] = (219 * i + 127) / 255 + 16;
+ this->ctab[i] = 112 * (i - 128) / 127 + 128;
+ }
+ }
+ }
+}
static void set_stream_info(ff_video_decoder_t *this) {
_x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_WIDTH, this->bih.biWidth);
@@ -149,6 +182,8 @@
int width = context->width;
int height = context->height;
+ ff_check_colorspace (this);
+
if (!this->bih.biWidth || !this->bih.biHeight) {
this->bih.biWidth = width;
this->bih.biHeight = height;
@@ -163,7 +198,8 @@
avcodec_align_dimensions(context, &width, &height);
- if( this->context->pix_fmt != PIX_FMT_YUV420P && this->context->pix_fmt != PIX_FMT_YUVJ420P ) {
+ if (this->full2mpeg || (this->context->pix_fmt != PIX_FMT_YUV420P &&
+ this->context->pix_fmt != PIX_FMT_YUVJ420P)) {
if (!this->is_direct_rendering_disabled) {
xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
_("ffmpeg_video_dec: unsupported frame format, DR1 disabled.\n"));
@@ -195,6 +231,8 @@
}
}
+ this->is_direct_rendering_disabled = 0;
+
img = this->stream->video_out->get_frame (this->stream->video_out,
width,
height,
@@ -215,7 +253,9 @@
/* We should really keep track of the ages of xine frames (see
* avcodec_default_get_buffer in libavcodec/utils.c)
* For the moment tell ffmpeg that every frame is new (age = bignumber) */
+#ifdef AVFRAMEAGE
av_frame->age = 256*256*256*64;
+#endif
av_frame->type= FF_BUFFER_TYPE_USER;
@@ -309,7 +349,7 @@
/* Some codecs (eg rv10) copy flags in init so it's necessary to set
* this flag here in case we are going to use direct rendering */
- if(this->codec->capabilities & CODEC_CAP_DR1 && this->codec->id != CODEC_ID_H264) {
+ if(this->codec->capabilities & CODEC_CAP_DR1 && this->class->enable_dri) {
this->context->flags |= CODEC_FLAG_EMU_EDGE;
}
@@ -320,6 +360,13 @@
if (this->class->choose_speed_over_accuracy)
this->context->flags2 |= CODEC_FLAG2_FAST;
+#ifdef DEPRECATED_AVCODEC_THREAD_INIT
+ if (this->class->thread_count > 1) {
+ if (this->codec->id != CODEC_ID_SVQ3)
+ this->context->thread_count = this->class->thread_count;
+ }
+#endif
+
pthread_mutex_lock(&ffmpeg_lock);
if (avcodec_open (this->context, this->codec) < 0) {
pthread_mutex_unlock(&ffmpeg_lock);
@@ -347,14 +394,13 @@
}
}
+#ifndef DEPRECATED_AVCODEC_THREAD_INIT
if (this->class->thread_count > 1) {
if (this->codec->id != CODEC_ID_SVQ3
-#ifndef DEPRECATED_AVCODEC_THREAD_INIT
- && avcodec_thread_init(this->context, this->class->thread_count) != -1
-#endif
- )
+ && avcodec_thread_init(this->context, this->class->thread_count) != -1)
this->context->thread_count = this->class->thread_count;
}
+#endif
this->context->skip_loop_filter = skip_loop_filter_enum_values[this->class->skip_loop_filter_enum];
@@ -383,7 +429,7 @@
/* enable direct rendering by default */
this->output_format = XINE_IMGFMT_YV12;
#ifdef ENABLE_DIRECT_RENDERING
- if( this->codec->capabilities & CODEC_CAP_DR1 && this->codec->id != CODEC_ID_H264 ) {
+ if( this->codec->capabilities & CODEC_CAP_DR1 && this->class->enable_dri ) {
this->context->get_buffer = get_buffer;
this->context->release_buffer = release_buffer;
xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
@@ -442,6 +488,12 @@
class->pp_quality = entry->num_value;
}
+static void dri_cb(void *user_data, xine_cfg_entry_t *entry) {
+ ff_video_class_t *class = (ff_video_class_t *) user_data;
+
+ class->enable_dri = entry->num_value;
+}
+
static void pp_change_quality (ff_video_decoder_t *this) {
this->pp_quality = this->class->pp_quality;
@@ -542,6 +594,8 @@
printf ("frame format == %08x\n", this->debug_fmt = this->context->pix_fmt);
#endif
+ ff_check_colorspace (this);
+
dy = img->base[0];
du = img->base[1];
dv = img->base[2];
@@ -772,54 +826,91 @@
} else {
- for (y = 0; y < this->bih.biHeight; y++) {
- xine_fast_memcpy (dy, sy, img->width);
-
- dy += img->pitches[0];
-
- sy += this->av_frame->linesize[0];
- }
-
- for (y = 0; y < this->bih.biHeight / 2; y++) {
+ int subsamph = (this->context->pix_fmt == PIX_FMT_YUV444P)
+ || (this->context->pix_fmt == PIX_FMT_YUVJ444P);
+ int subsampv = (this->context->pix_fmt != PIX_FMT_YUV420P)
+ && (this->context->pix_fmt != PIX_FMT_YUVJ420P);
+
+ if (this->full2mpeg) {
+
+ uint8_t *ytab = this->ytab;
+ uint8_t *ctab = this->ctab;
+ uint8_t *p, *q;
+ int x;
+
+ for (y = 0; y < this->bih.biHeight; y++) {
+ p = sy;
+ q = dy;
+ for (x = img->width; x > 0; x--) *q++ = ytab[*p++];
+ dy += img->pitches[0];
+ sy += this->av_frame->linesize[0];
+ }
- if (this->context->pix_fmt != PIX_FMT_YUV444P) {
+ for (y = 0; y < this->bih.biHeight / 2; y++) {
+ if (!subsamph) {
+ p = su, q = du;
+ for (x = img->width / 2; x > 0; x--) *q++ = ctab[*p++];
+ p = sv, q = dv;
+ for (x = img->width / 2; x > 0; x--) *q++ = ctab[*p++];
+ } else {
+ p = su, q = sv;
+ for (x = img->width / 2; x > 0; x--) {*q++ = ctab[*p]; p += 2;}
+ p = sv, q = dv;
+ for (x = img->width / 2; x > 0; x--) {*q++ = ctab[*p]; p += 2;}
+ }
+ du += img->pitches[1];
+ dv += img->pitches[2];
+ if (subsampv) {
+ su += 2 * this->av_frame->linesize[1];
+ sv += 2 * this->av_frame->linesize[2];
+ } else {
+ su += this->av_frame->linesize[1];
+ sv += this->av_frame->linesize[2];
+ }
+ }
- xine_fast_memcpy (du, su, img->width/2);
- xine_fast_memcpy (dv, sv, img->width/2);
+ } else {
- } else {
+ for (y = 0; y < this->bih.biHeight; y++) {
+ xine_fast_memcpy (dy, sy, img->width);
+ dy += img->pitches[0];
+ sy += this->av_frame->linesize[0];
+ }
- int x;
- uint8_t *src;
- uint8_t *dst;
-
- /* subsample */
-
- src = su; dst = du;
- for (x=0; x<(img->width/2); x++) {
- *dst = *src;
- dst++;
- src += 2;
+ for (y = 0; y < this->bih.biHeight / 2; y++) {
+ if (!subsamph) {
+ xine_fast_memcpy (du, su, img->width/2);
+ xine_fast_memcpy (dv, sv, img->width/2);
+ } else {
+ int x;
+ uint8_t *src;
+ uint8_t *dst;
+ src = su;
+ dst = du;
+ for (x = 0; x < (img->width / 2); x++) {
+ *dst = *src;
+ dst++;
+ src += 2;
+ }
+ src = sv;
+ dst = dv;
+ for (x = 0; x < (img->width / 2); x++) {
+ *dst = *src;
+ dst++;
+ src += 2;
+ }
}
- src = sv; dst = dv;
- for (x=0; x<(img->width/2); x++) {
- *dst = *src;
- dst++;
- src += 2;
+ du += img->pitches[1];
+ dv += img->pitches[2];
+ if (subsampv) {
+ su += 2*this->av_frame->linesize[1];
+ sv += 2*this->av_frame->linesize[2];
+ } else {
+ su += this->av_frame->linesize[1];
+ sv += this->av_frame->linesize[2];
}
-
}
- du += img->pitches[1];
- dv += img->pitches[2];
-
- if (this->context->pix_fmt != PIX_FMT_YUV420P) {
- su += 2*this->av_frame->linesize[1];
- sv += 2*this->av_frame->linesize[2];
- } else {
- su += this->av_frame->linesize[1];
- sv += this->av_frame->linesize[2];
- }
}
}
}
@@ -1023,7 +1114,9 @@
memcpy(this->context->extradata, buf->decoder_info_ptr[2],
buf->decoder_info[2]);
- } else if (buf->decoder_info[1] == BUF_SPECIAL_PALETTE) {
+ }
+#ifdef AVPaletteControl
+ else if (buf->decoder_info[1] == BUF_SPECIAL_PALETTE) {
unsigned int i;
palette_entry_t *demuxer_palette;
@@ -1042,7 +1135,9 @@
}
decoder_palette->palette_changed = 1;
- } else if (buf->decoder_info[1] == BUF_SPECIAL_RV_CHUNK_TABLE) {
+ }
+#endif
+ else if (buf->decoder_info[1] == BUF_SPECIAL_RV_CHUNK_TABLE) {
int i;
lprintf("BUF_SPECIAL_RV_CHUNK_TABLE\n");
@@ -1504,8 +1599,8 @@
img->duration = video_step_to_use;
/* additionally crop away the extra pixels due to adjusting frame size above */
- img->crop_right = this->crop_right + (img->width - this->bih.biWidth);
- img->crop_bottom = this->crop_bottom + (img->height - this->bih.biHeight);
+ img->crop_right = img->width - this->bih.biWidth;
+ img->crop_bottom = img->height - this->bih.biHeight;
/* transfer some more frame settings for deinterlacing */
img->progressive_frame = !this->av_frame->interlaced_frame;
@@ -1536,8 +1631,8 @@
img->duration = video_step_to_use;
/* additionally crop away the extra pixels due to adjusting frame size above */
- img->crop_right = ((this->bih.biWidth <= 0) ? 0 : this->crop_right) + (img->width - this->bih.biWidth);
- img->crop_bottom = ((this->bih.biHeight <= 0) ? 0 : this->crop_bottom) + (img->height - this->bih.biHeight);
+ img->crop_right = this->bih.biWidth <= 0 ? 0 : (img->width - this->bih.biWidth);
+ img->crop_bottom = this->bih.biHeight <= 0 ? 0 : (img->height - this->bih.biHeight);
img->bad_frame = 1;
this->skipframes = img->draw(img, this->stream);
@@ -1758,7 +1853,9 @@
this->av_frame = avcodec_alloc_frame();
this->context = avcodec_alloc_context();
this->context->opaque = this;
+#ifdef AVPaletteControl
this->context->palctrl = NULL;
+#endif
this->decoder_ok = 0;
this->decoder_init_mode = 1;
@@ -1839,6 +1936,12 @@
"A change of this setting will take effect with playing the next stream."),
10, choose_speed_over_accuracy_cb, this);
+ this->enable_dri = xine->config->register_bool(config, "video.processing.ffmpeg_direct_rendering", 1,
+ _("Enable direct rendering"),
+ _("Disable direct rendering if you are experiencing lock-ups with\n"
+ "streams with lot of reference frames."),
+ 10, dri_cb, this);
+
return this;
}

View File

@ -1,7 +1,14 @@
diff -ur xine-lib-1.1.18.orig/src/input/libdvdnav/dvd_udf.c xine-lib-1.1.18/src/input/libdvdnav/dvd_udf.c
--- xine-lib-1.1.18.orig/src/input/libdvdnav/dvd_udf.c 2009-11-30 21:57:20.000000000 +0100
+++ xine-lib-1.1.18/src/input/libdvdnav/dvd_udf.c 2010-02-24 21:12:36.032882913 +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>
@ -11,14 +18,13 @@ diff -ur xine-lib-1.1.18.orig/src/input/libdvdnav/dvd_udf.c xine-lib-1.1.18/src/
#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,
@@ -774,7 +780,9 @@
@@ -774,7 +780,9 @@ static int UDFFindPartition( dvd_reader_
return part->valid;
}
@ -29,7 +35,7 @@ diff -ur xine-lib-1.1.18.orig/src/input/libdvdnav/dvd_udf.c xine-lib-1.1.18/src/
uint32_t *filesize )
{
uint8_t LogBlock_base[ DVD_VIDEO_LB_LEN + 2048 ];
@@ -856,6 +864,84 @@
@@ -856,6 +864,84 @@ uint32_t UDFFindFile( dvd_reader_t *devi
return partition.Start + File.Location;
}

View File

@ -1,16 +1,16 @@
--- configure.ac.orig 2011-07-07 10:45:26.462089794 +0200
+++ configure.ac 2011-07-07 10:46:04.415089790 +0200
@@ -682,7 +682,7 @@
have_v4l=no
have_v4l2=no
if test "x$enable_v4l" != "xno"; then
- AC_CHECK_HEADERS([linux/videodev.h], [have_v4l=yes], [])
+ AC_CHECK_HEADERS([libv4l1-videodev.h], [have_v4l=yes], [])
AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h sys/videodev2.h], [have_v4l2=yes], [])
AC_CHECK_HEADERS([asm/types.h])
if test "x$enable_v4l" = "xyes" && test "x$have_v4l$have_v4l2" = "xnono"; then
--- src/input/input_v4l.c 2010-03-09 23:17:05.000000000 +0100
+++ src/input/input_v4l.c 2011-07-07 10:46:27.694089788 +0200
--- m4/input.m4 2010-03-21 00:29:58.000000000 +0100
+++ m4/input.m4 2011-11-16 15:59:40.674878245 +0100
@@ -92,7 +92,7 @@
XINE_ARG_ENABLE([v4l], [Enable Video4Linux support])
if test x"$enable_v4l" != x"no"; then
have_v4l=yes
- AC_CHECK_HEADERS([linux/videodev.h], , [have_v4l=no])
+ AC_CHECK_HEADERS([libv4l1-videodev.h], , [have_v4l=no])
AC_CHECK_HEADERS([asm/types.h])
if test x"$hard_enable_v4l" = x"yes" && test x"$have_v4l" != x"yes"; then
AC_MSG_ERROR([Video4Linux support requested, but prerequisite headers not found.])
--- src/input/input_v4l.c 2011-10-05 22:44:39.000000000 +0200
+++ src/input/input_v4l.c 2011-11-16 15:35:43.075546420 +0100
@@ -47,7 +47,7 @@
*/
#define _LINUX_TIME_H

View File

@ -1,15 +0,0 @@
Index: src/libw32dll/wine/ldt_keeper.c
===================================================================
--- src/libw32dll/wine/ldt_keeper.c.orig
+++ src/libw32dll/wine/ldt_keeper.c
@@ -77,6 +77,10 @@
#ifdef __cplusplus
}
#endif
+#include <linux/version.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#define modify_ldt_ldt_s user_desc
+#endif
#else
#if defined(__NetBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
#include <machine/segments.h>

View File

@ -0,0 +1,32 @@
diff -uNr xine-lib-1.2.1.orig/m4/decoders.m4 xine-lib-1.2.1/m4/decoders.m4
--- xine-lib-1.2.1.orig/m4/decoders.m4 2012-02-04 01:41:43.000000000 +0100
+++ xine-lib-1.2.1/m4/decoders.m4 2012-05-21 22:46:39.470861703 +0200
@@ -85,9 +85,7 @@
AM_CONDITIONAL([WITH_EXTERNAL_FAAD], [test x"$have_external_faad" = x"yes"])
dnl ffmpeg external version required
- PKG_CHECK_MODULES([FFMPEG], [libavcodec >= 51.68.0])
PKG_CHECK_MODULES([AVUTIL], [libavutil >= 49.6.0])
- PKG_CHECK_MODULES([FFMPEG_POSTPROC], [libpostproc])
AC_DEFINE([HAVE_FFMPEG], 1, [Define this if you have ffmpeg library])
dnl Check presence of ffmpeg/avutil.h to see if it's old or new
diff -uNr xine-lib-1.2.1.orig/src/audio_dec/Makefile.am xine-lib-1.2.1/src/audio_dec/Makefile.am
--- xine-lib-1.2.1.orig/src/audio_dec/Makefile.am 2012-02-04 01:41:43.000000000 +0100
+++ xine-lib-1.2.1/src/audio_dec/Makefile.am 2012-05-22 20:37:48.863941984 +0200
@@ -49,7 +49,6 @@
xineplug_LTLIBRARIES = \
xineplug_decode_gsm610.la \
xineplug_decode_lpcm.la \
- xineplug_decode_dvaudio.la \
$(musepack_module) \
$(dts_module) \
$(mad_module) \
@@ -87,7 +86,3 @@
xineplug_decode_faad_la_DEPENDENCIES = $(FAAD_DEPS)
xineplug_decode_faad_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) $(FAAD_LIBS) -lm
xineplug_decode_faad_la_CFLAGS = $(FAAD_CFLAGS)
-
-xineplug_decode_dvaudio_la_SOURCES = ff_dvaudio_decoder.c
-xineplug_decode_dvaudio_la_LIBADD = $(XINE_LIB) $(LTLIBINTL)
-xineplug_decode_dvaudio_la_CPPFLAGS = $(AM_CPPFLAGS) $(FFMPEG_CFLAGS)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff