Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Jul 2019 22:36:01 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r506252 - in head/multimedia/ffmpeg: . files
Message-ID:  <201907082236.x68Ma1Hg072040@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Mon Jul  8 22:36:01 2019
New Revision: 506252
URL: https://svnweb.freebsd.org/changeset/ports/506252

Log:
  multimedia/ffmpeg: update to 4.1.4
  
  - Backport more dav1d fixes from master branch
  
  Changes:	https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/n4.1.4:/Changelog
  ABI:		https://abi-laboratory.pro/tracker/timeline/ffmpeg/
  MFH:		2019Q3 (stabilization, maybe security)

Modified:
  head/multimedia/ffmpeg/Makefile   (contents, props changed)
  head/multimedia/ffmpeg/distinfo   (contents, props changed)
  head/multimedia/ffmpeg/files/patch-aom   (contents, props changed)
  head/multimedia/ffmpeg/files/patch-dav1d   (contents, props changed)

Modified: head/multimedia/ffmpeg/Makefile
==============================================================================
--- head/multimedia/ffmpeg/Makefile	Mon Jul  8 21:14:17 2019	(r506251)
+++ head/multimedia/ffmpeg/Makefile	Mon Jul  8 22:36:01 2019	(r506252)
@@ -2,8 +2,7 @@
 # $FreeBSD$
 
 PORTNAME=	ffmpeg
-PORTVERSION=	4.1.3
-PORTREVISION=	14
+PORTVERSION=	4.1.4
 PORTEPOCH=	1
 CATEGORIES=	multimedia audio ipv6 net
 MASTER_SITES=	https://ffmpeg.org/releases/

Modified: head/multimedia/ffmpeg/distinfo
==============================================================================
--- head/multimedia/ffmpeg/distinfo	Mon Jul  8 21:14:17 2019	(r506251)
+++ head/multimedia/ffmpeg/distinfo	Mon Jul  8 22:36:01 2019	(r506252)
@@ -1,6 +1,6 @@
-TIMESTAMP = 1554117390
-SHA256 (ffmpeg-4.1.3.tar.xz) = 0c3020452880581a8face91595b239198078645e7d7184273b8bcc7758beb63d
-SIZE (ffmpeg-4.1.3.tar.xz) = 8895988
+TIMESTAMP = 1562609569
+SHA256 (ffmpeg-4.1.4.tar.xz) = f1f049a82fcfbf156564e73a3935d7e750891fab2abf302e735104fd4050a7e1
+SIZE (ffmpeg-4.1.4.tar.xz) = 8896056
 SHA256 (0001-Add-ability-for-ffmpeg-to-run-svt-av1.patch) = d653158c8d1c958cdebe9ee50cb95db917f5421ba79ee121202a97ce40c44ade
 SIZE (0001-Add-ability-for-ffmpeg-to-run-svt-av1.patch) = 20028
 SHA256 (0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch) = cc8ba4ff56cdb38a59650203999c4c8c83fc40bdb905b87b678ff68a4538444d

Modified: head/multimedia/ffmpeg/files/patch-aom
==============================================================================
--- head/multimedia/ffmpeg/files/patch-aom	Mon Jul  8 21:14:17 2019	(r506251)
+++ head/multimedia/ffmpeg/files/patch-aom	Mon Jul  8 22:36:01 2019	(r506252)
@@ -1,6 +1,5 @@
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/b2ea757f68
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/d12d4d4515
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/b87063c06d
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/2ddaaaf595
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/e3991a5a45
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/995889abbf
@@ -202,16 +201,6 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/1e
  };
  
  static av_cold void log_encoder_error(AVCodecContext *avctx, const char *desc)
