diff --git a/README.md b/README.md index bed90b3..fdd3709 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # libxine +xine is a free (GPL-licensed) high-performance, portable and reusable multimedia playback engine. +xine itself is a shared library with an easy to use, yet powerful API which is used by many applications for smooth video playback and video processing purposes. + diff --git a/libxine-1.1.19-ffmpeg.patch b/libxine-1.1.19-ffmpeg.patch new file mode 100644 index 0000000..6817aa9 --- /dev/null +++ b/libxine-1.1.19-ffmpeg.patch @@ -0,0 +1,380 @@ +diff -r 717450d734f7 src/combined/ffmpeg/ff_audio_decoder.c +--- a/src/combined/ffmpeg/ff_audio_decoder.c Mon May 16 15:49:02 2011 +0100 ++++ b/src/combined/ffmpeg/ff_audio_decoder.c Mon May 16 19:46:49 2011 -0400 +@@ -46,6 +46,12 @@ + + #define AUDIOBUFSIZE (64 * 1024) + ++#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR >= 32) ++# define AVAUDIO 3 ++#else ++# define AVAUDIO 2 ++#endif ++ + typedef struct { + audio_decoder_class_t decoder_class; + } ff_audio_class_t; +@@ -255,6 +261,9 @@ + buf->decoder_info[2]); + + } else if (!(buf->decoder_flags & BUF_FLAG_SPECIAL)) { ++#if AVAUDIO > 2 ++ AVPacket avpkt; ++#endif + + if( !this->decoder_ok ) { + if ( ! this->context || ! this->codec ) { +@@ -286,11 +295,21 @@ + if (!this->output_open) { + if (!this->audio_bits || !this->audio_sample_rate || !this->audio_channels) { + decode_buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; ++#if AVAUDIO > 2 ++ av_init_packet (&avpkt); ++ avpkt.data = (uint8_t *)&this->buf[0]; ++ avpkt.size = this->size; ++ avpkt.flags = AV_PKT_FLAG_KEY; ++ avcodec_decode_audio3 (this->context, ++ (int16_t *)this->decode_buffer, ++ &decode_buffer_size, &avpkt); ++#else + avcodec_decode_audio2 (this->context, + (int16_t *)this->decode_buffer, + &decode_buffer_size, + &this->buf[0], + this->size); ++#endif + this->audio_bits = this->context->bits_per_sample; + this->audio_sample_rate = this->context->sample_rate; + this->audio_channels = this->context->channels; +@@ -311,12 +330,21 @@ + offset = 0; + while (this->size>0) { + decode_buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; ++#if AVAUDIO > 2 ++ av_init_packet (&avpkt); ++ avpkt.data = (uint8_t *)&this->buf[offset]; ++ avpkt.size = this->size; ++ avpkt.flags = AV_PKT_FLAG_KEY; ++ bytes_consumed = avcodec_decode_audio3 (this->context, ++ (int16_t *)this->decode_buffer, ++ &decode_buffer_size, &avpkt); ++#else + bytes_consumed = avcodec_decode_audio2 (this->context, + (int16_t *)this->decode_buffer, + &decode_buffer_size, + &this->buf[offset], + this->size); +- ++#endif + if (bytes_consumed<0) { + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, + "ffmpeg_audio_dec: error decompressing audio frame\n"); +diff -r 717450d734f7 src/combined/ffmpeg/ff_video_decoder.c +--- a/src/combined/ffmpeg/ff_video_decoder.c Mon May 16 15:49:02 2011 +0100 ++++ b/src/combined/ffmpeg/ff_video_decoder.c Mon May 16 19:46:49 2011 -0400 +@@ -58,6 +58,14 @@ + + #define ENABLE_DIRECT_RENDERING + ++#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR >= 32) ++# define AVVIDEO 2 ++#else ++# define AVVIDEO 1 ++# define pp_context pp_context_t ++# define pp_mode pp_mode_t ++#endif ++ + /* reordered_opaque appeared in libavcodec 51.68.0 */ + #define AVCODEC_HAS_REORDERED_OPAQUE + #if LIBAVCODEC_VERSION_INT < 0x334400 +@@ -116,8 +124,8 @@ + + int pp_quality; + int pp_flags; +- pp_context_t *pp_context; +- pp_mode_t *pp_mode; ++ pp_context *our_context; ++ pp_mode *our_mode; + + /* mpeg-es parsing */ + mpeg_parser_t *mpeg_parser; +@@ -444,23 +452,23 @@ + this->pp_quality = this->class->pp_quality; + + if(this->pp_available && this->pp_quality) { +- if(!this->pp_context && this->context) +- this->pp_context = pp_get_context(this->context->width, this->context->height, ++ if(!this->our_context && this->context) ++ this->our_context = pp_get_context(this->context->width, this->context->height, + this->pp_flags); +- if(this->pp_mode) +- pp_free_mode(this->pp_mode); ++ if(this->our_mode) ++ pp_free_mode(this->our_mode); + +- this->pp_mode = pp_get_mode_by_name_and_quality("hb:a,vb:a,dr:a", ++ this->our_mode = pp_get_mode_by_name_and_quality("hb:a,vb:a,dr:a", + this->pp_quality); + } else { +- if(this->pp_mode) { +- pp_free_mode(this->pp_mode); +- this->pp_mode = NULL; ++ if(this->our_mode) { ++ pp_free_mode(this->our_mode); ++ this->our_mode = NULL; + } + +- if(this->pp_context) { +- pp_free_context(this->pp_context); +- this->pp_context = NULL; ++ if(this->our_context) { ++ pp_free_context(this->our_context); ++ this->our_context = NULL; + } + } + } +@@ -1055,12 +1063,26 @@ + } + + /* skip decoding b frames if too late */ ++#if AVVIDEO > 1 ++ this->context->skip_frame = (this->skipframes > 0) ? AVDISCARD_NONREF : AVDISCARD_DEFAULT; ++#else + this->context->hurry_up = (this->skipframes > 0); ++#endif + + lprintf("avcodec_decode_video: size=%d\n", this->mpeg_parser->buffer_size); ++#if AVVIDEO > 1 ++ AVPacket avpkt; ++ av_init_packet(&avpkt); ++ avpkt.data = (uint8_t *)this->mpeg_parser->chunk_buffer; ++ avpkt.size = this->mpeg_parser->buffer_size; ++ avpkt.flags = AV_PKT_FLAG_KEY; ++ len = avcodec_decode_video2 (this->context, this->av_frame, ++ &got_picture, &avpkt); ++#else + len = avcodec_decode_video (this->context, this->av_frame, + &got_picture, this->mpeg_parser->chunk_buffer, + this->mpeg_parser->buffer_size); ++#endif + lprintf("avcodec_decode_video: decoded_size=%d, got_picture=%d\n", + len, got_picture); + len = current - buf->content - offset; +@@ -1112,7 +1134,13 @@ + + } else { + +- if (this->context->hurry_up) { ++ if ( ++#if AVVIDEO > 1 ++ this->context->skip_frame != AVDISCARD_DEFAULT ++#else ++ this->context->hurry_up ++#endif ++ ) { + /* skipped frame, output a bad frame */ + img = this->stream->video_out->get_frame (this->stream->video_out, + this->bih.biWidth, +@@ -1304,13 +1332,25 @@ + got_picture = 0; + } else { + /* skip decoding b frames if too late */ ++#if AVVIDEO > 1 ++ this->context->skip_frame = (this->skipframes > 0) ? AVDISCARD_NONREF : AVDISCARD_DEFAULT; ++#else + this->context->hurry_up = (this->skipframes > 0); +- ++#endif + lprintf("buffer size: %d\n", this->size); ++#if AVVIDEO > 1 ++ AVPacket avpkt; ++ av_init_packet(&avpkt); ++ avpkt.data = (uint8_t *)&chunk_buf[offset]; ++ avpkt.size = this->size; ++ avpkt.flags = AV_PKT_FLAG_KEY; ++ len = avcodec_decode_video2 (this->context, this->av_frame, ++ &got_picture, &avpkt); ++#else + len = avcodec_decode_video (this->context, this->av_frame, + &got_picture, &chunk_buf[offset], + this->size); +- ++#endif + #ifdef AVCODEC_HAS_REORDERED_OPAQUE + /* reset consumed pts value */ + this->context->reordered_opaque = ff_tag_pts(this, 0); +@@ -1432,7 +1472,7 @@ + img->base, img->pitches, + img->width, img->height, + this->av_frame->qscale_table, this->av_frame->qstride, +- this->pp_mode, this->pp_context, ++ this->our_mode, this->our_context, + this->av_frame->pict_type); + + } else if (!this->av_frame->opaque) { +@@ -1676,11 +1716,11 @@ + free(this->buf); + this->buf = NULL; + +- if(this->pp_context) +- pp_free_context(this->pp_context); ++ if(this->our_context) ++ pp_free_context(this->our_context); + +- if(this->pp_mode) +- pp_free_mode(this->pp_mode); ++ if(this->our_mode) ++ pp_free_mode(this->our_mode); + + mpeg_parser_dispose(this->mpeg_parser); + +@@ -1721,8 +1761,8 @@ + this->aspect_ratio = 0; + + this->pp_quality = 0; +- this->pp_context = NULL; +- this->pp_mode = NULL; ++ this->our_context = NULL; ++ this->our_mode = NULL; + + this->mpeg_parser = NULL; + +diff -r 717450d734f7 src/post/planar/pp.c +--- a/src/post/planar/pp.c Mon May 16 15:49:02 2011 +0100 ++++ b/src/post/planar/pp.c Mon May 16 19:46:49 2011 -0400 +@@ -35,6 +35,12 @@ + # include + #endif + ++#if LIBPOSTPROC_VERSION_MAJOR < 52 ++# define pp_context pp_context_t ++# define pp_mode pp_mode_t ++# define PP_PARAMETERS_T ++#endif ++ + #define PP_STRING_SIZE 256 /* size of pp mode string (including all options) */ + + /* plugin class initialization function */ +@@ -76,14 +82,15 @@ + + /* libpostproc specific stuff */ + int pp_flags; +- pp_context_t *pp_context; +- pp_mode_t *pp_mode; ++ pp_context *our_context; ++ pp_mode *our_mode; + + pthread_mutex_t lock; + }; + + + static int set_parameters (xine_post_t *this_gen, void *param_gen) { ++#ifdef PP_PARAMETERS_T + post_plugin_pp_t *this = (post_plugin_pp_t *)this_gen; + pp_parameters_t *param = (pp_parameters_t *)param_gen; + +@@ -92,17 +99,18 @@ + memcpy( &this->params, param, sizeof(pp_parameters_t) ); + + pthread_mutex_unlock (&this->lock); +- ++#endif + return 1; + } + + static int get_parameters (xine_post_t *this_gen, void *param_gen) { ++#ifdef PP_PARAMETERS_T + post_plugin_pp_t *this = (post_plugin_pp_t *)this_gen; + pp_parameters_t *param = (pp_parameters_t *)param_gen; + + + memcpy( param, &this->params, sizeof(pp_parameters_t) ); +- ++#endif + return 1; + } + +@@ -202,8 +210,8 @@ + if(cpu_caps & MM_ACCEL_X86_3DNOW) + this->pp_flags |= PP_CPU_CAPS_3DNOW; + +- this->pp_mode = NULL; +- this->pp_context = NULL; ++ this->our_mode = NULL; ++ this->our_context = NULL; + + pthread_mutex_init (&this->lock, NULL); + +@@ -248,13 +256,13 @@ + post_plugin_pp_t *this = (post_plugin_pp_t *)this_gen; + + if (_x_post_dispose(this_gen)) { +- if(this->pp_mode) { +- pp_free_mode(this->pp_mode); +- this->pp_mode = NULL; ++ if(this->our_mode) { ++ pp_free_mode(this->our_mode); ++ this->our_mode = NULL; + } +- if(this->pp_context) { +- pp_free_context(this->pp_context); +- this->pp_context = NULL; ++ if(this->our_context) { ++ pp_free_context(this->our_context); ++ this->our_context = NULL; + } + free(this); + } +@@ -304,7 +312,7 @@ + + pthread_mutex_lock (&this->lock); + +- if( !this->pp_context || ++ if( !this->our_context || + this->frame_width != yv12_frame->width || + this->frame_height != yv12_frame->height ) { + +@@ -312,32 +320,32 @@ + this->frame_height = yv12_frame->height; + pp_flags = this->pp_flags; + +- if(this->pp_context) +- pp_free_context(this->pp_context); ++ if(this->our_context) ++ pp_free_context(this->our_context); + +- this->pp_context = pp_get_context(frame->width, frame->height, pp_flags); ++ this->our_context = pp_get_context(frame->width, frame->height, pp_flags); + +- if(this->pp_mode) { +- pp_free_mode(this->pp_mode); +- this->pp_mode = NULL; ++ if(this->our_mode) { ++ pp_free_mode(this->our_mode); ++ this->our_mode = NULL; + } + } + +- if(!this->pp_mode) +- this->pp_mode = pp_get_mode_by_name_and_quality(this->params.mode, ++ if(!this->our_mode) ++ this->our_mode = pp_get_mode_by_name_and_quality(this->params.mode, + this->params.quality); + +- if(this->pp_mode) ++ if(this->our_mode) + pp_postprocess(yv12_frame->base, yv12_frame->pitches, + out_frame->base, out_frame->pitches, + (frame->width+7)&(~7), frame->height, + NULL, 0, +- this->pp_mode, this->pp_context, ++ this->our_mode, this->our_context, + 0 /*this->av_frame->pict_type*/); + + pthread_mutex_unlock (&this->lock); + +- if(this->pp_mode) { ++ if(this->our_mode) { + skip = out_frame->draw(out_frame, stream); + _x_post_frame_copy_up(frame, out_frame); + } else { diff --git a/libxine-1.2.2-fix_building_on_non_x86_systems.patch b/libxine-1.2.2-fix_building_on_non_x86_systems.patch new file mode 100644 index 0000000..655d550 --- /dev/null +++ b/libxine-1.2.2-fix_building_on_non_x86_systems.patch @@ -0,0 +1,46 @@ +From 5ea5bc2bc27d45da6c6d30279df7d824188a7745 Mon Sep 17 00:00:00 2001 +From: Petri Hintukainen +Date: Sun, 10 Jun 2012 06:45:02 +0000 +Subject: Fix building on non-x86 systems + +--- +diff --git a/src/post/deinterlace/plugins/greedy2frame_template.c b/src/post/deinterlace/plugins/greedy2frame_template.c +index d7e5ef5..e881248 100644 +--- a/src/post/deinterlace/plugins/greedy2frame_template.c ++++ b/src/post/deinterlace/plugins/greedy2frame_template.c +@@ -85,6 +85,7 @@ + */ + + ++#if defined(ARCH_X86) || defined(ARCH_X86_64) + #if !defined(MASKS_DEFINED) + #define MASKS_DEFINED + static const mmx_t Mask = { uq: 0x7f7f7f7f7f7f7f7fll }; +@@ -92,6 +93,7 @@ static const mmx_t Mask = { uq: 0x7f7f7f7f7f7f7f7fll }; + static const mmx_t GreedyTwoFrameThreshold = { ub: {TP, TP, TP, TP} }; + #undef TP + #endif ++#endif + + #if defined(IS_MMXEXT) + static void DeinterlaceGreedy2Frame_MMXEXT(uint8_t *output, int outstride, +diff --git a/src/post/deinterlace/plugins/greedy2frame_template_sse2.c b/src/post/deinterlace/plugins/greedy2frame_template_sse2.c +index 53c6876..5bc76d5 100644 +--- a/src/post/deinterlace/plugins/greedy2frame_template_sse2.c ++++ b/src/post/deinterlace/plugins/greedy2frame_template_sse2.c +@@ -84,11 +84,12 @@ + ** B0 | | B1 | | + */ + +- ++#if defined(ARCH_X86) || defined(ARCH_X86_64) + static const sse_t Mask128 = { uq: { 0x7f7f7f7f7f7f7f7fll, 0x7f7f7f7f7f7f7f7fll} }; + #define TP GREEDYTWOFRAMETHRESHOLD, GREEDYTWOFRAMETHRESHOLD2 + static const sse_t GreedyTwoFrameThreshold128 = { ub: {TP, TP, TP, TP, TP, TP, TP, TP} }; + #undef TP ++#endif + + static void DeinterlaceGreedy2Frame_SSE2(uint8_t *output, int outstride, + deinterlace_frame_data_t *data, +-- +cgit v0.9.0.2-39-g756e diff --git a/libxine-1.2.3-missing-header.patch b/libxine-1.2.3-missing-header.patch new file mode 100644 index 0000000..9132aac --- /dev/null +++ b/libxine-1.2.3-missing-header.patch @@ -0,0 +1,139 @@ +diff -Nru xine-lib-1.2.3.orig/src/xine-engine/accel_vaapi.h xine-lib-1.2.3/src/xine-engine/accel_vaapi.h +--- xine-lib-1.2.3.orig/src/xine-engine/accel_vaapi.h 1970-01-01 01:00:00.000000000 +0100 ++++ xine-lib-1.2.3/src/xine-engine/accel_vaapi.h 2013-05-31 21:25:50.006068027 +0200 +@@ -0,0 +1,135 @@ ++/* ++ * Copyright (C) 2008 the xine project ++ * ++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA ++ * ++ * ++ * Common acceleration definitions for vdpau ++ * ++ * ++ */ ++ ++#ifndef HAVE_XINE_ACCEL_VAAPI_H ++#define HAVE_XINE_ACCEL_VAAPI_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include ++#include ++#ifdef HAVE_FFMPEG_AVUTIL_H ++# include ++#else ++# include ++#endif ++ ++#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR >= 32) ++# define AVVIDEO 2 ++#else ++# define AVVIDEO 1 ++# define pp_context pp_context_t ++# define pp_mode pp_mode_t ++#endif ++ ++#define NUM_OUTPUT_SURFACES 22 ++ ++#define SURFACE_FREE 0 ++#define SURFACE_ALOC 1 ++#define SURFACE_RELEASE 2 ++#define SURFACE_RENDER 3 ++#define SURFACE_RENDER_RELEASE 5 ++ ++struct vaapi_equalizer { ++ VADisplayAttribute brightness; ++ VADisplayAttribute contrast; ++ VADisplayAttribute hue; ++ VADisplayAttribute saturation; ++}; ++ ++typedef struct ff_vaapi_context_s ff_vaapi_context_t; ++ ++struct ff_vaapi_context_s { ++ VADisplay va_display; ++ VAContextID va_context_id; ++ VAConfigID va_config_id; ++ int width; ++ int height; ++ int sw_width; ++ int sw_height; ++ int va_profile; ++ unsigned int va_colorspace; ++ VAImage va_subpic_image; ++ VASubpictureID va_subpic_id; ++ int va_subpic_width; ++ int va_subpic_height; ++ int is_bound; ++ void *gl_surface; ++ unsigned int soft_head; ++ unsigned int valid_context; ++ unsigned int va_head; ++ unsigned int va_soft_head; ++ vo_driver_t *driver; ++ unsigned int last_sub_image_fmt; ++ VASurfaceID last_sub_surface_id; ++ struct vaapi_equalizer va_equalizer; ++ VAImageFormat *va_image_formats; ++ int va_num_image_formats; ++ VAImageFormat *va_subpic_formats; ++ int va_num_subpic_formats; ++}; ++ ++typedef struct ff_vaapi_surface_s ff_vaapi_surface_t; ++typedef struct vaapi_accel_s vaapi_accel_t; ++ ++struct ff_vaapi_surface_s { ++ unsigned int index; ++ vaapi_accel_t *accel; ++ VASurfaceID va_surface_id; ++ unsigned int status; ++}; ++ ++struct vaapi_accel_s { ++ unsigned int index; ++ vo_frame_t *vo_frame; ++ ++#if AVVIDEO > 1 ++ int (*avcodec_decode_video2)(vo_frame_t *frame_gen, AVCodecContext *avctx, AVFrame *picture, ++ int *got_picture_ptr, AVPacket *avpkt); ++#else ++ int (*avcodec_decode_video)(vo_frame_t *frame_gen, AVCodecContext *avctx, AVFrame *picture, ++ int *got_picture_ptr, uint8_t *buf, int buf_size); ++#endif ++ VAStatus (*vaapi_init)(vo_frame_t *frame_gen, int va_profile, int width, int height, int softrender); ++ int (*profile_from_imgfmt)(vo_frame_t *frame_gen, enum PixelFormat pix_fmt, int codec_id, int vaapi_mpeg_sofdec); ++ ff_vaapi_context_t *(*get_context)(vo_frame_t *frame_gen); ++ int (*guarded_render)(vo_frame_t *frame_gen); ++ ff_vaapi_surface_t *(*get_vaapi_surface)(vo_frame_t *frame_gen); ++ void (*render_vaapi_surface)(vo_frame_t *frame_gen, ff_vaapi_surface_t *va_surface); ++ void (*release_vaapi_surface)(vo_frame_t *frame_gen, ff_vaapi_surface_t *va_surface); ++}; ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif ++ diff --git a/libxine.spec b/libxine.spec new file mode 100644 index 0000000..cd4fa88 --- /dev/null +++ b/libxine.spec @@ -0,0 +1,452 @@ +%define pkgname xine-lib +%define with_arts 0 + +Name: libxine +Version: 1.2.5 +Release: 1mamba +Epoch: 2 +Summary: A free multimedia player. It plays back CDs, DVDs, and VCDs +Group: System/Libraries +Vendor: openmamba +Distribution: openmamba +Packager: Aleph0 +URL: http://xinehq.de +Source: http://downloads.sourceforge.net/sourceforge/xine/%{pkgname}-%{version}.tar.xz +Patch0: %{name}-1.1.19-ffmpeg.patch +Patch1: %{name}-1.2.2-fix_building_on_non_x86_systems.patch +Patch2: libxine-1.2.3-missing-header.patch +License: GPL +%if %with_arts +BuildRequires: libarts-devel +%endif +## AUTOBUILDREQ-BEGIN +BuildRequires: GConf-devel +BuildRequires: glibc-devel +BuildRequires: ImageMagick-devel +BuildRequires: liba52dec-devel +BuildRequires: libaa-devel +BuildRequires: libalsa-devel +BuildRequires: libaudiofile-devel +BuildRequires: libcaca-devel +BuildRequires: libcdio-devel +BuildRequires: libdc1394-devel +BuildRequires: libdirectfb-devel +BuildRequires: libesound-devel +BuildRequires: libfaac-devel +BuildRequires: libfaad2-devel +BuildRequires: libfame-devel +BuildRequires: libflac-devel +BuildRequires: libGL-devel +BuildRequires: libglib-devel +BuildRequires: libGLU-devel +BuildRequires: libgnome-vfs-devel +BuildRequires: libgtk-devel +BuildRequires: libjack-devel +BuildRequires: liblame-devel +BuildRequires: libmng-devel +BuildRequires: libmodplug-devel +BuildRequires: libogg-devel +BuildRequires: libpostproc-devel +BuildRequires: libraw1394-devel +BuildRequires: libSDL-devel +BuildRequires: libsmbclient-devel +BuildRequires: libspeex-devel +BuildRequires: libstdc++6-devel +BuildRequires: libtheora-devel +BuildRequires: libvcdimager-devel +BuildRequires: libvorbis-devel +BuildRequires: libX11-devel +BuildRequires: libx264-devel +BuildRequires: libxcb-devel +BuildRequires: libXext-devel +BuildRequires: libXinerama-devel +BuildRequires: libXv-devel +BuildRequires: libxvidcore-devel +BuildRequires: libXvMC-devel +BuildRequires: libz-devel +BuildRequires: ORBit2-devel +## AUTOBUILDREQ-END +BuildRequires: libfreetype-devel +BuildRequires: libbonobo-devel +BuildRequires: libgomp-devel +BuildRequires: libIDL-devel +BuildRequires: libslang-devel +%if "%{_target_cpu}" == "i586" +BuildRequires: librte-devel +%endif +BuildRequires: libdvdnav-devel +BuildRequires: libpng-devel +BuildRequires: bison +BuildRequires: gettext-devel +BuildRequires: transfig >= 3.2.4 +BuildRequires: ImageMagick +BuildRequires: libdca-devel +Requires: ImageMagick +Provides: %{pkgname} = %{epoch}:%{version}-%{release} +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +# FIXME (missing Build Requirements): +# - sgmltools +# - checking for Libstk... no +# - checking for DirectFB... no +# - checking for DirectX... no +# - checking for rte_init in -lrte... no +# conftest.c:(.text+0xd): undefined reference to `rte_init' +# - checking for polypaudio... no + +%description +xine is a free (GPL-licensed) high-performance, portable and reusable multimedia playback engine. +xine itself is a shared library with an easy to use, yet powerful API which is used by many applications for smooth video playback and video processing purposes. + +%package devel +Summary: Devel files for xine libraries +Group: Development/Libraries +Requires: %{name} = %{epoch}:%{version}-%{release} +Provides: %{pkgname}-devel = %{epoch}:%{version}-%{release} + +%description devel +xine is a free (GPL-licensed) high-performance, portable and reusable multimedia playback engine. +xine itself is a shared library with an easy to use, yet powerful API which is used by many applications for smooth video playback and video processing purposes. + +This is the devel package for the xine-lib library. + +%prep +%setup -q -n %{pkgname}-%{version} +#%patch2 -p1 + +%build +export CFLAGS="$RPM_OPT_FLAGS -fomit-frame-pointer" +%configure \ + --enable-ipv6 \ + --enable-fb \ + --enable-directfb \ + --disable-altivec \ + --disable-vis \ + --disable-mlib \ +%if %with_arts + --with-arts \ +%else + --without-arts \ +%endif + --with-w32-path=%{_libdir}/win32/ \ + --with-external-ffmpeg \ + --with-libflac \ + --enable-modplug +# --enable-dha-kmod + +find ./ -name Makefile -exec \ + sed -i "s/\(.*-mcpu=\)[^ ]*\(.*\)/\1%{_target_cpu}\2/g" {} \; + +# fix to set correct ffmpeg include locations +sed -i "s|\(#define HAVE_FFMPEG_AVUTIL_H 1\)|//\1|" include/configure.h + +%make + +%install +[ %{buildroot} != / ] && rm -rf "%{buildroot}" +%makeinstall + +%find_lang libxine2 + +# create the folder for w32codecs +install -d %{buildroot}%{_libdir}/win32/ +echo "\ +win32 native dll codecs are available at +http://www.mplayerhq.hu/MPlayer/releases/codecs/ +" > %{buildroot}%{_libdir}/win32/README_w32codecs + +mv %{buildroot}%{_datadir}/doc/xine-lib \ + %{buildroot}%{_datadir}/doc/libxine-%{version} + +%clean +[ %{buildroot} != / ] && rm -rf "%{buildroot}" + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files -f libxine2.lang +%defattr(-,root,root) +%{_bindir}/xine-list-* +%dir %{_datadir}/xine-lib +%{_datadir}/xine-lib/* +%{_libdir}/*.so.* +%dir %{_libdir}/xine +%{_libdir}/xine/plugins/ +%dir %{_libdir}/win32 +%{_libdir}/win32/README_w32codecs +%{_mandir}/man1/xine-list-* +%{_mandir}/man5/xine.* +%exclude %{_datadir}/doc/libxine-%{version}/ +%doc AUTHORS COPYING + +%files devel +%defattr(-,root,root) +%{_bindir}/xine-config +%{_datadir}/aclocal/xine.m4 +%{_libdir}/pkgconfig/libxine.pc +%{_libdir}/*.la +%{_libdir}/*.so +%dir %{_includedir}/xine +%{_includedir}/xine/*.h +%{_includedir}/xine.h +%{_datadir}/doc/libxine-%{version}/ +%{_mandir}/man1/xine-config.* +%doc ChangeLog CREDITS TODO + +%changelog +* Tue Apr 08 2014 Automatic Build System 1.2.5-1mamba +- automatic version update by autodist + +* Tue Sep 24 2013 Automatic Build System 1.2.4-1mamba +- automatic version update by autodist + +* Sat Jun 01 2013 Automatic Build System 1.2.3-1mamba +- automatic version update by autodist + +* Sun Jun 10 2012 Automatic Build System 1.2.2-1mamba +- update to 1.2.2 + +* Mon Apr 02 2012 Automatic Build System 1.2.1-2mamba +- automatic version update by autodist + +* Sun Feb 12 2012 Automatic Build System 1.2.1-1mamba +- automatic version update by autodist + +* Mon Nov 14 2011 Automatic Build System 1.1.20-1mamba +- automatic version update by autodist + +* Sat Nov 05 2011 Silvan Calarco 1.1.19-3mamba +- rebuilt against ffmpeg 0.8 + +* Sun Aug 22 2010 Automatic Build System 1.1.19-2mamba +- automatic rebuild by autodist + +* Mon Jul 26 2010 Automatic Build System 1.1.19-1mamba +- automatic update to 1.1.19 by autodist + +* Fri Jul 09 2010 Automatic Build System 1.1.18.1-5mamba +- automatic rebuild by autodist + +* Wed Jun 30 2010 Automatic Build System 1.1.18.1-4mamba +- automatic rebuild by autodist + +* Wed Jun 09 2010 Automatic Build System 1.1.18.1-3mamba +- automatic rebuild by autodist + +* Thu Jun 03 2010 Automatic Build System 1.1.18.1-2mamba +- automatic rebuild by autodist + +* Wed Mar 10 2010 Davide Madrisan 1.1.18.1-1mamba +- update to 1.1.18.1 + +* Thu Jan 14 2010 Automatic Build System 1.1.17-2mamba +- automatic rebuild by autodist + +* Sun Dec 06 2009 Automatic Build System 1.1.17-1mamba +- automatic update to 1.1.17 by autodist + +* Wed Nov 25 2009 Automatic Build System 1.1.16.3-5mamba +- automatic rebuild by autodist + +* Tue Jul 14 2009 Automatic Build System 1.1.16.3-4mamba +- automatic rebuild by autodist + +* Mon Jun 29 2009 Automatic Build System 1.1.16.3-3mamba +- automatic rebuild by autodist + +* Wed May 20 2009 Automatic Build System 1.1.16.3-2mamba +- automatic rebuild by autodist + +* Mon Apr 06 2009 Silvan Calarco 1.1.16.3-1mamba +- automatic update to 1.1.16.3 by autodist + +* Mon Feb 16 2009 Silvan Calarco 1.1.16.2-2mamba +- rebuilt + +* Tue Feb 10 2009 Silvan Calarco 1.1.16.2-1mamba +- automatic update to 1.1.16.2 by autodist + +* Mon Jan 12 2009 Silvan Calarco 1.1.16.1-1mamba +- automatic update to 1.1.16.1 by autodist + +* Thu Jan 08 2009 Silvan Calarco 1.1.16-1mamba +- automatic update to 1.1.16 by autodist + +* Fri Jan 02 2009 Silvan Calarco 1.1.15-5mamba +- automatic rebuild by autodist + +* Wed Dec 10 2008 Silvan Calarco 1.1.15-4mamba +- automatic rebuild by autodist + +* Fri Nov 14 2008 Silvan Calarco 1.1.15-3mamba +- automatic rebuild by autodist + +* Fri Sep 05 2008 Silvan Calarco 1.1.15-2mamba +- fixed a compilation issue in detected while compiling kde software + +* Wed Aug 13 2008 gil 1.1.15-1mamba +- update to 1.1.15 + +* Mon Jun 30 2008 Silvan Calarco 1.1.14-1mamba +- update to 1.1.14 + +* Tue Jun 24 2008 Silvan Calarco 1.1.13-4mamba +- enabled build with libflac + +* Sat Jun 21 2008 Silvan Calarco 1.1.13-3mamba +- rebuilt with use of external ffmpeg +- disabled arts + +* Tue Jun 17 2008 Silvan Calarco 1.1.13-2mamba +- rebuilt against ImageMagick 6.4.1 + +* Mon Jun 16 2008 Aleph0 1.1.13-1mamba +- update to 1.1.13 +- fixed CVE-2008-1878 and other integer overflows + +* Tue Apr 15 2008 Aleph0 1.1.12-1mamba +- update to 1.1.12 (also fixes CVE-2008-1686) + +* Thu Mar 20 2008 Aleph0 1.1.11-1mamba +- update to 1.1.11 (also fixes CVE-2008-0073) + +* Tue Feb 12 2008 Aleph0 1.1.10.1-1mamba +- update to 1.1.10.1 (fixes CVE-2008-0486) + +* Tue Jan 29 2008 Aleph0 1.1.10-1mamba +- update to 1.1.10 (fixes CVE-2006-1664) + +* Tue Jan 15 2008 Aleph0 1.1.9.1-1mamba +- update to 1.1.9.1 +- fix against CVE-2008-0225 + +* Mon Jan 07 2008 Aleph0 1.1.9-1mamba +- update to 1.1.9 + +* Thu Aug 30 2007 Aleph0 1.1.8-1mamba +- update to 1.1.8 + +* Thu Jun 07 2007 Aleph0 1.1.7-1mamba +- update to 1.1.7 (built with arts support for backward compatibility) +- added the build requirements for libdca-devel + +* Wed Apr 18 2007 Aleph0 1.1.6-2mamba +- rebuilt againt libaa 1.4.0 + +* Wed Apr 18 2007 Aleph0 1.1.6-1mamba +- update to version 1.1.6 by autospec +- build against libcaca 0.99.beta11 + +* Tue Apr 10 2007 Aleph0 1.1.5-1mamba +- update to version 1.1.5 by autospec +- fixed security issue CVE-2007-1246 + +* Mon Jan 29 2007 Aleph0 1.1.4-1qilnx +- update to version 1.1.4 by autospec +- documentation moved to devel package +- manpage for xine-config moved to devel package + +* Wed Jan 17 2007 Aleph0 1.1.3-1qilnx +- update to version 1.1.3 by autospec +- security update: fixes CVE-2006-2200 and a buffer overrun in Real Media + input plugin + +* Tue Jul 11 2006 Davide Madrisan 1.1.2-1qilnx +- update to version 1.1.2 by autospec +- this version fixes CVE-2005-4048, CVE-2006-2802, CVE-2006-1664 + +* Wed Jun 14 2006 Stefano Cotta Ramusino 1.1.1-5qilnx +- added conditional build requirement + +* Wed Jan 11 2006 Davide Madrisan 1.1.1-4qilnx +- fixed requirement for devel package +- added missing build requirement (libdirectfb-devel) + +* Mon Jan 02 2006 Davide Madrisan 1.1.1-3qilnx +- rebuilt + +* Wed Dec 21 2005 Davide Madrisan 1.1.1-2qilnx +- security update for CVE-2005-4048 (embedded ffmpeg), qibug#99 + +* Thu Nov 17 2005 Davide Madrisan 1.1.1-1qilnx +- update to version 1.1.1 by autospec + +* Tue Nov 08 2005 Davide Madrisan 1.1.0-1qilnx +- update to version 1.1.0 by autospec +- fixed security issue QSA-2005-118 (CAN-2005-2967) + +* Wed Jul 27 2005 Davide Madrisan 1.0.2-1qilnx +- update to version 1.0.2 by autospec + +* Thu Jun 09 2005 Davide Madrisan 1.0.1-3qilnx +- rebuild with support for speex enabled + +* Thu Apr 28 2005 Davide Madrisan 1.0.1-2qilnx +- added some missing build requirements + +* Tue Apr 26 2005 Davide Madrisan 1.0.1-1qilnx +- update to version 1.0.1 by autospec + +* Sat Jan 01 2005 Silvan Calarco 1.0-1qilnx +- add obsolete entry for previous rc versions + +* Sat Jan 01 2005 Silvan Calarco 1.0-1qilnx +- update to version 1.0 + +* Fri Dec 24 2004 Davide Madrisan 1rc8-2qilnx +- rebuild with new libe2fs-devel, libkrb5-devel packages + +* Thu Dec 16 2004 Davide Madrisan 1rc8-1qilnx +- update to version 1rc8 by autospec + +* Tue Nov 16 2004 Davide Madrisan 1rc7-1qilnx +- new version rebuild + +* Sat Oct 02 2004 Davide Madrisan 1rc6-1qilnx +- new version rebuild +- added needed BuildRequires entry for `libcaca' and `libtheora' +- added the file README_w32codecs +- also fixes security issues (QSA-2004-039) + +* Sat Jun 26 2004 Davide Madrisan 1rc5-1qilnx +- new version rebuild (important bugfixes and a security fix) + +* Tue May 11 2004 Davide Madrisan 1rc4-2qilnx +- hack to force the compilation for %{_target_cpu} cpus + +* Fri Apr 30 2004 Davide Madrisan 1rc4-1qilnx +- new version rebuild (fixes a vulnerability in xine's RTSP streaming code) + +* Fri Apr 09 2004 Davide Madrisan 1rc3c-1qilnx +- new version rebuild +- added the directory for the win32dll codecs +- added support for Free Lossless Audio Codec (FLAC) and Fast Assembly Mpeg + Encoding (FAME) library + +* Sat Mar 20 2004 Davide Madrisan 1rc3b-1qilnx +- new version rebuild +- added ESD (libesound) support + +* Thu Dec 29 2003 Davide Madrisan 1rc3a-1qilnx +- rebuilt with latest rc ("emergency bugfix release") + +* Thu Dec 18 2003 Davide Madrisan 1rc3-1qilnx +- rebuilt with latest rc + +* Mon Oct 27 2003 Davide Madrisan 1rc2-1qilnx +- rebuilt with latest version +- added missing BuildRequires entries + +* Mon Oct 06 2003 Davide Madrisan 1rc1-1qilnx +- rebuilt with version 1rc1 + +* Thu Sep 04 2003 Davide Madrisan 1rc0a-2qilnx +- added support for libSDL + +* Wed Sep 03 2003 Davide Madrisan 1rc0a-1qilnx +- rebuilt with version 1rc0a +- dependencies updated to support OGG/VORBIS, freetype2, gnome-vfs +- workarounds to force gcc -march to i586 and bypass the include Xlib.h bug + +* Thu Jul 31 2003 Silvan Calarco 1beta12-1qilnx +- first build for xine