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 2A3294871E for ; Fri, 15 Dec 2023 17:34:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7CDDD68CFF1; Fri, 15 Dec 2023 19:34:52 +0200 (EET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2108.outbound.protection.outlook.com [40.92.90.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 081DA68CB56 for ; Fri, 15 Dec 2023 19:34:45 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Oj/IqpIy0OaoM4EThVw/xW5gzjuxFovXo5HgpsvqIqudncJepSxuIibPsbHdudeILRJoAXo2ZICV7YlxvkiU0WR1G4DGJzN8xov41LMwbTZfugJmJ2HO3kXhaiBLsL2+qaBeD9zX//Me8sGglNv3i3OMQmpQ4UF0dE+PX2s6yx7g/2sqJBjeQo73sD/nxlSHyxeHivdBO4KQRK3i1JzwNORNYNPZUyHXbCH9VjA6Qzu+7VK0cKjKJwdD2WAlMTCvNejg7k/Z+IjVG3eZGG950ZNgePSAWID3xJITI/sWBH7a1XrvWhOUnxST/I5BI6OkgEvNkJt/dwEODoXeRjgSbQ== 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=cgt4DS3XjqwGe3O6H+x1B78Qw+QHdFpfC0fK8JusitQ=; b=L2395g6BNB2Ejgl8FEMrl5bBGmT6y5yG8iAf8jdoWeZN5bfuR+OUuaNW8TfMn6Bh1RswHiJtw88N1w1li4OfRC9XFLBJDpSU+FUVA63PLvG+e0JJZJwDF8WKOtANIuOqwBWjbgtq++U8c5I4eKe7x7vOm91qutrX+jQRsa6TjhzsF68Dcqn7oRoAaQyyD84e53bZ5rMVdDzQzLSTveHfAe5o8Bh83+iHLVWdtcBat2HjD1kQFJXcfrShoX7mohmiNqzyj6BgdDpnEs1um0x4BeMmHK+PmvRuzulJxl3cVL0bVv9BqD2eeu/+rXsYknj+hB0fAgtm7Kqnqk1bKyVjCw== 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=cgt4DS3XjqwGe3O6H+x1B78Qw+QHdFpfC0fK8JusitQ=; b=iz41urwe6EqYQ0YjJgEhbN715VX6H/RO3Pous0JhGNk9d1NctQncw6v4iTu/7arDz5okVcvDzEfAQ1xJQ9pYEjCTyVU3JwCVGA7NkXrNu2lKeugWYCPd1BvWVRGiOL0GHhTGLSUmR+GzsVSbpMRbViTgxo/+y9SN6zZdbkUGNadv1nOCDjbCK3UYyRlkYFosIb9rCULBFIQbWFWdVZZVsltzkRymoIImnbqii78I+zirmZgslvTaerJ0tkUwAMY3orDoGedLUcV4wDuvUCG5vtclhQi/unqjIpOG1qCyu4muYm5y8cRoIk5TlmDD7UtEBkQg55i8EW1IrcsC5npPzA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0202.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:379::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.31; Fri, 15 Dec 2023 17:34:43 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f59c:9cff:a42d:bde]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f59c:9cff:a42d:bde%3]) with mapi id 15.20.7091.030; Fri, 15 Dec 2023 17:34:43 +0000 Message-ID: Date: Fri, 15 Dec 2023 18:36:14 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: X-TMN: [qHrYxLLAJU61oeho80eX4KoR7KRU3kPxsUyEpgznWSw=] X-ClientProxiedBy: ZR0P278CA0055.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::6) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0202:EE_ X-MS-Office365-Filtering-Correlation-Id: b73d876b-5c63-48db-af48-08dbfd941f8b X-MS-Exchange-SLBlob-MailProps: 9IecXKUgicDuKChFtsBR32ACaz72vVOBbpx/mVEAoDK0wmxVqk2aNOKYmSzIzAER563kxDLUvN7jdwncipWkzfKhDQctgkZluRBivL724vlH8WXNg1/P+zDE3Go9m+HbtC4WqMEdHLtCzeb1u+xe22kWQIfsghCIu/HUeko456RE+35cCZHJIMHA1lpe4Gv5TXKnvjJKzXUIL/i7SwxCkiCZ6AlBhiPFHQ4Y11asnDD8oQPsOErSg1HE0YBbJClZWVi+oQI1OpxE5ivEuMv7B43zptxMBdPMP3eFFaBtRkbd/cTt9DYf/SDDBkwkdfagazsOz+p6NKwNBP9CTzYsnvqlS+Hba+DQmxR7EBrMNNtpdjGgba1Adh1tjNAE1k67f9CAupJvByVwtyi87QtJ8Hvs8Q5UqLLJD4U9Wa7e3OKOCunG/9bbGUxATyom5ujMzvXuKK/ez9ynU8/yG715D/FoQDFySOBJCL9VS2MxrFDPxzO6doLUpmmXGZFJdLjYXbs0cbKEK4U/f68UTvfNA1N4uF7wRKsOj6KlGEP4xY7nVoW7Ib52vJVNIwwB9krGVHFZFFUMI9Jz2iHGiyGPiGMinOKvEB8gMRSQUFRehv/8mBzHVEjAFXksxKhPnHMSC1b0y6GbtCR5rzITkgLU3pTupZN9S0hwt8gkyZfk83juVGFpH2Oa30jnEdFtMKAR2skPOAMWZL3iLjJT44Z9RJINn9yatFQHBWJGorM1sFxrLrtw6bLaRQ== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qThVpnkwPrBATVTMD96HB+mKesy0aol6AU0U0fb0R5BGA3wE2OHJZKvgA01F6a3xP1UlymfzygZSjicd+LHyOpt3RSW0PxUREIEI/reIlSst0ybY4cWA8VCvgmFOgkacW7MMBzkmWH+JfisrybrX4s9LdPkFcrnqhIJl5yiY+QvC3HW6cnXNr/uovWK7g77bpx9Co5zxtjzThQwyVyT5/ydvURBCkXu0+/GVxwLeoeW0Ca3GOnHpUT+WuLL3eOMhOlSBsAnbOAheRYcl9IF+gI9l2qmfL7KO8n64RKbq6yychhwFcH8+YBFTtGFnKI4r+QwwPTc2WHKgZ3qmcGPSnxyM/gWBdWQil9gwS/T1/EHBE17pQo3BSoce/7Sg+k4LFDgPdS6Cin/MdCLvgO+OFoq2c2e5M2MS37Jm0kyjem2WfHW5UDBbd3HKDDVF0qPSr0FMeGIOmYJW9jBJaTcAs8glFVtMUb1ltc7B1guqw2g2LRIuUZjO7FqES4YslAaISuHhJoegCNnVse26fo0vH5rHOZM9w+O1ZQdCJU6i9yINC1vRwuAuwk5Fvr0hWcur X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZlU1L2cvMHdCTkRUWjJZdElqZUVmQWhvZ25iRUdNTmsyMXBlZnlIUWRaTS9l?= =?utf-8?B?NFRDc2IzOENFUHpvKyswTDRXakpaczh5ZXZKa1VxT2xNWG1RU0NZRTFZUjVX?= =?utf-8?B?aHQvMzFueWYvYnRybFREeUF0ek1BU3JGOEtEaWFzSDFuOGlFb3J3L1dqQXhl?= =?utf-8?B?eHdMa0V3dGFpNjRlSUdiVTJHZUNZTk8rM0QwMGc4ZXdHeWlNSHB0QXBSVmtK?= =?utf-8?B?SWhtVkFIR21ZNkhLNnplK1EvOEkyV2xPTm9rWmdFSVRvc1hTQUtWcGFKOUh4?= =?utf-8?B?dTlsc2xwVUxaSTVLRkxYQ0lua3NtcnptbHhaczNQSTJObSthMm1rbFVMYUJX?= =?utf-8?B?WWkxVm9zdm9lS2Vvc3M3YThTajd4RjUzKzhxUk1vZndFdFJzVnFDQzgrSFhW?= =?utf-8?B?M1N5T2ZKeXFCWURFL0hHYVhGOW1xNkZua1lpaDB1NXdCaUpPQVFDaUJJa25u?= =?utf-8?B?amdHdzVYREtrNTBjcUpyanJmNk5NdzZoNG5VMUoxeENWdGdqTGZnc3ROdzl6?= =?utf-8?B?YVhJdWMvL0NsR0VhRWozKzZKbVhVYnhySXBVZ3grbmllbTdWTDBBN2Q3Y2pq?= =?utf-8?B?MGp5b0k4S1d2a3hyZFpGMEdpdlMrM2pYVWhVTDNGTGxyZmRDekFwRjZQNS9H?= =?utf-8?B?NnNXU2tQRTJIRFMweE5yWVFYYk0rditoNHRzM0xWRU5uZ0xuWDBPNTg4Y0N2?= =?utf-8?B?K1haeCs4RnFJWWFTTjBKZkpvTUFLaVE1TnRDUG9lZjU2OVdSS1ZKKytsRXpB?= =?utf-8?B?L25aejE2NzM2dituVmlTa3FrSVdIcDZGZ0ZrYjc0bGRpOHp4NE1jU2N6bGVy?= =?utf-8?B?T3hUaXdJdG9mZlU4dlVZTHFxUmQvNTFpVlpjTDhZWVhsY2YvdlR0WWxnTVZN?= =?utf-8?B?eUt4U1p3NFRndXdHbVJLWDUvL2tsRGRBelhURytNUkQvYzhHbW4vbUpCR2xI?= =?utf-8?B?c2txOXA0dVJtN2d1Q0ordGE5QTZHV2FIN05Kbk1kQ0pvWTlRWnFmN2JvZ1NQ?= =?utf-8?B?Z0ducDZsV1B6Uy9QTVJyZ2xXWCtJVXdHSHFPaEtGQXI4eXZVSm5TNFZSYndS?= =?utf-8?B?aGdmYWlYd0ExMGc4WVI4MUV3cWZJMnBJS3BOeUp3YWd0THF3REJTR2dlZmtE?= =?utf-8?B?dEpWZ1dqYjlwbHByUU02UUF6akFpMzZ0OS9sZWJhT3A2RCt1ZzA5WE1kNnFF?= =?utf-8?B?UURQNFZRSTFwdXMwL2c4RkNpcW4ya01hdnlBVi9wckFqQUxzWnZPNXFvbnBR?= =?utf-8?B?WUxVRDYzRHZvbG9rWTNvU2tWeG04Zk9VUFJlTmN2UEV4bS9CKzFZNEgwNDgy?= =?utf-8?B?VzJQN0NHL0s4WEt4dGZOZnZuMUdkVXpYQ21tdCtyelh1ZFdlZ1hucVJEcXRU?= =?utf-8?B?a0VUL1ZyaDk2YnIrcUVzR0tCTUN5R3lNUER1MlllbVBpbk9kWmFySjBxKytl?= =?utf-8?B?aUl5Y1lVZi81MkllMWljRmFuQTNwYk5XclRYdm1LVjlMRXQ0YVB0Yjk5d01k?= =?utf-8?B?VGFUc2xZdDFmdjlPVnc5bFlnTlRnVWVySHhEaE1EQzRYNG5xSEVrRE9qVE1T?= =?utf-8?B?Y0dOT21qZ2ZJeTZEVkhTRlNxeXBqdDdFMlowZlIraFlWT2xoNG1tQWttN1JC?= =?utf-8?B?aHlWY0JoMTczVG03NmQ4OXpMdlZxSkdJNm5yOFlSRVk2T0cydk43Y09xY3B2?= =?utf-8?Q?Erv04PZrQduapP9HlgEu?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b73d876b-5c63-48db-af48-08dbfd941f8b X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2023 17:34:43.2373 (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: AS8P250MB0202 Subject: Re: [FFmpeg-devel] [PATCH] Add new vf_tiltandshift 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: Vittorio Giovara: > +#include "avfilter.h" > +#include "formats.h" > +#include "internal.h" > +#include "video.h" > + > +#define TILT_NONE -1 > +#define TILT_FRAME 0 > +#define TILT_BLACK 1 Why is this not an enum? > + > +typedef struct FrameList { > + AVFrame *frame; > + struct FrameList *next; > +} FrameList; > + > +typedef struct TiltandshiftContext { > + const AVClass *class; > + > + /* set when all input frames have been processed and we have to > + * empty buffers, pad and then return */ > + int eof_recv; > + > + /* live or static sliding */ > + int tilt; > + > + /* initial or final actions to perform (pad/hold a > frame/black/nothing) */ > + int start; > + int end; > + > + /* columns to hold or pad at the beginning or at the end > (respectively) */ > + int hold; > + int pad; > + > + /* buffers for black columns */ > + uint8_t *black_buffers[4]; > + int black_linesizes[4]; > + > + /* list containing all input frames */ > + size_t input_size; > + FrameList *input; > + FrameList *prev; > + > + const AVPixFmtDescriptor *desc; > +} TiltandshiftContext; > + > +static int list_add_frame(FrameList **list, size_t *size, AVFrame > *frame) > +{ > + FrameList *element = av_mallocz(sizeof(FrameList)); The overhead of this FrameList is unnecessary: You can simply use AVFrame.opaque as your next pointer. > + if (!element) > + return AVERROR(ENOMEM); > + > + element->frame = frame; > + > + if (*list == NULL) { > + *list = element; > + } else { > + FrameList *head = *list; > + while (head->next) > + head = head->next; > + head->next = element; > + } > + > + (*size)++; > + return 0; > +} > + > +static void list_remove_head(FrameList **list, size_t *size) > +{ > + FrameList *head = *list; > + if (head) { > + av_frame_free(&head->frame); > + *list = head->next; > + av_freep(&head); > + } > + > + (*size)--; > +} > + > +static const enum AVPixelFormat formats_supported[] = { > + AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, > + AV_PIX_FMT_YUV410P, > + AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, > + AV_PIX_FMT_YUVJ440P, > + AV_PIX_FMT_NONE > +}; > + > +static int query_formats(AVFilterContext *ctx) > +{ > + return ff_set_common_formats(ctx, > ff_make_format_list(formats_supported)); Unnecessary. Use FILTER_PIXFMTS_ARRAY. > + > +AVFilter ff_vf_tiltandshift = { const AVFilter > + .name = "tiltandshift", > + .description = NULL_IF_CONFIG_SMALL("Generate a tilt-and-shift'd > video."), > + .priv_size = sizeof(TiltandshiftContext), > + .priv_class = &tiltandshift_class, > + .uninit = uninit, > + FILTER_INPUTS(tiltandshift_inputs), > + FILTER_OUTPUTS(tiltandshift_outputs), > + FILTER_QUERY_FUNC(query_formats), > +}; _______________________________________________ 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".