From patchwork Thu Feb 27 18:01:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 17941 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 70EC844B25D for ; Thu, 27 Feb 2020 20:03:19 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5310F68B32B; Thu, 27 Feb 2020 20:03:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f176.google.com (mail-qt1-f176.google.com [209.85.160.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8D36568B03C for ; Thu, 27 Feb 2020 20:03:13 +0200 (EET) Received: by mail-qt1-f176.google.com with SMTP id v25so2963662qto.7 for ; Thu, 27 Feb 2020 10:03:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=jtFlA2peSPdGkA1qz7ENVLzuDdpGSGnPGYR1zDe5zqw=; b=rRMu+twv3RIKOThb/noCjcJUsl0QUNnZrbeVE3i9A00pd3f+FMjcSNJ4Le7OFWGIEZ 6gnqr1VKKDcvdtMoKITIH+gTEqTQ6FdYlVqW49mtrCgUKaXyVXGP8h21lmJtG1GeUfbV 4QMt00XZY312zH/lIe2nztxht/cTtLU5IH6X5nipeKYfRM0UnSTUE0IpH0jwQYVMBuGE big75yfUGt1HZqQc0gw+iLBdKTi9DnWhCQXBx1cnHjAkOL9ex7vw6lHewR6YIhbZsvXc R4RPfls7hcKSBr9rCHJmJS1zjEFSXVRfuT2SqlG47jyrbwjwT+BEpCycUMQuhi9KelHK NPtA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=jtFlA2peSPdGkA1qz7ENVLzuDdpGSGnPGYR1zDe5zqw=; b=ewaBbsoHBsrYag7CDoCi8w9WEXKLls5diXZ9aaOcEwbOjK/OFh/QP2BFZXtTEDIDB3 ZcMMMyctffdukSJR90HKakzb4NmmchloLjZSmUpe6irGVXJ/NBUlsvl6C29CXg3vjlwJ H8Jc/V99EuEeDukiMR3GTa6IH4wo9JMu6ggb3BVUxjgKavbtdGQxLPWLfNYOfSjXAUKd lxsmhM9NSvc/WvL9zksn2Kt0sJ4tcvkfY1qV7ddTvcHBGukft0v2WIK0Ylz/FFI+eJl2 dkL5uG1cTcWq/GGLqr8aBG8USuz3RvP507vTGlKLhBo30GHbEjKBNyjbgQ8GG3P90dZa 32yw== X-Gm-Message-State: APjAAAVuiyHQpvLNx7Cu79yBcmg47InG9QePplObOL7+uceca6B9pYgx eZ5KeE5Ai0KuhQP3PVqVK+0U0XWN X-Google-Smtp-Source: APXvYqz+6QG45oNuRuvp7ip9zNHp3hTu9YfrQtSNoQDQURRqwsqOK2mXnk/PL6V4i5gR9r25EVov3g== X-Received: by 2002:ac8:1b18:: with SMTP id y24mr443811qtj.158.1582826592046; Thu, 27 Feb 2020 10:03:12 -0800 (PST) Received: from localhost.localdomain ([191.83.210.181]) by smtp.gmail.com with ESMTPSA id v80sm3523323qka.15.2020.02.27.10.03.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Feb 2020 10:03:11 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 27 Feb 2020 15:01:59 -0300 Message-Id: <20200227180202.30982-2-jamrial@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200227180202.30982-1-jamrial@gmail.com> References: <20200227180202.30982-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] avcodec: move avcodec_flush_buffers from decode.c to utils.c 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" It's not a decoding exclusive function. Signed-off-by: James Almer --- libavcodec/decode.c | 36 ------------------------------------ libavcodec/utils.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index 03b9da25f9..93b0db7ef8 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -2020,42 +2020,6 @@ int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) return ret; } -static void bsfs_flush(AVCodecContext *avctx) -{ - DecodeFilterContext *s = &avctx->internal->filter; - - for (int i = 0; i < s->nb_bsfs; i++) - av_bsf_flush(s->bsfs[i]); -} - -void avcodec_flush_buffers(AVCodecContext *avctx) -{ - AVCodecInternal *avci = avctx->internal; - - avci->draining = 0; - avci->draining_done = 0; - avci->nb_draining_errors = 0; - av_frame_unref(avci->buffer_frame); - av_frame_unref(avci->compat_decode_frame); - av_packet_unref(avci->buffer_pkt); - avci->buffer_pkt_valid = 0; - - av_packet_unref(avci->ds.in_pkt); - - if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME) - ff_thread_flush(avctx); - else if (avctx->codec->flush) - avctx->codec->flush(avctx); - - avctx->pts_correction_last_pts = - avctx->pts_correction_last_dts = INT64_MIN; - - bsfs_flush(avctx); - - if (!avctx->refcounted_frames) - av_frame_unref(avci->to_free); -} - void ff_decode_bsfs_uninit(AVCodecContext *avctx) { DecodeFilterContext *s = &avctx->internal->filter; diff --git a/libavcodec/utils.c b/libavcodec/utils.c index c4dc136d3c..5257a1c627 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1084,6 +1084,39 @@ FF_ENABLE_DEPRECATION_WARNINGS goto end; } +void avcodec_flush_buffers(AVCodecContext *avctx) +{ + AVCodecInternal *avci = avctx->internal; + + avci->draining = 0; + avci->draining_done = 0; + avci->nb_draining_errors = 0; + av_frame_unref(avci->buffer_frame); + av_frame_unref(avci->compat_decode_frame); + av_packet_unref(avci->buffer_pkt); + avci->buffer_pkt_valid = 0; + + av_packet_unref(avci->ds.in_pkt); + + if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME) + ff_thread_flush(avctx); + else if (avctx->codec->flush) + avctx->codec->flush(avctx); + + avctx->pts_correction_last_pts = + avctx->pts_correction_last_dts = INT64_MIN; + + if (av_codec_is_decoder(avctx->codec)) { + DecodeFilterContext *s = &avctx->internal->filter; + + for (int i = 0; i < s->nb_bsfs; i++) + av_bsf_flush(s->bsfs[i]); + } + + if (!avctx->refcounted_frames) + av_frame_unref(avci->to_free); +} + void avsubtitle_free(AVSubtitle *sub) { int i;