From patchwork Tue Mar 6 20:47:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josh Allmann X-Patchwork-Id: 7826 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp4200028jaj; Tue, 6 Mar 2018 12:47:35 -0800 (PST) X-Google-Smtp-Source: AG47ELteRoKQy3IsAb3nRkWUyDN6ekCnpi0bumcoFwCfa5rkpz2XyuoH8y5A94fVtoVSPfXtNAtR X-Received: by 10.28.216.70 with SMTP id p67mr13139212wmg.36.1520369255328; Tue, 06 Mar 2018 12:47:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520369255; cv=none; d=google.com; s=arc-20160816; b=d5ZEunAeuhBcmVXmmjA11vR3Yu2E5waGZlvgOROheNPONgt0SJLzezSa9RdZLSvJpE LpUMCIwmYh2YhvQwsqY8Cy1liXRhTHGvjMaxBv+VF0wVUXbUUX765S9Ljpsi9368w0VW GDwvtuB1miTvDyDYS0zcs2Kwc0l+jrY/YWSfmqy+IXcH9x/ElKy8KCTmLfdFYlkMjUjs DRo4wlbH+lI1NUz53CDma++F51wsF7cA5swyBb+f2hjEglHIBfQHBnPr360KBit2K7xH YmKsKBARGFJqEyp21k844cHfo3lsCNsJ5TDvaOxRc+NGOsEnxCzcDvf09w6JZ9dQF7o1 zr4A== 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=gYKwwiiKZ4SJmU0QB7IdRFxJsQxjqp61P2nZvt9qZJk=; b=G0Rgy3/Hz9BKa77sZWKRFEDA6Q7bwDWs1iOw+3+UWbRD6t5nAbu3Ebx8qsWxadPG1E vSLDk52TS3d3ExZK/cN9TccERcVIUcO3uTKzRtEb9qXuP1/ej9staWtJlMbsA4Vol2F4 Ef4P28aFaTeva+78ARAve8cOlWNo/7sU8avhFRRvlk+AJsikCfMHugwnZX1HsOo0fgxP mTUWe0xR9pkFi9PPzJV7JPjHI0KOe3CYYC9Wxol62MVycbjcV4kwJouAZ6BAq8eFJT/f dRYMcE87h7gpUvHZDr5ivZ+G1/zbqg8PruYGi9J/NdE9878QvEpFq7jxV9ZGw8Ucs7pN BWog== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ApZxh7Su; 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 d52si12166051wrd.430.2018.03.06.12.47.34; Tue, 06 Mar 2018 12:47:35 -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=20161025 header.b=ApZxh7Su; 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 10AD568A378; Tue, 6 Mar 2018 22:47:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl0-f47.google.com (mail-pl0-f47.google.com [209.85.160.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 503A468A346 for ; Tue, 6 Mar 2018 22:47:19 +0200 (EET) Received: by mail-pl0-f47.google.com with SMTP id s13-v6so12556780plq.6 for ; Tue, 06 Mar 2018 12:47:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=fu86GLAUKBbwlJUXqPQQzPUVvdpzh8sshVxe4l8+5Yg=; b=ApZxh7SupvBh5PMMUXh5mTC3TdpXYSLIwuR+Q9OZ5m9N6zuYVSwTq7g7c8uPIipdve oh1d32LH77A+NNlmaI774/jd/eWkhjond9wBL7H5ygb2Z/3+69LIPoUJrZOyjyHD15Vs IjYELPVuM7QW49spvrLEQ0CEGkRF607CxKK3TianGzKMhysOybpynl7eZizx7PelmMHc GI1uQQ0J3kl2yfxAYhrpoigR2H0IDgsI2AuY7vPnM4/4vClLYEV8jpxpmN/zSF84bN7d STg2548TUFR1ZbVqcByeu0wQKwlUVpVSGPobHWGDnmJkdSNSgEAebQzwRhK6uUamtG69 aaFg== 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=fu86GLAUKBbwlJUXqPQQzPUVvdpzh8sshVxe4l8+5Yg=; b=QRvo9TcqGGI7hmRPpDpV6LZokETSi3CcSNtrbJC4cbv0oUa7hN9AqW1KmJziR1CNHP 8nB+uhn9HgFHIBOR1gAySX3SjDqgYV/qXiieo9DHhTT3Dq+i/Hh55MFJGFNtOp5BolmF YgmcEwOi3Q90P1Iw+cxa0fRdr+j50DT75LRl6rn/B8uRTlMxxb6HzT5hPeY4dRSFcK6W o5xwE2p5voYVjn/TZa+qhJOj12jNtHLpzpzTaPy4Hl5uwdNSHKzzWbBnrRHxVWKX052/ wCe29cLe8W+56zY6o//ZK4GgQ5gsMlIMwl+PyvftqzQcUj7YXLD9rKBFsHoxalTtz4pm tRTA== X-Gm-Message-State: APf1xPB8EurJoIoVE+Hi8d4EpBIK+VsoQrt8An/NGcNQMwcLipNzCGzh Hdkji/KarmscIjkFIJR1G9RwVAcq X-Received: by 2002:a17:902:7c07:: with SMTP id x7-v6mr18105852pll.150.1520369245379; Tue, 06 Mar 2018 12:47:25 -0800 (PST) Received: from localhost.localdomain (cpe-76-172-80-40.socal.res.rr.com. [76.172.80.40]) by smtp.gmail.com with ESMTPSA id i125sm32741161pfe.176.2018.03.06.12.47.24 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 06 Mar 2018 12:47:24 -0800 (PST) From: Josh Allmann To: ffmpeg-devel@ffmpeg.org Date: Tue, 6 Mar 2018 12:47:15 -0800 Message-Id: <1520369235-19635-1-git-send-email-joshua.allmann@gmail.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH] avcodec/noise_bsf: Add keyframes option. 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" --- doc/bitstream_filters.texi | 5 +++++ libavcodec/noise_bsf.c | 12 ++++++++++++ libavcodec/version.h | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/bitstream_filters.texi b/doc/bitstream_filters.texi index cfd81fa12d..a9f17f32ec 100644 --- a/doc/bitstream_filters.texi +++ b/doc/bitstream_filters.texi @@ -399,6 +399,11 @@ every byte is modified. A numeral string, whose value is related to how often packets will be dropped. Therefore, values below or equal to 0 are forbidden, and the lower the more frequent packets will be dropped, with 1 meaning every packet is dropped. +@item keyframes +A numeral string, whose value indicates the number of keyframe packets that +will be dropped from the beginning of the stream. This option will not add +noise to the source data. If used with stream copy, then -copyinkf should +be added to the output options as well. @end table The following example applies the modification to every byte but does not drop diff --git a/libavcodec/noise_bsf.c b/libavcodec/noise_bsf.c index 84b94032ad..363ea4fc71 100644 --- a/libavcodec/noise_bsf.c +++ b/libavcodec/noise_bsf.c @@ -32,6 +32,7 @@ typedef struct NoiseContext { const AVClass *class; int amount; int dropamount; + int keyframes; unsigned int state; } NoiseContext; @@ -49,6 +50,13 @@ static int noise(AVBSFContext *ctx, AVPacket *out) if (ret < 0) return ret; + if (s->keyframes > 0 && in->flags & AV_PKT_FLAG_KEY) { + s->keyframes--; + if (!s->keyframes) s->keyframes = -1; + av_packet_free(&in); + return AVERROR(EAGAIN); + } + if (s->dropamount > 0 && s->state % s->dropamount == 0) { s->state++; av_packet_free(&in); @@ -65,6 +73,9 @@ static int noise(AVBSFContext *ctx, AVPacket *out) memcpy(out->data, in->data, in->size); + if (s->keyframes) + return ret; + for (i = 0; i < out->size; i++) { s->state += out->data[i] + 1; if (s->state % amount == 0) @@ -81,6 +92,7 @@ fail: static const AVOption options[] = { { "amount", NULL, OFFSET(amount), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX }, { "dropamount", NULL, OFFSET(dropamount), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX }, + { "keyframes", NULL, OFFSET(keyframes), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX }, { NULL }, }; diff --git a/libavcodec/version.h b/libavcodec/version.h index ca18ce6e8b..1e84410d68 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 13 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \