From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8E97D4A959 for ; Mon, 6 May 2024 05:47:38 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3C6B768D62B; Mon, 6 May 2024 08:47:29 +0300 (EEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2106.outbound.protection.outlook.com [40.92.73.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C4F1F68D601 for ; Mon, 6 May 2024 08:47:21 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DweACHtKmlXHqznG5pMe/3uNfrqHF/N25MspyBKW+pbx9Clg/Z1koHSS6T8pBOfN3nilkl5Ogx+9/Lwl+jmmP5BqTBpfwzLOGOPm/QRD18HzXPXtN/fAABp+e2Xw+sNCbrbfLp7oVciphTDltzylb7zRzuqYktkIguP4MSRxRuFfOvCoYKMLiB1Uh2MjeoVicXy2ihJHuWqykbva7aQ93KqOf7gdbqdUFmxHm7pupNSWRZWQ/4dt7GPDrXXUOYZeYHPVizuMJBV9kA2Xge81/UT02sf37HmKjWoWHMXOFw/Tv8VtYcRNTVC885seuF+B0ppQiCXngSN0aq6X9H+54g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=V1cQsHFA9Wo44Awb6z+hqrki2riU7EIEx1yIo5p/J3A=; b=hiNre6rJnctBuVaxgSlX74lisbl+KvCKTJu8j90l+kKAdFequC+zBm730Hm9pyOQXhJi8RXyFu9UyBTyya5nxAMD0cAOE5x3nVuy1J+sPg2yYkFT99uuv3aWXOUEx3iRl21sU7IIW7k0Wdslh6zX37JMyLfJCYQEoKugoIdR5WUHPM5+Ue/bKusYdScZX9y+Tq5NoWSlLtBNTFORPugg6Wckz00DyiRGd6l9J75GabxyoTKMxXk9wFDH6ujQPNNGCfGBs7E97eNi53HPhpK14Iwd984aoWqSjQlD7EKeMcuCD9gLmNCKYGHcD0GB2pLf5fFejg0pPQwnUuYAwcefYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V1cQsHFA9Wo44Awb6z+hqrki2riU7EIEx1yIo5p/J3A=; b=ENtaGc2nc95/ihX8+Zvs30kEo3fT9RIK++Ar3FljT0m6az5oPzhr4FJzjVR5wVmoPbLZBUfr9ZBjLq8nRfQtQlllO2Q8hEdvJ9yonJw9U5B2CpXQ/q/L8VIp+O8iyZcWEepUNxd0Zd4iWrX2DUwuqTBFcQD0p8kNc+kOUL1Uw+JMhbk7gHBx2ckEvO+W/CsfGwYfd9ikT3HZlSBzm3deR9gTx7Gjc0qmAlyejL8qLHMEhqywcpTJNkEoDU7TCA+/8CpE1YAGMSS1DyMIDi966HoBhUVcrZy4MS1cTKd5DClyx2wr/QhSPpmytTudbuxiAO2ocAmwyCj6pardVrWhkg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0612.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4be::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.40; Mon, 6 May 2024 05:47:20 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%7]) with mapi id 15.20.7544.029; Mon, 6 May 2024 05:47:19 +0000 Message-ID: Date: Mon, 6 May 2024 07:47:16 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240506053219.216068-1-marcus@marcusspencer.xyz> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20240506053219.216068-1-marcus@marcusspencer.xyz> X-TMN: [EepSw/y3GtNNcHEIqtCJrMDfeKRfF2T4] X-ClientProxiedBy: ZR0P278CA0182.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::15) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <99354106-424d-48cb-8237-43c19295ff84@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0612:EE_ X-MS-Office365-Filtering-Correlation-Id: d1e23b92-40f6-4607-de87-08dc6d8ffe64 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199019|440099019|3412199016; X-Microsoft-Antispam-Message-Info: iN/c4eT+XANS8g3s04xS8bGU+kp5Mrzc+UIUQUG/KjY9WzFDrfyNQ5Y5/CJZ4JlFpg0uBcMMPLKtg8tZ4Sv19k+j9U9UDIOWGvNg/gNjzDHNM+3IFypbMnunvEi5ZRy/GtSXrmflxHyL7E+I2+taV692soYewz/ek7A0rxaeEddE7iEcIBx70XipEvSKnrQHw4C45QHSvPKgSNFu04lXeXmCQQ35GY5KiWbPbKqSUNQ92+ucEsINyEaSqlk5MpVah3tetIImV2qv79XUPzDv9xSNe4Yxo6GnI/bF8gyieKNw2c/Tdy1sosAsvw3ieE3+lsUl2AUbyd0e7XUcpGZG+I2d3w8NcC5FXKLjMpdiVnON2LPi57sM1yTbU8QwpV51+261KWaDR1xlkQLaXcFrGa/mKTSpQ+P+0tFD9xlPY9UWLzoHFwG7jTl3fEQWsvolkPTVqgfRQ3m6bmZepUuki7Jb4LKm4phgdWb8zlSHLmrOdCnWf37PtEIMTLyfnqX1FUKxdaOScw4QGh3bPqVlQJd29fKsw6U4cLWPVM6KA09W8H+CCBuDH7cUfkImm2JU X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TDZUUitBU1JlZUQrOGtYVFp4bHh2cGZSM3czcUxIcCtJUWk0ZHhkQmo5bGJL?= =?utf-8?B?ZGJjS1VLNVdnS1FObkNReGdhTk1HSnJ0TXkrWW5pZ0tLcTk5bDV4eDU4K3Vl?= =?utf-8?B?c3IwbFdQWWxZeFNoZUhFVHdBaGdqWHVqRmU4cGw4Q0hhbEJDb2hHSGYvSWVS?= =?utf-8?B?MVk3eE9kRnB3QkxybHRyenZMUzRKcUZ3SUVZemtnQWs4Q0d1SmJ5SGZ0ckxY?= =?utf-8?B?VVNYcjBoc2I1M1piT3hIVjUvZ2pLaTBDZWhsSFkrblJxN3ZyR1VCWEgraElG?= =?utf-8?B?eFpwMjI0WlVucTNmRUVMam9WMWZsM2pkTjMzL0tOb2xsQTdZNFZESjdEalo2?= =?utf-8?B?VjZBM1VEbVRYdE5xcnhFZTZ4UDc0N3F3alB6V1NMUXVVZEllUGdIb0ErbkE2?= =?utf-8?B?S01MMmc1bUZHdmNhUWZBSEY4Sm1Sc2xySmtEVitGMzlYWXJKcERoS05qTXA3?= =?utf-8?B?aHVrK2ZCYlFzUmhkWnZySlQrcUNab0J2K056UmNPRDQ0MHErQ0tydE5kTldW?= =?utf-8?B?bUZyRVJicWEyRmFKMldwT2t2cHRibU5MbjFDM2E2bWZxNHlQOTE5a1JPSFlu?= =?utf-8?B?N1laMlVLMU8xaSt3elhrRlZVNkxPSXFWR0dzR1Z1cmhzMVRKZEUrdEZKY3JV?= =?utf-8?B?cVdLNnhVdnEwY0FGczZJSEI0TGlaYytRcXhTL1JPTy8wdzhqZVlvblBsRDlY?= =?utf-8?B?NFY0NU9UMVB5cjYvZmNHK0FYa2RNQW1TejdKNWZpMElTNzQ5dTd5OVFDSVpS?= =?utf-8?B?dHh0eW93RTRTbkRqeExSYmxsK3gwdHEzTzlxNWhoS1dKY05aUzl0MzZQQXlQ?= =?utf-8?B?Znp6YWkrR2RCS01OZ0FLbnh2TTVHNGMrcml3eTlhL01sTUpsQ09xM1I2WThH?= =?utf-8?B?TFd5QktsU3hZdnlTOGdWQ3dOOEc1TS9ZWSt5ZFNrSHNKVlBscVk0Qit5cTQv?= =?utf-8?B?L2lHb0pYOFB3L2NBRVZSWk1QN0E2UVgwNXQ4VzNQTFRMSHgzQXRCZVZqcy94?= =?utf-8?B?Q1FPY1M2TTNGZmd3dTA2aVd4cU8vbmxGY3h6TjBYZkhaYndXN281Z1ZpMnYr?= =?utf-8?B?UDZsNVgwOVFRYWtyUGtqYmRLOG9uVXZabUh1RWdGQzdwcDFxRTdENDgwdjNn?= =?utf-8?B?NzZtdUZKRDR5Z04xTnBFaXZEbC80a1c1WHBPWVQ3M0w5bStJaUp4dVBzT2hj?= =?utf-8?B?bE1IRVhqMDNEK2FkaTd3SUU2cXFTcktKc0M3S3VMazFFeG5NcjFucERySE81?= =?utf-8?B?cGhPNXlwbUNzTVJxQXNRM3B2d0xNMDRXQ3dhRUFsMVhmMnk0MUJGRkJuWXVa?= =?utf-8?B?all4WVhzVzVXK3pNbm9wT3VObGhFUVhmWDJDYnhVQm85NTh3MHU2ZkllanUx?= =?utf-8?B?NWpHV2pVcGozUVJyZXpsekI5Um1LZm4yM1M5TU9XSTJ6dXpqMVhITHBJR3By?= =?utf-8?B?dHpSQkl3SjZPdmhYQnU0SWsvWTAvVWdiMTRwVTUwSjFXeVdZT0t2ZThUS2lC?= =?utf-8?B?YUJSOHI2K0dqOWpEbzk3V2NFbTRUVGpZN3FjRDl5M2F3ekR5cnlGSGJjeC9I?= =?utf-8?B?T0E1UkRaRDVoM3daYlNpK3pYWldyaFhWQUVRdzV2UFpmc3NmbFNtQ0Z2ckRM?= =?utf-8?B?S3dNZkEzbkZVTFEzZ2NHdVBVa0NvRHdlUGMvNUxmdVE5eC9EejRXVjdPdXJk?= =?utf-8?B?ZU8zd0d6S1UreW1vSmswU0J5TjVUWWQ4Z0FWL1JMUzI3REtRWjJHVjZnPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1e23b92-40f6-4607-de87-08dc6d8ffe64 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2024 05:47:19.8942 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4P250MB0612 Subject: Re: [FFmpeg-devel] [PATCH 1/2] avcodec/bsf: add datamosh bitstream filter 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Marcus B Spencer: > Has an option called "target". > > For a positive target, drop the nth keyframe. > For a nonpositive target, allow the first n keyframe(s) and drop the remainder. > > Its primary purpose is for datamoshing, but it can also be used for dropping parts of audio. > > Signed-off-by: Marcus B Spencer > --- > libavcodec/bitstream_filters.c | 1 + > libavcodec/bsf/Makefile | 1 + > libavcodec/bsf/datamosh.c | 88 ++++++++++++++++++++++++++++++++++ > 3 files changed, 90 insertions(+) > create mode 100644 libavcodec/bsf/datamosh.c > > diff --git a/libavcodec/bitstream_filters.c b/libavcodec/bitstream_filters.c > index 12860c332b..cde6090c77 100644 > --- a/libavcodec/bitstream_filters.c > +++ b/libavcodec/bitstream_filters.c > @@ -29,6 +29,7 @@ extern const FFBitStreamFilter ff_av1_frame_merge_bsf; > extern const FFBitStreamFilter ff_av1_frame_split_bsf; > extern const FFBitStreamFilter ff_av1_metadata_bsf; > extern const FFBitStreamFilter ff_chomp_bsf; > +extern const FFBitStreamFilter ff_datamosh_bsf; > extern const FFBitStreamFilter ff_dump_extradata_bsf; > extern const FFBitStreamFilter ff_dca_core_bsf; > extern const FFBitStreamFilter ff_dts2pts_bsf; > diff --git a/libavcodec/bsf/Makefile b/libavcodec/bsf/Makefile > index fb70ad0c21..ad3b870d12 100644 > --- a/libavcodec/bsf/Makefile > +++ b/libavcodec/bsf/Makefile > @@ -6,6 +6,7 @@ OBJS-$(CONFIG_AV1_FRAME_MERGE_BSF) += bsf/av1_frame_merge.o > OBJS-$(CONFIG_AV1_FRAME_SPLIT_BSF) += bsf/av1_frame_split.o > OBJS-$(CONFIG_AV1_METADATA_BSF) += bsf/av1_metadata.o > OBJS-$(CONFIG_CHOMP_BSF) += bsf/chomp.o > +OBJS-$(CONFIG_DATAMOSH_BSF) += bsf/datamosh.o > OBJS-$(CONFIG_DCA_CORE_BSF) += bsf/dca_core.o > OBJS-$(CONFIG_DTS2PTS_BSF) += bsf/dts2pts.o > OBJS-$(CONFIG_DUMP_EXTRADATA_BSF) += bsf/dump_extradata.o > diff --git a/libavcodec/bsf/datamosh.c b/libavcodec/bsf/datamosh.c > new file mode 100644 > index 0000000000..8314a4efc8 > --- /dev/null > +++ b/libavcodec/bsf/datamosh.c > @@ -0,0 +1,88 @@ > +/* > + * Copyright (c) 2024 Marcus B Spencer > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with FFmpeg; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +#include > + > +#include "bsf.h" > +#include "bsf_internal.h" > + > +#include "libavutil/opt.h" > + > +typedef struct { > + const AVClass *class; > + > + int target, i; > +} DatamoshContext; > + > +static int datamosh_init(AVBSFContext *ctx) > +{ > + DatamoshContext *s = ctx->priv_data; > + > + s->i = 0; > + > + return 0; > +} > + > +static int datamosh(AVBSFContext *ctx, AVPacket *pkt) > +{ > + DatamoshContext *s = ctx->priv_data; > + bool key; > + int ret; > + > + ret = ff_bsf_get_packet_ref(ctx, pkt); > + if (ret < 0) > + return ret; > + > + key = pkt->flags & AV_PKT_FLAG_KEY; > + if (key) > + ++s->i; > + > + if (s->target < 1) { > + if (s->i <= -s->target) > + return 0; > + else if (key) { > + av_packet_unref(pkt); > + return AVERROR(EAGAIN); > + } > + } > + > + if (key && s->i == s->target) { > + av_packet_unref(pkt); > + return AVERROR(EAGAIN); > + } > + > + return 0; > +} > + > + > +#define OFFSET(x) offsetof(DatamoshContext, x) > +#define FLAGS (AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_BSF_PARAM) > + > +static const AVOption options[] = { > + { "target", NULL, OFFSET(target), AV_OPT_TYPE_INT, { .i64 = 0 }, -INT_MAX, INT_MAX, FLAGS }, > + { NULL }, > +}; > + > +static const AVClass datamosh_class = { > + .class_name = "datamosh", > + .item_name = av_default_item_name, > + .option = options, > + .version = LIBAVUTIL_VERSION_INT, > +}; 1. This won't compile, as you only add the FFBitStreamFilter in the second patch. 2. Look at the noise bsf. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".