From patchwork Sun Feb 7 14:29:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 25481 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 155C2449843 for ; Sun, 7 Feb 2021 16:30:35 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB283687F2A; Sun, 7 Feb 2021 16:30:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CE596818DB for ; Sun, 7 Feb 2021 16:30:29 +0200 (EET) Received: by mail-qk1-f182.google.com with SMTP id r77so11885099qka.12 for ; Sun, 07 Feb 2021 06:30:29 -0800 (PST) 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=B8IRJXvLPD6cqEsZxvpbJKN862AspMbATgHr2eosXoY=; b=RUYiNDciWa7q6dTpVJ3OvZ8hQE8Rzh1s5E2zY9lXQbHHkugjB68KuSAThCDWRuBj3p nNY58x9JS+f2ZEKVVh4jMO3yrnwIAVKeGnR+CUExMxjnYDSwiG7ucA0ovIDFCvwpNUbf TjdposnavcBZbS1uKf2NJiLSO+WBAdL7xCG4QlMQAhUwoS2qfhvsxa3MS/tRwUiQ+irV VrB0pBsKWjQSV4GNwmEMLkZ3m+HMATLWLN44KogN+QMINoXGIrzwB9u5DrSCLHJvGhZB InQHhOWFdRMI0kq2kQcQdIieivjqiiI7KVhl1ra3qgxsEZh7eUu6+1enAFCBTVMuBr6m FvxQ== 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=B8IRJXvLPD6cqEsZxvpbJKN862AspMbATgHr2eosXoY=; b=LE72x0dvONpafNEQUnXbKLPq0K3GL8GmHmfQGN6uEaWQMW3ktKoBAFrUV7uYo1gYY8 3b5h/cJLk1XvbUCdmQ5hEjP+kzegofKao6m5MrfkY89KS2ITbOos6bSscV8VUfx0WdZL IsKI0IyzLIL971BaXfvowoFgapHE/esJRtH4nPG8du7CDx6BV/d7eSf/yD10v6sFS1an +YpUkDpJezYpxDTR/boRkWVRRJtwZAKSyMT373/BDIKqOqxXZbXjFr7ZSamkvtCd0rsE 3KYKn87axicyZk89pp33I0cmOkWsoFs8+IZioKLQucwerlxc0t2Qz2YCfY1TPAsWMxe5 nWDw== X-Gm-Message-State: AOAM533hT2w8iuiCBa7/9NOr0MzVPLBWxnvLb3tP/Vsrcx3K0LIu/AXH 8ywuOETY06KwcIxUf8jtljaIdJ0IvHQ= X-Google-Smtp-Source: ABdhPJxm8anUWbhLhEsGvlHKPMODx5D+8DCJSS49BFJEYUgveSzrd7E1L7gTl/H+/Ce19UB8X6dQmw== X-Received: by 2002:a37:5a05:: with SMTP id o5mr12485396qkb.356.1612708227263; Sun, 07 Feb 2021 06:30:27 -0800 (PST) Received: from localhost.localdomain ([181.23.72.162]) by smtp.gmail.com with ESMTPSA id v5sm1568351qkg.47.2021.02.07.06.30.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Feb 2021 06:30:26 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 7 Feb 2021 11:29:58 -0300 Message-Id: <20210207142958.51043-1-jamrial@gmail.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/buffersrc: simplify av_buffersrc_add_frame_flags() 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" Signed-off-by: James Almer --- libavfilter/buffersrc.c | 38 ++++++++------------------------------ 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index bf30f54177..da1cf9941e 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -149,33 +149,6 @@ int attribute_align_arg av_buffersrc_add_frame(AVFilterContext *ctx, AVFrame *fr return av_buffersrc_add_frame_flags(ctx, frame, 0); } -static int av_buffersrc_add_frame_internal(AVFilterContext *ctx, - AVFrame *frame, int flags); - -int attribute_align_arg av_buffersrc_add_frame_flags(AVFilterContext *ctx, AVFrame *frame, int flags) -{ - AVFrame *copy = NULL; - int ret = 0; - - if (frame && frame->channel_layout && - av_get_channel_layout_nb_channels(frame->channel_layout) != frame->channels) { - av_log(ctx, AV_LOG_ERROR, "Layout indicates a different number of channels than actually present\n"); - return AVERROR(EINVAL); - } - - if (!(flags & AV_BUFFERSRC_FLAG_KEEP_REF) || !frame) - return av_buffersrc_add_frame_internal(ctx, frame, flags); - - if (!(copy = av_frame_alloc())) - return AVERROR(ENOMEM); - ret = av_frame_ref(copy, frame); - if (ret >= 0) - ret = av_buffersrc_add_frame_internal(ctx, copy, flags); - - av_frame_free(©); - return ret; -} - static int push_frame(AVFilterGraph *graph) { int ret; @@ -190,13 +163,18 @@ static int push_frame(AVFilterGraph *graph) return 0; } -static int av_buffersrc_add_frame_internal(AVFilterContext *ctx, - AVFrame *frame, int flags) +int attribute_align_arg av_buffersrc_add_frame_flags(AVFilterContext *ctx, AVFrame *frame, int flags) { BufferSourceContext *s = ctx->priv; AVFrame *copy; int refcounted, ret; + if (frame && frame->channel_layout && + av_get_channel_layout_nb_channels(frame->channel_layout) != frame->channels) { + av_log(ctx, AV_LOG_ERROR, "Layout indicates a different number of channels than actually present\n"); + return AVERROR(EINVAL); + } + s->nb_failed_requests = 0; if (!frame) @@ -229,7 +207,7 @@ static int av_buffersrc_add_frame_internal(AVFilterContext *ctx, if (!(copy = av_frame_alloc())) return AVERROR(ENOMEM); - if (refcounted) { + if (refcounted && !(flags & AV_BUFFERSRC_FLAG_KEEP_REF)) { av_frame_move_ref(copy, frame); } else { ret = av_frame_ref(copy, frame);