-@@ -505,7 +541,8 @@ static av_cold int aom_init(AVCodecContext *avctx,
-     enccfg.g_h            = avctx->height;
-     enccfg.g_timebase.num = avctx->time_base.num;
-     enccfg.g_timebase.den = avctx->time_base.den;
--    enccfg.g_threads      = avctx->thread_count ? avctx->thread_count : av_cpu_count();
-+    enccfg.g_threads      =
-+        FFMIN(avctx->thread_count ? avctx->thread_count : av_cpu_count(), 64);
- 
-     if (ctx->lag_in_frames >= 0)
-         enccfg.g_lag_in_frames = ctx->lag_in_frames;
 @@ -558,10 +595,14 @@ static av_cold int aom_init(AVCodecContext *avctx,
  
      // 0-100 (0 => CBR, 100 => VBR)

Modified: head/multimedia/ffmpeg/files/patch-dav1d
==============================================================================
--- head/multimedia/ffmpeg/files/patch-dav1d	Mon Jul  8 21:14:17 2019	(r506251)
+++ head/multimedia/ffmpeg/files/patch-dav1d	Mon Jul  8 22:36:01 2019	(r506252)
@@ -15,6 +15,10 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/38
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/f6803cfbd2
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/5cd60b6f2e
 https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e62e1a110
+https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/fbc5a27694
+https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/0e07b767c8
+https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/254da41531
+https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/f78172b29a
 
 --- configure.orig	2018-11-05 23:22:33 UTC
 +++ configure
@@ -85,7 +89,7 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
  extern AVCodec ff_libfdk_aac_decoder;
 --- libavcodec/libdav1d.c.orig	2018-12-16 07:22:28 UTC
 +++ libavcodec/libdav1d.c
-@@ -0,0 +1,346 @@
+@@ -0,0 +1,369 @@
 +/*
 + * Copyright (c) 2018 Ronald S. Bultje <rsbultje gmail com>
 + * Copyright (c) 2018 James Almer <jamrial gmail com>
@@ -126,6 +130,7 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +
 +    Dav1dData data;
 +    int tile_threads;
++    int frame_threads;
 +    int apply_grain;
 +} Libdav1dContext;
 +
@@ -136,6 +141,10 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +    [DAV1D_PIXEL_LAYOUT_I444] = { AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV444P12 },
 +};
 +
++static const enum AVPixelFormat pix_fmt_rgb[3] = {
++    AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRP12,
++};
++
 +static void libdav1d_log_callback(void *opaque, const char *fmt, va_list vl)
 +{
 +    AVCodecContext *c = opaque;
@@ -202,6 +211,7 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +{
 +    Libdav1dContext *dav1d = c->priv_data;
 +    Dav1dSettings s;
++    int threads = (c->thread_count ? c->thread_count : av_cpu_count()) * 3 / 2;
 +    int res;
 +
 +    av_log(c, AV_LOG_INFO, "libdav1d %s\n", dav1d_version());
@@ -212,10 +222,17 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +    s.allocator.cookie = dav1d;
 +    s.allocator.alloc_picture_callback = libdav1d_picture_allocator;
 +    s.allocator.release_picture_callback = libdav1d_picture_release;
-+    s.n_tile_threads = dav1d->tile_threads;
 +    s.apply_grain = dav1d->apply_grain;
-+    s.n_frame_threads = FFMIN(c->thread_count ? c->thread_count : av_cpu_count(), DAV1D_MAX_FRAME_THREADS);
 +
++    s.n_tile_threads = dav1d->tile_threads
++                     ? dav1d->tile_threads
++                     : FFMIN(floor(sqrt(threads)), DAV1D_MAX_TILE_THREADS);
++    s.n_frame_threads = dav1d->frame_threads
++                      ? dav1d->frame_threads
++                      : FFMIN(ceil(threads / s.n_tile_threads), DAV1D_MAX_FRAME_THREADS);
++    av_log(c, AV_LOG_DEBUG, "Using %d frame threads, %d tile threads\n",
++           s.n_frame_threads, s.n_tile_threads);
++
 +    res = dav1d_open(&dav1d->c, &s);
 +    if (res < 0)
 +        return AVERROR(ENOMEM);
@@ -285,7 +302,7 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +        return res;
 +    }
 +
-+    av_assert0(p->data[0] != NULL);
++    av_assert0(p->data[0] && p->allocator_data);
 +
 +    // This requires the custom allocator above
 +    frame->buf[0] = av_buffer_ref(p->allocator_data);
@@ -302,7 +319,8 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +    frame->linesize[2] = p->stride[1];
 +
 +    c->profile = p->seq_hdr->profile;
-+    frame->format = c->pix_fmt = pix_fmt[p->p.layout][p->seq_hdr->hbd];
++    c->level = ((p->seq_hdr->operating_points[0].major_level - 2) << 2)
++               | p->seq_hdr->operating_points[0].minor_level;
 +    frame->width = p->p.w;
 +    frame->height = p->p.h;
 +    if (c->width != p->p.w || c->height != p->p.h) {
@@ -324,6 +342,14 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +    frame->color_trc = c->color_trc = (enum AVColorTransferCharacteristic) p->seq_hdr->trc;
 +    frame->color_range = c->color_range = p->seq_hdr->color_range ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
 +
++    if (p->p.layout == DAV1D_PIXEL_LAYOUT_I444 &&
++        p->seq_hdr->mtrx == DAV1D_MC_IDENTITY &&
++        p->seq_hdr->pri  == DAV1D_COLOR_PRI_BT709 &&
++        p->seq_hdr->trc  == DAV1D_TRC_SRGB)
++        frame->format = c->pix_fmt = pix_fmt_rgb[p->seq_hdr->hbd];
++    else
++        frame->format = c->pix_fmt = pix_fmt[p->p.layout][p->seq_hdr->hbd];
++
 +    // match timestamps and packet size
 +    frame->pts = frame->best_effort_timestamp = p->m.timestamp;
 +#if FF_API_PKT_PTS
@@ -405,7 +431,8 @@ https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/9e
 +#define OFFSET(x) offsetof(Libdav1dContext, x)
 +#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
 +static const AVOption libdav1d_options[] = {
-+    { "tilethreads", "Tile threads", OFFSET(tile_threads), AV_OPT_TYPE_INT, { .i64 = 1 }, 1, DAV1D_MAX_TILE_THREADS, VD },
++    { "tilethreads", "Tile threads", OFFSET(tile_threads), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, DAV1D_MAX_TILE_THREADS, VD },
++    { "framethreads", "Frame threads", OFFSET(frame_threads), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, DAV1D_MAX_FRAME_THREADS, VD },
 +    { "filmgrain", "Apply Film Grain", OFFSET(apply_grain), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, VD },
 +    { NULL }
 +};



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201907082236.x68Ma1Hg072040>