From patchwork Fri Jan 7 14:21:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 33158 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp431020iog; Fri, 7 Jan 2022 06:22:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJyCJDtHPlZSf2eVufr8zRUxR40nXa5z9fKlDE1i/ANAmzczwQnZpzXrC6HHBBaZIDQrhsVU X-Received: by 2002:a50:e608:: with SMTP id y8mr61925641edm.39.1641565334144; Fri, 07 Jan 2022 06:22:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1641565334; cv=none; d=google.com; s=arc-20160816; b=RrkIfNLOLnPq2qvnZ068FjwqJtSO3LQx8Pm0QcY2mkeNkoSQSarWgDKhsSRlGAQJk5 g9dTY6wC1vCxlbBRbFDuJuDqlCIZgQR/GVyiRAHRX7lRlmvJOIG739C4HJCpILQZGzEe G21VoLmdxM1xRAyE3EWF4akHFM+v/ZHLrdhdSPp/9dMziwrG/Z27/+2Aho4hA94TJckL WZ8uAESEy3SgD1eqUGFTh6njdA3NdF4QbalvRBugf1KPIUX0Thl3RvwbUavRB6AX0NOI szKrPAyFeMrzmZpuavDhrhzHs2gF+GfY1/9JXX0xNIqOgg22dAeChtAzDHBlGsV94wTd elpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=SFK7wDRQTXWLZnetvQ5HmccYkPqOXR088ckUFIREC5Y=; b=EQhp3QF5kBQK0c8gssT8qHS59dRI5S7ndaeKD1iE0i3CTOuenoX7y6SPyTnyxQByeM Lfd2UeNIoBKt2tK9DZwRv0sX/Oi66Akr+oVaby9ZGBFAjB4F+fTRD73QogDYAF7enNvg mkrX+JxhNwPpFGu7FGLFMIGth+2WAAthisRyDdemPxXzNSAMyL1wKV0e8kCF7cimFXg8 2M+Rf6Jmu4EOSj/0ezUiONRLzc+REQccOejMWkavM99JDSSUb8Eg1gBDaKIhOXoeWBFt 90o1zkCBynSU3ikSm6A/ORJiWarrBFwnmlccSYIcHANfNBLLIGvff4DIuJtPXpxCJ+xI ywmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=A2ckCaEm; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q28si2664287edw.492.2022.01.07.06.22.13; Fri, 07 Jan 2022 06:22:14 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=A2ckCaEm; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F0896680588; Fri, 7 Jan 2022 16:22:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vk1-f180.google.com (mail-vk1-f180.google.com [209.85.221.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 32279689F94 for ; Fri, 7 Jan 2022 16:21:55 +0200 (EET) Received: by mail-vk1-f180.google.com with SMTP id o2so3792781vkn.0 for ; Fri, 07 Jan 2022 06:21:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=WzG3kr+ZFDDb0CWz8KsfS7gLFlZjYhxmbcUKgYEOyyg=; b=A2ckCaEmpjXwcPUt3nwRmPUoBrc+J4+OwuUrozey90IBLVWQfSmbK5Pf5PEPgAbK4w 4NlVgDflo9ps2ARvdJOjbQC+iGjEihGqw/CGi9TaYCBuqBB90KVe/7Q34WMlZYIaCplA FDnd6yorXaqK9R301FIohbP4IH+yi9NDIOSNjXnqCvD3eXOS1uMzsadu2A1ycP5vIWLB Ymb8F7qecJr659sTflHVUTSMSPbIJgwCrTYQZOcgbS0xtsYB/q02BMBLmHZU4FZVTM4O KsaskhvTM7HcA8p8VvNKmL/nNjSiAZS38gisTTXgdIKYog6wy2iYzZuwstRpo2ITvweM VYBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WzG3kr+ZFDDb0CWz8KsfS7gLFlZjYhxmbcUKgYEOyyg=; b=mSp0GCr0EuL6WNji5okVvZ7ZFhen1nevRHdaj3Be3F/h8JrJku+I4SrCX9yftYhADV 2IyOxbd/MxqV9XOSu731KAvaeGrFfNDFTYYlgJp6/VwfE7sk6RYQ9h5eJIv5vbSB6alX XtfCbSM4AabVFXyxSV37RGFwz2pQzYcW7aPlpCPfTpkwgqEYJAQ3b4Rq6Ox/SuUsUkQr oViL2b9jviPcYf1cVzftFPYVqdQNcWbpAFzAvAH4Q6tn6dtLrZQu/vGSvupLB8MZSv/r j2LwFvJun/doBFIC1hqTsAIqMmVFJhdSkTKvHFJGFIRvAuE4k3bPkRRlKIBwAGWQ2f+O HBwQ== X-Gm-Message-State: AOAM530v6WugW5exHoLj6GvVeY/L63NZLugNKYGsZGRSUhBI96vP+t6N 1hOvYixH7QZZUNX0WFJlF0egVtPMmEc= X-Received: by 2002:a1f:5481:: with SMTP id i123mr10363066vkb.13.1641565313642; Fri, 07 Jan 2022 06:21:53 -0800 (PST) Received: from localhost.localdomain ([191.83.210.83]) by smtp.gmail.com with ESMTPSA id u69sm3289172vke.30.2022.01.07.06.21.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Jan 2022 06:21:53 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jan 2022 11:21:34 -0300 Message-Id: <20220107142134.821-2-jamrial@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220107142134.821-1-jamrial@gmail.com> References: <20220107142134.821-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/libdav1d: honor the requested skip_frame level X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: kORdsrE4SLnA This supports dropping non-intra, non-key, or all frames. Signed-off-by: James Almer --- libavcodec/libdav1d.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index 8e45f533cb..9252a2572d 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -299,6 +299,7 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) #endif int res; +redo: if (!data->sz) { AVPacket *const pkt = dav1d->pkt; @@ -363,6 +364,14 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) av_assert0(p->data[0] && p->allocator_data); + if ((c->skip_frame >= AVDISCARD_NONINTRA && (p->frame_hdr->frame_type != DAV1D_FRAME_TYPE_KEY && + p->frame_hdr->frame_type != DAV1D_FRAME_TYPE_INTRA)) || + (c->skip_frame >= AVDISCARD_NONKEY && p->frame_hdr->frame_type != DAV1D_FRAME_TYPE_KEY) || + c->skip_frame >= AVDISCARD_ALL) { + dav1d_picture_unref(p); + goto redo; + } + // This requires the custom allocator above frame->buf[0] = av_buffer_ref(p->allocator_data); if (!frame->buf[0]) {