Here is an update to Xine-lib 1.2.13.

xine-lib (1.2.13) 2023-01-25
  * Add dav1d 1.0.0 support.
  * Add user video frame rate limiter.
  * Add xine_query_stream_info ().
  * Add user OpenGL2 scale modes.
  - Add xine timespec tools.
  * FFmpeg compatibility update.
  * Update german translation.
  * Improved DVB subtitle support.
  * Improved HLS input.
  * Improved AAC demux.
  * Fix clang build.
  * Fix build with libcaca.
  * Fix fine time display.
  * Fix .mp4 audio.
  * Fix wav demuxer.
  * Work around broken Mesa vdpau drivers.
  * Fix OpenGL2 deep color display.
  * Various small fixes.
  * Optimize OpenGL2 video output.
  * Optimize audio out.
  * Optimize OSD.
  * Small engine optimizations.


Index: Makefile
===================================================================
RCS file: /home/cvs/ports/multimedia/xine-lib/Makefile,v
retrieving revision 1.155
diff -u -p -u -p -r1.155 Makefile
--- Makefile    3 Apr 2022 11:12:09 -0000       1.155
+++ Makefile    29 Jan 2023 01:02:13 -0000
@@ -1,12 +1,11 @@
 COMMENT=       multimedia decoding library
 
-DISTNAME=      xine-lib-1.2.12
-REVISION=      2
+DISTNAME=      xine-lib-1.2.13
 CATEGORIES=    multimedia
 MASTER_SITES=  ${MASTER_SITE_SOURCEFORGE:=xine/}
 EXTRACT_SUFX=  .tar.xz
 
-SHARED_LIBS=   xine    37.0
+SHARED_LIBS=   xine    38.0
 
 HOMEPAGE=      https://www.xine-project.org/
 
@@ -26,7 +25,7 @@ WANTLIB += v4lconvert vcdinfo vorbis vor
 WANTLIB += xcb-dri3 xcb-glx xcb-present xcb-shape xcb-shm xcb-sync
 WANTLIB += xcb-xfixes xcb-xv xdg-basedir xml2 xshmfence xvidcore z
 
-XINEAPI_REV=   2.10
+XINEAPI_REV=   2.11
 SUBST_VARS+=   XINEAPI_REV
 
 COMPILER=      base-clang ports-gcc
@@ -61,8 +60,6 @@ CFLAGS+=      -ffast-math
 
 MAKE_ENV=      V=1
 
-FIX_CRLF_FILES=        src/demuxers/asfheader.c
-
 USE_GMAKE=     Yes
 CONFIGURE_STYLE= autoconf
 AUTOCONF_VERSION= 2.69
@@ -94,9 +91,6 @@ CONFIGURE_ENV=        CPPFLAGS="-I${X11BASE}/in
                LDFLAGS="-L${X11BASE}/lib -L${LOCALBASE}/lib"
 
 NO_TEST=       Yes
-
-pre-configure:
-       sed -i 's/__u32/u_int32_t/' ${WRKSRC}/src/input/input_pvr.c
 
 post-install:
        @find ${PREFIX}/lib/xine/plugins -name '*.a' -delete
Index: distinfo
===================================================================
RCS file: /home/cvs/ports/multimedia/xine-lib/distinfo,v
retrieving revision 1.33
diff -u -p -u -p -r1.33 distinfo
--- distinfo    13 Mar 2022 13:55:09 -0000      1.33
+++ distinfo    29 Jan 2023 01:02:34 -0000
@@ -1,2 +1,2 @@
-SHA256 (xine-lib-1.2.12.tar.xz) = 1gYnBGjhVAwqicDX9f3xHhfswMJpjMC8sQZf8mq+4Jg=
-SIZE (xine-lib-1.2.12.tar.xz) = 5341212
+SHA256 (xine-lib-1.2.13.tar.xz) = XxDW1xikpRwX7RsysDHU+bgLBh6CdlNbK+MeWsS3Xm8=
+SIZE (xine-lib-1.2.13.tar.xz) = 5004196
Index: patches/patch-configure_ac
===================================================================
RCS file: /home/cvs/ports/multimedia/xine-lib/patches/patch-configure_ac,v
retrieving revision 1.24
diff -u -p -u -p -r1.24 patch-configure_ac
--- patches/patch-configure_ac  11 Mar 2022 19:39:29 -0000      1.24
+++ patches/patch-configure_ac  26 Jan 2023 05:14:37 -0000
@@ -1,7 +1,7 @@
 Index: configure.ac
 --- configure.ac.orig
 +++ configure.ac
