From 380e7a9eca919d81e7d0f58d526c9f1b8de1ba46 Mon Sep 17 00:00:00 2001 From: tigro Date: Wed, 25 Dec 2024 11:51:24 +0300 Subject: [PATCH] import xine-lib-1.2.13-17.el10 --- .gitignore | 1 + .xine-lib.metadata | 1 + SOURCES/make_xinelib_snapshot.sh | 20 + ...ine-lib-1.2.13-ffmpeg6-compatibility.patch | 196 +++ ...e-lib-1.2.13-ffmpeg6-compatibility_2.patch | 475 ++++++++ ...ine-lib-1.2.13-ffmpeg7-compatibility.patch | 318 +++++ SOURCES/xine-lib-configure-c99.patch | 116 ++ SPECS/xine-lib.spec | 1060 +++++++++++++++++ 8 files changed, 2187 insertions(+) create mode 100644 .gitignore create mode 100644 .xine-lib.metadata create mode 100644 SOURCES/make_xinelib_snapshot.sh create mode 100644 SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility.patch create mode 100644 SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility_2.patch create mode 100644 SOURCES/xine-lib-1.2.13-ffmpeg7-compatibility.patch create mode 100644 SOURCES/xine-lib-configure-c99.patch create mode 100644 SPECS/xine-lib.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bdb96a5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/xine-lib-1.2.13.tar.xz diff --git a/.xine-lib.metadata b/.xine-lib.metadata new file mode 100644 index 0000000..8e9dd34 --- /dev/null +++ b/.xine-lib.metadata @@ -0,0 +1 @@ +54d1e29ee778f2c0c10602471e97d5f0d60b3447 SOURCES/xine-lib-1.2.13.tar.xz diff --git a/SOURCES/make_xinelib_snapshot.sh b/SOURCES/make_xinelib_snapshot.sh new file mode 100644 index 0000000..c802a01 --- /dev/null +++ b/SOURCES/make_xinelib_snapshot.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# This script is intended to make a xine-lib snapshot. +# If no argument is provided, it will make a snapshot of HEAD. +# If the svn revision is provided as an argument, it will make a snapshot of +# this revision. + +TMPDIR=$(mktemp -d) +pushd "$TMPDIR" || exit +echo -n "Cloning xine-lib-1.2 " +[ -n "$1" ] && echo "revision $1" || echo "HEAD" +[ -n "$1" ] && OPT="-u $1 " || OPT="" +hg clone $OPT http://hg.code.sf.net/p/xine/xine-lib-1.2 xine-lib-1.2 +cd xine-lib-1.2 || exit +autoreconf -vif +./configure +make dist +popd || exit +cp -p "$TMPDIR"/xine-lib-1.2/xine-lib-1.2*.tar.xz . +rm -rf "$TMPDIR" diff --git a/SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility.patch b/SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility.patch new file mode 100644 index 0000000..11056aa --- /dev/null +++ b/SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility.patch @@ -0,0 +1,196 @@ +# HG changeset patch +# User Torsten Jager +# Date 1674929040 -3600 +# Sat Jan 28 19:04:00 2023 +0100 +# Node ID 771f4ae27e582123ff3500444718fc8f96186d74 +# Parent 250f1c09f4244c3e7ca7d414410c57bd387792c3 +ffmpeg compatibility update. + +diff -r 250f1c09f424 -r 771f4ae27e58 src/combined/ffmpeg/demux_avformat.c +--- a/src/combined/ffmpeg/demux_avformat.c Wed Jan 25 17:03:55 2023 +0100 ++++ b/src/combined/ffmpeg/demux_avformat.c Sat Jan 28 19:04:00 2023 +0100 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2013-2022 the xine project ++ * Copyright (C) 2013-2023 the xine project + * Copyright (C) 2013-2020 Petri Hintukainen + * + * This file is part of xine, a free video player. +@@ -423,8 +423,13 @@ + } + + #ifdef XFF_CODECPAR ++# if XFF_AUDIO_CHANNEL_LAYOUT < 2 + if (st->codecpar && st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && + st->codecpar->sample_rate != 0 && st->codecpar->channels != 0) ++# else ++ if (st->codecpar && st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && ++ st->codecpar->sample_rate != 0 && st->codecpar->ch_layout.nb_channels != 0) ++# endif + #else + if (st->codec && st->codec->codec_type == AVMEDIA_TYPE_AUDIO && + st->codec->sample_rate != 0 && st->codec->channels != 0) +@@ -501,7 +506,11 @@ + buf->size = extradata_size + sizeof(xine_waveformatex); + buf->decoder_info[1] = ctx->sample_rate; + buf->decoder_info[2] = ctx->bits_per_coded_sample; ++#if XFF_AUDIO_CHANNEL_LAYOUT < 2 + buf->decoder_info[3] = ctx->channels; ++#else ++ buf->decoder_info[3] = ctx->ch_layout.nb_channels; ++#endif + buf->decoder_flags = BUF_FLAG_HEADER | BUF_FLAG_STDHEADER | BUF_FLAG_FRAME_END; + + this->stream->audio_fifo->put (this->stream->audio_fifo, buf); +diff -r 250f1c09f424 -r 771f4ae27e58 src/combined/ffmpeg/ff_audio_decoder.c +--- a/src/combined/ffmpeg/ff_audio_decoder.c Wed Jan 25 17:03:55 2023 +0100 ++++ b/src/combined/ffmpeg/ff_audio_decoder.c Sat Jan 28 19:04:00 2023 +0100 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2001-2022 the xine project ++ * Copyright (C) 2001-2023 the xine project + * + * This file is part of xine, a free video player. + * +@@ -303,7 +303,11 @@ + + this->context->bits_per_sample = this->ff_bits; + this->context->sample_rate = this->ff_sample_rate; ++#if XFF_AUDIO_CHANNEL_LAYOUT < 2 + this->context->channels = this->ff_channels; ++#else ++ this->context->ch_layout.nb_channels = this->ff_channels; ++#endif + this->context->codec_id = this->codec->id; + this->context->codec_type = this->codec->type; + this->context->codec_tag = _x_stream_info_get(this->stream, XINE_STREAM_INFO_AUDIO_FOURCC); +@@ -527,16 +531,75 @@ + this->ao_mode = 0; + } + ++static unsigned int ff_list_channels (uint8_t *list, uint64_t map) { ++ unsigned int n, bit; ++ ++ for (n = bit = 0; map; map >>= 1, bit++) { ++ uint32_t b = map & 1; ++ ++ list[n] = bit; ++ n += b; ++ } ++ return n; ++} ++ + static void ff_map_channels (ff_audio_decoder_t *this) { + uint64_t ff_map; ++ uint8_t ff_list[64]; ++ unsigned int ff_num; ++ const char *type = "native"; + int caps = this->stream->audio_out->get_capabilities (this->stream->audio_out); + ++#if XFF_AUDIO_CHANNEL_LAYOUT < 2 ++ + /* safety kludge for very old libavcodec */ +-#ifdef AV_CH_FRONT_LEFT ++# ifdef AV_CH_FRONT_LEFT + ff_map = this->context->channel_layout; + if (!ff_map) /* wma2 bug */ ++# endif ++ ff_map = ((uint64_t)1 << this->context->channels) - 1; ++ ff_num = ff_list_channels (ff_list, ff_map); ++ ++#else /* XFF_AUDIO_CHANNEL_LAYOUT == 2 */ ++ ++ ff_num = this->context->ch_layout.nb_channels; ++ if (ff_num > (int)(sizeof (ff_list) / sizeof (ff_list[0]))) ++ ff_num = sizeof (ff_list) / sizeof (ff_list[0]); ++ switch (this->context->ch_layout.order) { ++ const AVChannelCustom *cmap; ++ unsigned int i; ++ ++ case AV_CHANNEL_ORDER_UNSPEC: ++ type = "unknown"; ++ goto _fallback; ++ ++ case AV_CHANNEL_ORDER_NATIVE: ++ ff_map = this->context->ch_layout.u.mask; ++ if (!ff_map) /* wma2 bug */ ++ ff_map = ((uint64_t)1 << ff_num) - 1; ++ ff_num = ff_list_channels (ff_list, ff_map); ++ break; ++ ++ case AV_CHANNEL_ORDER_CUSTOM: ++ type = "custom"; ++ if (!(cmap = this->context->ch_layout.u.map)) ++ goto _fallback; ++ ff_map = 0; ++ for (i = 0; i < ff_num; i++) { ++ ff_list[i] = cmap[i].id; ++ ff_map |= (uint64_t)1 << ff_list[i]; ++ } ++ break; ++ ++ default: ++ type = "unsupported"; ++ /* fall through */ ++ _fallback: ++ ff_map = ((uint64_t)1 << ff_num) - 1; ++ ff_num = ff_list_channels (ff_list, ff_map); ++ } ++ + #endif +- ff_map = ((uint64_t)1 << this->context->channels) - 1; + + if ((caps != this->ao_caps) || (ff_map != this->ff_map)) { + unsigned int i, j; +@@ -562,7 +625,7 @@ + + this->ao_caps = caps; + this->ff_map = ff_map; +- this->ff_channels = this->context->channels; ++ this->ff_channels = ff_num; + + /* silence out */ + for (i = 0; i < MAX_CHANNELS; i++) +@@ -576,20 +639,23 @@ + this->left[0] = this->right[0] = 0; + tries = wishlist + 0 * num_modes; + } else if (this->ff_channels == 2) { /* stereo */ ++ /* FIXME: libxine does not yet support audio selection _after_ decoding. ++ * For now, treat the most common "dual mono" case as stereo. */ + name_map[0] = 0; + name_map[1] = 1; + this->left[0] = 0; + this->right[0] = 1; + tries = wishlist + 1 * num_modes; + } else { +- for (i = j = 0; i < sizeof (base_map) / sizeof (base_map[0]); i++) { +- if ((ff_map >> i) & 1) { +- int8_t target = base_map[i]; +- if ((target >= 0) && (this->map[target] < 0)) +- this->map[target] = j; +- name_map[j] = i; /* for debug output below */ +- j++; +- } ++ for (i = 0; i < ff_num; i++) { ++ int8_t target; ++ uint32_t num = ff_list[i]; ++ if (num >= sizeof (base_map) / sizeof (base_map[0])) ++ continue; ++ target = base_map[num]; ++ if ((target >= 0) && (this->map[target] < 0)) ++ this->map[target] = i; ++ name_map[i] = num; /* for debug output below */ + } + this->left[0] = this->map[0] < 0 ? 0 : this->map[0]; + this->map[0] = -1; +@@ -641,8 +707,8 @@ + "rear center", + "side left", "side right" + }; +- int8_t buf[200]; +- int p = sprintf (buf, "ff_audio_dec: channel layout: "); ++ int8_t buf[256]; ++ int p = sprintf (buf, "ff_audio_dec: %s channel layout: ", type); + int8_t *indx = this->left; + for (i = 0; i < 2; i++) { + buf[p++] = '['; diff --git a/SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility_2.patch b/SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility_2.patch new file mode 100644 index 0000000..d5003ca --- /dev/null +++ b/SOURCES/xine-lib-1.2.13-ffmpeg6-compatibility_2.patch @@ -0,0 +1,475 @@ +# HG changeset patch +# User Torsten Jager +# Date 1715025355 -7200 +# Mon May 06 21:55:55 2024 +0200 +# Node ID 1e7b184008860c8be2289c3cefd9dee57f06193a +# Parent d1954d852980ddc887a67a9f1a26626909561ff5 +ffmpeg compatibility update 1. + +diff -r d1954d852980 -r 1e7b18400886 src/combined/ffmpeg/ff_audio_decoder.c +--- a/src/combined/ffmpeg/ff_audio_decoder.c Mon Apr 08 13:25:10 2024 +0200 ++++ b/src/combined/ffmpeg/ff_audio_decoder.c Mon May 06 21:55:55 2024 +0200 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2001-2023 the xine project ++ * Copyright (C) 2001-2024 the xine project + * + * This file is part of xine, a free video player. + * +@@ -67,6 +67,7 @@ + + xine_t *xine; + float gain; ++ int bitexact; + } ff_audio_class_t; + + typedef struct ff_audio_decoder_s { +@@ -188,14 +189,25 @@ + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, + "ffmpeg_audio_dec: found AAC ADTS syncword after %d bytes\n", i); + if (this->buftype == BUF_AUDIO_AAC_LATM) { ++ uint8_t *ed = NULL; ++ int es = 0; + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, + "ffmpeg_audio_dec: stream says LATM but is ADTS -> switching decoders\n"); +- if (this->decoder_ok) { +- pthread_mutex_lock (&ffmpeg_lock); +- avcodec_close (this->context); +- pthread_mutex_unlock (&ffmpeg_lock); +- this->decoder_ok = 0; ++ pthread_mutex_lock (&ffmpeg_lock); ++ if (this->context) { ++ ed = this->context->extradata; ++ es = this->context->extradata_size; ++ this->context->extradata = NULL; ++ this->context->extradata_size = 0; ++ XFF_FREE_CONTEXT (this->context); + } ++ this->decoder_ok = 0; ++ this->context = XFF_ALLOC_CONTEXT (); ++ if (this->context) { ++ this->context->extradata = ed; ++ this->context->extradata_size = es; ++ } ++ pthread_mutex_unlock (&ffmpeg_lock); + this->codec = NULL; + ff_audio_open_codec (this, BUF_AUDIO_AAC); + } +@@ -349,6 +361,11 @@ + return -1; + } + ++ if (this->class->bitexact) ++ this->context->flags |= CODEC_FLAG_BITEXACT; ++ else ++ this->context->flags &= ~CODEC_FLAG_BITEXACT; ++ + pthread_mutex_lock (&ffmpeg_lock); + if (XFF_AVCODEC_OPEN (this->context, this->codec) < 0) { + pthread_mutex_unlock (&ffmpeg_lock); +@@ -1377,9 +1394,21 @@ + } + #endif + pthread_mutex_lock (&ffmpeg_lock); +- avcodec_close (this->context); +- if (XFF_AVCODEC_OPEN (this->context, this->codec) < 0) ++ { ++ uint8_t *ed = this->context->extradata; ++ int es = this->context->extradata_size; ++ this->context->extradata = NULL; ++ this->context->extradata_size = 0; ++ XFF_FREE_CONTEXT (this->context); + this->decoder_ok = 0; ++ this->context = XFF_ALLOC_CONTEXT (); ++ if (this->context) { ++ this->context->extradata = ed; ++ this->context->extradata_size = es; ++ } ++ } ++ if (XFF_AVCODEC_OPEN (this->context, this->codec) >= 0) ++ this->decoder_ok = 1; + pthread_mutex_unlock (&ffmpeg_lock); + } + +@@ -1418,20 +1447,20 @@ + XFF_FREE_FRAME (this->av_frame); + } + #endif +- pthread_mutex_lock (&ffmpeg_lock); +- avcodec_close (this->context); +- pthread_mutex_unlock (&ffmpeg_lock); + } ++ pthread_mutex_lock (&ffmpeg_lock); ++ if (this->context) { ++ _x_freep (&this->context->extradata); ++ this->context->extradata_size = 0; ++ XFF_FREE_CONTEXT (this->context); ++ } ++ pthread_mutex_unlock (&ffmpeg_lock); + + ff_audio_output_close(this); + + xine_free_aligned (this->buf); + xine_free_aligned (this->decode_buffer); + +- _x_freep (&this->context->extradata); +- this->context->extradata_size = 0; +- XFF_FREE_CONTEXT (this->context); +- + XFF_PACKET_UNREF (this->avpkt); + + xine_pts_queue_delete (&this->pts_queue); +@@ -1513,6 +1542,12 @@ + free (this); + } + ++static void ff_bitexact_cb (void *user_data, xine_cfg_entry_t *entry) { ++ ff_audio_class_t *class = (ff_audio_class_t *)user_data; ++ ++ class->bitexact = entry->num_value; ++} ++ + void *init_audio_plugin (xine_t *xine, const void *data) { + + ff_audio_class_t *this ; +@@ -1540,5 +1575,12 @@ + 10, ff_gain_cb, this) + / (float)20); + ++ this->bitexact = xine->config->register_bool (xine->config, ++ "audio.processing.ffmpeg_bitexact", 0, ++ _("Let FFmpeg use precise but slower math"), ++ _("Get slightly better sound, at the expense of speed.\n" ++ "Takes effect with next stream."), ++ 10, ff_bitexact_cb, this); ++ + return this; + } +diff -r d1954d852980 -r 1e7b18400886 src/combined/ffmpeg/ff_video_decoder.c +--- a/src/combined/ffmpeg/ff_video_decoder.c Mon Apr 08 13:25:10 2024 +0200 ++++ b/src/combined/ffmpeg/ff_video_decoder.c Mon May 06 21:55:55 2024 +0200 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2001-2022 the xine project ++ * Copyright (C) 2001-2024 the xine project + * + * This file is part of xine, a free video player. + * +@@ -128,6 +128,7 @@ + + int64_t pts; + int64_t last_pts; ++ int64_t tagged_pts; + int video_step; + int reported_video_step; + uint8_t pts_tag_pass; +@@ -551,7 +552,9 @@ + # ifdef XFF_FRAME_AGE + av_frame->age = 1; + # endif ++#ifdef XFF_AVCODEC_REORDERED_OPAQUE + av_frame->reordered_opaque = context->reordered_opaque; ++#endif + + ffsf = ffsf_new (this); + if (!ffsf) +@@ -862,7 +865,9 @@ + # endif + + /* take over pts for this frame to have it reordered */ ++#ifdef XFF_AVCODEC_REORDERED_OPAQUE + av_frame->reordered_opaque = context->reordered_opaque; ++#endif + + return 0; + } +@@ -1142,9 +1147,13 @@ + if (this->codec->id == CODEC_ID_VC1 && + (!this->bih.biWidth || !this->bih.biHeight)) { + /* VC1 codec must be re-opened with correct width and height. */ +- avcodec_close(this->context); +- +- if (XFF_AVCODEC_OPEN (this->context, this->codec) < 0) { ++ if (this->context) { ++ _x_freep (&this->context->extradata); ++ this->context->extradata_size = 0; ++ XFF_FREE_CONTEXT (this->context); ++ } ++ this->context = XFF_ALLOC_CONTEXT (); ++ if (!(this->context && XFF_AVCODEC_OPEN (this->context, this->codec) >= 0)) { + pthread_mutex_unlock(&ffmpeg_lock); + xprintf (this->stream->xine, XINE_VERBOSITY_LOG, + _("ffmpeg_video_dec: couldn't open decoder (pass 2)\n")); +@@ -1211,6 +1220,11 @@ + /* dont want initial AV_NOPTS_VALUE here */ + this->context->reordered_opaque = 0; + #endif ++ ++#ifdef XFF_AVCODEC_FRAME_PTS ++ this->context->time_base.num = 1; ++ this->context->time_base.den = 90000 << 8; ++#endif + } + + #ifdef ENABLE_VAAPI +@@ -1959,7 +1973,26 @@ + return (pts * 256) | this->pts_tag_pass; + } + +-static int64_t ff_untag_pts (ff_video_decoder_t *this, int64_t pts) { ++static int64_t ff_untag_pts (ff_video_decoder_t *this, AVFrame *av_frame) { ++ int64_t pts; ++#if defined(XFF_AVCODEC_FRAME_PTS) ++ pts = (av_frame->pts != AV_NOPTS_VALUE) ? av_frame->pts : 0; ++# if defined(XFF_AVCODEC_REORDERED_OPAQUE) ++ /* paranoia !!! */ ++ if (pts != av_frame->reordered_opaque) { ++ xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, ++ LOG_MODULE ": WARNING: frame pts %" PRId64 " != reordered_opaque %" PRId64 ".\n", ++ pts, av_frame->reordered_opaque); ++ pts = av_frame->reordered_opaque; ++ } ++ av_frame->reordered_opaque = 0; ++# endif ++#elif defined(XFF_AVCODEC_REORDERED_OPAQUE) ++ pts = av_frame->reordered_opaque; ++ av_frame->reordered_opaque = 0; ++#else ++ pts = this->tagged_pts; ++#endif + if ((uint8_t)(pts & 0xff) == this->pts_tag_pass) { + /* restore sign. */ + return pts >> 8; +@@ -1984,7 +2017,9 @@ + this->avpkt->data = buf; + this->avpkt->size = buf_size; + this->avpkt->flags = AV_PKT_FLAG_KEY; +- ++# ifdef XFF_AVCODEC_FRAME_PTS ++ this->avpkt->pts = this->tagged_pts; ++# endif + # if XFF_PALETTE == 2 || XFF_PALETTE == 3 + if (buf && this->palette_changed) { + uint8_t *sd = av_packet_new_side_data (this->avpkt, AV_PKT_DATA_PALETTE, 256 * 4); +@@ -2094,9 +2129,14 @@ + #endif + + /* apply valid pts to first frame _starting_ thereafter only */ +- if (this->pts && !this->context->reordered_opaque) { +- this->context->reordered_opaque = +- this->av_frame->reordered_opaque = ff_tag_pts (this, this->pts); ++ if (this->pts && !this->tagged_pts) { ++ this->tagged_pts = ff_tag_pts (this, this->pts); ++#ifdef XFF_AVCODEC_REORDERED_OPAQUE ++ this->context->reordered_opaque = this->av_frame->reordered_opaque = this->tagged_pts; ++#endif ++#ifdef XFF_AVCODEC_FRAME_PTS ++ this->av_frame->pts = this->tagged_pts; ++#endif + this->pts = 0; + } + +@@ -2207,9 +2247,11 @@ + img->top_field_first = this->av_frame->top_field_first; + + /* get back reordered pts */ +- img->pts = ff_untag_pts (this, this->av_frame->reordered_opaque); +- this->av_frame->reordered_opaque = 0; ++ img->pts = ff_untag_pts (this, this->av_frame); ++ this->tagged_pts = 0; ++#ifdef XFF_AVCODEC_REORDERED_OPAQUE + this->context->reordered_opaque = 0; ++#endif + + if (this->av_frame->repeat_pict) + img->duration = this->video_step * 3 / 2; +@@ -2330,9 +2372,14 @@ + } + + if (this->size == 0) { ++ this->tagged_pts = ff_tag_pts (this, this->pts); + /* take over pts when we are about to buffer a frame */ +- this->av_frame->reordered_opaque = ff_tag_pts(this, this->pts); +- this->context->reordered_opaque = ff_tag_pts(this, this->pts); ++#ifdef XFF_AVCODEC_REORDERED_OPAQUE ++ this->av_frame->reordered_opaque = this->context->reordered_opaque = this->tagged_pts; ++#endif ++#ifdef XFF_AVCODEC_FRAME_PTS ++ this->av_frame->pts = this->tagged_pts; ++#endif + this->pts = 0; + } + +@@ -2405,7 +2452,10 @@ + need_unref = 1; + #endif + /* reset consumed pts value */ +- this->context->reordered_opaque = ff_tag_pts(this, 0); ++ this->tagged_pts = ff_tag_pts (this, 0); ++#ifdef XFF_AVCODEC_REORDERED_OPAQUE ++ this->context->reordered_opaque = this->tagged_pts; ++#endif + + if (err) { + +@@ -2439,10 +2489,14 @@ + ff_check_bufsize(this, this->size); + memmove (this->buf, &chunk_buf[offset], this->size); + chunk_buf = this->buf; +- + /* take over pts for next access unit */ +- this->av_frame->reordered_opaque = ff_tag_pts(this, this->pts); +- this->context->reordered_opaque = ff_tag_pts(this, this->pts); ++ this->tagged_pts = ff_tag_pts (this, this->pts); ++#ifdef XFF_AVCODEC_REORDERED_OPAQUE ++ this->av_frame->reordered_opaque = this->context->reordered_opaque = this->tagged_pts; ++#endif ++#ifdef XFF_AVCODEC_FRAME_PTS ++ this->av_frame->pts = this->tagged_pts; ++#endif + this->pts = 0; + } + } +@@ -2559,8 +2613,7 @@ + ff_convert_frame(this, img, this->av_frame); + } + +- img->pts = ff_untag_pts(this, this->av_frame->reordered_opaque); +- this->av_frame->reordered_opaque = 0; ++ img->pts = ff_untag_pts(this, this->av_frame); + + /* workaround for weird 120fps streams */ + if( video_step_to_use == 750 ) { +@@ -2600,8 +2653,7 @@ + this->output_format, + VO_BOTH_FIELDS|this->frame_flags); + /* set PTS to allow early syncing */ +- img->pts = ff_untag_pts(this, this->av_frame->reordered_opaque); +- this->av_frame->reordered_opaque = 0; ++ img->pts = ff_untag_pts(this, this->av_frame); + + img->duration = video_step_to_use; + +@@ -2783,7 +2835,7 @@ + ff_convert_frame (this, img, this->av_frame2); + } + +- img->pts = ff_untag_pts (this, this->av_frame2->reordered_opaque); ++ img->pts = ff_untag_pts (this, this->av_frame2); + + if (video_step_to_use == 750) + video_step_to_use = 0; +@@ -2903,7 +2955,9 @@ + if (this->decoder_ok) { + + pthread_mutex_lock(&ffmpeg_lock); +- avcodec_close (this->context); ++ _x_freep (&this->context->extradata); ++ this->context->extradata_size = 0; ++ XFF_FREE_CONTEXT (this->context); + pthread_mutex_unlock(&ffmpeg_lock); + + #ifdef ENABLE_DIRECT_RENDERING +@@ -2912,16 +2966,15 @@ + + this->stream->video_out->close(this->stream->video_out, this->stream); + this->decoder_ok = 0; ++ } else if (this->context) { ++ _x_freep (&this->context->extradata); ++ this->context->extradata_size = 0; ++ XFF_FREE_CONTEXT (this->context); + } + + if (this->slice_offset_table) + free (this->slice_offset_table); + +- if (this->context) { +- _x_freep (&this->context->extradata); +- this->context->extradata_size = 0; +- XFF_FREE_CONTEXT (this->context); +- } + + #if XFF_VIDEO > 1 + XFF_PACKET_UNREF (this->avpkt); +diff -r d1954d852980 -r 1e7b18400886 src/combined/ffmpeg/ffmpeg_compat.h +--- a/src/combined/ffmpeg/ffmpeg_compat.h Mon Apr 08 13:25:10 2024 +0200 ++++ b/src/combined/ffmpeg/ffmpeg_compat.h Mon May 06 21:55:55 2024 +0200 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2000-2022 the xine project ++ * Copyright (C) 2000-2024 the xine project + * + * This file is part of xine, a unix video player. + * +@@ -54,9 +54,16 @@ + #endif + + /* reordered_opaque appeared in libavcodec 51.68.0 */ +-#define XFF_AVCODEC_REORDERED_OPAQUE +-#if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(51,68,0) +-# undef XFF_AVCODEC_REORDERED_OPAQUE ++#if LIBAVCODEC_VERSION_INT >= XFF_INT_VERSION(51,68,0) && LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(60,0,0) ++# define XFF_AVCODEC_REORDERED_OPAQUE ++#else ++# undef XFF_AVCODEC_REORDERED_OPAQUE ++#endif ++ ++#if LIBAVCODEC_VERSION_INT >= XFF_INT_VERSION(58,33,100) ++# define XFF_AVCODEC_FRAME_PTS ++#else ++# undef XFF_AVCODEC_FRAME_PTS + #endif + + /* colorspace and color_range were added before 52.29.0 */ +@@ -210,9 +217,11 @@ + #endif + + #if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(55,63,100) +-# define XFF_FREE_CONTEXT(pp) do {av_free(pp); pp = NULL;} while (0) ++# define XFF_FREE_CONTEXT(pp) do {if (pp) avcodec_close (pp); av_free (pp); pp = NULL;} while (0) ++#elif LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(58,33,100) ++# define XFF_FREE_CONTEXT(pp) do {if (pp) avcodec_close (pp); avcodec_free_context (&(pp));} while (0) + #else +-# define XFF_FREE_CONTEXT(pp) avcodec_free_context(&(pp)) ++# define XFF_FREE_CONTEXT(pp) avcodec_free_context (&(pp)) + #endif + + #if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(54,59,100) +@@ -303,4 +312,3 @@ + #endif /* defined(LIBAVCODEC_VERSION_INT) */ + + #endif /* XINE_AVCODEC_COMPAT_H */ +- +diff -r d1954d852980 -r 1e7b18400886 src/dxr3/ffmpeg_encoder.c +--- a/src/dxr3/ffmpeg_encoder.c Mon Apr 08 13:25:10 2024 +0200 ++++ b/src/dxr3/ffmpeg_encoder.c Mon May 06 21:55:55 2024 +0200 +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2000-2022 the xine project ++ * Copyright (C) 2000-2024 the xine project + * + * This file is part of xine, a unix video player. + * +@@ -127,10 +127,8 @@ + unsigned char use_quantizer; + + if (this->context) { +- avcodec_close(this->context); +- free(this->context); ++ XFF_FREE_CONTEXT (this->context); + free(this->picture); +- this->context = NULL; + this->picture = NULL; + } + +@@ -344,10 +342,8 @@ + #if XFF_ENCVIDEO > 1 + XFF_PACKET_UNREF (this->pkt); + #endif +- avcodec_close(this->context); + XFF_FREE_CONTEXT (this->context); + free(this->picture); +- this->context = NULL; + this->picture = NULL; + } + return 1; diff --git a/SOURCES/xine-lib-1.2.13-ffmpeg7-compatibility.patch b/SOURCES/xine-lib-1.2.13-ffmpeg7-compatibility.patch new file mode 100644 index 0000000..1367504 --- /dev/null +++ b/SOURCES/xine-lib-1.2.13-ffmpeg7-compatibility.patch @@ -0,0 +1,318 @@ +# HG changeset patch +# User Torsten Jager +# Date 1715160885 -7200 +# Wed May 08 11:34:45 2024 +0200 +# Node ID 73b833e7fe356cd2d9490dda4ebc9bfe16fce958 +# Parent 1e7b184008860c8be2289c3cefd9dee57f06193a +ffmpeg compatibility update 2. + +diff -r 1e7b18400886 -r 73b833e7fe35 src/combined/ffmpeg/ff_audio_decoder.c +--- a/src/combined/ffmpeg/ff_audio_decoder.c Mon May 06 21:55:55 2024 +0200 ++++ b/src/combined/ffmpeg/ff_audio_decoder.c Wed May 08 11:34:45 2024 +0200 +@@ -1393,6 +1393,9 @@ + XFF_FREE_FRAME (this->av_frame); + } + #endif ++#if 1 ++ avcodec_flush_buffers (this->context); ++#else + pthread_mutex_lock (&ffmpeg_lock); + { + uint8_t *ed = this->context->extradata; +@@ -1410,6 +1413,7 @@ + if (XFF_AVCODEC_OPEN (this->context, this->codec) >= 0) + this->decoder_ok = 1; + pthread_mutex_unlock (&ffmpeg_lock); ++#endif + } + + ff_audio_reset_parser(this); +diff -r 1e7b18400886 -r 73b833e7fe35 src/combined/ffmpeg/ff_video_decoder.c +--- a/src/combined/ffmpeg/ff_video_decoder.c Mon May 06 21:55:55 2024 +0200 ++++ b/src/combined/ffmpeg/ff_video_decoder.c Wed May 08 11:34:45 2024 +0200 +@@ -89,6 +89,11 @@ + # define ENABLE_EMMS + #endif + ++/* ++#undef XFF_AVCODEC_SLICE_TABLE ++#define XFF_AVCODEC_SLICE_TABLE 1 ++*/ ++ + #define VIDEOBUFSIZE (128*1024) + #define SLICE_BUFFER_SIZE (1194*1024) + +@@ -148,11 +153,11 @@ + int bufsize; + int size; + int skipframes; +- ++#if XFF_AVCODEC_SLICE_TABLE == 1 + int *slice_offset_table; + int slice_offset_size; + int slice_offset_pos; +- ++#endif + AVFrame *av_frame; + AVFrame *av_frame2; + AVCodecContext *context; +@@ -238,6 +243,13 @@ + #if XFF_VIDEO > 1 + XFF_PACKET_DECL (avpkt); + #endif ++ ++#if XFF_AVCODEC_SLICE_TABLE == 2 ++ uint8_t *temp_buf; ++ uint32_t temp_size; ++ int slice_num; ++ uint8_t slice_table[1 + 256 * 8]; ++#endif + }; + + /* import color matrix names */ +@@ -1783,10 +1795,9 @@ + this->size += buf->size; + + if (buf->decoder_flags & BUF_FLAG_FRAME_END) { +- int codec_type; ++ uint32_t codec_type = buf->type & 0xFFFF0000; + + lprintf ("header complete\n"); +- codec_type = buf->type & 0xFFFF0000; + + if (buf->decoder_flags & BUF_FLAG_STDHEADER) { + +@@ -1912,33 +1923,44 @@ + #endif + } + else if (buf->decoder_info[1] == BUF_SPECIAL_RV_CHUNK_TABLE) { +- /* o dear. Multiple decoding threads use individual contexts. +- av_decode_video2 () does only copy the _pointer_ to the offsets, +- not the offsets themselves. So we must not overwrite anything +- that another thread has not yet read. */ +- int i, l, total; +- +- lprintf("BUF_SPECIAL_RV_CHUNK_TABLE\n"); +- l = buf->decoder_info[2] + 1; +- +- total = l * this->class->thread_count; +- if (total < SLICE_OFFSET_SIZE) +- total = SLICE_OFFSET_SIZE; +- if (total > this->slice_offset_size) { +- this->slice_offset_table = realloc (this->slice_offset_table, total * sizeof (int)); +- this->slice_offset_size = total; +- } +- +- if (this->slice_offset_pos + l > this->slice_offset_size) +- this->slice_offset_pos = 0; +- this->context->slice_offset = this->slice_offset_table + this->slice_offset_pos; +- this->context->slice_count = l; +- +- lprintf ("slice_count=%d\n", l); +- for (i = 0; i < l; i++) { +- this->slice_offset_table[this->slice_offset_pos++] = +- ((uint32_t *)buf->decoder_info_ptr[2])[(2 * i) + 1]; +- lprintf("slice_offset[%d]=%d\n", i, this->context->slice_offset[i]); ++ { ++#if XFF_AVCODEC_SLICE_TABLE == 1 ++ /* o dear. Multiple decoding threads use individual contexts. ++ * av_decode_video2 () does only copy the _pointer_ to the offsets, ++ * not the offsets themselves. So we must not overwrite anything ++ * that another thread has not yet read. */ ++ int i, l, total; ++ ++ lprintf("BUF_SPECIAL_RV_CHUNK_TABLE\n"); ++ l = buf->decoder_info[2] + 1; ++ ++ total = l * this->class->thread_count; ++ if (total < SLICE_OFFSET_SIZE) ++ total = SLICE_OFFSET_SIZE; ++ if (total > this->slice_offset_size) { ++ this->slice_offset_table = realloc (this->slice_offset_table, total * sizeof (int)); ++ this->slice_offset_size = total; ++ } ++ ++ if (this->slice_offset_pos + l > this->slice_offset_size) ++ this->slice_offset_pos = 0; ++ this->context->slice_offset = this->slice_offset_table + this->slice_offset_pos; ++ this->context->slice_count = l; ++ ++ lprintf ("slice_count=%d\n", l); ++ for (i = 0; i < l; i++) { ++ this->slice_offset_table[this->slice_offset_pos++] = ++ ((uint32_t *)buf->decoder_info_ptr[2])[(2 * i) + 1]; ++ lprintf("slice_offset[%d]=%d\n", i, this->context->slice_offset[i]); ++ } ++#elif XFF_AVCODEC_SLICE_TABLE == 2 ++ /* (count-1):1, 1:4, (offs[0]):4, 1:4, (offs[1]:4, ... just in front of the frame bitstream. ++ * reverse engineered from ffmpeg/libavcodec/rv34.c. they seem to expect no ++ * external use of rv decoders, and did not document this. */ ++ this->slice_table[0] = buf->decoder_info[2]; ++ this->slice_num = this->slice_table[0] + 1; ++ memcpy (this->slice_table + 1, buf->decoder_info_ptr[2], 8 * this->slice_num); ++#endif + } + } + } +@@ -2004,6 +2026,7 @@ + + static int decode_video_wrapper (ff_video_decoder_t *this, + AVFrame *av_frame, int *err, void *buf, size_t buf_size) { ++ uint32_t tsize = 0; + int len; + + #if ENABLE_VAAPI +@@ -2013,9 +2036,32 @@ + } + #endif /* ENABLE_VAAPI */ + ++#if XFF_AVCODEC_SLICE_TABLE == 2 ++ if ((this->slice_num > 0) && buf) { ++ uint32_t nsize; ++ tsize = 1 + this->slice_num * 8; ++ nsize = tsize + buf_size + AV_INPUT_BUFFER_PADDING_SIZE; ++ if (this->temp_size < nsize) { ++ nsize = nsize * 3 / 2; ++ free (this->temp_buf); ++ this->temp_buf = malloc (nsize); ++ if (!this->temp_buf) ++ nsize = 0; ++ this->temp_size = nsize; ++ nsize = tsize + buf_size + AV_INPUT_BUFFER_PADDING_SIZE; ++ } ++ if (this->temp_size >= nsize) { ++ memcpy (this->temp_buf, this->slice_table, tsize); ++ memcpy (this->temp_buf + tsize, buf, buf_size + AV_INPUT_BUFFER_PADDING_SIZE); ++ buf = this->temp_buf; ++ } ++ this->slice_num = 0; ++ } ++#endif ++ + #if XFF_VIDEO > 1 + this->avpkt->data = buf; +- this->avpkt->size = buf_size; ++ this->avpkt->size = buf_size + tsize; + this->avpkt->flags = AV_PKT_FLAG_KEY; + # ifdef XFF_AVCODEC_FRAME_PTS + this->avpkt->pts = this->tagged_pts; +@@ -2486,7 +2532,6 @@ + this->size -= len; + + if (this->size > 0) { +- ff_check_bufsize(this, this->size); + memmove (this->buf, &chunk_buf[offset], this->size); + chunk_buf = this->buf; + /* take over pts for next access unit */ +@@ -2615,8 +2660,8 @@ + + img->pts = ff_untag_pts(this, this->av_frame); + +- /* workaround for weird 120fps streams */ +- if( video_step_to_use == 750 ) { ++ /* workaround for weird 120fps streams, as well as some rv20 with frame duration 3pts. */ ++ if (video_step_to_use <= 750) { + /* fallback to the VIDEO_PTS_MODE */ + video_step_to_use = 0; + } +@@ -2837,7 +2882,7 @@ + + img->pts = ff_untag_pts (this, this->av_frame2); + +- if (video_step_to_use == 750) ++ if (video_step_to_use <= 750) + video_step_to_use = 0; + img->duration = this->av_frame2->repeat_pict ? video_step_to_use * 3 / 2 : video_step_to_use; + img->progressive_frame = !this->av_frame2->interlaced_frame; +@@ -2941,6 +2986,9 @@ + mpeg_parser_reset(this->mpeg_parser); + + /* this->pts_tag_pass = 0; */ ++#if XFF_AVCODEC_SLICE_TABLE == 2 ++ this->slice_num = 0; ++#endif + } + + static void ff_dispose (video_decoder_t *this_gen) { +@@ -2953,12 +3001,15 @@ + rgb2yuy2_free (this->rgb2yuy2); + + if (this->decoder_ok) { ++ uint8_t *ed; + + pthread_mutex_lock(&ffmpeg_lock); +- _x_freep (&this->context->extradata); ++ ed = this->context->extradata; ++ this->context->extradata = NULL; + this->context->extradata_size = 0; + XFF_FREE_CONTEXT (this->context); + pthread_mutex_unlock(&ffmpeg_lock); ++ _x_freep (&ed); + + #ifdef ENABLE_DIRECT_RENDERING + ff_free_dr1_frames (this, 1); +@@ -2972,9 +3023,11 @@ + XFF_FREE_CONTEXT (this->context); + } + +- if (this->slice_offset_table) +- free (this->slice_offset_table); +- ++#if XFF_AVCODEC_SLICE_TABLE == 1 ++ free (this->slice_offset_table); ++#elif XFF_AVCODEC_SLICE_TABLE == 2 ++ free (this->temp_buf); ++#endif + + #if XFF_VIDEO > 1 + XFF_PACKET_UNREF (this->avpkt); +@@ -3062,21 +3115,25 @@ + this->decoder_ok = 0; + this->aspect_ratio = 0; + this->pts_tag_pass = 0; +-#ifdef HAVE_POSTPROC ++# ifdef HAVE_POSTPROC + this->pp_quality = 0; + this->our_context = NULL; + this->our_mode = NULL; +-#endif ++# endif + this->mpeg_parser = NULL; + this->set_stream_info = 0; + this->rgb2yuy2 = NULL; +-#ifdef ENABLE_VAAPI ++# ifdef ENABLE_VAAPI + this->accel = NULL; + this->accel_img = NULL; +-#endif +-#if XFF_VIDEO == 3 ++# endif ++# if XFF_VIDEO == 3 + this->flush_packet_sent = 0; +-#endif ++# endif ++# if XFF_AVCODEC_SLICE_TABLE == 2 ++ this->temp_size = 0; ++ this->temp_buf = NULL; ++# endif + #endif + + this->video_decoder.decode_data = ff_decode_data; +diff -r 1e7b18400886 -r 73b833e7fe35 src/combined/ffmpeg/ffmpeg_compat.h +--- a/src/combined/ffmpeg/ffmpeg_compat.h Mon May 06 21:55:55 2024 +0200 ++++ b/src/combined/ffmpeg/ffmpeg_compat.h Wed May 08 11:34:45 2024 +0200 +@@ -139,6 +139,14 @@ + # define XFF_PALETTE 3 + #endif + ++#if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(59,42,100) ++/* AVCodecContext.slice_{offset,count} */ ++# define XFF_AVCODEC_SLICE_TABLE 1 ++#else ++/* inline offset table before the frame. */ ++# define XFF_AVCODEC_SLICE_TABLE 2 ++#endif ++ + #if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(59,0,100) /** << revise this */ + # define XFF_VAAPI 1 /** << libavcodec/vaapi.h */ + #else diff --git a/SOURCES/xine-lib-configure-c99.patch b/SOURCES/xine-lib-configure-c99.patch new file mode 100644 index 0000000..a6bf2e6 --- /dev/null +++ b/SOURCES/xine-lib-configure-c99.patch @@ -0,0 +1,116 @@ +configure: Add fake prototypes for C99 compatibility + +The xxmc-related configure probes assume that the compiler +supports implicit function declarations because it tries to +call the functions without including the appropriate headers, +for link testing. + +As the headers are not determined yet at this point, use +a fake prototype (the same that autoconf uses) to avoid +the implicit function declarations. + +This avoids altering the outcome of these checks with future +compilers which do not support implicit function declarations. + +Submitted upstream: + + + +diff --git a/configure b/configure +index a4009e857777b5cf..3a83b40efda8fd5d 100755 +--- a/configure ++++ b/configure +@@ -28563,7 +28563,7 @@ $as_echo "" >&6; } + LIBS="$XXMC_LIBS $X_LIBS $XV_LIBS $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++char XvMCPutSlice(void); + int + main () + { +@@ -28578,7 +28578,7 @@ else + LIBS="$XXMC_LIBS -lXvMC $X_LIBS $XV_LIBS $LIBS $DYNAMIC_LD_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++char XvMCPutSlice(void); + int + main () + { +@@ -28616,7 +28616,7 @@ done + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++char XvMCCreateContext(void); + int + main () + { +@@ -28631,7 +28631,7 @@ else + LIBS="$XXMC_LIBS -lXvMC $X_LIBS $XV_LIBS $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++char XvMCCreateContext(void); + int + main () + { +@@ -28675,7 +28675,7 @@ $as_echo "" >&6; } + LIBS="$XVMC_LIBS $X_LIBS $XV_LIBS $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++char XvMCCreateContext(void); + int + main () + { +@@ -28690,7 +28690,7 @@ else + LIBS="$XVMC_LIBS -lXvMC $X_LIBS $XV_LIBS $LIBS $DYNAMIC_LD_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++char XvMCCreateContext(void); + int + main () + { +diff --git a/m4/video_out.m4 b/m4/video_out.m4 +index 150b477697297c03..8aa1f4a3b9267ff9 100644 +--- a/m4/video_out.m4 ++++ b/m4/video_out.m4 +@@ -496,9 +496,9 @@ AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [ + AC_MSG_CHECKING([whether to enable the xxmc plugin with VLD extensions]) + AC_MSG_RESULT([]) + LIBS="$XXMC_LIBS $X_LIBS $XV_LIBS $LIBS" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XvMCPutSlice()]])], [have_xxmc=yes], ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[char XvMCPutSlice(void);]], [[XvMCPutSlice()]])], [have_xxmc=yes], + [LIBS="$XXMC_LIBS -lXvMC $X_LIBS $XV_LIBS $LIBS $DYNAMIC_LD_LIBS" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XvMCPutSlice()]])], ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[char XvMCPutSlice(void);]], [[XvMCPutSlice()]])], + [have_xxmc=yes XXMC_LIBS="$XXMC_LIBS -lXvMC"])]) + if test x"$have_xxmc" = x"yes"; then + AC_CHECK_HEADERS([X11/extensions/vldXvMC.h], +@@ -506,9 +506,9 @@ AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [ + AC_DEFINE([HAVE_VLDXVMC], 1, [Define if you have vldXvMC.h])], + [have_vldexts=no]) + else +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XvMCCreateContext()]])], [have_xxmc=yes], ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[char XvMCCreateContext(void);]], [[XvMCCreateContext()]])], [have_xxmc=yes], + [LIBS="$XXMC_LIBS -lXvMC $X_LIBS $XV_LIBS $LIBS" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XvMCCreateContext()]])], ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[char XvMCCreateContext(void);]], [[XvMCCreateContext()]])], + [have_xxmc=yes XXMC_LIBS="$XXMC_LIBS -lXvMC"])]) + fi + if test x"$have_xxmc" = x"yes"; then +@@ -521,9 +521,9 @@ AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [ + AC_MSG_CHECKING([whether to enable the xvmc plugin]) + AC_MSG_RESULT([]) + LIBS="$XVMC_LIBS $X_LIBS $XV_LIBS $LIBS" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XvMCCreateContext()]])], [have_xvmc=yes], ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[char XvMCCreateContext(void);]], [[XvMCCreateContext()]])], [have_xvmc=yes], + [LIBS="$XVMC_LIBS -lXvMC $X_LIBS $XV_LIBS $LIBS $DYNAMIC_LD_LIBS" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[XvMCCreateContext()]])], ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[char XvMCCreateContext(void);]], [[XvMCCreateContext()]])], + [have_xvmc=yes XVMC_LIBS="$XVMC_LIBS -lXvMC"])]) + if test x"$have_xvmc" = x"yes"; then + AC_CHECK_HEADERS([X11/extensions/XvMC.h], [], [have_xvmc=no]) diff --git a/SPECS/xine-lib.spec b/SPECS/xine-lib.spec new file mode 100644 index 0000000..e1c8411 --- /dev/null +++ b/SPECS/xine-lib.spec @@ -0,0 +1,1060 @@ +%define _legacy_common_support 1 +%global plugin_abi 2.11 +%global codecdir %{_libdir}/codecs + +%if 0%{?el7} + %global _without_dav1d 1 + %global _without_gcrypt 1 + %global _without_png 1 + %global _with_xvmc 1 +%endif + +%if 0%{?el8} + %global _without_gcrypt 1 +%endif + +%if 0%{?fedora} || 0%{?rhel} >= 9 +# Not permitted in Fedora, ffmpeg covers this anyway +%global _without_faad2 1 +%global _without_fame 1 +%endif + +%ifarch %{ix86} + %global have_vidix 1 +%else + %global have_vidix 0 +%endif + +#global snapshot 1 +%global date 20240508 +%global revision 15289 + +Summary: A multimedia engine +Name: xine-lib +Version: 1.2.13 +Release: 17%{?snapshot:.%{date}hg%{revision}}%{?dist} +License: GPL-2.0-or-later +URL: https://www.xine-project.org/ +%if ! 0%{?snapshot} +Source0: https://downloads.sourceforge.net/xine/xine-lib-%{version}.tar.xz +%else +Source0: xine-lib-%{version}-%{date}hg%{revision}.tar.xz +%endif +# Script to make a snapshot +Source1: make_xinelib_snapshot.sh + +# ffmpeg6 compatibility +# See: https://sourceforge.net/p/xine/xine-lib-1.2/ci/771f4ae27e582123ff3500444718fc8f96186d74/ +Patch0: xine-lib-1.2.13-ffmpeg6-compatibility.patch +# +Patch1: xine-lib-configure-c99.patch +# See: https://sourceforge.net/p/xine/xine-lib-1.2/ci/1e7b184008860c8be2289c3cefd9dee57f06193a/ +Patch2: xine-lib-1.2.13-ffmpeg6-compatibility_2.patch +# See: https://sourceforge.net/p/xine/xine-lib-1.2/ci/73b833e7fe356cd2d9490dda4ebc9bfe16fce958/ +Patch3: xine-lib-1.2.13-ffmpeg7-compatibility.patch + +Provides: xine-lib(plugin-abi) = %{plugin_abi} +Provides: xine-lib(plugin-abi)%{?_isa} = %{plugin_abi} + +Obsoletes: xine-lib-extras-freeworld < 1.1.21-10 +Provides: xine-lib-extras-freeworld = %{version}-%{release} + +BuildRequires: a52dec-devel +BuildRequires: aalib-devel +BuildRequires: alsa-lib-devel +%{!?_without_faad2:BuildRequires: faad2-devel} +%if 0%{?fedora} || 0%{?rhel} >= 9 +BuildRequires: ffmpeg-free-devel +%else +BuildRequires: ffmpeg-devel +%endif +BuildRequires: flac-devel +BuildRequires: fontconfig-devel +BuildRequires: gcc +BuildRequires: gettext-devel +BuildRequires: gnutls-devel +# System lib cannot currently be used +#BuildRequires: gsm-devel +BuildRequires: gtk2-devel +%{!?_without_imagemagick:BuildRequires: ImageMagick-devel} +%if 0%{?fedora} || 0%{?rhel} >= 9 +BuildRequires: pipewire-jack-audio-connection-kit-devel +%else +BuildRequires: jack-audio-connection-kit-devel +%endif +BuildRequires: libaom-devel >= 1.0.0 +BuildRequires: libbluray-devel >= 0.2.1 +BuildRequires: libcaca-devel +BuildRequires: libcdio-devel +%{!?_without_dav1d:BuildRequires: libdav1d-devel >= 0.3.1} +BuildRequires: libdca-devel +%{!?_without_dvdnav:BuildRequires: libdvdnav-devel} +BuildRequires: libdvdread-devel +%{!?_without_fame:BuildRequires: libfame-devel} +%{!?_without_gcrypt:BuildRequires: libgcrypt-devel} +BuildRequires: libGLU-devel +BuildRequires: libmad-devel +BuildRequires: libmng-devel +BuildRequires: libmodplug-devel +BuildRequires: libmpcdec-devel +%{!?_without_nfs:BuildRequires: libnfs-devel} +%{!?_without_png:BuildRequires: libpng-devel >= 1.6.0} +BuildRequires: libsmbclient-devel +BuildRequires: libssh2-devel +BuildRequires: libtheora-devel +BuildRequires: libtool +BuildRequires: libv4l-devel +BuildRequires: libva-devel +BuildRequires: libvdpau-devel +BuildRequires: libvorbis-devel +BuildRequires: libvpx-devel +BuildRequires: libX11-devel +BuildRequires: libxcb-devel +BuildRequires: libxdg-basedir-devel +BuildRequires: libXext-devel +BuildRequires: libXinerama-devel +BuildRequires: libXt-devel +BuildRequires: libXv-devel +%{?_with_xvmc:BuildRequires: libXvMC-devel} +BuildRequires: mesa-libEGL-devel +BuildRequires: openssl-devel >= 1.0.2 +BuildRequires: pkgconfig(libpulse) +BuildRequires: SDL-devel +BuildRequires: speex-devel +BuildRequires: vcdimager-devel +BuildRequires: wavpack-devel +BuildRequires: wayland-devel + + +%description +This package contains the Xine library. It can be used to play back +various media, decode multimedia files from local disk drives, and display +multimedia streamed over the Internet. It interprets many of the most +common multimedia formats available - and some uncommon formats, too. + +%package devel +Summary: Xine library development files +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: zlib-devel%{?_isa} +%description devel +This package contains development files for %{name}. + +%package extras +Summary: Additional plugins for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +%description extras +This package contains extra plugins for %{name}: + - JACK + - GDK-Pixbuf + - SMB + - SDL + - AA-lib + - Libcaca +%{!?_without_imagemagick: - Image decoding} + + +%prep +%autosetup -p1 %{?snapshot:-n %{name}-%{version}-%{date}hg%{revision}} + + +%build +autoreconf -fiv +# Keep list of options in mostly the same order as ./configure --help. +%configure \ + --disable-dependency-tracking \ + --enable-ipv6 \ + --enable-v4l2 \ + --enable-libv4l \ +%{?_with_xvmc: --enable-xvmc} \ + --disable-gnomevfs \ + %{?_without_faad2:--disable-faad} \ + --enable-antialiasing \ + --with-freetype \ + --with-fontconfig \ + --with-caca \ + %{!?_without_dvdnav:--with-external-dvdnav} \ + --with-xv-path=%{_libdir} \ + --with-libflac \ + --without-esound \ + --with-wavpack \ + --with-real-codecs-path=%{codecdir} \ + --with-w32-path=%{codecdir} + +# Remove rpath +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +%make_build + + +%install +%make_install +%find_lang libxine2 +mv %{buildroot}%{_docdir}/xine-lib __docs + +# Removing useless files +rm -Rf %{buildroot}%{_libdir}/libxine*.la __docs/README \ + __docs/README.{freebsd,irix,macosx,solaris,MINGWCROSS,WIN32} + +# Directory for binary codecs +mkdir -p %{buildroot}%{codecdir} + + +%ldconfig_scriptlets + + +%files -f libxine2.lang +%doc AUTHORS CREDITS ChangeLog* README TODO +%doc __docs/README.* __docs/faq.* +%license COPYING COPYING.LIB +%dir %{codecdir}/ +%{_datadir}/xine-lib/ +%{_libdir}/libxine.so.2* +%{_mandir}/man5/xine.5* +%dir %{_libdir}/xine/ +%dir %{_libdir}/xine/plugins/ +%dir %{_libdir}/xine/plugins/%{plugin_abi}/ +%{_libdir}/xine/plugins/%{plugin_abi}/mime.types +# Listing every plugin separately for better control over binary packages +# containing exactly the plugins we want, nothing accidentally snuck in +# nor dropped. +%dir %{_libdir}/xine/plugins/%{plugin_abi}/post/ +%{_libdir}/xine/plugins/%{plugin_abi}/post/xineplug_post_audio_filters.so +%{_libdir}/xine/plugins/%{plugin_abi}/post/xineplug_post_goom.so +%{_libdir}/xine/plugins/%{plugin_abi}/post/xineplug_post_mosaico.so +%{_libdir}/xine/plugins/%{plugin_abi}/post/xineplug_post_planar.so +%{_libdir}/xine/plugins/%{plugin_abi}/post/xineplug_post_switch.so +%{_libdir}/xine/plugins/%{plugin_abi}/post/xineplug_post_tvtime.so +%{_libdir}/xine/plugins/%{plugin_abi}/post/xineplug_post_visualizations.so +%if %{have_vidix} +%dir %{_libdir}/xine/plugins/%{plugin_abi}/vidix/ +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/cyberblade_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/mach64_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/mga_crtc2_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/mga_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/nvidia_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/pm2_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/pm3_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/radeon_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/rage128_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/savage_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/sis_vid.so +%{_libdir}/xine/plugins/%{plugin_abi}/vidix/unichrome_vid.so +%endif +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_ao_out_alsa.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_ao_out_oss.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_ao_out_pulseaudio.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_a52.so +%{!?_without_dav1d:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_dav1d.so} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_dts.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_dvaudio.so +%{!?_without_faad2:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_faad.so} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_ff.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_gsm610.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_libaom.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_libjpeg.so +%{!?_without_png:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_libpng.so} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_libvpx.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_lpcm.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_mad.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_mpc.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_mpeg2.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_rawvideo.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_real.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_spu.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_spucc.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_spucmml.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_spudvb.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_spuhdmv.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_to_spdif.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_vdpau.so +%ifarch %{ix86} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_w32dll.so +%endif +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_asf.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_audio.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_fli.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_games.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_image.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_mng.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_modplug.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_nsv.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_playlist.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_pva.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_slave.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dmx_video.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_dxr3.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_flac.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_hw_frame_vaapi.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_bluray.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_cdda.so +%{!?_without_gcrypt:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_crypto.so} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_dvb.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_dvd.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_mms.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_network.so +%{!?_without_nfs:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_nfs.so} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_pvr.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_rtp.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_ssh.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_v4l2.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_vcd.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_vcdo.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_nsf.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_sputext.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_tls_gnutls.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_tls_openssl.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_va_display_drm.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_va_display_glx.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_va_display_wl.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_va_display_x11.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vdr.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_fb.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_gl_glx.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_gl_egl_x11.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_gl_egl_wl.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_opengl.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_opengl2.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_raw.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_vaapi.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_vdpau.so +%if %{have_vidix} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_vidix.so +%endif +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_xcbshm.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_xcbxv.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_xshm.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_xv.so +%{?_with_xvmc:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_xvmc.so} +%{?_with_xvmc:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_xxmc.so} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_wavpack.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_xiph.so + +%files extras +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_ao_out_jack.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_gdk_pixbuf.so +%{!?_without_imagemagick:%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_decode_image.so} +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_inp_smb.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_aa.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_caca.so +%{_libdir}/xine/plugins/%{plugin_abi}/xineplug_vo_out_sdl.so + +%files devel +%doc __docs/hackersguide/* +%{_bindir}/xine-config +%{_bindir}/xine-list* +%{_datadir}/aclocal/xine.m4 +%{_includedir}/xine.h +%{_includedir}/xine/ +%{_libdir}/libxine.so +%{_libdir}/pkgconfig/libxine.pc +%{_mandir}/man1/xine-config.1* +%{_mandir}/man1/xine-list*.1* + + +%changelog +* Wed Dec 25 2024 Arkady L. Shane - 1.2.13-17 +- Rebuilt for MSVSphere 10 + +* Mon Sep 23 2024 Fabio Valentini - 1.2.13-17 +- Rebuild for ffmpeg 7 + +* Sat Jul 20 2024 Fedora Release Engineering - 1.2.13-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Jul 16 2024 Nicolas Chauvet - 1.2.13-15 +- Rebuilt for libplacebo/vmaf + +* Mon May 20 2024 Xavier Bachelot - 1.2.13-14 +- Add patches for ffmpeg compatibility + +* Wed Mar 13 2024 Sérgio Basto - 1.2.13-13 +- Rebuild for jpegxl (libjxl) 0.10.2 + +* Wed Feb 14 2024 Sérgio Basto - 1.2.13-12 +- Rebuild for jpegxl (libjxl) 0.9.2 with soname bump + +* Thu Feb 08 2024 Pete Walter - 1.2.13-11 +- Rebuild for libvpx 1.14.x + +* Sat Jan 27 2024 Fedora Release Engineering - 1.2.13-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 12 2024 Fabio Valentini - 1.2.13-9 +- Rebuild for dav1d 1.3.0 + +* Tue Sep 26 2023 Xavier Bachelot - 1.2.13-8 +- Enable nfs support for EL9 + +* Sat Jul 22 2023 Fedora Release Engineering - 1.2.13-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sun Jun 18 2023 Sérgio Basto - 1.2.13-6 +- Mass rebuild for jpegxl-0.8.1 + +* Thu Jun 01 2023 Xavier Bachelot - 1.2.13-5 +- Rebuild for new libnfs + +* Sat Apr 15 2023 Florian Weimer - 1.2.13-4 +- Port configure script to C99 + +* Sat Mar 18 2023 Xavier Bachelot - 1.2.13-3 +- Enable external libdvdnav for EL9 +- Restore specfile compatibility with RPM Fusion for EL7/8 +- Restore building from snapshot + +* Fri Mar 17 2023 Yaakov Selkowitz - 1.2.13-2 +- Rebuilt for libmpcdec 1.3.0 + +* Sun Mar 12 2023 Neal Gompa - 1.2.13-1 +- Update to 1.2.13 +- Enable DTS/DCA and VCD support plugins + +* Wed Feb 15 2023 Tom Callaway - 1.2.12-11 +- rebuild for libvpx + +* Mon Jan 23 2023 Neal Gompa - 1.2.12-10 +- Adapt for Fedora + +* Sun Dec 04 2022 Sérgio Basto - 1.2.12-9 +- Rebuild for libjxl on el9 + +* Mon Sep 26 2022 Leigh Scott - 1.2.12-8 +- Rebuild for new flac + +* Sun Sep 04 2022 Leigh Scott - 1.2.12-7 +- Add requires ffmpeg-libs + +* Mon Aug 08 2022 RPM Fusion Release Engineering - 1.2.12-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild and ffmpeg + 5.1 + +* Sat Jul 23 2022 Leigh Scott - 1.2.12-5 +- Rebuild for new ffmpeg + +* Thu Jun 23 2022 Robert-André Mauchin - 1.2.12-4 +- Rebuilt for new AOM, dav1d and jpegxl + +* Fri Mar 25 2022 Xavier Bachelot - 1.2.12-3 +- Add patch for dav1d 1.0.0 support + +* Thu Mar 10 2022 Xavier Bachelot - 1.2.12-2 +- Fix build on EL7 and EL8 + +* Thu Mar 10 2022 Xavier Bachelot - 1.2.12-1 +- Update to 1.2.12 + +* Tue Mar 08 2022 Xavier Bachelot 1.2.11-14.20220307hg15076 +- Specfile clean up +- Update xine-lib snapshot +- Add support for EL9 + +* Sat Feb 05 2022 Leigh Scott - 1.2.11-13.20220131hg15030 +- Update to xine-lib snapshot. + +* Wed Jan 19 2022 Nicolas Chauvet - 1.2.11-12 +- Rebuilt + +* Sat Dec 11 2021 Sérgio Basto - 1.2.11-11 +- Rebuilt for new ImageMagick on F34 + +* Thu Dec 02 2021 Sérgio Basto - 1.2.11-10 +- Rebuilt for libjxl-0.6.1 + +* Mon Nov 22 2021 Sérgio Basto - 1.2.11-9 +- Rebuilt for new ImageMagick + +* Tue Aug 03 2021 RPM Fusion Release Engineering - 1.2.11-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sun Jun 13 2021 Robert-André Mauchin - 1.2.11-7 +- Rebuild for new aom + +* Thu Feb 04 2021 RPM Fusion Release Engineering - 1.2.11-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Dec 31 2020 Leigh Scott - 1.2.11-5 +- Rebuilt for new ffmpeg snapshot + +* Mon Dec 14 2020 Leigh Scott - 1.2.11-4 +- Actually do the dav1d rebuild + +* Mon Dec 14 2020 Robert-André Mauchin 1.2.11-3 +- Rebuild for dav1d SONAME bump + +* Fri Dec 11 2020 Xavier Bachelot 1.2.11-2 +- Drop support for EOL distros + +* Tue Dec 08 2020 Xavier Bachelot 1.2.11-1 +- Update to 1.2.11 + +* Wed Oct 21 2020 Leigh Scott - 1.2.10-12 +- Rebuild for new libdvdread + +* Sat Oct 17 2020 Xavier Bachelot 1.2.10-11 +- Re-enable libssh2 for EL8 and F31+ +- Fix build if libssh2 support is disabled but libssh2-devel is installed (RFBZ#5796) + +* Wed Aug 19 2020 RPM Fusion Release Engineering - 1.2.10-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 08 2020 Leigh Scott - 1.2.10-9 +- Rebuilt + +* Wed Jul 01 2020 Leigh Scott - 1.2.10-8 +- Rebuilt + +* Sun May 24 2020 Leigh Scott - 1.2.10-7 +- Rebuild for dav1d SONAME bump + +* Wed May 20 2020 Sérgio Basto - 1.2.10-6 +- Rebuild for ImageMagick on el7 + +* Fri Apr 10 2020 Leigh Scott - 1.2.10-5 +- Rebuild for new libcdio version + +* Sat Feb 22 2020 RPM Fusion Release Engineering - 1.2.10-4 +- Rebuild for ffmpeg-4.3 git + +* Wed Feb 05 2020 RPM Fusion Release Engineering - 1.2.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Sat Jan 18 2020 Xavier Bachelot 1.2.10-2 +- Disable libssh2 for EL8. + +* Fri Dec 13 2019 Xavier Bachelot 1.2.10-1 +- Update to 1.2.10. +- Enable aom for EL7. +- Enable libcaca and ImageMagick for EL8. + +* Fri Nov 15 2019 Dominik 'Rathann' Mierzejewski - 1.2.9-22.20190831hg14506 +- rebuild for libdvdread ABI bump + +* Thu Oct 24 2019 Leigh Scott - 1.2.9-21.20190831hg14506 +- Rebuild for dav1d SONAME bump + +* Wed Sep 11 2019 Leigh Scott - 1.2.9-20.20190831hg14506 +- Rebuild for new libnfs version + +* Tue Sep 03 2019 Xavier Bachelot 1.2.9-19.20190831hg14506 +- Fix 32 bits build. + +* Tue Sep 03 2019 Xavier Bachelot 1.2.9-18.20190831hg14506 +- Update xine-lib snapshot. +- Enable libpng based video decoder. +- Add XvMC support back. +- Enable libdav1d based video decoder (F31+). +- Rework features enablement. +- Disable currently missing features on EL8. + +* Wed Aug 21 2019 Leigh Scott - 1.2.9-17.20190525hg14404 +- Rebuild for aom SONAME bump +- Drop XvMC support (rfbz #5328) + +* Tue Aug 06 2019 Leigh Scott - 1.2.9-16.20190525hg14404 +- Rebuild for new ffmpeg version + +* Mon May 27 2019 Xavier Bachelot 1.2.9-15.20190525hg14404 +- Update xine-lib snapshot. +- Remove now unneeded 32 bits build fix. +- Cosmetic spec cleanup. +- Remove unneeded SDL build flags setting. + +* Fri May 17 2019 Xavier Bachelot 1.2.9-14.20190516hg14396 +- Update to xine-lib snapshot. +- Add script to make a snapshot. +- Enable EGL support. +- Enable mpeg2 encoding support for dxr3. +- Don't glob soname. +- Clean up and sort BuildRequires. +- Enable fontconfig support. +- No NFS support on EL6. +- Add patch to revert gettext version bump on EL6. +- No wayland nor openssl support on EL6. + +* Tue Mar 05 2019 RPM Fusion Release Engineering - 1.2.9-13.20181129hg14263 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Dec 10 2018 Xavier Bachelot 1.2.9-12.20181129hg14263 +- Update to xine-lib snapshot. +- Enable SSH and NFS input plugins. +- Enable TLS support. +- Enable AV1 support through libaom (Fedora only). +- Add support for RPI. + +* Thu Dec 06 2018 Antonio Trande - 1.2.9-11 +- Rebuild for ffmpeg-3.* on el7 + +* Wed Aug 29 2018 Xavier Bachelot 1.2.9-10.1 +- Rebuilt for ImageMagick soname bump. + +* Sun Aug 19 2018 Leigh Scott - 1.2.9-9 +- Rebuilt for Fedora 29 Mass Rebuild binutils issue + +* Fri Jul 27 2018 RPM Fusion Release Engineering - 1.2.9-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jul 20 2018 Xavier Bachelot 1.2.9-7 +- Add BR: gcc. + +* Thu Mar 08 2018 RPM Fusion Release Engineering - 1.2.9-6 +- Rebuilt for new ffmpeg snapshot + +* Thu Mar 01 2018 RPM Fusion Release Engineering - 1.2.9-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Jan 27 2018 Leigh Scott - 1.2.9-4 +- Rebuild for new libcdio, libvpx and vcdimager + +* Thu Jan 18 2018 Leigh Scott - 1.2.9-3 +- Rebuilt for ffmpeg-3.5 git + +* Mon Jan 15 2018 Nicolas Chauvet - 1.2.9-2 +- Rebuilt for VA-API 1.0.0 + +* Fri Jan 12 2018 Xavier Bachelot 1.2.9-1 +- Update to 1.2.9. + +* Sun Aug 27 2017 Nicolas Chauvet - 1.2.8-4 +- Rebuilt for ImageMagick + +* Sat Apr 29 2017 Leigh Scott - 1.2.8-3 +- Rebuild for ffmpeg update + +* Tue Mar 21 2017 RPM Fusion Release Engineering - 1.2.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Feb 21 2017 Xavier Bachelot 1.2.8-1 +- Update to 1.2.8. +- All patches are now upstream, remove them. +- Use %%license. +- Fix building on EL6. +- Drop now obsolete BR: gawk and sed. + +* Fri Nov 18 2016 Adrian Reber - 1.2.6-14 +- Rebuilt for libcdio-0.94 + +* Sat Jul 30 2016 Julian Sikorski - 1.2.6-13 +- Rebuilt for ffmpeg-3.1.1 + +* Mon Jul 25 2016 Sérgio Basto - 1.2.6-12 +- Fix build with libxcb-1.12, https://bugs.xine-project.org/show_bug.cgi?id=573 + +* Fri Jul 08 2016 Sérgio Basto - 1.2.6-11 +- Build again with vcd support + +* Fri Jul 01 2016 Sérgio Basto - 1.2.6-10 +- Remove BR: vcdimager-devel and disable vcd; package retired in F24 + +* Sun May 01 2016 Sérgio Basto - 1.2.6-9 +- Add patch to build with ffmpeg3 + +* Tue Nov 04 2014 Nicolas Chauvet - 1.2.6-8 +- Rebuilt for vaapi 0.36 + +* Mon Oct 20 2014 Sérgio Basto - 1.2.6-7 +- Rebuilt for FFmpeg 2.4.3 + +* Wed Oct 01 2014 Sérgio Basto - 1.2.6-6 +- Rebuilt again for FFmpeg 2.3.x (with FFmpeg 2.3.x in build root) + +* Wed Oct 01 2014 Sérgio Basto - 1.2.6-5 +- Rebuilt for FFmpeg 2.3.x (with FFmpeg 2.3.x in build root) + +* Sat Sep 27 2014 kwizart - 1.2.6-4 +- Rebuilt for FFmpeg 2.3x + +* Thu Sep 25 2014 Xavier Bachelot 1.2.6-3 +- Rebuild for ffmpeg 2.4. + +* Thu Aug 07 2014 Sérgio Basto - 1.2.6-2 +- Rebuilt for ffmpeg-2.3 + +* Sun Jul 06 2014 Xavier Bachelot 1.2.6-1 +- Update to 1.2.6. + +* Tue Apr 08 2014 Xavier Bachelot 1.2.5-1 +- Update to 1.2.5. +- Drop upstream'ed patch. +- Enable VP8/9 decoder through libvpx. + +* Tue Mar 25 2014 Xavier Bachelot 1.2.4-5 +- Rebuild for ffmpeg 2.2. + +* Wed Feb 26 2014 Nicolas Chauvet - 1.2.4-4 +- Rebuilt for libcdio + +* Tue Nov 05 2013 Xavier Bachelot 1.2.4-3 +- Rebuild for ffmpeg 2.1. + +* Sat Oct 12 2013 Xavier Bachelot 1.2.4-2 +- Make the build more verbose. +- Don't run autogen.sh gratuitously and drop BR: autoconf automake libtool. + Consequently, add a code snippet to remove rpath. +- Drop obsolete no autopoint patch and Requires: gettext-devel instead. +- Drop obsolete Requires: pkgconfig for -devel subpackage. +- Drop obsolete Group: tags. +- Bump xine-lib-extras-freeworld Obsoletes:. + +* Tue Sep 24 2013 Xavier Bachelot 1.2.4-1 +- Update to 1.2.4. +- Drop upstream'ed patches and hacks. +- More spec file cleanup. + +* Fri Sep 20 2013 Xavier Bachelot 1.2.3-2 +- Update to 1.2.3. +- Merge xine-lib and xine-lib-extras-freeworld. +- Use pristine source. +- Clean up old Obsoletes/Provides. +- Clean up old conditional building. +- Clean up spec. +- Enable VDPAU support. +- Enable VAAPI support. +- Add a patch to fix a lock up when vaapi plugin init fails. +- Move test input plugin to -extras. + +* Fri Sep 20 2013 Xavier Bachelot 1.1.21-10 +- Rebuild for libbluray-0.4.0. + +* Sat Aug 31 2013 Till Maas - 1.1.21-9 +- Disable directfb support for Fedora 20 and newer, because it was retired + +* Tue Aug 27 2013 Jon Ciesla - 1.1.21-8 +- libmng rebuild. + +* Sun Aug 04 2013 Fedora Release Engineering - 1.1.21-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Mar 30 2013 Kevin Fenzi - 1.1.21-6 +- Rebuild for broken deps in rawhide + +* Tue Feb 12 2013 Kevin Kofler 1.1.21-5 +- find the Samba 4 libsmbclient.h using pkg-config, fixes FTBFS (#909825) + +* Mon Sep 17 2012 Kevin Kofler 1.1.21-4 +- rebuild for new directfb + +* Sun Jul 22 2012 Fedora Release Engineering - 1.1.21-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jul 21 2012 Kevin Kofler 1.1.21-2.1 +- disable libbluray support on F16, libbluray too old + +* Mon Jul 16 2012 Kevin Kofler 1.1.21-2 +- do not remove DVD plugin, not encumbered (only uses libdvdread/libdvdnav) + +* Tue Jun 12 2012 Xavier Bachelot 1.1.21-1 +- Update to 1.1.21. +- Enable libbluray support. + +* Sat Mar 10 2012 Rex Dieter 1.1.20.1-3 +- rebuild (ImageMagick) + +* Sat Jan 14 2012 Fedora Release Engineering - 1.1.20.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Jan 03 2012 Kevin Kofler 1.1.20.1-1 +- update to 1.1.20.1 (bugfix release) +- drop upstreamed link-libdvdread patch + +* Sun Nov 20 2011 Kevin Kofler 1.1.20-1 +- update to 1.1.20 (#753758) +- use .xz tarball +- drop old conditionals +- drop ESD (esound) support on F17+ (native PulseAudio just works) +- drop autotools patch, run autogen.sh in %%prep instead +- drop unused deepbind patch +- drop xvmclib_header patch, fixed upstream +- use the system libdvdnav (and libdvdread) instead of the bundled one +- fix system libdvdnav support to also link libdvdread +- plugin ABI is now 1.30 + +* Fri Jul 15 2011 Kevin Kofler 1.1.19-7 +- rebuild for new DirectFB (1.5.0) + +* Mon Feb 14 2011 Rex Dieter 1.1.19-6 +- split v4l, libv4l handling +- omit v4l(1) bits (f15+) + +* Mon Feb 07 2011 Fedora Release Engineering - 1.1.19-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Jan 24 2011 Rex Dieter - 1.1.19-4 +- xvmclib header changes, fixes ftbfs (#635653,#661071) + +* Sun Nov 28 2010 Kevin Kofler - 1.1.19-3 +- rebuild for new directfb (1.4.11) + +* Wed Sep 15 2010 Rex Dieter - 1.1.19-2 +- rebuild (ImageMagick) + +* Sun Jul 25 2010 Rex Dieter - 1.1.19-1 +- 1.1.19 + +* Mon Jul 19 2010 Rex Dieter - 1.1.18.1-3 +- no directfb on arm (yet) + +* Tue Jun 1 2010 Ville Skyttä - 1.1.18.1-2 +- Rebuild. + +* Sun Mar 07 2010 Rex Dieter - 1.1.18.1-1 +- xine-lib-1.1.18.1 + +* Sun Mar 07 2010 Rex Dieter - 1.1.18-2 +- rebuild (ImageMagick) + +* Wed Feb 24 2010 Rex Dieter - 1.1.18-1 +- xine-lib-1.1.18, plugin-abi 1.28 (#567913) + +* Sat Dec 12 2009 Rex Dieter - 1.1.17-3 +- bump flac_decoder priority (rh#301861,xine#225) + +* Mon Dec 07 2009 Bastien Nocera 1.1.17-2 +- Remove gnome-vfs2 plugin, it's mostly useless + +* Wed Dec 02 2009 Rex Dieter - 1.1.17-1 +- xine-lib-1.1.17, plugin-abi 1.27 + +* Sun Nov 29 2009 Rex Dieter - 1.1.16.3-5 +- move -pulseaudio into main pkg (f12+) +- update URL + +* Mon Jul 27 2009 Fedora Release Engineering - 1.1.16.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jul 02 2009 Rex Dieter - 1.1.16.3-3 +- rebuild (DirectFB) + +* Fri Apr 17 2009 Rex Dieter - 1.1.16.3-2.1 +- drop old_caca hacks/patches (F-9) + +* Fri Apr 10 2009 Rex Dieter - 1.1.16.3-2 +- fix modtracker mimetypes + +* Fri Apr 03 2009 Rex Dieter - 1.1.16.3-1 +- xine-lib-1.1.16.3, plugin-abi 1.26 + +* Thu Mar 26 2009 Rex Dieter - 1.1.16.2-6 +- add-mime-for-mod.patch + +* Tue Mar 10 2009 Kevin Kofler - 1.1.16.2-5 +- rebuild for new ImageMagick + +* Thu Feb 26 2009 Fedora Release Engineering - 1.1.16.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Feb 20 2009 Rex Dieter - 1.1.16.2-3 +- xine-lib-devel muiltilib conflict (#477226) + +* Tue Feb 17 2009 Rex Dieter - 1.1.16.2-2 +- xine-lib-safe-audio-pause3 patch (#486255, kdebug#180339) + +* Tue Feb 10 2009 Kevin Kofler - 1.1.16.2-1.1 +- also patch the caca version check in configure(.ac) + +* Tue Feb 10 2009 Rex Dieter - 1.1.16.2-1 +- xine-lib-1.1.16.2 + +* Mon Feb 09 2009 Rex Dieter - 1.1.16.1-4 +- gapless-race-fix patch (kdebug#180339) + +* Sat Feb 07 2009 Rex Dieter - 1.1.16.1-3 +- safe-audio-pause patch (kdebug#180339) + +* Mon Jan 26 2009 Rex Dieter - 1.1.16.1-2 +- Provides: xine-lib(plugin-abi)%%{?_isa} = %%{plugin_abi} +- touchup Summary/Description + +* Fri Jan 23 2009 Rex Dieter - 1.1.16.1-1 +- xine-lib-1.1.16.1 +- include avsync patch (#470568) + +* Sun Jan 18 2009 Rex Dieter - 1.1.16-2 +- drop deepbind patch (#480504) +- caca support (EPEL) + +* Wed Jan 07 2009 Kevin Kofler - 1.1.16-1.1 +- patch for old libcaca in F9- + +* Wed Jan 07 2009 Rex Dieter - 1.1.16-1 +- xine-lib-1.1.16, plugin ABI 1.25 +- --with-external-libdvdnav, include mpeg demuxers (#213597) + +* Fri Dec 12 2008 Rex Dieter - 1.1.15-4 +- rebuild for pkgconfig deps + +* Tue Oct 28 2008 Kevin Kofler - 1.1.15-3 +- rebuild for new libcaca + +* Thu Oct 23 2008 Rex Dieter - 1.1.15-2 +- respin + +* Wed Aug 20 2008 Rex Dieter - 1.1.15-1 +- xine-lib-1.1.15, plugin ABI 1.24 (rh#455752, CVE-2008-3231) +- Obsoletes: -arts (f9+) + +* Sun Apr 27 2008 Kevin Kofler - 1.1.12-3 +- rebuild for new ImageMagick (6.4.0.10) + +* Thu Apr 24 2008 Rex Dieter - 1.1.12-2 +- CVE-2008-1878 + +* Wed Apr 16 2008 Ville Skyttä - 1.1.12-1 +- 1.1.12 (plugin ABI 1.21); qt, mkv, and pulseaudio patches applied upstream. + +* Wed Apr 9 2008 Ville Skyttä - 1.1.11.1-3 +- Apply upstream fixes for Quicktime (#441705) and Matroska regressions + introduced in 1.1.11.1. + +* Mon Apr 07 2008 Rex Dieter - 1.1.11.1-2 +- pulse-rework2 patch (#439731) +- -pulseaudio subpkg (#439731) + +* Sun Mar 30 2008 Ville Skyttä - 1.1.11.1-1 +- 1.1.11.1 (security update, #438663, CVE-2008-1482). +- Provide versioned xine-lib(plugin-abi) so 3rd party packages installing + plugins can use it instead of requiring a version of xine-lib. + +* Wed Mar 19 2008 Ville Skyttä - 1.1.11-1 +- 1.1.11 (security update, #438182, CVE-2008-0073). +- Drop jack and wavpack build conditionals. +- Specfile cleanups. + +* Fri Mar 7 2008 Rex Dieter - 1.1.10.1-1.1 +- xcb support for f7+ (#373411) + +* Fri Feb 8 2008 Ville Skyttä - 1.1.10.1-1 +- 1.1.10.1 (security update, #431541). + +* Sun Jan 27 2008 Ville Skyttä - 1.1.10-2 +- Include spu, spucc, and spucmml decoders (#213597). + +* Sun Jan 27 2008 Ville Skyttä - 1.1.10-1 +- 1.1.10 (security update). + +* Mon Jan 21 2008 Ville Skyttä - 1.1.9.1-3 +- Fix version number in libxine.pc (#429487). + +* Sun Jan 20 2008 Ville Skyttä - 1.1.9.1-2 +- Disable upstream "discard buffers on ao close" 1.1.9 changeset (#429182). + +* Sat Jan 12 2008 Ville Skyttä - 1.1.9.1-1 +- 1.1.9.1 (security update). + +* Sun Jan 6 2008 Ville Skyttä - 1.1.9-1 +- 1.1.9. + +* Thu Sep 27 2007 Ville Skyttä - 1.1.8-6 +- Enable wavpack support by default for all distros. + +* Sun Sep 23 2007 Ville Skyttä - 1.1.8-5 +- Enable JACK support by default for all distros. + +* Wed Sep 19 2007 Ville Skyttä - 1.1.8-4 +- Fix "--without wavpack" build. + +* Sat Sep 15 2007 Ville Skyttä - 1.1.8-3 +- Move XCB plugins to the main package. +- Make aalib, caca, pulseaudio, jack, and wavpack support optional at build + time in preparation for the first EPEL build. + +* Sun Sep 09 2007 Aurelien Bompard 1.1.8-2 +- remove the dependency from -extras to -arts, and use Obsoletes to + provide an upgrade path + +* Thu Aug 30 2007 Ville Skyttä - 1.1.8-1 +- 1.1.8, "open" patch applied upstream. +- Build XCB plugins by default for Fedora 8+ only. + +* Sat Aug 25 2007 Aurelien Bompard 1.1.7-3 +- Split the aRts plugin into its own subpackage + +* Tue Aug 14 2007 Ville Skyttä - 1.1.7-2 +- Include XCB output plugins (in -extras at least for now). +- Protect "open" with glibc 2.6.90 and -D_FORTIFY_SOURCE=2. +- Clean up %%configure options. +- License: GPLv2+ + +* Thu Jun 7 2007 Ville Skyttä - 1.1.7-1 +- 1.1.7. + +* Wed Jun 06 2007 Rex Dieter - 1.1.6-3 +- respin (for libmpcdec) + +* Wed Apr 25 2007 Ville Skyttä - 1.1.6-2 +- Make Real codec search path /usr/lib(64)/codecs again (#237743). + +* Wed Apr 18 2007 Ville Skyttä - 1.1.6-1 +- 1.1.6. + +* Wed Apr 11 2007 Ville Skyttä - 1.1.5-1 +- 1.1.5. +- Include GSM 06.10 decoder (#228186). +- Re-enable CACA support. + +* Sun Apr 8 2007 Ville Skyttä +- Exclude vidix dir on systems that don't have vidix. +- Specfile cleanups. + +* Mon Mar 26 2007 Ville Skyttä - 1.1.4-4 +- Add PulseAudio support (in -extras, #234035/Jost Diederichs). +- Adjust Samba build dependencies to work for both <= and > FC6. +- Add --with freetype and --with antialiasing build time options, + default disabled, and an upstream patch for FreeType memory leak (#233194). + +* Sat Mar 10 2007 Ville Skyttä - 1.1.4-3 +- Apply upstream fix for CVE-2007-1246. + +* Wed Feb 14 2007 Ville Skyttä - 1.1.4-2 +- Rebuild. + +* Wed Jan 31 2007 Ville Skyttä - 1.1.4-1 +- 1.1.4, with wavpack and system libmpcdec support. + +* Thu Jan 18 2007 Aurelien Bompard 1.1.3-4 +- rebuild + +* Wed Jan 3 2007 Ville Skyttä - 1.1.3-3 +- Fix libflac decoder with FLAC < 1.1.3 (#220961). +- Apply upstream patch for FLAC >= 1.1.3. + +* Sun Dec 17 2006 Ville Skyttä - 1.1.3-2 +- Don't run autotools during build. + +* Mon Dec 04 2006 Aurelien Bompard 1.1.3-1 +- version 1.1.3 +- patch2 applied upstream +- Disable CACA support by default, needs newer than what's in FE ATM. +- Split extras plugins in a separate package +- Enable JACK support (in extras subpackage) +- Enable DirectFB support (in extras subpackage) + +* Sat Nov 11 2006 Aurelien Bompard 1.1.2-18 +- Make shn files available to amarok. References: + http://xine.cvs.sourceforge.net/xine/xine-lib/src/demuxers/demux_shn.c?r1=1.1.2.2&r2=1.2 + https://launchpad.net/distros/ubuntu/+source/xine-lib/+bug/63130 + +* Wed Oct 18 2006 Aurelien Bompard 1.1.2-17 +- cleanup docs +- remove mms +- delete more source files in the cleanup script +- drop patch3 (affecting mms) + +* Tue Oct 17 2006 Aurelien Bompard 1.1.2-16 +- fix files list +- add BR gtk2-devel +- remove xineplug_decode_gdk_pixbuf.so from x86-only + +* Mon Oct 16 2006 Aurelien Bompard 1.1.2-15 +- removed libdts +- drop dxr patch (it's removed from tarball) +- list xineplug_decode_gdk_pixbuf.so and xineplug_vo_out_vidix.so only on x86 + +* Sun Oct 15 2006 Aurelien Bompard 1.1.2-14 +- update SOURCE1 to remove liba52 from tarball (patented) + +* Tue Sep 12 2006 Aurelien Bompard 1.1.2-13 +- drop patches 2 and 4 + +* Fri Sep 08 2006 Aurelien Bompard 1.1.2-12 +- initial Fedora Extras package