diff --git a/community/xine-lib/010-xine-lib-libcaca-0.99.beta20-fix.patch b/community/xine-lib/010-xine-lib-libcaca-0.99.beta20-fix.patch deleted file mode 100644 index a93ff4fdf..000000000 --- a/community/xine-lib/010-xine-lib-libcaca-0.99.beta20-fix.patch +++ /dev/null @@ -1,116 +0,0 @@ ---- a/m4/video_out.m4 -+++ b/m4/video_out.m4 -@@ -103,6 +103,7 @@ AC_DEFUN([XINE_VIDEO_OUT_PLUGINS], [ - if test x"$have_caca$have_cucul" = x"yesyes"; then - HAVE_CUCUL=1 - AC_SUBST([HAVE_CUCUL]) -+ AC_DEFINE([HAVE_CUCUL], [], [Define this if you have the legacy libcaca with separate libcucul.]) - fi - - ---- a/src/video_out/video_out_caca.c -+++ b/src/video_out/video_out_caca.c -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2003-2019 the xine project -+ * Copyright (C) 2003-2021 the xine project - * - * This file is part of xine, a free video player. - * -@@ -35,13 +35,21 @@ - #include - #include - #include -+ - #ifdef HAVE_CUCUL --#include -+# include -+# define caca_canvas_t cucul_canvas_t -+# define caca_create_canvas cucul_create_canvas -+# define caca_get_canvas_width cucul_get_canvas_width -+# define caca_get_canvas_height cucul_get_canvas_height -+# define caca_free_canvas cucul_free_canvas -+# define caca_dither_t cucul_dither_t -+# define caca_create_dither define cucul_create_dither -+# define caca_dither_bitmap cucul_dither_bitmap -+# define caca_free_dither cucul_free_dither - #endif - #include - -- -- - #include "xine.h" - #include - #include -@@ -56,7 +64,7 @@ typedef struct caca_frame_s { - - vo_frame_t vo_frame; - -- cucul_dither_t *pixmap_s; /* pixmap info structure */ -+ caca_dither_t *pixmap_s; /* pixmap info structure */ - uint8_t *pixmap_d; /* pixmap data */ - unsigned int width, height; - -@@ -74,7 +82,7 @@ typedef struct { - - yuv2rgb_factory_t *yuv2rgb_factory; - -- cucul_canvas_t *cv; -+ caca_canvas_t *cv; - caca_display_t *dp; - - } caca_driver_t; -@@ -104,7 +112,7 @@ static void caca_dispose_frame (vo_frame - - free (frame->pixmap_d); - if (frame->pixmap_s) -- cucul_free_dither (frame->pixmap_s); -+ caca_free_dither (frame->pixmap_s); - - frame->yuv2rgb->dispose (frame->yuv2rgb); - -@@ -163,7 +171,7 @@ static void caca_update_frame_format (vo - _x_freep (&frame->pixmap_d); - - if (frame->pixmap_s) { -- cucul_free_dither (frame->pixmap_s); -+ caca_free_dither (frame->pixmap_s); - frame->pixmap_s = NULL; - } - -@@ -172,7 +180,7 @@ static void caca_update_frame_format (vo - frame->format = format; - - frame->pixmap_d = (uint8_t *) calloc (height, width * 4); -- frame->pixmap_s = cucul_create_dither (32, width, height, width * 4, -+ frame->pixmap_s = caca_create_dither (32, width, height, width * 4, - 0xff0000, 0xff00, 0xff, 0); - - if (format == XINE_IMGFMT_YV12) { -@@ -214,7 +222,7 @@ static void caca_display_frame (vo_drive - - frame->vo_frame.free (&frame->vo_frame); - -- cucul_dither_bitmap(this->cv, 0, 0, cucul_get_canvas_width(this->cv)-1, cucul_get_canvas_height(this->cv)-1, -+ caca_dither_bitmap(this->cv, 0, 0, caca_get_canvas_width(this->cv)-1, caca_get_canvas_height(this->cv)-1, - frame->pixmap_s, frame->pixmap_d); - caca_refresh_display (this->dp); - } -@@ -262,7 +270,7 @@ static void caca_dispose_driver (vo_driv - caca_driver_t *this = (caca_driver_t*) this_gen; - this->yuv2rgb_factory->dispose (this->yuv2rgb_factory); - caca_free_display(this->dp); -- cucul_free_canvas(this->cv); -+ caca_free_canvas(this->cv); - - free(this); - } -@@ -309,7 +317,7 @@ static vo_driver_t *open_plugin (video_d - this->cv = caca_get_canvas(dp); - this->dp = dp; - } else { -- this->cv = cucul_create_canvas(0, 0); -+ this->cv = caca_create_canvas(0, 0); - this->dp = caca_create_display(this->cv); - } - diff --git a/community/xine-lib/020-xine-lib-ffmpeg-5.0-fix.patch b/community/xine-lib/020-xine-lib-ffmpeg-5.0-fix.patch deleted file mode 100644 index 38a9fff5e..000000000 --- a/community/xine-lib/020-xine-lib-ffmpeg-5.0-fix.patch +++ /dev/null @@ -1,696 +0,0 @@ ---- a/src/combined/ffmpeg/demux_avformat.c -+++ b/src/combined/ffmpeg/demux_avformat.c -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2013-2020 the xine project -+ * Copyright (C) 2013-2021 the xine project - * Copyright (C) 2013-2020 Petri Hintukainen - * - * This file is part of xine, a free video player. -@@ -543,28 +543,28 @@ static int send_avpacket(avformat_demux_ - { - int64_t stream_pos = avio_tell(this->fmt_ctx->pb); - int64_t stream_length = avio_size(this->fmt_ctx->pb); -- AVPacket pkt; -+ XFF_PACKET_DECL (pkt); - uint32_t buffer_type = 0; - fifo_buffer_t *fifo = NULL; - -- av_init_packet(&pkt); -- pkt.data = NULL; -- pkt.size = 0; -+ XFF_PACKET_NEW (pkt); -+ pkt->data = NULL; -+ pkt->size = 0; - - /* read frame from the file */ -- if (av_read_frame(this->fmt_ctx, &pkt) < 0) { -+ if (av_read_frame(this->fmt_ctx, pkt) < 0) { - xprintf (this->stream->xine, XINE_VERBOSITY_LOG, LOG_MODULE": av_read_frame() failed\n"); - return -1; - } - - /* map to xine fifo / buffer type */ -- if (pkt.stream_index >= 0 && (unsigned)pkt.stream_index < this->num_streams) { -- buffer_type = this->xine_buf_type[pkt.stream_index]; -+ if (pkt->stream_index >= 0 && (unsigned)pkt->stream_index < this->num_streams) { -+ buffer_type = this->xine_buf_type [pkt->stream_index]; - } else { - // TODO: new streams found - } - -- if (this->video_stream_idx >= 0 && pkt.stream_index == this->video_stream_idx) { -+ if (this->video_stream_idx >= 0 && pkt->stream_index == this->video_stream_idx) { - fifo = this->stream->video_fifo; - } else { - fifo = this->stream->audio_fifo; -@@ -577,17 +577,17 @@ static int send_avpacket(avformat_demux_ - int total_time = (int)((int64_t)this->fmt_ctx->duration * 1000 / AV_TIME_BASE); - int input_time = input_normpos * total_time / 65535; - -- if (pkt.pts != AV_NOPTS_VALUE) { -- AVStream *stream = this->fmt_ctx->streams[pkt.stream_index]; -- pts = (int64_t)(pkt.pts * stream->time_base.num * 90000 / stream->time_base.den); -+ if (pkt->pts != AV_NOPTS_VALUE) { -+ AVStream *stream = this->fmt_ctx->streams [pkt->stream_index]; -+ pts = (int64_t)(pkt->pts * stream->time_base.num * 90000 / stream->time_base.den); - check_newpts(this, pts); - } - -- _x_demux_send_data(fifo, pkt.data, pkt.size, pts, buffer_type, 0/*decoder_flags*/, -+ _x_demux_send_data (fifo, pkt->data, pkt->size, pts, buffer_type, 0/*decoder_flags*/, - input_normpos, input_time, total_time, 0/*frame_number*/); - } - -- XFF_PACKET_UNREF(&pkt); -+ XFF_PACKET_UNREF (pkt); - - return 1; - } ---- a/src/combined/ffmpeg/ff_audio_decoder.c -+++ b/src/combined/ffmpeg/ff_audio_decoder.c -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2001-2020 the xine project -+ * Copyright (C) 2001-2021 the xine project - * - * This file is part of xine, a free video player. - * -@@ -74,7 +74,7 @@ typedef struct ff_audio_decoder_s { - int size; - - AVCodecContext *context; -- AVCodec *codec; -+ const AVCodec *codec; - - char *decode_buffer; - int decoder_ok; -@@ -83,6 +83,9 @@ typedef struct ff_audio_decoder_s { - #if XFF_AUDIO > 3 - AVFrame *av_frame; - #endif -+#if XFF_AUDIO > 2 -+ XFF_PACKET_DECL (avpkt); -+#endif - - /* AAC ADTS */ - uint32_t buftype; -@@ -690,11 +693,9 @@ static int ff_audio_decode (ff_audio_dec - else parsed = 0; - - #if XFF_AUDIO > 2 -- AVPacket avpkt; -- av_init_packet (&avpkt); -- avpkt.data = buf; -- avpkt.size = size; -- avpkt.flags = AV_PKT_FLAG_KEY; -+ this->avpkt->data = buf; -+ this->avpkt->size = size; -+ this->avpkt->flags = AV_PKT_FLAG_KEY; - # if XFF_AUDIO > 3 - int got_frame; - float gain = this->class->gain; -@@ -702,7 +703,7 @@ static int ff_audio_decode (ff_audio_dec - this->av_frame = XFF_ALLOC_FRAME (); - # if XFF_AUDIO == 5 - { -- int err = avcodec_send_packet (this->context, &avpkt); -+ int err = avcodec_send_packet (this->context, this->avpkt); - /* xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "ff_audio_dec: send (%d) = %d.\n", (int)size, err); */ - /* multiple frames per packet */ - consumed = (err >= 0) ? size : ((err == AVERROR (EAGAIN)) ? 0 : err); -@@ -712,7 +713,7 @@ static int ff_audio_decode (ff_audio_dec - got_frame = (err == 0); - } - # else -- consumed = avcodec_decode_audio4 (this->context, this->av_frame, &got_frame, &avpkt); -+ consumed = avcodec_decode_audio4 (this->context, this->av_frame, &got_frame, this->avpkt); - # endif - if ((consumed >= 0) && got_frame) { - /* setup may have altered while decoding */ -@@ -970,7 +971,7 @@ static int ff_audio_decode (ff_audio_dec - } - } else *decode_buffer_size = 0; - # else -- consumed = avcodec_decode_audio3 (this->context, decode_buffer, decode_buffer_size, &avpkt); -+ consumed = avcodec_decode_audio3 (this->context, decode_buffer, decode_buffer_size, this->avpkt); - ff_map_channels (this); - # endif - #else -@@ -1286,6 +1287,8 @@ static void ff_audio_dispose (audio_deco - this->context->extradata_size = 0; - XFF_FREE_CONTEXT (this->context); - -+ XFF_PACKET_UNREF (this->avpkt); -+ - free (this_gen); - } - -@@ -1313,6 +1316,10 @@ static audio_decoder_t *ff_audio_open_pl - # endif - #endif - -+# if XFF_AUDIO > 2 -+ XFF_PACKET_NEW (this->avpkt); -+#endif -+ - this->class = (ff_audio_class_t *)class_gen; - this->stream = stream; - ---- a/src/combined/ffmpeg/ff_video_decoder.c -+++ b/src/combined/ffmpeg/ff_video_decoder.c -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2001-2020 the xine project -+ * Copyright (C) 2001-2021 the xine project - * - * This file is part of xine, a free video player. - * -@@ -51,23 +51,32 @@ - #include "ffmpeg_decoder.h" - #include "ff_mpeg_parser.h" - -+#include "ffmpeg_compat.h" -+ -+#if LIBAVCODEC_VERSION_INT >= XFF_INT_VERSION(59,0,100) -+# undef HAVE_POSTPROC -+#endif - #ifdef HAVE_POSTPROC --#ifdef HAVE_FFMPEG_AVUTIL_H --# include --#else --# include --# include -+# ifdef HAVE_FFMPEG_AVUTIL_H -+# include -+# else -+# include -+# include -+# endif - #endif --#endif -- --#ifdef HAVE_VA_VA_X11_H --# include -+ -+#ifdef HAVE_VA_VA_H -+# if XFF_VAAPI == 1 -+# include -+# elif XFF_VAAPI == 2 -+# warning rumms -+# include -+# include -+# endif - # include "accel_vaapi.h" - # define ENABLE_VAAPI 1 - #endif - --#include "ffmpeg_compat.h" -- - #if defined(ARCH_X86) && defined(HAVE_MMX) - # include "xine_mmx.h" - # define ENABLE_EMMS -@@ -140,7 +149,7 @@ struct ff_video_decoder_s { - AVFrame *av_frame; - AVFrame *av_frame2; - AVCodecContext *context; -- AVCodec *codec; -+ const AVCodec *codec; - - #ifdef HAVE_POSTPROC - int pp_quality; -@@ -187,7 +196,15 @@ struct ff_video_decoder_s { - #ifdef ENABLE_VAAPI - int vaapi_width, vaapi_height; - int vaapi_profile; -+# if XFF_VAAPI == 1 - struct vaapi_context vaapi_context; -+# elif XFF_VAAPI == 2 -+ /* these are _here_ for debugging mostly. */ -+ AVBufferRef *vaapi_av_ctx_ref; -+ AVHWDeviceContext *vaapi_av_ctx; -+ AVVAAPIDeviceContext *vaapi_hw_ctx; -+ AVVAAPIHWConfig *vaapi_hw_cfg; -+# endif - const struct vaapi_accel_funcs_s *accel; - vo_frame_t *accel_img; - #endif -@@ -210,12 +227,79 @@ struct ff_video_decoder_s { - /* see get_buffer () */ - int use_emms; - #endif -+ -+#if XFF_VIDEO > 1 -+ XFF_PACKET_DECL (avpkt); -+#endif - }; - - /* import color matrix names */ - #define CM_HAVE_YCGCO_SUPPORT 1 - #include "../../video_out/color_matrix.c" - -+#ifdef ENABLE_VAAPI -+# if XFF_VAAPI == 2 -+ -+static void ff_vaapi_stop (ff_video_decoder_t *this) { -+ if (this->vaapi_av_ctx) { -+ av_buffer_unref (&this->vaapi_av_ctx_ref); -+ this->vaapi_av_ctx = NULL; -+ this->vaapi_av_ctx_ref = NULL; -+ } -+} -+ -+static void ff_vaapi_free_ctx (AVHWDeviceContext *ctx) { -+ ff_video_decoder_t *this; -+ -+ if (!ctx) -+ return; -+ this = (ff_video_decoder_t *)ctx->user_opaque; -+ if (!this) -+ return; -+ -+ av_free (this->vaapi_hw_cfg); -+ this->vaapi_hw_cfg = NULL; -+} -+ -+static int ff_vaapi_start (ff_video_decoder_t *this, VADisplay display, VAConfigID config_id) { -+ xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, -+ "ffmpeg_video_dec: ff_vaapi_start (display = %p, config_id = %d).\n", -+ (void *)display, (int)config_id); -+ -+ this->vaapi_av_ctx_ref = av_hwdevice_ctx_alloc (AV_HWDEVICE_TYPE_VAAPI); -+ if (!this->vaapi_av_ctx_ref) -+ return 0; -+ this->vaapi_av_ctx = (AVHWDeviceContext *)this->vaapi_av_ctx_ref->data; -+ if (!this->vaapi_av_ctx) { -+ ff_vaapi_stop (this); -+ return 0; -+ } -+ -+ this->vaapi_hw_ctx = (AVVAAPIDeviceContext *)this->vaapi_av_ctx->hwctx; -+ if (!this->vaapi_hw_ctx) { -+ ff_vaapi_stop (this); -+ return 0; -+ } -+ this->vaapi_av_ctx->user_opaque = this; -+ this->vaapi_av_ctx->free = ff_vaapi_free_ctx; -+ this->vaapi_hw_ctx->display = display; -+ -+ this->vaapi_hw_cfg = (AVVAAPIHWConfig *)av_hwdevice_hwconfig_alloc (this->vaapi_av_ctx_ref); -+ if (!this->vaapi_hw_cfg) { -+ ff_vaapi_stop (this); -+ return 0; -+ } -+ this->vaapi_hw_cfg->config_id = config_id; -+ -+ if (av_hwdevice_ctx_init (this->vaapi_av_ctx_ref)) { -+ ff_vaapi_stop (this); -+ return 0; -+ } -+ return 1; -+} -+ -+# endif -+#endif - - static void ff_check_colorspace (ff_video_decoder_t *this) { - int i, cm, caps; -@@ -481,9 +565,20 @@ static int get_buffer_vaapi_vld (AVCodec - ff_vaapi_context_t *va_context = this->accel->get_context (this->accel_img); - - if (va_context) { -+# if XFF_VAAPI == 2 -+ /* avcodec.h saye custom frame allocators shall use AVCodecContext.hw_frames_ctx instead. -+ * however, avcodec_default_get_buffer2 () seems the only 1 using it as such. */ -+ if (ff_vaapi_start (this, va_context->va_display, va_context->va_config_id)) { -+ AVBufferRef *old_vaapi_av_ctx_ref = context->hw_device_ctx; -+ -+ context->hw_device_ctx = this->vaapi_av_ctx_ref; -+ av_buffer_unref (&old_vaapi_av_ctx_ref); -+ } -+# else - this->vaapi_context.config_id = va_context->va_config_id; - this->vaapi_context.context_id = va_context->va_context_id; - this->vaapi_context.display = va_context->va_display; -+# endif - } - } - } -@@ -867,11 +962,22 @@ static enum PixelFormat get_format(struc - context->draw_horiz_band = NULL; - context->slice_flags = SLICE_FLAG_CODED_ORDER | SLICE_FLAG_ALLOW_FIELD; - -+# if XFF_VAAPI == 2 -+ /* avcodec.h saye custom frame allocators shall use AVCodecContext.hw_frames_ctx instead. -+ * however, avcodec_default_get_buffer2 () seems the only 1 using it as such. */ -+ if (ff_vaapi_start (this, va_context->va_display, va_context->va_config_id)) { -+ AVBufferRef *old_vaapi_av_ctx_ref = context->hw_device_ctx; -+ -+ context->hw_device_ctx = this->vaapi_av_ctx_ref; -+ av_buffer_unref (&old_vaapi_av_ctx_ref); -+ } -+# else - this->vaapi_context.config_id = va_context->va_config_id; - this->vaapi_context.context_id = va_context->va_context_id; - this->vaapi_context.display = va_context->va_display; - - context->hwaccel_context = &this->vaapi_context; -+# endif - this->pts = 0; - - return fmt[i]; -@@ -955,7 +1061,12 @@ static void init_video_codec (ff_video_d - if( this->codec->capabilities & AV_CODEC_CAP_DR1 && this->class->enable_dri ) { - # ifdef XFF_AV_BUFFER - this->context->get_buffer2 = get_buffer; -+# if XFF_THREAD_SAFE_CB == 2 -+# warning h.264 still needs this set, or falls back to indirect rendering. please ignore the next warning. -+# endif -+# if XFF_THREAD_SAFE_CB != 0 - this->context->thread_safe_callbacks = 1; -+# endif - # if XFF_VIDEO != 3 - this->context->refcounted_frames = 1; - # endif -@@ -1162,9 +1273,9 @@ static void pp_change_quality (ff_video_ - - static void init_postprocess (ff_video_decoder_t *this) { - #ifdef HAVE_POSTPROC --#if defined(ARCH_X86) -+# if defined(ARCH_X86) - uint32_t cpu_caps; --#endif -+# endif - - /* Allow post processing on mpeg-4 (based) codecs */ - switch(this->codec->id) { -@@ -1183,7 +1294,7 @@ static void init_postprocess (ff_video_d - - this->pp_flags = PP_FORMAT_420; - --#if defined(ARCH_X86) -+# if defined(ARCH_X86) - /* Detect what cpu accel we have */ - cpu_caps = xine_mm_accel(); - -@@ -1195,10 +1306,12 @@ static void init_postprocess (ff_video_d - - if(cpu_caps & MM_ACCEL_X86_3DNOW) - this->pp_flags |= PP_CPU_CAPS_3DNOW; --#endif -+# endif - - /* Set level */ - pp_change_quality(this); -+#else -+ (void)this; - #endif /* HAVE_POSTPROC */ - } - -@@ -1848,15 +1961,13 @@ static int decode_video_wrapper (ff_vide - #endif /* ENABLE_VAAPI */ - - #if XFF_VIDEO > 1 -- AVPacket avpkt; -- av_init_packet(&avpkt); -- avpkt.data = buf; -- avpkt.size = buf_size; -- avpkt.flags = AV_PKT_FLAG_KEY; -+ this->avpkt->data = buf; -+ this->avpkt->size = buf_size; -+ this->avpkt->flags = AV_PKT_FLAG_KEY; - - # if XFF_PALETTE == 2 || XFF_PALETTE == 3 - if (buf && this->palette_changed) { -- uint8_t *sd = av_packet_new_side_data (&avpkt, AV_PKT_DATA_PALETTE, 256 * 4); -+ uint8_t *sd = av_packet_new_side_data (this->avpkt, AV_PKT_DATA_PALETTE, 256 * 4); - if (sd) - memcpy (sd, this->palette, 256 * 4); - } -@@ -1868,7 +1979,7 @@ static int decode_video_wrapper (ff_vide - { - int e = AVERROR (EAGAIN); - if (buf || !this->flush_packet_sent) { -- e = avcodec_send_packet (this->context, &avpkt); -+ e = avcodec_send_packet (this->context, this->avpkt); - this->flush_packet_sent = (buf == NULL); - } - len = (e == AVERROR (EAGAIN)) ? 0 : buf_size; -@@ -1878,7 +1989,7 @@ static int decode_video_wrapper (ff_vide - # else - { - int got_picture = 0; -- len = avcodec_decode_video2 (this->context, av_frame, &got_picture, &avpkt); -+ len = avcodec_decode_video2 (this->context, av_frame, &got_picture, this->avpkt); - if ((len < 0) || (len > (int)buf_size)) { - *err = got_picture ? 0 : len; - len = buf_size; -@@ -1891,16 +2002,16 @@ static int decode_video_wrapper (ff_vide - # if XFF_PALETTE == 2 || XFF_PALETTE == 3 - if (buf && this->palette_changed) { - /* Prevent freeing our data buffer */ -- avpkt.data = NULL; -- avpkt.size = 0; -+ this->avpkt->data = NULL; -+ this->avpkt->size = 0; - # if XFF_PALETTE == 2 - /* TJ. Oh dear and sigh. - AVPacket side data handling is broken even in ffmpeg 1.1.1 - see avcodec/avpacket.c - The suggested av_free_packet () would leave a memory leak here, and - ff_packet_free_side_data () is private. */ -- av_destruct_packet (&avpkt); -+ av_destruct_packet (this->avpkt); - # else /* XFF_PALETTE == 3 */ -- XFF_PACKET_UNREF (&avpkt); -+ /* XFF_PACKET_UNREF (this->avpkt); */ ; - # endif - this->palette_changed = 0; - } -@@ -2763,6 +2874,10 @@ static void ff_dispose (video_decoder_t - XFF_FREE_CONTEXT (this->context); - } - -+#if XFF_VIDEO > 1 -+ XFF_PACKET_UNREF (this->avpkt); -+#endif -+ - if( this->av_frame ) - XFF_FREE_FRAME( this->av_frame ); - if (this->av_frame2) -@@ -2805,7 +2920,7 @@ static void ff_dispose (video_decoder_t - static video_decoder_t *ff_video_open_plugin (video_decoder_class_t *class_gen, xine_stream_t *stream) { - - ff_video_decoder_t *this ; -- AVCodec *codec = NULL; -+ const AVCodec *codec = NULL; - uint32_t video_type; - size_t i; - -@@ -2915,6 +3030,10 @@ static video_decoder_t *ff_video_open_pl - this->debug_fmt = -1; - #endif - -+#if XFF_VIDEO > 1 -+ XFF_PACKET_NEW (this->avpkt); -+#endif -+ - #ifdef ENABLE_VAAPI - if (this->class->enable_vaapi && (stream->video_out->get_capabilities(stream->video_out) & VO_CAP_VAAPI)) { - xprintf(this->class->xine, XINE_VERBOSITY_LOG, _("ffmpeg_video_dec: vaapi_mpeg_softdec %d\n"), ---- a/src/combined/ffmpeg/ffmpeg_compat.h -+++ b/src/combined/ffmpeg/ffmpeg_compat.h -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2000-2018 the xine project -+ * Copyright (C) 2000-2021 the xine project - * - * This file is part of xine, a unix video player. - * -@@ -130,6 +130,12 @@ - # define XFF_PALETTE 3 - #endif - -+#if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(59,0,100) /** << revise this */ -+# define XFF_VAAPI 1 /** << libavcodec/vaapi.h */ -+#else -+# define XFF_VAAPI 2 /** << libavutil/hwcontext.h, libavutil/hwcontext_vaapi.h */ -+#endif -+ - #if LIBAVUTIL_VERSION_INT >= XFF_INT_VERSION(52,0,0) - # define PIX_FMT_NONE AV_PIX_FMT_NONE - # define PIX_FMT_YUV420P AV_PIX_FMT_YUV420P -@@ -138,7 +144,6 @@ - # define PIX_FMT_YUVJ444P AV_PIX_FMT_YUVJ444P - # define PIX_FMT_YUV410P AV_PIX_FMT_YUV410P - # define PIX_FMT_YUV411P AV_PIX_FMT_YUV411P --# define PIX_FMT_VAAPI_VLD AV_PIX_FMT_VAAPI_VLD - # define PIX_FMT_ARGB AV_PIX_FMT_ARGB - # define PIX_FMT_BGRA AV_PIX_FMT_BGRA - # define PIX_FMT_RGB24 AV_PIX_FMT_RGB24 -@@ -150,8 +155,17 @@ - # define PIX_FMT_PAL8 AV_PIX_FMT_PAL8 - # define PixelFormat AVPixelFormat - /* video_out/video_out_vaapi */ --# define PIX_FMT_VAAPI_IDCT AV_PIX_FMT_VAAPI_IDCT --# define PIX_FMT_VAAPI_MOCO AV_PIX_FMT_VAAPI_MOCO -+# if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(59,0,100) /** << revise this */ -+# define PIX_FMT_VAAPI_VLD AV_PIX_FMT_VAAPI_VLD -+# define PIX_FMT_VAAPI_IDCT AV_PIX_FMT_VAAPI_IDCT -+# define PIX_FMT_VAAPI_MOCO AV_PIX_FMT_VAAPI_MOCO -+# else -+# define PIX_FMT_VAAPI_VLD AV_PIX_FMT_VAAPI -+# define PIX_FMT_VAAPI_IDCT AV_PIX_FMT_VAAPI -+# define PIX_FMT_VAAPI_MOCO AV_PIX_FMT_VAAPI -+# endif -+ -+# define CODEC_FLAG_BITEXACT AV_CODEC_FLAG_BITEXACT - #endif - - #if LIBAVCODEC_VERSION_INT >= XFF_INT_VERSION(54,25,0) -@@ -188,6 +202,18 @@ - # define XFF_AV_BUFFER 1 - #endif - -+/* 0 (no), 1 (yes), 2 (deprecated but still needed to make direct rendering work) */ -+#if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(55,0,100) -+# define XFF_THREAD_SAFE_CB 0 -+#elif LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(59,0,100) -+# define XFF_THREAD_SAFE_CB 1 -+#elif LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(60,0,0) -+# define XFF_THREAD_SAFE_CB 2 -+#else -+/* now callbacks shall always be thread safe. */ -+# define XFF_THREAD_SAFE_CB 0 -+#endif -+ - /* function aliases */ - - #if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(52,66,0) -@@ -235,9 +261,17 @@ - #endif - - #if LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(57,12,100) --#define XFF_PACKET_UNREF av_free_packet -+# define XFF_PACKET_DECL(_p) AVPacket _p##_stat, *_p -+# define XFF_PACKET_NEW(_p) _p = &_p##_stat, av_init_packet (_p) -+# define XFF_PACKET_UNREF(_p) av_free_packet (_p) -+#elif LIBAVCODEC_VERSION_INT < XFF_INT_VERSION(59,0,100) /** << revise this */ -+# define XFF_PACKET_DECL(_p) AVPacket _p##_stat, *_p -+# define XFF_PACKET_NEW(_p) _p = &_p##_stat, av_init_packet (_p) -+# define XFF_PACKET_UNREF(_p) av_packet_unref (_p) - #else --#define XFF_PACKET_UNREF av_packet_unref -+# define XFF_PACKET_DECL(_p) AVPacket *_p -+# define XFF_PACKET_NEW(_p) _p = av_packet_alloc () -+# define XFF_PACKET_UNREF(_p) av_packet_free (&(_p)) - #endif - - #ifndef AV_INPUT_BUFFER_PADDING_SIZE -@@ -257,3 +291,4 @@ - #endif - - #endif /* XINE_AVCODEC_COMPAT_H */ -+ ---- a/src/dxr3/ffmpeg_encoder.c -+++ b/src/dxr3/ffmpeg_encoder.c -@@ -1,5 +1,5 @@ - /* -- * Copyright (C) 2000-2018 the xine project -+ * Copyright (C) 2000-2021 the xine project - * - * This file is part of xine, a unix video player. - * -@@ -75,6 +75,9 @@ typedef struct lavc_data_s { - AVFrame *picture; /* picture to be encoded */ - uint8_t *out[3]; /* aligned buffer for YV12 data */ - uint8_t *buf; /* base address of YV12 buffer */ -+#if XFF_ENCVIDEO > 1 -+ XFF_PACKET_DECL (pkt); -+#endif - } lavc_data_t; - - -@@ -98,6 +101,9 @@ int dxr3_lavc_init(dxr3_driver_t *drv, p - XFF_AVCODEC_INIT(); - - XFF_AVCODEC_REGISTER_ALL(); -+#if XFF_ENCVIDEO > 1 -+ XFF_PACKET_NEW (this->pkt); -+#endif - - this->encoder_data.type = ENC_LAVC; - this->encoder_data.on_update_format = lavc_on_update_format; -@@ -255,13 +261,13 @@ static int lavc_on_update_format(dxr3_dr - - static int lavc_on_display_frame(dxr3_driver_t *drv, dxr3_frame_t *frame) - { -+ lavc_data_t* this = (lavc_data_t *)drv->enc; - #if XFF_ENCVIDEO == 1 - int size; - #else /* 2, 3 */ -- AVPacket pkt = {.data = NULL}; - int ret, got_output; -+ this->pkt->data = NULL; - #endif -- lavc_data_t* this = (lavc_data_t *)drv->enc; - ssize_t written; - - if (frame->vo_frame.bad_frame) return 1; -@@ -279,12 +285,12 @@ static int lavc_on_display_frame(dxr3_dr - #if XFF_ENCVIDEO == 1 - size = avcodec_encode_video(this->context, this->ffmpeg_buffer, DEFAULT_BUFFER_SIZE, this->picture); - #elif XFF_ENCVIDEO == 2 -- ret = avcodec_encode_video2(this->context, &pkt, this->picture, &got_output); -+ ret = avcodec_encode_video2(this->context, this->pkt, this->picture, &got_output); - #else /* 3 */ - got_output = 0; - ret = avcodec_send_frame (this->context, this->picture); - if ((ret >= 0) || (ret == AVERROR (EAGAIN))) { -- ret = avcodec_receive_packet (this->context, &pkt); -+ ret = avcodec_receive_packet (this->context, this->pkt); - got_output = (ret == 0); - ret = (ret == AVERROR (EAGAIN)) ? 0 : ret; - } -@@ -310,13 +316,10 @@ static int lavc_on_display_frame(dxr3_dr - #if XFF_ENCVIDEO == 1 - written = write(drv->fd_video, this->ffmpeg_buffer, size); - #else /* 2, 3 */ -- written = write(drv->fd_video, pkt.data, pkt.size); -+ written = write(drv->fd_video, this->pkt->data, this->pkt->size); - #endif - - if (written < 0) { --#if XFF_ENCVIDEO >= 2 -- av_packet_unref(&pkt); --#endif - xprintf(drv->class->xine, XINE_VERBOSITY_LOG, - "dxr3_mpeg_encoder: video device write failed (%s)\n", strerror(errno)); - return 0; -@@ -326,10 +329,9 @@ static int lavc_on_display_frame(dxr3_dr - xprintf(drv->class->xine, XINE_VERBOSITY_LOG, - "dxr3_mpeg_encoder: Could only write %zd of %d mpeg bytes.\n", written, size); - #else /* 2, 3 */ -- if (written != pkt.size) -+ if (written != this->pkt->size) - xprintf(drv->class->xine, XINE_VERBOSITY_LOG, -- "dxr3_mpeg_encoder: Could only write %zd of %d mpeg bytes.\n", written, pkt.size); -- av_packet_unref(&pkt); -+ "dxr3_mpeg_encoder: Could only write %zd of %d mpeg bytes.\n", written, this->pkt->size); - #endif - return 1; - } -@@ -339,6 +341,9 @@ static int lavc_on_unneeded(dxr3_driver_ - lavc_data_t *this = (lavc_data_t *)drv->enc; - lprintf("flushing buffers\n"); - if (this->context) { -+#if XFF_ENCVIDEO > 1 -+ XFF_PACKET_UNREF (this->pkt); -+#endif - avcodec_close(this->context); - XFF_FREE_CONTEXT (this->context); - free(this->picture); -@@ -398,3 +403,4 @@ static int lavc_prepare_frame(lavc_data_ - this->picture->linesize[2] = this->context->width / 2; - return 1; - } -+ diff --git a/community/xine-lib/PKGBUILD b/community/xine-lib/PKGBUILD deleted file mode 100644 index 57e696bfa..000000000 --- a/community/xine-lib/PKGBUILD +++ /dev/null @@ -1,66 +0,0 @@ -# Maintainer : Daniel Bermond -# Contributor: Eric BĂ©langer - -# ALARM: Kevin Mihelich -# - disabled vdpau - -pkgname=xine-lib -pkgver=1.2.11 -pkgrel=7 -pkgdesc='Multimedia playback engine' -arch=('x86_64') -url='https://www.xine-project.org' -license=('GPL' 'LGPL') -depends=('ffmpeg' 'libjpeg-turbo' 'libnsl' 'libpng' 'libx11' 'libxcb' - 'libxext' 'libxinerama' 'libxv' 'libxvmc' 'zlib') -optdepends=('libdvdnav: for dvd plugin' - 'libdvdread: for spu and dxr3 plugins' - 'vcdimager: for vcd plugin' - 'glu: for opengl and vaapi plugins' - 'sdl: for sdl plugin' - 'wayland: for egl_wl plugin' - 'aalib: for aalib plugin' - 'a52dec: for a52 plugin' - 'faad2: for faad plugin' - 'flac: for flac plugin' - 'libdca: for dts (dca) plugin' - 'libmad: for mad (mp3) plugin' - 'libmpcdec: for mpc (musepack) plugin' - 'wavpack: for wavpack plugin' - 'gdk-pixbuf2: for gdk_pixbuf plugin' - 'imagemagick: for imagemagick plugin' - 'libcaca: for caca plugin' - 'libmng: for mng plugin' - 'libnfs: for nfs plugin' - 'smbclient: for samba plugin') -makedepends=('mesa' 'libdvdnav' 'libdvdread' 'vcdimager' 'glu' 'sdl' - 'wayland' 'aalib' 'a52dec' 'faad2' 'flac' 'libdca' 'libmad' - 'libmpcdec' 'wavpack' 'gdk-pixbuf2' 'imagemagick' 'libcaca' - 'libmng' 'libnfs' 'smbclient') -source=("https://downloads.sourceforge.net/project/xine/xine-lib/${pkgver}/xine-lib-${pkgver}.tar.xz" - '010-xine-lib-libcaca-0.99.beta20-fix.patch' - '020-xine-lib-ffmpeg-5.0-fix.patch') -sha256sums=('ef51b21d10dda1045fa7d711bd9171cfdaf0a5a2874233bcf16ffdf28ec07005' - '30d4c5953f4b9c9c55d4bb24004fdd0444c2022d081818a55df2809665aadf47' - '27d5f4aa4429c5442bdfca6f1d05463aa4ed395fe8f5cdba3ef0509e7e6ff2fa') - -prepare() { - patch -d "${pkgname}-${pkgver}" -Np1 -i "${srcdir}/010-xine-lib-libcaca-0.99.beta20-fix.patch" - patch -d "${pkgname}-${pkgver}" -Np1 -i "${srcdir}/020-xine-lib-ffmpeg-5.0-fix.patch" -} - -build() { - cd "${pkgname}-${pkgver}" - ./configure \ - --prefix='/usr' \ - --enable-antialiasing \ - --with-external-dvdnav \ - --disable-vdpau \ - --with-wavpack - sed -i 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool - make -} - -package() { - make -C "${pkgname}-${pkgver}" DESTDIR="$pkgdir" install -} diff --git a/community/xine-lib/accel_vaapi.h b/community/xine-lib/accel_vaapi.h deleted file mode 100644 index 666b23fd6..000000000 --- a/community/xine-lib/accel_vaapi.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * 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 -