-@@ -888,9 +888,7 @@ AC_ARG_ENABLE([optimizations],
+@@ -933,9 +933,7 @@ AC_ARG_ENABLE([optimizations],
                [AS_HELP_STRING([--disable-optimizations], [Don't try to guess 
what optimization to enable])],
                [], [test x"$enable_debug" != x"no" && 
enable_optimizations="no"])
  AM_CONDITIONAL([DISABLE_OPTIMIZATIONS], [test x"$enable_optimizations" = 
x"no"])
@@ -12,7 +12,7 @@ Index: configure.ac
      dnl For multi-pass compilation: never when cross-compiling
      if test x"$cross_compiling" != x"yes"; then
          if test x"$GCC" = x"yes"; then
-@@ -911,7 +909,7 @@ AC_SUBST(O0_CFLAGS)
+@@ -956,7 +954,7 @@ AC_SUBST(O0_CFLAGS)
  AC_SUBST(PASS1_CFLAGS)
  AC_SUBST(PASS2_CFLAGS)
  
@@ -21,7 +21,7 @@ Index: configure.ac
  
  
  dnl xineutils.h:dlist_*
-@@ -1324,9 +1322,9 @@ t q
+@@ -1369,9 +1367,9 @@ t q
  b
  :q
  q"
Index: patches/patch-src_combined_ffmpeg_ff_video_decoder_c
===================================================================
RCS file: patches/patch-src_combined_ffmpeg_ff_video_decoder_c
diff -N patches/patch-src_combined_ffmpeg_ff_video_decoder_c
--- patches/patch-src_combined_ffmpeg_ff_video_decoder_c        3 Apr 2022 
11:12:10 -0000       1.27
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,95 +0,0 @@
-- Drop always true check
-  b1ecb15deaf85079b3543b8b27f876abe580acd9
-- Drop redundant flag
-  584638837b26fb35ec4ce082304e2943af51072d
-- Check for NULL
-  fc5c2dde344ea039391e111bd7b0d5ab8198a544
-
-Index: src/combined/ffmpeg/ff_video_decoder.c
---- src/combined/ffmpeg/ff_video_decoder.c.orig
-+++ src/combined/ffmpeg/ff_video_decoder.c
-@@ -127,7 +127,6 @@ struct ff_video_decoder_s {
- 
-   uint8_t           decoder_ok:1;
-   uint8_t           decoder_init_mode:1;
--  uint8_t           is_mpeg12:1;
- #ifdef HAVE_POSTPROC
-   uint8_t           pp_available:1;
- #endif
-@@ -1699,7 +1698,7 @@ static int ff_vc1_find_header(ff_video_decoder_t *this
- 
- static int ff_check_extradata(ff_video_decoder_t *this, unsigned int 
codec_type, buf_element_t *buf)
- {
--  if (this->context && this->context->extradata)
-+  if (this->context->extradata)
-     return 1;
- 
-   switch (codec_type) {
-@@ -1713,8 +1712,6 @@ static int ff_check_extradata(ff_video_decoder_t *this
- 
- static void ff_init_mpeg12_mode(ff_video_decoder_t *this)
- {
--  this->is_mpeg12 = 1;
--
-   if (this->decoder_init_mode) {
-     _x_meta_info_set_utf8(this->stream, XINE_META_INFO_VIDEOCODEC,
-                           "mpeg-1 (ffmpeg)");
-@@ -1725,7 +1722,8 @@ static void ff_init_mpeg12_mode(ff_video_decoder_t *th
- 
-   if ( this->mpeg_parser == NULL ) {
-     this->mpeg_parser = calloc(1, sizeof(mpeg_parser_t));
--    mpeg_parser_init(this->mpeg_parser, AV_INPUT_BUFFER_PADDING_SIZE);
-+    if (this->mpeg_parser)
-+      mpeg_parser_init(this->mpeg_parser, AV_INPUT_BUFFER_PADDING_SIZE);
-   }
- }
- 
-@@ -1739,7 +1737,7 @@ static void ff_handle_preview_buffer (ff_video_decoder
-     ff_init_mpeg12_mode(this);
-   }
- 
--  if (this->decoder_init_mode && !this->is_mpeg12) {
-+  else if (this->decoder_init_mode && !this->mpeg_parser) {
- 
-     if (!ff_check_extradata(this, codec_type, buf))
-       return;
-@@ -2066,9 +2064,12 @@ static void ff_handle_mpeg12_buffer (ff_video_decoder_
- 
-   lprintf("handle_mpeg12_buffer\n");
- 
--  if (!this->is_mpeg12) {
-+  if (!this->mpeg_parser) {
-     /* initialize mpeg parser */
-     ff_init_mpeg12_mode(this);
-+    if (!this->mpeg_parser) {
-+      return;
-+    }
-   }
- 
- #ifdef DEBUG_MPEG_PARSER
-@@ -2653,7 +2654,7 @@ static void ff_decode_data (video_decoder_t *this_gen,
-       }
- 
-     } else {
--      if (this->decoder_init_mode && !this->is_mpeg12)
-+      if (this->decoder_init_mode)
-         ff_handle_preview_buffer(this, buf);
- 
-       /* decode */
-@@ -2875,7 +2876,7 @@ static void ff_reset (video_decoder_t *this_gen) {
- #endif
-   }
- 
--  if (this->is_mpeg12)
-+  if (this->mpeg_parser)
-     mpeg_parser_reset(this->mpeg_parser);
- 
-   /* this->pts_tag_pass = 0; */
-@@ -2997,7 +2998,6 @@ static video_decoder_t *ff_video_open_plugin (video_de
- #ifndef HAVE_ZERO_SAFE_MEM
-   this->size            = 0;
-   this->decoder_ok      = 0;
--  this->is_mpeg12       = 0;
-   this->aspect_ratio    = 0;
-   this->pts_tag_pass    = 0;
- #ifdef HAVE_POSTPROC
Index: patches/patch-src_demuxers_asfheader_c
===================================================================
RCS file: patches/patch-src_demuxers_asfheader_c
diff -N patches/patch-src_demuxers_asfheader_c
--- patches/patch-src_demuxers_asfheader_c      25 Mar 2022 09:42:38 -0000      
1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-Fix freeing uninitialized pointer (error path)
-bf940cd3fc5773a1dd63ff52657a3829cf31f80f
-
-Index: src/demuxers/asfheader.c
---- src/demuxers/asfheader.c.orig
-+++ src/demuxers/asfheader.c
-@@ -415,7 +415,7 @@ static int asf_header_parse_stream_extended_properties
- 
-   /* get stream names */
-   if (asf_stream_extension->stream_name_count) {
--    asf_stream_extension->stream_names = malloc 
(asf_stream_extension->stream_name_count * sizeof (void*));
-+    asf_stream_extension->stream_names = calloc 
(asf_stream_extension->stream_name_count, sizeof (void*));
-     for (i = 0; i < asf_stream_extension->stream_name_count; i++) {
-       char *name;
-       uint16_t length;
Index: patches/patch-src_demuxers_demux_qt_c
===================================================================
RCS file: patches/patch-src_demuxers_demux_qt_c
diff -N patches/patch-src_demuxers_demux_qt_c
--- patches/patch-src_demuxers_demux_qt_c       24 Mar 2022 16:28:53 -0000      
1.21
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,48 +0,0 @@
-Fix .mp4 audio.
-1d19ee27ae88f12ac9b52b6538834a3a9a6b7c29
-
-Index: src/demuxers/demux_qt.c
---- src/demuxers/demux_qt.c.orig
-+++ src/demuxers/demux_qt.c
-@@ -1225,14 +1225,34 @@ static qt_error parse_trak_atom (qt_trak *trak, uint8_
-         /* in mp4 files the audio fourcc is always 'mp4a' - the codec is
-          * specified by the object type id field in the esds atom */
-         if (p->codec_fourcc == MP4A_FOURCC) {
-+          static const uint8_t atag_index[256] = {
-+            [0x40] = 0, /* AAC, MP4ALS */
-+            [0x66] = 0, /* MPEG2 AAC Main */
-+            [0x67] = 0, /* MPEG2 AAC Low */
-+            [0x68] = 0, /* MPEG2 AAC SSR */
-+            [0x69] = 1, /* MP3 13818-3, MP2 11172-3 */
-+            [0x6B] = 1, /* MP3 11172-3 */
-+            [0xA5] = 2, /* AC3 */
-+            [0xA6] = 3, /* EAC3 */
-+            [0xA9] = 4, /* DTS mp4ra.org */
-+            [0xDD] = 5, /* Vorbis non standard, gpac uses it */
-+            [0xE1] = 6, /* QCELP */
-+          };
-+          static const struct {
-+            uint32_t buftype;
-+            char name[8];
-+          } atag_info[7] = {
-+            [0] = { BUF_AUDIO_AAC,    "aac" }, /** << note: using this as 
default. */
-+            [1] = { BUF_AUDIO_MPEG,   "mp3" },
-+            [2] = { BUF_AUDIO_A52,    "ac3" },
-+            [3] = { BUF_AUDIO_EAC3,   "eac3" },
-+            [4] = { BUF_AUDIO_DTS,    "dts" },
-+            [5] = { BUF_AUDIO_VORBIS, "vorbis" },
-+            [6] = { BUF_AUDIO_QCLP,   "qcelp" },
-+          };
-           p->s.audio.vbr = 1;
--          if (p->object_type_id == 221) {
--            p->codec_buftype = BUF_AUDIO_VORBIS;
--            memcpy (p->codec_str, "vorbis", 7);
--          } else if (p->object_type_id == 107) {
--            p->codec_buftype = BUF_AUDIO_MPEG;
--            memcpy (p->codec_str, "mp3", 4);
--          }
-+          p->codec_buftype = atag_info[atag_index[p->object_type_id & 
255]].buftype;
-+          strcpy (p->codec_str, atag_info[atag_index[p->object_type_id & 
255]].name);
-         }
-         /* if this is MP4 audio, mark the trak as VBR */
-         else if ((p->codec_fourcc == SAMR_FOURCC) ||
Index: patches/patch-src_demuxers_demux_smjpeg_c
===================================================================
RCS file: patches/patch-src_demuxers_demux_smjpeg_c
diff -N patches/patch-src_demuxers_demux_smjpeg_c
--- patches/patch-src_demuxers_demux_smjpeg_c   25 Mar 2022 09:42:38 -0000      
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,68 +0,0 @@
-- Use int64_t when calculating pts
-  7fd1885d7c3be202ed48609ee3f63ed1b642df9f
-- Fix use-after-free
-  af586f66a0d446c2ca9d3967a4fcdd534dbd0759
-
-Index: src/demuxers/demux_smjpeg.c
---- src/demuxers/demux_smjpeg.c.orig
-+++ src/demuxers/demux_smjpeg.c
-@@ -75,6 +75,7 @@ typedef struct {
-   /* video information */
-   unsigned int         video_type;
-   xine_bmiheader       bih;
-+  int64_t              last_frame_pts;
- 
-   /* audio information */
-   unsigned int         audio_type;
-@@ -194,7 +195,6 @@ static int demux_smjpeg_send_chunk(demux_plugin_t *thi
-   unsigned int remaining_sample_bytes;
-   unsigned char preamble[SMJPEG_CHUNK_PREAMBLE_SIZE];
-   off_t current_file_pos;
--  int64_t last_frame_pts = 0;
-   unsigned int audio_frame_count = 0;
- 
-   /* load the next sample */
-@@ -228,9 +228,7 @@ static int demux_smjpeg_send_chunk(demux_plugin_t *thi
-    * Therefore, manually compute the pts values for the audio samples.
-    */
-   if (chunk_tag == sndD_TAG) {
--    pts = audio_frame_count;
--    pts *= 90000;
--    pts /= (this->audio_sample_rate * this->audio_channels);
-+    pts = INT64_C(90000) * audio_frame_count / 
((int64_t)this->audio_sample_rate * this->audio_channels);
-     audio_frame_count += ((remaining_sample_bytes - 4) * 2);
-   } else {
-     pts = _X_BE_32(&preamble[4]);
-@@ -255,12 +253,12 @@ static int demux_smjpeg_send_chunk(demux_plugin_t *thi
-       buf->extra_info->input_time = pts / 90;
-       buf->pts = pts;
- 
--      if (last_frame_pts) {
-+      if (this->last_frame_pts) {
-         buf->decoder_flags |= BUF_FLAG_FRAMERATE;
--        buf->decoder_info[0] = buf->pts - last_frame_pts;
-+        buf->decoder_info[0] = buf->pts - this->last_frame_pts;
-       }
- 
--      if ((int)remaining_sample_bytes > buf->max_size)
-+      if (remaining_sample_bytes > (unsigned)buf->max_size)
-         buf->size = buf->max_size;
-       else
-         buf->size = remaining_sample_bytes;
-@@ -294,7 +292,7 @@ static int demux_smjpeg_send_chunk(demux_plugin_t *thi
-   }
- 
-   if (chunk_tag == vidD_TAG)
--    last_frame_pts = buf->pts;
-+    this->last_frame_pts = pts;
- 
-   return this->status;
- }
-@@ -359,6 +357,7 @@ static int demux_smjpeg_seek (demux_plugin_t *this_gen
- 
-     this->status = DEMUX_OK;
-   }
-+  this->last_frame_pts = 0;
- 
-   return this->status;
- }
Index: patches/patch-src_dxr3_ffmpeg_encoder_c
===================================================================
RCS file: patches/patch-src_dxr3_ffmpeg_encoder_c
diff -N patches/patch-src_dxr3_ffmpeg_encoder_c
--- patches/patch-src_dxr3_ffmpeg_encoder_c     3 Apr 2022 11:12:10 -0000       
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-- ffmpeg_encoder: fix setting codec option
-  81ba6f23b5362d8bb9140b210dd562f05add1bb0
-- Add const
-  2750d2ee4ad1beb661bffd9cb696d6a5d619e5cf
-
-Index: src/dxr3/ffmpeg_encoder.c
---- src/dxr3/ffmpeg_encoder.c.orig
-+++ src/dxr3/ffmpeg_encoder.c
-@@ -123,7 +123,7 @@ static int lavc_prepare_frame(lavc_data_t *this, dxr3_
- static int lavc_on_update_format(dxr3_driver_t *drv, dxr3_frame_t *frame)
- {
-   lavc_data_t *this = (lavc_data_t *)drv->enc;
--  AVCodec *codec;
-+  const AVCodec *codec;
-   unsigned char use_quantizer;
- 
-   if (this->context) {
-@@ -223,7 +223,7 @@ static int lavc_on_update_format(dxr3_driver_t *drv, d
-   this->context->gop_size = 0; /*intra frames only */
- /* TJ. this version is known to have that but maybe its not the first. */
- #if LIBAVCODEC_VERSION_INT >= XFF_INT_VERSION(56,56,101)
--  av_opt_set_int (codec, "motion_est", 0 /* "zero" */, 0);
-+  av_opt_set_int (this->context->priv_data, "motion_est", 0 /* "zero" */, 0);
- #else
-   this->context->me_method = ME_ZERO; /*motion estimation type*/
- #endif
Index: patches/patch-src_post_Makefile_in
===================================================================
RCS file: 
/home/cvs/ports/multimedia/xine-lib/patches/patch-src_post_Makefile_in,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-src_post_Makefile_in
--- patches/patch-src_post_Makefile_in  24 Mar 2022 16:28:53 -0000      1.3
+++ patches/patch-src_post_Makefile_in  26 Jan 2023 05:14:35 -0000
@@ -1,7 +1,7 @@
 Index: src/post/Makefile.in
 --- src/post/Makefile.in.orig
 +++ src/post/Makefile.in
-@@ -899,7 +899,7 @@ libdeinterlaceplugins_O1_la_SOURCES = \
+@@ -847,7 +847,7 @@ libdeinterlaceplugins_O1_la_SOURCES = \
        $(debug_sources)
  
  libdeinterlaceplugins_O1_la_CPPFLAGS = $(AM_CPPFLAGS) 
-I$(top_srcdir)/src/post/deinterlace
@@ -10,7 +10,7 @@ Index: src/post/Makefile.in
  libdeinterlaceplugins_O1_la_LDFLAGS = 
  libdeinterlaceplugins_la_SOURCES = \
        deinterlace/plugins/double.c \
-@@ -944,7 +944,7 @@ xineplug_post_tvtime_la_LDFLAGS = $(AM_LDFLAGS) $(IMPU
+@@ -892,7 +892,7 @@ xineplug_post_tvtime_la_LDFLAGS = $(AM_LDFLAGS) $(IMPU
  @ENABLE_POSTPROC_TRUE@pp_module_cflags = $(FFMPEG_CFLAGS) $(POSTPROC_CFLAGS)
  @ARCH_X86_TRUE@PLANAR_X86_LIB = libpost_planar_x86.la
  @ARCH_X86_TRUE@libpost_planar_x86_la_SOURCES = planar/x86/noise.c 
planar/x86/noise.h
Index: patches/patch-src_post_visualizations_tdaudioanalyzer_c
===================================================================
RCS file: patches/patch-src_post_visualizations_tdaudioanalyzer_c
diff -N patches/patch-src_post_visualizations_tdaudioanalyzer_c
--- patches/patch-src_post_visualizations_tdaudioanalyzer_c     25 Mar 2022 
09:42:38 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-Use int64_t when calculating pts
-7fd1885d7c3be202ed48609ee3f63ed1b642df9f
-
-Index: src/post/visualizations/tdaudioanalyzer.c
---- src/post/visualizations/tdaudioanalyzer.c.orig
-+++ src/post/visualizations/tdaudioanalyzer.c
-@@ -846,7 +846,7 @@ static void tdaan_port_put_buffer (
-   if (pts) {
-     int offs = (this->ring_put - this->ring_get) & RING_MASK;
-     offs    -= this->samples_per_frame >> 1;
--    pts     -= 90000 * offs / (int)port->rate;
-+    pts     -= INT64_C(90000) * offs / (int)port->rate;
-   }
-   /* buffer incoming audio */
-   do {
Index: patches/patch-src_xine-utils_utils_c
===================================================================
RCS file: 
/home/cvs/ports/multimedia/xine-lib/patches/patch-src_xine-utils_utils_c,v
retrieving revision 1.10
diff -u -p -u -p -r1.10 patch-src_xine-utils_utils_c
--- patches/patch-src_xine-utils_utils_c        25 Mar 2022 09:42:38 -0000      
1.10
+++ patches/patch-src_xine-utils_utils_c        22 Dec 2022 23:00:31 -0000
@@ -1,8 +1,5 @@
-- Make use of clock_gettime() on OpenBSD. Until we have per-process
-  timers and can enable _POSIX_TIMERS in unistd.h.
-
-- Fix fd lead (error path)
-  ef445262b10938eb7c0373d42fef0f465a3fb479
+Make use of clock_gettime() on OpenBSD. Until we have per-process
+timers and can enable _POSIX_TIMERS in unistd.h.
 
 Index: src/xine-utils/utils.c
 --- src/xine-utils/utils.c.orig
@@ -17,21 +14,3 @@ Index: src/xine-utils/utils.c
    static int xmc_mode = 0;
  
    do {
-@@ -1299,11 +1300,15 @@ xine_fast_text_t *xine_fast_text_load (const char *fil
-   f = fopen (filename, "rb");
-   if (!f)
-     return NULL;
--  if (fseek (f, 0, SEEK_END))
-+  if (fseek (f, 0, SEEK_END)) {
-+    fclose(f);
-     return NULL;
-+  }
-   filesize = ftell (f);
--  if (fseek (f, 0, SEEK_SET))
-+  if (fseek (f, 0, SEEK_SET)) {
-+    fclose(f);
-     return NULL;
-+  }
- 
-   if (filesize > max_size)
-     filesize = max_size;

Reply via email to