- 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:
parent
595ac96b3d
commit
371c629f8b
26
README.SuSE
26
README.SuSE
@ -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
|
@ -1 +1 @@
|
||||
libxine1
|
||||
libxine2
|
||||
|
@ -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"
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3ea7e34360650470f5da0164b6817e5301d60f337331e5e316752d3e1792c71b
|
||||
size 24923
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9e9dfef3f52098bf49341600bac23b5da6cbdb77e3172a5a3086dafe4fbf93f7
|
||||
size 5146365
|
@ -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;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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])
|
@ -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
@ -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;
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:adabf74df5506cb1a8020597214b1f40e563b8fe89d6f223d14bcd6d9e5e8111
|
||||
size 7569871
|
3
xine-lib-1.2.1-crippled.tar.bz2
Normal file
3
xine-lib-1.2.1-crippled.tar.bz2
Normal 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
3
xine-lib-1.2.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:62bd77e72d69a888ddf0a1fc4edd7752bfcd081bb00f71fb928d3a2d6b4dd8e5
|
||||
size 6197175
|
@ -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));
|
||||
|
@ -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>
|
||||
- /usr/X11R6/lib/libXv.a
|
||||
- /usr/X11R6/lib/libXv.so
|
||||
- /usr/X11R6/lib/libXv.so.1</screen>
|
||||
+ /usr/lib/libXv.a
|
||||
+ /usr/lib/libXv.so
|
||||
+ /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
388
xine-lib-ffmpeg11.patch
Normal 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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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>
|
32
xine-lib-without-ffmpeg.patch
Normal file
32
xine-lib-without-ffmpeg.patch
Normal 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)
|
1587
xine-lib.changes
1587
xine-lib.changes
File diff suppressed because it is too large
Load Diff
569
xine-lib.spec
569
xine-lib.spec
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user