Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Feb 2018 20:48:19 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org
Subject:   svn commit: r460753 - in branches/2018Q1/multimedia/libvpx: . files
Message-ID:  <201802022048.w12KmJL5094899@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Fri Feb  2 20:48:18 2018
New Revision: 460753
URL: https://svnweb.freebsd.org/changeset/ports/460753

Log:
  multimedia/libvpx: backport MULTIRES fix (direct commit)
  
  Obtained from:	upstream (libvpx 1.7.0, via Firefox 59)
  Approved by:	ports-secteam blanket

Added:
  branches/2018Q1/multimedia/libvpx/files/patch-mozilla-bug1426988   (contents, props changed)
Modified:
  branches/2018Q1/multimedia/libvpx/Makefile

Modified: branches/2018Q1/multimedia/libvpx/Makefile
==============================================================================
--- branches/2018Q1/multimedia/libvpx/Makefile	Fri Feb  2 19:55:50 2018	(r460752)
+++ branches/2018Q1/multimedia/libvpx/Makefile	Fri Feb  2 20:48:18 2018	(r460753)
@@ -4,7 +4,7 @@
 PORTNAME=	libvpx
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1.6.1
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	multimedia
 
 PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/

Added: branches/2018Q1/multimedia/libvpx/files/patch-mozilla-bug1426988
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2018Q1/multimedia/libvpx/files/patch-mozilla-bug1426988	Fri Feb  2 20:48:18 2018	(r460753)
@@ -0,0 +1,90 @@
+https://hg.mozilla.org/releases/mozilla-beta/rev/42e8f9c29d3b
+https://chromium.googlesource.com/webm/libvpx/+/5b6ae020b6a9%5E!/
+https://chromium.googlesource.com/webm/libvpx/+/004fb91416e3%5E!/
+
+--- vpx/src/vpx_encoder.c.orig	2017-01-12 20:27:27 UTC
++++ vpx/src/vpx_encoder.c
+@@ -12,8 +12,11 @@
+  * \brief Provides the high level interface to wrap encoder algorithms.
+  *
+  */
++#include <assert.h>
+ #include <limits.h>
++#include <stdlib.h>
+ #include <string.h>
++#include "vp8/common/blockd.h"
+ #include "vpx_config.h"
+ #include "vpx/internal/vpx_codec_internal.h"
+ 
+@@ -81,6 +84,8 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver(
+     int i;
+     void *mem_loc = NULL;
+ 
++    if (iface->enc.mr_get_mem_loc == NULL) return VPX_CODEC_INCAPABLE;
++
+     if (!(res = iface->enc.mr_get_mem_loc(cfg, &mem_loc))) {
+       for (i = 0; i < num_enc; i++) {
+         vpx_codec_priv_enc_mr_cfg_t mr_cfg;
+@@ -89,28 +94,27 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver(
+         if (dsf->num < 1 || dsf->num > 4096 || dsf->den < 1 ||
+             dsf->den > dsf->num) {
+           res = VPX_CODEC_INVALID_PARAM;
+-          break;
+-        }
++        } else {
++          mr_cfg.mr_low_res_mode_info = mem_loc;
++          mr_cfg.mr_total_resolutions = num_enc;
++          mr_cfg.mr_encoder_id = num_enc - 1 - i;
++          mr_cfg.mr_down_sampling_factor.num = dsf->num;
++          mr_cfg.mr_down_sampling_factor.den = dsf->den;
+ 
+-        mr_cfg.mr_low_res_mode_info = mem_loc;
+-        mr_cfg.mr_total_resolutions = num_enc;
+-        mr_cfg.mr_encoder_id = num_enc - 1 - i;
+-        mr_cfg.mr_down_sampling_factor.num = dsf->num;
+-        mr_cfg.mr_down_sampling_factor.den = dsf->den;
++          /* Force Key-frame synchronization. Namely, encoder at higher
++           * resolution always use the same frame_type chosen by the
++           * lowest-resolution encoder.
++           */
++          if (mr_cfg.mr_encoder_id) cfg->kf_mode = VPX_KF_DISABLED;
+ 
+-        /* Force Key-frame synchronization. Namely, encoder at higher
+-         * resolution always use the same frame_type chosen by the
+-         * lowest-resolution encoder.
+-         */
+-        if (mr_cfg.mr_encoder_id) cfg->kf_mode = VPX_KF_DISABLED;
++          ctx->iface = iface;
++          ctx->name = iface->name;
++          ctx->priv = NULL;
++          ctx->init_flags = flags;
++          ctx->config.enc = cfg;
++          res = ctx->iface->init(ctx, &mr_cfg);
++        }
+ 
+-        ctx->iface = iface;
+-        ctx->name = iface->name;
+-        ctx->priv = NULL;
+-        ctx->init_flags = flags;
+-        ctx->config.enc = cfg;
+-        res = ctx->iface->init(ctx, &mr_cfg);
+-
+         if (res) {
+           const char *error_detail = ctx->priv ? ctx->priv->err_detail : NULL;
+           /* Destroy current ctx */
+@@ -124,9 +128,13 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver(
+             vpx_codec_destroy(ctx);
+             i--;
+           }
++#if CONFIG_MULTI_RES_ENCODING
++          assert(mem_loc);
++          free(((LOWER_RES_FRAME_INFO *)mem_loc)->mb_info);
++          free(mem_loc);
++#endif
++          return SAVE_STATUS(ctx, res);
+         }
+-
+-        if (res) break;
+ 
+         ctx++;
+         cfg++;



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