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 3D45543F4B for ; Mon, 19 Sep 2022 13:37:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6017D68BC75; Mon, 19 Sep 2022 16:37:46 +0300 (EEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-oln040092069065.outbound.protection.outlook.com [40.92.69.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F75268BA9B for ; Mon, 19 Sep 2022 16:37:40 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i076VGVI2KpGmiPQLyYuJem1R0T+6kgGwKkP3bVc94Xl+M0o3hZeIKI0Cj56PNX+OgD/l5ikw/cqSsZgl52Ri4idNG8lbtxiC8MdVJwUQKgPSX6rMuAaCB/sHOHOYnR3Nvn1eArV4NWaPSKY/HA5qdD1Q/SmjsnqqwBIAM4T4ZavCMyrG6KQ9D40fuCXsvdqriapcuD8Yhjzc/+/KBNW/hbRDYecg6JDxtZpVFBIdESo3XskE8uwm4Dpgk9QFRdIeyZIX6crgPunfJy3i8u2ax8XfAn1tbisl1X8nECeSpF+bj4dnDQHyiFs5QSRqAo1T++xSzHeiOEEzH/PT5bbtg== 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=bKnm/ZTlpCQKCD2UdcsSsSupSDK/h40H4bnKxz0bOHM=; b=L0pvKNR9S5YOE+sMa9dJFV5yn5/EYQD0Oak2+fSV5zQTCl2vMn2UPpeJnkhhyRgzRudHD+h5JEnmr0E4SRR9EJxa6TPhqfXEKzABzfnRvGNqge7LIRKF5HrrXUzQoPa3REU3jqFC4qlmkxjhQoFXiDILKN0LIULk//DphKRy26vsACU+lCJoRVzbtqBa4sVFvOSxBj01eBVirpH/I+iiqhghTT5n3PqEbCkVDAgi/GKCSy3Q0Srs/p0tabHbg+dOMw16mRaK1WLuLk6KpQEj+8WnVwzKsGUyrY7GKxSeboIsRd4/klCaoZbjgfIZ3YkFVJ0uYkNiWvtpz21adgPCUg== 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=bKnm/ZTlpCQKCD2UdcsSsSupSDK/h40H4bnKxz0bOHM=; b=c/6GqrEEdYEMQXY9xiTqKBm7sRZgEv4WGxeCZDm5KSYp9zShfbGOkJqLviJI/hRm551azGWkZBXKgW2fY7sL123l4GKeTekxxslh4zLyZmXTUi4X0EnXWuPlKAKkzb413cSPoBN9oDbkxz0Z2BVv3TBwSYcJ34mG9LVYL97lDZBv3k05xQ3zyrUAqNt+1icy8fRfvQaI69JM7ik5DuV/XkuZqNMQLIu3eN6QUQeRcOwD7zQp8R97mDB5iUiJMCjhZPk91HZZzNEzjTD9v5Vb53L6+TnYah3PvZUym47TiFYzzjhcczI0Cr7UI8488/jX+DlnsvFFBCMA41EZ5CwUVw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0136.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:377::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.21; Mon, 19 Sep 2022 13:37:38 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::2c84:e72a:48a9:ff90]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::2c84:e72a:48a9:ff90%6]) with mapi id 15.20.5632.014; Mon, 19 Sep 2022 13:37:38 +0000 Message-ID: Date: Mon, 19 Sep 2022 15:37:39 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220919094604.4645-1-thilo.borgmann@mail.de> <20220919094604.4645-5-thilo.borgmann@mail.de> From: Andreas Rheinhardt In-Reply-To: <20220919094604.4645-5-thilo.borgmann@mail.de> X-TMN: [4gyRV/i8N7B1zFXjwD2N9KXFuaXlk2noUZ8UTtGB0bU=] X-ClientProxiedBy: ZR0P278CA0027.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1c::14) 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_|AS8P250MB0136:EE_ X-MS-Office365-Filtering-Correlation-Id: d4e2b9bc-a26a-476e-e0de-08da9a441e5a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: n889LscvEUknHAHI6KUydhhjSQFAqLOunsf3p86dVYwtPlMDUJBF7z6XUxY1HxXwQU45Ifh6ABcqNJBeIun9zrfKkDoSSDCiPvP968IVutbAkm0q3ufFOM/kVj6daPPPxspqxQOfdRReO5SxSnNz+p9T1wPxEOFG20pZOYQA+y47emNEyE2K2nBME1p4SgnZ7hhmNoJVotgxeGWuBcR76DC3X6DkezL0/b14zi1AV8g6RcJLkYKh8P0YOIjfV/uYggq8x61U9Y8iybtegqvpImarqMTG34P9sfNetLr6hmR3nWuT6nwj9IXH6cMZ3IfzS2LUv4ieKpu5nCKs+Y6ptzwsB5FzByBa2IC1bm1cN85hRUD6dYg/TFa+gRM8t+rEGqvmPGfth3hGtusx9674dLpNnUzY2lYSY6ozt/rWbdAKkhZrrdYtnpvvkhPJl9UUEbk/nHZRyuJ4bGwT76Z2PVY++a3j6zSJKQ+rSrv1EsHDouDuhqEC2pf8PYwtTqxFe6XZ72N3HdeA3OpWAgH2/5Z1jX/wibkXWpi581Ad9eLy9zyHbEJ69NarLvbzfr0rr0JRk965Sxw2ZAokcT4ioxqM4+8mUyX4iLP/TEEoF9QVNlJjJxVOIW1hUWrJWZYcZEdagXVzxyddll7LTWKwT4wKI/liMsDhMEnvLO5N26AzPFantet2frRP0tby/rpd X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Wng5cXk4UFR4SUo2UWNRc2F1eDFvRFNnT096b045Z2FpdHp6Q1pKajVzSnpq?= =?utf-8?B?SGl3d3d4dytRT0o5U3BnL3NZaVpqT3NkQVEzOW45bTgyOHRJSWxLVHIzTDE1?= =?utf-8?B?OXNiY1JSNXpGc3g2aU40SWNhbjBVMElOSWRaWTIwR2JxNXN2QUZiYmw1NUcw?= =?utf-8?B?YjNtOG5COUFhcENBWk9VVTV2OVgxTWdCRXh0OERTN0VWK3RucE9nTDBTR1ZC?= =?utf-8?B?aWFvQkxvb3FFQnhEd1RlSGROTk5IcGF2Y2JUc3lEcWFHSEFSY3JuM0xaL0l3?= =?utf-8?B?cWNja3BocGxEbWxJMVRqV0tEaTQ5aEEwd1h2Y01IbEZGdk9jVE5tYVBCUW1z?= =?utf-8?B?SzBtL1hNSnFmclZBWFdFQmpBYm1RL25GMVhxQ0wzOGdhNmlrYXpINWJmbUla?= =?utf-8?B?U2NsWTV6RnJSa0twWmU1UzVLV2VVUWZJNGtlRlcrSWNnS2NDUUJId2lGNkU4?= =?utf-8?B?dDFpcmdNcUhMTEhOejlwTXgvVHRtQU9KL2NwbDFLc0pORE1HZnZOWXJaYjN1?= =?utf-8?B?SzZHT1RxYXdld0tQcTl1VmFOUDR0MUw1cGpRbVlzWGhabUNmeFpFckIzVzVY?= =?utf-8?B?TVFycHcwTmNKeXNzeEpOT1hHQnRiWTE5RnRjd0tDV0dnSlErNzk1Ky9PUVJx?= =?utf-8?B?WnFxVkNaWEZ1TGljc1VuWDVPY2tyUzBWN2pxMkorOWZTUVdkNmR5RFhodnFy?= =?utf-8?B?UGFwRXdaZkJncWFwN2ZxdzJ0cUNYTUJiZEpiaDVsZERGWkNZQS85ZDJKTzZU?= =?utf-8?B?NGpaMnMwZlJmclQrZWhkLzJQcE5sb05KYXhjOFk0bWk5bkdNMDRpNXQzM0E1?= =?utf-8?B?VFFLTWU3V2Z2VjRGZ0JnSkJUYkd2NjRTSDBjamNpMENhc0oyTm42WUgwdkg2?= =?utf-8?B?ektmZklwYXNqVzIzNnhmV0FacWcxeXRGTlNHNkMxbGRsQ1BEOWRlQVJHL3FQ?= =?utf-8?B?SmdJVEhQT21lbU0rTjl3dndpUjZ1dEpVQ1VGM2pvVEUwcHFpYXhsaFMwVGpH?= =?utf-8?B?dnV1T21vSm5TdDJqQnQvRThhQ25YWUtmMHc2aG9kWkkxbE1uS21OQW5YRU5T?= =?utf-8?B?OVVMc2NQQ28yQ2ZWL0gvRUl1ZXVmOXBabTluYldMZGtyK1didE9YNWE5dTZX?= =?utf-8?B?Y092akRWRXh1Y2xhTXdaRTVxU3g4QmVSN2h3TTNBendONUJwaWxONXVaTGJ5?= =?utf-8?B?cms0MDJqUm13aFBqY1hqSktGek9HSUJLNDdrMnpCb1lCZUJ5WWFMb29GRk9Y?= =?utf-8?B?ZHpyNnllTUJ6bmVJcVBCS0pCdXozeEVvMlVDcUJ0VGJJZVpjcEVHMFVRazBk?= =?utf-8?B?cjRXdFVuTlVldmZrTkluZ200SVBlaVptKzBHYmZZc3o1ZE83dHZVTGU2VGkz?= =?utf-8?B?YlJpemw3a1p1UXBLMTZMMHU3UHY3TzdCKzczN3VGTnQzNnc4cU9Zb0V2emxM?= =?utf-8?B?eTE4Y0RuZ1MzQW5TQ3IzM1VTN1QzWkhPMy9QM2JLQ2tKZ3RTbjJLeHVNRGNt?= =?utf-8?B?ZE1QV1hDc0RZU0VjZlF5WDdvSUsvbVhvazU5MXIwWVFoc3R5QVp4K1h3RXlo?= =?utf-8?B?MzdPdklvamd5V0E2MlFTSTI4VllxM2daRmQ3REIxZlV0TWVFTUxxanFnSkNW?= =?utf-8?B?ZWhqeFBiazJsdDhrOWJRN01POEhIMEVobnlBMjlYeUQ3SmVhQ3lmWEhzYUtm?= =?utf-8?B?RGk1QUl3NjNWS0FjQ1pIajRvODdQYk81QVY5UVkvTC94dFEyeHVudjVWdC9O?= =?utf-8?Q?CB4K0ZBEhOS0QA3SrD+t+N3zbCk6QcBPSJab7ep?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4e2b9bc-a26a-476e-e0de-08da9a441e5a X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2022 13:37:38.6102 (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: AS8P250MB0136 Subject: Re: [FFmpeg-devel] [PATCH v4 4/6] lavu/display: Add horizontal and vertical scaling to the display matrix 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: Thilo Borgmann: > --- > doc/APIchanges | 3 +++ > libavutil/display.c | 35 +++++++++++++++++++++++++++++++++++ > libavutil/display.h | 26 ++++++++++++++++++++++++++ > libavutil/version.h | 2 +- > 4 files changed, 65 insertions(+), 1 deletion(-) > > diff --git a/doc/APIchanges b/doc/APIchanges > index e4b2fc8799..9dc393d999 100644 > --- a/doc/APIchanges > +++ b/doc/APIchanges > @@ -14,6 +14,9 @@ libavutil: 2021-04-27 > > API changes, most recent first: > > +2022-09-19 - xxxxxxxxxx - lavu 57.38.100 - display.h > + Add av_display_matrix_scale(), av_display_{h,v}scale_get() > + > 2022-09-19 - xxxxxxxxxx - lavu 57.37.100 - opt.h > Add AV_OPT_FLAG_ARGUMENT. > Add av_arg_show() to print arguments to options. > diff --git a/libavutil/display.c b/libavutil/display.c > index d31061283c..434ed50104 100644 > --- a/libavutil/display.c > +++ b/libavutil/display.c > @@ -48,6 +48,30 @@ double av_display_rotation_get(const int32_t matrix[9]) > return -rotation; > } > > +double av_display_hscale_get(const int32_t matrix[9]) > +{ > + double scale; > + > + scale = hypot(CONV_FP(matrix[0]), CONV_FP(matrix[1])); > + > + if (scale == 0.0) > + return NAN; > + > + return scale; > +} > + > +double av_display_vscale_get(const int32_t matrix[9]) > +{ > + double scale; > + > + scale = hypot(CONV_FP(matrix[3]), CONV_FP(matrix[4])); > + > + if (scale == 0.0) > + return NAN; > + > + return scale; > +} Did I not already tell you that an arbitrary displaymatrix doesn't have well-defined horizontal and vertical scaling factors? Apart from that, the formulae are wrong even for the case where it has one, because you forgot the scaling given by what is called z in display.h. (Apart from that, these functions do not return the horizontal/vertical scaling factors; they return the length of the image of the horizontal/vertical unit vector under the transformation, but these vectors need not (and in general: will not) point into the horizontal/vertical direction at all; the return value is therefore not the "hor/ver scaling by which the transformation matrix scales the frame in the hor/ver direction", although the documentation claims that. The reason for this is of course that an arbitrary matrix doesn't have well-defined scaling factors.) > + > void av_display_rotation_set(int32_t matrix[9], double angle) > { > double radians = -angle * M_PI / 180.0f; > @@ -72,3 +96,14 @@ void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip) > for (i = 0; i < 9; i++) > matrix[i] *= flip[i % 3]; > } > + > +void av_display_matrix_scale(int32_t matrix[9], double hscale, double vscale) > +{ > + // hscale > + matrix[0] = CONV_DB(CONV_FP(matrix[0]) * hscale); > + matrix[1] = CONV_DB(CONV_FP(matrix[1]) * hscale); > + > + // vscale > + matrix[3] = CONV_DB(CONV_FP(matrix[3]) * vscale); > + matrix[4] = CONV_DB(CONV_FP(matrix[4]) * vscale); > +} > diff --git a/libavutil/display.h b/libavutil/display.h > index 31d8bef361..ef507eb521 100644 > --- a/libavutil/display.h > +++ b/libavutil/display.h > @@ -86,6 +86,24 @@ > */ > double av_display_rotation_get(const int32_t matrix[9]); > > +/** > + * Extract the horizontal scaling component of the transformation matrix. > + * > + * @param matrix the transformation matrix > + * @return the horizontal scaling by which the transformation matrix scales the frame > + * in the horizontal direction. > + */ > +double av_display_hscale_get(const int32_t matrix[9]); > + > +/** > + * Extract the vertical scaling component of the transformation matrix. > + * > + * @param matrix the transformation matrix > + * @return the vertical scaling by which the transformation matrix scales the frame > + * in the vertical direction. > + */ > +double av_display_vscale_get(const int32_t matrix[9]); > + > /** > * Initialize a transformation matrix describing a pure clockwise > * rotation by the specified angle (in degrees). > @@ -105,6 +123,14 @@ void av_display_rotation_set(int32_t matrix[9], double angle); > */ > void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip); > > +/** > + * Scale the input matrix horizontally and/or vertically. > + * > + * @param matrix an allocated transformation matrix > + * @param hscale scale factor by which the matrix should be scaled horizontally > + * @param vscale scale factor by which the matrix should be scaled vertically > + */ > +void av_display_matrix_scale(int32_t matrix[9], double hscale, double vscale); > /** > * @} > * @} > diff --git a/libavutil/version.h b/libavutil/version.h > index 9c44cef6aa..5aca550f45 100644 > --- a/libavutil/version.h > +++ b/libavutil/version.h > @@ -79,7 +79,7 @@ > */ > > #define LIBAVUTIL_VERSION_MAJOR 57 > -#define LIBAVUTIL_VERSION_MINOR 37 > +#define LIBAVUTIL_VERSION_MINOR 38 > #define LIBAVUTIL_VERSION_MICRO 100 > > #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ _______________________________________________ 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".