From patchwork Fri Jul 27 14:57:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 9820 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:104:0:0:0:0:0 with SMTP id c4-v6csp895872jad; Fri, 27 Jul 2018 07:58:17 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfXejkiTOALzpBcNkt1BSbCAnQxqwiegllzmmchXnLzKNF+82kvp7kmlBQaa4GC/ofDJwCX X-Received: by 2002:a1c:3662:: with SMTP id d95-v6mr4307542wma.147.1532703496996; Fri, 27 Jul 2018 07:58:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532703496; cv=none; d=google.com; s=arc-20160816; b=RIKEr1oCjiy6jF/C4GCcaPlHzvUDYircUDmS32AUhLYgnLm1+wvOtAEVX5gpdp71KA KRfMhM1LAJesNxlRjkULHOlpXOB7XbMRFyz/wv0Czbug4jDUt6ZF0Km8zBhz+2iniFpr Q2rs4+1u89XLyHC3sKJ3hvca8fQ//I++sRfRwfR9n3IYp5n/gFM3cGE5pJXTa1oEhcw/ XGIpriCWKegFNBeff6/hc+efXBNF4/B2aprkw8M7POygkjeW/ZUXKMD3keP97cghLDn6 8Dl3ChTsS5wmPiefXVJX9LymfykX0DRCmDOfTippDDAbWCup8vTDF8ETVeMpsQ43UzC6 Iijw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=5BR4m6Mur6SgYMRI+C7Nx6QjLaGjKl5X8lUqsTCxUYg=; b=Q72+sijD0wimb4ZPqw6U40FQY1knyX8uROZK5VV9w58KhHh27wFWOfl7KHGkxNMHqY uU0w8Y6SRtpn/A8+RjXX7EYWEHUXkAr7O5QehnX1P60zJdlFIGUb6Ikc4psUXPJqhVuk sQ0MDq3RuW0737TZHxHO5tSNwI9R/MYIWveXBj3/dP20C8po+rQVLG9Cs1m/pGqFkoGu dQzMuvVPNlPSt+S4YQKf3Qs3jyZNuKw0Wts1uzxMeFjshDb3wrYgALWh1RiexUyZuPm3 xKT2fOevtGWPqS2VY8eZ1w8ovBrwhFtdB7OHG++bbhUdflL8UYE5ZXCrfVXQZzA3yZM9 MbIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=FEDJzPfH; 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 f9-v6si3042773wmc.222.2018.07.27.07.58.16; Fri, 27 Jul 2018 07:58:16 -0700 (PDT) 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=20161025 header.b=FEDJzPfH; 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 243E268A619; Fri, 27 Jul 2018 17:58:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3051168A60F for ; Fri, 27 Jul 2018 17:57:53 +0300 (EEST) Received: by mail-qt0-f193.google.com with SMTP id m13-v6so5314738qth.1 for ; Fri, 27 Jul 2018 07:58:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=dihlqwqPPnATLfJ/rwCp2mwVHA8h+TXhdcUWjcwKHlA=; b=FEDJzPfHAkjU5dfhsh8zyJPHJ/1jJJNxAyKE2RlCYULtxHrhevbc4u+7qZ4JM9WZ/J BgL81ey3m8MGEMu210q5gDFKPO8OX5asWBOsnmKWG/d5GPYe1KR05iaZLhtF2XrWr310 jKxRWli67Xe4kqoe+kgZ10kcmzws5dNmFNth6bn0ad8IwFJ918wWj3sMe+qWgEyat7cQ MnoC3EB8ctOsSOeziKfyGUnCmr8h40yvr1WBhnEsJc0HtZBg8/TF781RW3wTqc0qUk6v cuUbiNObcRbYlCdz3+6HwDhdEJgWQFBRoJxWqajFCV+QCgYMFkLoD6Z3xt69Mx25eax3 fBBw== 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; bh=dihlqwqPPnATLfJ/rwCp2mwVHA8h+TXhdcUWjcwKHlA=; b=UWurwJRAYcqzURKOJxAevPne/sJPWh8ryO2BnocJ25sglIr5TXJRr3KPp8HTr8t0PC lxnHDVZkLA1wlV9MGMk37qsE0APoovSKx8qSmkm2S1vGQ24MUQLKHjcUjH4qdYkGEZru wgzE3k0k4VvNjNAqxwshyVkvfjIX7k1NWDt+vyqRKtiiNg1s87GXEe9kVgj9mnLkKvXD Pz8zegHN5SgadwKe+wjGgbxP/L5xPgXov/TAXcqQfu9iVT4nwYpbKnyvLPJePN/eD3Ff Nn2N5yCfJ/EVsXquNpI6fquUoxBWFS1SY0c06rKE8S2mqNX1DoSZ30aI9PsWfodCfg/8 kNmw== X-Gm-Message-State: AOUpUlE72S+QUTVWppPlztpPk8bvMpu4cVsEzEwtFfNYMfiaGOpBa6KF H9wqe6x6LPKqumA3iEqWnSpo//kn X-Received: by 2002:aed:3ec4:: with SMTP id o4-v6mr6381308qtf.252.1532703487396; Fri, 27 Jul 2018 07:58:07 -0700 (PDT) Received: from localhost.localdomain ([190.188.171.140]) by smtp.gmail.com with ESMTPSA id f63-v6sm2951731qtb.64.2018.07.27.07.58.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jul 2018 07:58:06 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 27 Jul 2018 11:57:42 -0300 Message-Id: <20180727145749.9436-1-jamrial@gmail.com> X-Mailer: git-send-email 2.18.0 Subject: [FFmpeg-devel] [PATCH 1/8] avcodec/bsf: add a flushing mechanism to AVBSFContext 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Meant to reset the internal bsf state without the need to reinitialize it. Signed-off-by: James Almer --- Missing APIChanges entry and version bump. libavcodec/avcodec.h | 6 ++++++ libavcodec/bsf.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 1266879206..56be65bd56 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -5769,6 +5769,7 @@ typedef struct AVBitStreamFilter { int (*init)(AVBSFContext *ctx); int (*filter)(AVBSFContext *ctx, AVPacket *pkt); void (*close)(AVBSFContext *ctx); + void (*flush)(AVBSFContext *ctx); } AVBitStreamFilter; #if FF_API_OLD_BSF @@ -5895,6 +5896,11 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt); */ int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt); +/** + * Reset the internal bitstream filter state / flush internal buffers. + */ +void av_bsf_flush(AVBSFContext *ctx); + /** * Free a bitstream filter context and everything associated with it; write NULL * into the supplied pointer. diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c index bd611ea16b..03841da682 100644 --- a/libavcodec/bsf.c +++ b/libavcodec/bsf.c @@ -172,6 +172,16 @@ int av_bsf_init(AVBSFContext *ctx) return 0; } +void av_bsf_flush(AVBSFContext *ctx) +{ + ctx->internal->eof = 0; + + av_packet_unref(ctx->internal->buffer_pkt); + + if (ctx->filter->flush) + ctx->filter->flush(ctx); +} + int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) { int ret;