From patchwork Thu Oct 17 20:11:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 15828 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3D6F244A222 for ; Thu, 17 Oct 2019 23:11:48 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1787A68AB36; Thu, 17 Oct 2019 23:11:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f193.google.com (mail-qt1-f193.google.com [209.85.160.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BC8F468A913 for ; Thu, 17 Oct 2019 23:11:41 +0300 (EEST) Received: by mail-qt1-f193.google.com with SMTP id m15so5533932qtq.2 for ; Thu, 17 Oct 2019 13:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ZEnn9Uy/Jt3A5v+POGcrnzrFLmoF48g93EDW58SMzhw=; b=tvQalYHMQXpqdTN0FuVyAvyeM5995XNaFjCsDrjHeOK7YiSEraHCRlDRxx68fps6oD pVkzRDUbIL2iBGZ9FDVVXY1ImFxr6cHa3RM59dOwdX0Y5+XQgARe6eVoAeSc1E6TP6DQ b11Q2+2PZbxVbL5KhnRh75+oCHhaR0h5mX6ExWlTwFmuS/ryJSVAeZia3VElpvJMFjPK +xQYCW+QtkQteq6vNt2o0RgZWCcbh+21l41b6I3c1/6a+k8Zw4DChV+E9nzFNn0FdaO9 wyVu8FLrEyS2bKE4iZQXiQjByGDNOPdYEvlpGXhM3nkXnE5hgfX3d8j3crc7R8M7IstQ ZNmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ZEnn9Uy/Jt3A5v+POGcrnzrFLmoF48g93EDW58SMzhw=; b=Csm8JZZIr7PrEFjeqcnjeRLk1a4ShR2qm04Z3lFAOmq2BhkvMBtUZGGLhJafJQZWt/ OafETkc3o493DXj7O5dP2zkFUizQBBQp/K0AwvkXIZ0EKeUqGB7Ba/9MwfrpLDV5vXqY o9b4fNRftGZLpaw7X6oVMQNpzlLWrtJSr8aSxe5jOQuKgWnlNuI0iyHM4VD+naTv/cVa LUcebN6orHaUysDB0nPvc4BGwviacw2O0mi+aeME5bHMcaaMf9OO0HrnaiY6WOAjoklM i8yOf7N105grGbAnu+bmWbqTtulpHfl5T802c+OwgrBw0Nppe9ghdGlJp28jEW/+ORHR 72iw== X-Gm-Message-State: APjAAAVP5DkOP7+a8FdN96hZq2t89DDgOPtadl3fk+hbdqwpidvMt16e nk+kiKWJ5Jos/co/nJ9NmweAA4rU X-Google-Smtp-Source: APXvYqzFyw4RGMu+hAX9JpqT7lB0lA/3LO1CejA/MGueYcMz0kP61edfAM0jpJi60vQY9Vv/0i0g9Q== X-Received: by 2002:ac8:534a:: with SMTP id d10mr5808962qto.349.1571343100434; Thu, 17 Oct 2019 13:11:40 -0700 (PDT) Received: from localhost.localdomain ([191.83.221.234]) by smtp.gmail.com with ESMTPSA id s23sm1760640qte.72.2019.10.17.13.11.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Oct 2019 13:11:39 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 17 Oct 2019 17:11:03 -0300 Message-Id: <20191017201103.3092-1-jamrial@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/libdav1d: fix setting AVFrame reordered_opaque X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Actually reorder the values. Should effectively fix ticket #8300. Signed-off-by: James Almer --- libavcodec/libdav1d.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index 8aa248e6cd..87abdb4569 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -191,6 +191,24 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) pkt.buf = NULL; av_packet_unref(&pkt); + + if (c->reordered_opaque != AV_NOPTS_VALUE) { + AVBufferRef *reordered_opaque = av_buffer_alloc(sizeof(c->reordered_opaque)); + + if (!reordered_opaque) { + dav1d_data_unref(data); + return AVERROR(ENOMEM); + } + + *reordered_opaque->data = c->reordered_opaque; + res = dav1d_data_wrap_user_data(data, reordered_opaque->data, + libdav1d_data_free, reordered_opaque); + if (res < 0) { + av_buffer_unref(&reordered_opaque); + dav1d_data_unref(data); + return res; + } + } } } @@ -260,7 +278,8 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) else frame->format = c->pix_fmt = pix_fmt[p->p.layout][p->seq_hdr->hbd]; - frame->reordered_opaque = c->reordered_opaque; + if (p->m.user_data.data) + frame->reordered_opaque = *(int64_t *)p->m.user_data.data; // match timestamps and packet size frame->pts = frame->best_effort_timestamp = p->m.timestamp;