svn commit: r460753 - in branches/2018Q1/multimedia/libvpx: . files
Jan Beich
jbeich at FreeBSD.org
Fri Feb 2 20:48:19 UTC 2018
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++;
More information about the svn-ports-branches
mailing list